diff --git a/ui/src/app/components/datasource-entity.directive.js b/ui/src/app/components/datasource-entity.directive.js index 2b8f2ec0c5..f9dbc45ada 100644 --- a/ui/src/app/components/datasource-entity.directive.js +++ b/ui/src/app/components/datasource-entity.directive.js @@ -50,11 +50,8 @@ function DatasourceEntity($compile, $templateCache, $q, $mdDialog, $window, $doc scope.alarmFields.push(alarmField); } - scope.selectedTimeseriesDataKey = null; - scope.timeseriesDataKeySearchText = null; - - scope.selectedAttributeDataKey = null; - scope.attributeDataKeySearchText = null; + scope.selectedDataKey = null; + scope.dataKeySearchText = null; scope.selectedAlarmDataKey = null; scope.alarmDataKeySearchText = null; @@ -92,11 +89,7 @@ function DatasourceEntity($compile, $templateCache, $q, $mdDialog, $window, $doc } }); - scope.$watch('timeseriesDataKeys', function () { - updateDataKeys(); - }, true); - - scope.$watch('attributeDataKeys', function () { + scope.$watch('dataKeys', function () { updateDataKeys(); }, true); @@ -107,10 +100,9 @@ function DatasourceEntity($compile, $templateCache, $q, $mdDialog, $window, $doc function updateDataKeys() { if (ngModelCtrl.$viewValue) { var dataKeys = []; - dataKeys = dataKeys.concat(scope.timeseriesDataKeys); - dataKeys = dataKeys.concat(scope.attributeDataKeys); + dataKeys = dataKeys.concat(scope.dataKeys); dataKeys = dataKeys.concat(scope.alarmDataKeys); - if (ngModelCtrl.$viewValue.dataKeys != dataKeys) + if (!angular.equals(ngModelCtrl.$viewValue.dataKeys, dataKeys)) { ngModelCtrl.$setDirty(); ngModelCtrl.$viewValue.dataKeys = dataKeys; @@ -128,21 +120,17 @@ function DatasourceEntity($compile, $templateCache, $q, $mdDialog, $window, $doc } else { scope.entityAlias = null; } - var timeseriesDataKeys = []; - var attributeDataKeys = []; + var dataKeys = []; var alarmDataKeys = []; for (var d in ngModelCtrl.$viewValue.dataKeys) { var dataKey = ngModelCtrl.$viewValue.dataKeys[d]; - if (dataKey.type === types.dataKeyType.timeseries) { - timeseriesDataKeys.push(dataKey); - } else if (dataKey.type === types.dataKeyType.attribute) { - attributeDataKeys.push(dataKey); + if ((dataKey.type === types.dataKeyType.timeseries) || (dataKey.type === types.dataKeyType.attribute)) { + dataKeys.push(dataKey); } else if (dataKey.type === types.dataKeyType.alarm) { alarmDataKeys.push(dataKey); } } - scope.timeseriesDataKeys = timeseriesDataKeys; - scope.attributeDataKeys = attributeDataKeys; + scope.dataKeys = dataKeys; scope.alarmDataKeys = alarmDataKeys; } }; @@ -152,30 +140,19 @@ function DatasourceEntity($compile, $templateCache, $q, $mdDialog, $window, $doc } scope.selectedEntityAliasChange = function () { - if (!scope.timeseriesDataKeySearchText || scope.timeseriesDataKeySearchText === '') { - scope.timeseriesDataKeySearchText = scope.timeseriesDataKeySearchText === '' ? null : ''; - } - if (!scope.attributeDataKeySearchText || scope.attributeDataKeySearchText === '') { - scope.attributeDataKeySearchText = scope.attributeDataKeySearchText === '' ? null : ''; + if (!scope.dataKeySearchText || scope.dataKeySearchText === '') { + scope.dataKeySearchText = scope.dataKeySearchText === '' ? null : ''; } if (!scope.alarmDataKeySearchText || scope.alarmDataKeySearchText === '') { scope.alarmDataKeySearchText = scope.alarmDataKeySearchText === '' ? null : ''; } }; - scope.transformTimeseriesDataKeyChip = function (chip) { + scope.transformDataKeyChip = function (chip) { if (scope.maxDataKeys > 0 && ngModelCtrl.$viewValue.dataKeys.length >= scope.maxDataKeys ) { return null; } else { - return scope.generateDataKey({chip: chip, type: types.dataKeyType.timeseries}); - } - }; - - scope.transformAttributeDataKeyChip = function (chip) { - if (scope.maxDataKeys > 0 && ngModelCtrl.$viewValue.dataKeys.length >= scope.maxDataKeys ) { - return null; - } else { - return scope.generateDataKey({chip: chip, type: types.dataKeyType.attribute}); + return scope.generateDataKey({chip: chip.name, type: chip.type}); } }; @@ -230,10 +207,8 @@ function DatasourceEntity($compile, $templateCache, $q, $mdDialog, $window, $doc w.triggerHandler('resize'); } }).then(function (dataKey) { - if (dataKey.type === types.dataKeyType.timeseries) { - scope.timeseriesDataKeys[index] = dataKey; - } else if (dataKey.type === types.dataKeyType.attribute) { - scope.attributeDataKeys[index] = dataKey; + if ((dataKey.type === types.dataKeyType.timeseries) || (dataKey.type === types.dataKeyType.attribute)) { + scope.dataKeys[index] = dataKey; } else if (dataKey.type === types.dataKeyType.alarm) { scope.alarmDataKeys[index] = dataKey; } @@ -242,7 +217,7 @@ function DatasourceEntity($compile, $templateCache, $q, $mdDialog, $window, $doc }); }; - scope.dataKeysSearch = function (searchText, type) { + scope.dataKeysSearch = function (searchText) { if (scope.widgetType == types.widgetType.alarm.value) { var dataKeys = searchText ? scope.alarmFields.filter( scope.createFilterForDataKey(searchText)) : scope.alarmFields; @@ -250,9 +225,25 @@ function DatasourceEntity($compile, $templateCache, $q, $mdDialog, $window, $doc } else { if (scope.entityAlias) { var deferred = $q.defer(); - scope.fetchEntityKeys({entityAliasId: scope.entityAlias.id, query: searchText, type: type}) + scope.fetchEntityKeys({entityAliasId: scope.entityAlias.id, query: searchText, type: types.dataKeyType.timeseries}) .then(function (dataKeys) { - deferred.resolve(dataKeys); + var items = []; + for (var i = 0; i < dataKeys.length; i++) { + items.push({ name: dataKeys[i], type: types.dataKeyType.timeseries }); + } + if (scope.widgetType == types.widgetType.latest.value) { + scope.fetchEntityKeys({entityAliasId: scope.entityAlias.id, query: searchText, type: types.dataKeyType.attribute}) + .then(function (dataKeys) { + for (var i = 0; i < dataKeys.length; i++) { + items.push({ name: dataKeys[i], type: types.dataKeyType.attribute }); + } + deferred.resolve(items); + }, function (e) { + deferred.reject(e); + }); + } + else + deferred.resolve(items); }, function (e) { deferred.reject(e); }); @@ -270,13 +261,13 @@ function DatasourceEntity($compile, $templateCache, $q, $mdDialog, $window, $doc }; }; - scope.createKey = function (event, chipsId) { + scope.createKey = function (event, type, chipsId) { var chipsChild = $(chipsId, element)[0].firstElementChild; var el = angular.element(chipsChild); var chipBuffer = el.scope().$mdChipsCtrl.getChipBuffer(); event.preventDefault(); event.stopPropagation(); - el.scope().$mdChipsCtrl.appendChip(chipBuffer.trim()); + el.scope().$mdChipsCtrl.appendChip({ name: chipBuffer.trim(), type: type}); el.scope().$mdChipsCtrl.resetChipBuffer(); } diff --git a/ui/src/app/components/datasource-entity.scss b/ui/src/app/components/datasource-entity.scss index ef4fcd0545..75a2eed632 100644 --- a/ui/src/app/components/datasource-entity.scss +++ b/ui/src/app/components/datasource-entity.scss @@ -16,6 +16,7 @@ @import "../../scss/constants"; .tb-entity-alias-autocomplete, +.tb-datakey-autocomplete, .tb-timeseries-datakey-autocomplete, .tb-attribute-datakey-autocomplete, .tb-alarm-datakey-autocomplete { diff --git a/ui/src/app/components/datasource-entity.tpl.html b/ui/src/app/components/datasource-entity.tpl.html index 128bf8305b..b9925f9b96 100644 --- a/ui/src/app/components/datasource-entity.tpl.html +++ b/ui/src/app/components/datasource-entity.tpl.html @@ -25,82 +25,39 @@
- - {{item}} - -
-
- entity.no-keys-found -
-
- entity.no-key-matching - - entity.create-new-key - -
-
-
-
- -
-
-
-
-
-
- {{$chip.label}} -
-
:
-
- {{$chip.name}} - f({{$chip.name}}) -
-
- - edit - -
-
-
- - {{item}} + placeholder="" + md-menu-class="tb-datakey-autocomplete"> + + + {{item.name}}
-
+
entity.no-keys-found
-
- entity.no-key-matching - - entity.create-new-key +
+ entity.no-key-matching + {{'entity.create-new-key' | translate }} + + {{'datakey.attributes' | translate }} + + + {{'datakey.timeseries' | translate }} + +
@@ -112,6 +69,14 @@
+ + {{'datakey.attributes' | translate }} + + + + {{'datakey.timeseries' | translate }} + + {{$chip.label}}
:
@@ -137,7 +102,7 @@ id="alarm_datakey" md-selected-item="selectedAlarmDataKey" md-search-text="alarmDataKeySearchText" - md-items="item in dataKeysSearch(alarmDataKeySearchText, types.dataKeyType.alarm)" + md-items="item in dataKeysSearch(alarmDataKeySearchText)" md-item-text="item.name" md-min-length="0" placeholder="{{'datakey.alarm' | translate }}"