Browse Source

fix devices attributes sync label

pull/465/head
oleg 9 years ago
parent
commit
32ece471e9
  1. 1
      ui/src/app/device/devices.tpl.html
  2. 89
      ui/src/app/extension/extension-table.directive.js
  3. 2
      ui/src/app/extension/extension-table.tpl.html
  4. 16
      ui/src/app/locale/locale.constant.js

1
ui/src/app/device/devices.tpl.html

@ -71,7 +71,6 @@
<tb-extension-table flex <tb-extension-table flex
entity-id="vm.grid.operatingItem().id.id" entity-id="vm.grid.operatingItem().id.id"
entity-type="{{vm.types.entityType.device}}"> entity-type="{{vm.types.entityType.device}}">
</tb-extension-table> </tb-extension-table>
</md-tab> </md-tab>
</tb-grid> </tb-grid>

89
ui/src/app/extension/extension-table.directive.js

@ -25,6 +25,7 @@ import extensionDialogTemplate from './extension-dialog.tpl.html';
/* eslint-enable import/no-unresolved, import/default */ /* eslint-enable import/no-unresolved, import/default */
import ExtensionDialogController from './extension-dialog.controller' import ExtensionDialogController from './extension-dialog.controller'
import $ from 'jquery';
/*@ngInject*/ /*@ngInject*/
export default function ExtensionTableDirective() { export default function ExtensionTableDirective() {
@ -72,6 +73,15 @@ function ExtensionTableController($scope, $filter, $document, $translate, types,
$scope.$watch("vm.entityId", function(newVal) { $scope.$watch("vm.entityId", function(newVal) {
if (newVal) { if (newVal) {
if ($scope.subscriber) {
telemetryWebsocketService.unsubscribe($scope.subscriber);
}
vm.subscribed = false;
vm.syncLastTime = $translate.instant('extension.sync.not-available');
subscribeForClientAttributes();
reloadExtensions(); reloadExtensions();
} }
}); });
@ -205,12 +215,18 @@ function ExtensionTableController($scope, $filter, $document, $translate, types,
} }
function reloadExtensions() { function reloadExtensions() {
vm.subscribed = false;
vm.allExtensions.length = 0; vm.allExtensions.length = 0;
vm.extensions.length = 0; vm.extensions.length = 0;
vm.extensionsPromise = attributeService.getEntityAttributesValues(vm.entityType, vm.entityId, types.attributesScope.shared.value, ["configuration"]); vm.extensionsPromise = attributeService.getEntityAttributesValues(vm.entityType, vm.entityId, types.attributesScope.shared.value, ["configuration"]);
vm.extensionsPromise.then( vm.extensionsPromise.then(
function success(data) { function success(data) {
vm.allExtensions = angular.fromJson(data[0].value); if (data.length) {
vm.allExtensions = angular.fromJson(data[0].value);
} else {
vm.allExtensions = [];
}
vm.selectedExtensions = []; vm.selectedExtensions = [];
updateExtensions(); updateExtensions();
vm.extensionsPromise = null; vm.extensionsPromise = null;
@ -238,52 +254,58 @@ function ExtensionTableController($scope, $filter, $document, $translate, types,
vm.extensionsCount = result.length; vm.extensionsCount = result.length;
var startIndex = vm.query.limit * (vm.query.page - 1); var startIndex = vm.query.limit * (vm.query.page - 1);
vm.extensions = result.slice(startIndex, startIndex + vm.query.limit); vm.extensions = result.slice(startIndex, startIndex + vm.query.limit);
vm.extensionsJSON = angular.toJson(vm.extensions);
}
vm.extensionsJSON = angular.toJson(vm.extensions);
checkForSync()
if (vm.entityId && vm.entityType) {
$scope.subscriber = {
subscriptionCommands: [{
entityType: vm.entityType,
entityId: vm.entityId,
scope: 'CLIENT_SCOPE'
}],
type: 'attribute',
onData: function (data) {
if (data.data) {
onSubscriptionData(data.data);
}
}
};
} }
telemetryWebsocketService.subscribe($scope.subscriber);
$scope.$on('$destroy', function() {
telemetryWebsocketService.unsubscribe($scope.subscriber);
});
function subscribeForClientAttributes() {
if (!vm.subscribed) {
if (vm.entityId && vm.entityType) {
$scope.subscriber = {
subscriptionCommands: [{
entityType: vm.entityType,
entityId: vm.entityId,
scope: 'CLIENT_SCOPE'
}],
type: 'attribute',
onData: function (data) {
if (data.data) {
onSubscriptionData(data.data);
}
vm.subscribed = true;
}
};
}
telemetryWebsocketService.subscribe($scope.subscriber);
}
}
function onSubscriptionData(data) { function onSubscriptionData(data) {
if (data.appliedConfiguration && data.appliedConfiguration[0] && data.appliedConfiguration[0][1]) {
vm.appliedConfiguration = data.appliedConfiguration[0][1]; if ($.isEmptyObject(data)) {
checkForSync(); vm.appliedConfiguration = undefined;
$scope.$digest(); } else {
if (data.appliedConfiguration && data.appliedConfiguration[0] && data.appliedConfiguration[0][1]) {
vm.appliedConfiguration = data.appliedConfiguration[0][1];
}
} }
updateExtensions();
$scope.$digest();
} }
checkForSync();
function checkForSync() { function checkForSync() {
if (vm.appliedConfiguration === vm.extensionsJSON) { if (vm.appliedConfiguration && vm.extensionsJSON && vm.appliedConfiguration === vm.extensionsJSON) {
vm.syncStatus = $translate.instant('extension.sync.sync'); vm.syncStatus = $translate.instant('extension.sync.sync');
vm.syncLastTime = formatDate(); vm.syncLastTime = formatDate();
$scope.isSync = true;
} else { } else {
vm.syncStatus = $translate.instant('extension.sync.not-sync'); vm.syncStatus = $translate.instant('extension.sync.not-sync');
$scope.isSync = false;
} }
} }
@ -306,7 +328,4 @@ function ExtensionTableController($scope, $filter, $document, $translate, types,
return num; return num;
} }
} }
//telemetryWebsocketService.subscribe(subscriber);
} }

2
ui/src/app/extension/extension-table.tpl.html

@ -83,7 +83,7 @@
<md-input-container flex="50" class="md-block"> <md-input-container flex="50" class="md-block">
<label translate>extension.sync.status</label> <label translate>extension.sync.status</label>
<input ng-model="vm.syncStatus" <input ng-model="vm.syncStatus"
ng-class="{'extension__syncStatus--green':vm.appliedConfiguration === vm.extensionsJSON, 'extension__syncStatus--red':vm.appliedConfiguration !== vm.extensionsJSON}" ng-class="{'extension__syncStatus--green':isSync, 'extension__syncStatus--red':!isSync}"
disabled disabled
> >
</md-input-container> </md-input-container>

16
ui/src/app/locale/locale.constant.js

@ -766,14 +766,6 @@ export default angular.module('thingsboard.locale', [])
"add-map": "Add mapping element", "add-map": "Add mapping element",
"timeseries": "Timeseries", "timeseries": "Timeseries",
"add-timeseries": "Add timeseries", "add-timeseries": "Add timeseries",
"sync": {
"status": "Status",
"sync": "Sync",
"not-sync": "Not sync",
"last-sync-time": "Last sync time",
},
"field-required": "Field is required", "field-required": "Field is required",
"brokers": "Brokers", "brokers": "Brokers",
"add-broker": "Add broker", "add-broker": "Add broker",
@ -847,6 +839,14 @@ export default angular.module('thingsboard.locale', [])
"opc-keystore-key-password":"Key password", "opc-keystore-key-password":"Key password",
"opc-device-node-pattern":"Device node pattern", "opc-device-node-pattern":"Device node pattern",
"opc-device-name-pattern":"Device name pattern", "opc-device-name-pattern":"Device name pattern",
"sync": {
"status": "Status",
"sync": "Sync",
"not-sync": "Not sync",
"last-sync-time": "Last sync time",
"not-available": "Not available"
},
}, },
"fullscreen": { "fullscreen": {
"expand": "Expand to fullscreen", "expand": "Expand to fullscreen",

Loading…
Cancel
Save