diff --git a/ui/src/app/api/alias-controller.js b/ui/src/app/api/alias-controller.js
index b6d29a9599..60e8a31005 100644
--- a/ui/src/app/api/alias-controller.js
+++ b/ui/src/app/api/alias-controller.js
@@ -95,8 +95,7 @@ export default class AliasController {
this.entityService.resolveAlias(entityAlias, this.stateController.getStateParams()).then(
function success(aliasInfo) {
aliasCtrl.resolvedAliases[aliasId] = aliasInfo;
- if (entityAlias.filter.stateEntity) {
- aliasInfo.stateEntity = true;
+ if (aliasInfo.stateEntity) {
aliasCtrl.resolvedAliasesToStateEntities[aliasId] =
aliasCtrl.stateController.getStateParams().entityId;
}
diff --git a/ui/src/app/api/entity.service.js b/ui/src/app/api/entity.service.js
index 91c8df3c2d..e647d9cfb2 100644
--- a/ui/src/app/api/entity.service.js
+++ b/ui/src/app/api/entity.service.js
@@ -31,6 +31,7 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
resolveAliasFilter: resolveAliasFilter,
checkEntityAlias: checkEntityAlias,
filterAliasByEntityTypes: filterAliasByEntityTypes,
+ getAliasFilterTypesByEntityTypes: getAliasFilterTypesByEntityTypes,
getEntityKeys: getEntityKeys,
createDatasourcesFromSubscriptionsInfo: createDatasourcesFromSubscriptionsInfo,
getRelatedEntities: getRelatedEntities,
@@ -223,17 +224,21 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
return promise;
}
- function getEntitiesByNameFilter(entityType, entityNameFilter, limit, config, subType) {
- var deferred = $q.defer();
- var pageLink = {limit: limit, textSearch: entityNameFilter};
+ function getEntitiesByPageLink(entityType, pageLink, config, subType, data, deferred) {
var promise = getEntitiesByPageLinkPromise(entityType, pageLink, config, subType);
if (promise) {
promise.then(
function success(result) {
- if (result.data && result.data.length > 0) {
- deferred.resolve(result.data);
+ data = data.concat(result.data);
+ if (result.hasNext) {
+ pageLink = result.nextPageLink;
+ getEntitiesByPageLink(entityType, pageLink, config, subType, data, deferred);
} else {
- deferred.resolve(null);
+ if (data && data.length > 0) {
+ deferred.resolve(data);
+ } else {
+ deferred.resolve(null);
+ }
}
},
function fail() {
@@ -243,6 +248,34 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
} else {
deferred.resolve(null);
}
+ }
+
+ function getEntitiesByNameFilter(entityType, entityNameFilter, limit, config, subType) {
+ var deferred = $q.defer();
+ var pageLink = {limit: limit, textSearch: entityNameFilter};
+ if (limit == -1) { // all
+ var data = [];
+ pageLink.limit = 100;
+ getEntitiesByPageLink(entityType, pageLink, config, subType, data, deferred);
+ } else {
+ var promise = getEntitiesByPageLinkPromise(entityType, pageLink, config, subType);
+ if (promise) {
+ promise.then(
+ function success(result) {
+ if (result.data && result.data.length > 0) {
+ deferred.resolve(result.data);
+ } else {
+ deferred.resolve(null);
+ }
+ },
+ function fail() {
+ deferred.resolve(null);
+ }
+ );
+ } else {
+ deferred.resolve(null);
+ }
+ }
return deferred.promise;
}
@@ -261,11 +294,12 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
function resolveAlias(entityAlias, stateParams) {
var deferred = $q.defer();
var filter = entityAlias.filter;
- resolveAliasFilter(filter, stateParams, 100).then(
+ resolveAliasFilter(filter, stateParams, -1).then(
function (result) {
var entities = result.entities;
var aliasInfo = {
alias: entityAlias.alias,
+ stateEntity: result.stateEntity,
resolveMultiple: filter.resolveMultiple
};
var resolvedEntities = entitiesToEntitiesInfo(entities);
@@ -291,39 +325,68 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
};
switch (filter.type) {
case types.aliasFilterType.entityList.value:
- if (filter.stateEntity) {
- result.stateEntity = true;
- if (stateParams && stateParams.entityId) {
- getEntity(stateParams.entityId.entityType, stateParams.entityId.id).then(
- function success(entity) {
- result.entities = [entity];
- deferred.resolve(result);
- },
- function fail() {
- deferred.reject();
- }
- );
- } else {
- deferred.resolve(result);
+ getEntities(filter.entityType, filter.entityList).then(
+ function success(entities) {
+ if (entities && entities.length) {
+ result.entities = entities;
+ deferred.resolve(result);
+ } else {
+ deferred.reject();
+ }
+ },
+ function fail() {
+ deferred.reject();
}
- } else {
- getEntities(filter.entityType, filter.entityList).then(
- function success(entities) {
- if (entities && entities.length) {
- result.entities = entities;
- deferred.resolve(result);
- } else {
- deferred.reject();
- }
+ );
+ break;
+ case types.aliasFilterType.entityName.value:
+ getEntitiesByNameFilter(filter.entityType, filter.entityNameFilter, maxItems).then(
+ function success(entities) {
+ if (entities && entities.length) {
+ result.entities = entities;
+ deferred.resolve(result);
+ } else {
+ deferred.reject();
+ }
+ },
+ function fail() {
+ deferred.reject();
+ }
+ );
+ break;
+ case types.aliasFilterType.stateEntity.value:
+ result.stateEntity = true;
+ if (stateParams && stateParams.entityId) {
+ getEntity(stateParams.entityId.entityType, stateParams.entityId.id).then(
+ function success(entity) {
+ result.entities = [entity];
+ deferred.resolve(result);
},
function fail() {
deferred.reject();
}
);
+ } else {
+ deferred.resolve(result);
}
break;
- case types.aliasFilterType.entityName.value:
- getEntitiesByNameFilter(filter.entityType, filter.entityNameFilter, maxItems).then(
+ case types.aliasFilterType.assetType.value:
+ getEntitiesByNameFilter(types.entityType.asset, filter.assetNameFilter, maxItems, null, filter.assetType).then(
+ function success(entities) {
+ if (entities && entities.length) {
+ result.entities = entities;
+ deferred.resolve(result);
+ } else {
+ deferred.reject();
+ }
+ },
+ function fail() {
+ deferred.reject();
+ }
+ );
+ break;
+ case types.aliasFilterType.deviceType.value:
+ getEntitiesByNameFilter(types.entityType.device, filter.deviceNameFilter, maxItems, null, filter.deviceType).then(
function success(entities) {
if (entities && entities.length) {
result.entities = entities;
@@ -337,27 +400,81 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
}
);
break;
- //TODO:
+
+ //TODO: Alias filter
}
return deferred.promise;
}
function filterAliasByEntityTypes(entityAlias, entityTypes) {
var filter = entityAlias.filter;
- switch (filter.type) {
- case types.aliasFilterType.entityList.value:
- if (filter.stateEntity) {
- return true;
- } else {
+ if (filterAliasFilterTypeByEntityTypes(filter.type, entityTypes)) {
+ switch (filter.type) {
+ case types.aliasFilterType.entityList.value:
return entityTypes.indexOf(filter.entityType) > -1 ? true : false;
- }
+ case types.aliasFilterType.entityName.value:
+ return entityTypes.indexOf(filter.entityType) > -1 ? true : false;
+ case types.aliasFilterType.stateEntity.value:
+ return true;
+ case types.aliasFilterType.assetType.value:
+ return entityTypes.indexOf(types.entityType.asset) > -1 ? true : false;
+ case types.aliasFilterType.deviceType.value:
+ return entityTypes.indexOf(types.entityType.device) > -1 ? true : false;
+ }
+ }
+ //TODO: Alias filter
+ return false;
+ }
+
+ function filterAliasFilterTypeByEntityType(aliasFilterType, entityType) {
+ switch (aliasFilterType) {
+ case types.aliasFilterType.entityList.value:
+ return true;
case types.aliasFilterType.entityName.value:
- return entityTypes.indexOf(filter.entityType) > -1 ? true : false;
+ return true;
+ case types.aliasFilterType.stateEntity.value:
+ return true;
+ case types.aliasFilterType.assetType.value:
+ return entityType === types.entityType.asset;
+ case types.aliasFilterType.deviceType.value:
+ return entityType === types.entityType.device;
+ case types.aliasFilterType.relationsQuery.value:
+ return true;
+ case types.aliasFilterType.assetSearchQuery.value:
+ return entityType === types.entityType.asset;
+ case types.aliasFilterType.deviceSearchQuery.value:
+ return entityType === types.entityType.device;
}
- //TODO:
return false;
}
+ function filterAliasFilterTypeByEntityTypes(aliasFilterType, entityTypes) {
+ if (!entityTypes || !entityTypes.length) {
+ return true;
+ }
+ var valid = false;
+ entityTypes.forEach(function(entityType) {
+ valid = valid || filterAliasFilterTypeByEntityType(aliasFilterType, entityType);
+ });
+ return valid;
+ }
+
+ function getAliasFilterTypesByEntityTypes(entityTypes) {
+ var allAliasFilterTypes = types.aliasFilterType;
+ if (!entityTypes || !entityTypes.length) {
+ return allAliasFilterTypes;
+ }
+ var result = {};
+ for (var type in allAliasFilterTypes) {
+ var aliasFilterType = allAliasFilterTypes[type];
+ if (filterAliasFilterTypeByEntityTypes(aliasFilterType.value, entityTypes)) {
+ result[type] = aliasFilterType;
+ }
+ }
+ return result;
+ }
+
+
function checkEntityAlias(entityAlias) {
var deferred = $q.defer();
resolveAliasFilter(entityAlias.filter, null, 1).then(
@@ -380,50 +497,6 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
return deferred.promise;
}
- /*function processEntityAlias(index, aliasIds, entityAliases, stateParams, resolution, deferred) {
- if (index < aliasIds.length) {
- var aliasId = aliasIds[index];
- var entityAlias = entityAliases[aliasId];
- var alias = entityAlias.alias;
- var filter = entityAlias.filter;
- resolveAliasFilter(filter, stateParams).then(
- function (entities) {
- if (entities && entities.length) {
- var entity = entities[0];
- var resolvedAlias = {alias: alias, entityType: entity.id.entityType, entityId: entity.id.id};
- resolution.aliasesInfo.entityAliases[aliasId] = resolvedAlias;
- resolution.aliasesInfo.entityAliasesInfo[aliasId] = entitiesToEntitiesInfo(entities);
- index++;
- processEntityAlias(index, aliasIds, entityAliases, stateParams, resolution, deferred);
- } else {
- if (!resolution.error) {
- resolution.error = 'dashboard.invalid-aliases-config';
- }
- index++;
- processEntityAlias(index, aliasIds, entityAliases, stateParams, resolution, deferred);
- }
- }
- );
- } else {
- deferred.resolve(resolution);
- }
- }*/
-
- /*function processEntityAliases(entityAliases, stateParams) {
- var deferred = $q.defer();
- var resolution = {
- aliasesInfo: {}
- };
- var aliasIds = [];
- if (entityAliases) {
- for (var aliasId in entityAliases) {
- aliasIds.push(aliasId);
- }
- }
- processEntityAlias(0, aliasIds, entityAliases, stateParams, resolution, deferred);
- return deferred.promise;
- }*/
-
function getEntityKeys(entityType, entityId, query, type) {
var deferred = $q.defer();
var url = '/api/plugins/telemetry/' + entityType + '/' + entityId + '/keys/';
@@ -889,4 +962,4 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
}
}
-}
\ No newline at end of file
+}
diff --git a/ui/src/app/api/subscription.js b/ui/src/app/api/subscription.js
index 4cb382ceab..1d4eb301c4 100644
--- a/ui/src/app/api/subscription.js
+++ b/ui/src/app/api/subscription.js
@@ -258,17 +258,17 @@ export default class Subscription {
} else {
subscription.rpcEnabled = subscription.ctx.$scope.widgetEditMode ? true : false;
}
- subscription.callbacks.rpcStateChanged(this);
+ subscription.callbacks.rpcStateChanged(subscription);
deferred.resolve();
} else {
subscription.rpcEnabled = false;
- subscription.callbacks.rpcStateChanged(this);
+ subscription.callbacks.rpcStateChanged(subscription);
deferred.resolve();
}
},
function fail () {
subscription.rpcEnabled = false;
- subscription.callbacks.rpcStateChanged(this);
+ subscription.callbacks.rpcStateChanged(subscription);
deferred.resolve();
}
);
diff --git a/ui/src/app/common/dashboard-utils.service.js b/ui/src/app/common/dashboard-utils.service.js
index fe8aa93f7b..915d5501eb 100644
--- a/ui/src/app/common/dashboard-utils.service.js
+++ b/ui/src/app/common/dashboard-utils.service.js
@@ -110,14 +110,12 @@ function DashboardUtils(types, utils, timeService) {
deviceAlias.deviceFilter.useFilter ? types.aliasFilterType.entityName.value : types.aliasFilterType.entityList.value;
if (entityAlias.filter.type == types.aliasFilterType.entityList.value) {
entityAlias.filter.entityList = deviceAlias.deviceFilter.deviceList;
- entityAlias.filter.stateEntity = false;
} else {
entityAlias.filter.entityNameFilter = deviceAlias.deviceFilter.deviceNameFilter;
}
} else {
entityAlias.filter.type = types.aliasFilterType.entityList.value;
entityAlias.filter.entityList = [deviceAlias.deviceId];
- entityAlias.filter.stateEntity = false;
}
return entityAlias;
}
@@ -132,7 +130,6 @@ function DashboardUtils(types, utils, timeService) {
}
if (entityAlias.filter.type == types.aliasFilterType.entityList.value) {
entityAlias.filter.entityList = entityAlias.entityFilter.entityList;
- entityAlias.filter.stateEntity = false;
} else {
entityAlias.filter.entityNameFilter = entityAlias.entityFilter.entityNameFilter;
}
@@ -342,7 +339,6 @@ function DashboardUtils(types, utils, timeService) {
function createSingleEntityFilter(entityType, entityId) {
return {
type: types.aliasFilterType.entityList.value,
- stateEntity: false,
entityList: [entityId],
entityType: entityType,
resolveMultiple: false
diff --git a/ui/src/app/common/types.constant.js b/ui/src/app/common/types.constant.js
index 40b66391fd..522abff190 100644
--- a/ui/src/app/common/types.constant.js
+++ b/ui/src/app/common/types.constant.js
@@ -74,6 +74,10 @@ export default angular.module('thingsboard.types', [])
value: 'entityName',
name: 'alias.filter-type-entity-name'
},
+ stateEntity: {
+ value: 'stateEntity',
+ name: 'alias.filter-type-state-entity'
+ },
assetType: {
value: 'assetType',
name: 'alias.filter-type-asset-type'
@@ -139,6 +143,53 @@ export default angular.module('thingsboard.types', [])
dashboard: "DASHBOARD",
alarm: "ALARM"
},
+ entityTypeTranslations: {
+ "DEVICE": {
+ type: 'entity.type-device',
+ list: 'entity.list-of-devices',
+ nameStartsWith: 'entity.device-name-starts-with'
+ },
+ "ASSET": {
+ type: 'entity.type-asset',
+ list: 'entity.list-of-assets',
+ nameStartsWith: 'entity.asset-name-starts-with'
+ },
+ "RULE": {
+ type: 'entity.type-rule',
+ list: 'entity.list-of-rules',
+ nameStartsWith: 'entity.rule-name-starts-with'
+ },
+ "PLUGIN": {
+ type: 'entity.type-plugin',
+ list: 'entity.list-of-plugins',
+ nameStartsWith: 'entity.plugin-name-starts-with'
+ },
+ "TENANT": {
+ type: 'entity.type-tenant',
+ list: 'entity.list-of-tenants',
+ nameStartsWith: 'entity.tenant-name-starts-with'
+ },
+ "CUSTOMER": {
+ type: 'entity.type-customer',
+ list: 'entity.list-of-customers',
+ nameStartsWith: 'entity.customer-name-starts-with'
+ },
+ "USER": {
+ type: 'entity.type-user',
+ list: 'entity.list-of-users',
+ nameStartsWith: 'entity.user-name-starts-with'
+ },
+ "DASHBOARD": {
+ type: 'entity.type-dashboard',
+ list: 'entity.list-of-dashboards',
+ nameStartsWith: 'entity.dashboard-name-starts-with'
+ },
+ "ALARM": {
+ type: 'entity.type-alarm',
+ list: 'entity.list-of-alarms',
+ nameStartsWith: 'entity.alarm-name-starts-with'
+ }
+ },
entitySearchDirection: {
from: "FROM",
to: "TO"
diff --git a/ui/src/app/common/utils.service.js b/ui/src/app/common/utils.service.js
index 8bf76c4f0f..8d2e565f4a 100644
--- a/ui/src/app/common/utils.service.js
+++ b/ui/src/app/common/utils.service.js
@@ -109,8 +109,7 @@ function Utils($mdColorPalette, $rootScope, $window, types) {
cleanCopy: cleanCopy,
isLocalUrl: isLocalUrl,
validateDatasources: validateDatasources,
- createKey: createKey,
- entityTypeName: entityTypeName
+ createKey: createKey
}
return service;
@@ -358,27 +357,4 @@ function Utils($mdColorPalette, $rootScope, $window, types) {
return dataKey;
}
- function entityTypeName (type) {
- switch (type) {
- case types.entityType.device:
- return 'entity.type-device';
- case types.entityType.asset:
- return 'entity.type-asset';
- case types.entityType.rule:
- return 'entity.type-rule';
- case types.entityType.plugin:
- return 'entity.type-plugin';
- case types.entityType.tenant:
- return 'entity.type-tenant';
- case types.entityType.customer:
- return 'entity.type-customer';
- case types.entityType.user:
- return 'entity.type-user';
- case types.entityType.dashboard:
- return 'entity.type-dashboard';
- case types.entityType.alarm:
- return 'entity.type-alarm';
- }
- }
-
}
diff --git a/ui/src/app/dashboard/add-widget.controller.js b/ui/src/app/dashboard/add-widget.controller.js
index 586fb46fc4..a9a68c74af 100644
--- a/ui/src/app/dashboard/add-widget.controller.js
+++ b/ui/src/app/dashboard/add-widget.controller.js
@@ -15,7 +15,7 @@
*/
/* eslint-disable import/no-unresolved, import/default */
-import entityAliasesTemplate from '../entity/entity-aliases.tpl.html';
+import entityAliasDialogTemplate from '../entity/entity-alias-dialog.tpl.html';
/* eslint-enable import/no-unresolved, import/default */
@@ -130,17 +130,14 @@ export default function AddWidgetController($scope, widgetService, entityService
var singleEntityAlias = {id: null, alias: alias, filter: {}};
$mdDialog.show({
- controller: 'EntityAliasesController',
+ controller: 'EntityAliasDialogController',
controllerAs: 'vm',
- templateUrl: entityAliasesTemplate,
+ templateUrl: entityAliasDialogTemplate,
locals: {
- config: {
- entityAliases: angular.copy(vm.dashboard.configuration.entityAliases),
- widgets: null,
- isSingleEntityAlias: true,
- singleEntityAlias: singleEntityAlias,
- allowedEntityTypes: allowedEntityTypes
- }
+ isAdd: true,
+ allowedEntityTypes: allowedEntityTypes,
+ entityAliases: vm.dashboard.configuration.entityAliases,
+ alias: singleEntityAlias
},
parent: angular.element($document[0].body),
fullscreen: true,
diff --git a/ui/src/app/dashboard/edit-widget.directive.js b/ui/src/app/dashboard/edit-widget.directive.js
index 4bd4e3dfff..5b788cc82c 100644
--- a/ui/src/app/dashboard/edit-widget.directive.js
+++ b/ui/src/app/dashboard/edit-widget.directive.js
@@ -15,7 +15,7 @@
*/
/* eslint-disable import/no-unresolved, import/default */
-import entityAliasesTemplate from '../entity/entity-aliases.tpl.html';
+import entityAliasDialogTemplate from '../entity/entity-alias-dialog.tpl.html';
import editWidgetTemplate from './edit-widget.tpl.html';
/* eslint-enable import/no-unresolved, import/default */
@@ -98,17 +98,14 @@ export default function EditWidgetDirective($compile, $templateCache, types, wid
var singleEntityAlias = {id: null, alias: alias, filter: {}};
$mdDialog.show({
- controller: 'EntityAliasesController',
+ controller: 'EntityAliasDialogController',
controllerAs: 'vm',
- templateUrl: entityAliasesTemplate,
+ templateUrl: entityAliasDialogTemplate,
locals: {
- config: {
- entityAliases: angular.copy(scope.dashboard.configuration.entityAliases),
- widgets: null,
- isSingleEntityAlias: true,
- singleEntityAlias: singleEntityAlias,
- allowedEntityTypes: allowedEntityTypes
- }
+ isAdd: true,
+ allowedEntityTypes: allowedEntityTypes,
+ entityAliases: scope.dashboard.configuration.entityAliases,
+ alias: singleEntityAlias
},
parent: angular.element($document[0].body),
fullscreen: true,
diff --git a/ui/src/app/entity/entity-filter-dialog.controller.js b/ui/src/app/entity/entity-alias-dialog.controller.js
similarity index 59%
rename from ui/src/app/entity/entity-filter-dialog.controller.js
rename to ui/src/app/entity/entity-alias-dialog.controller.js
index 17a19d61d2..a5b221adf7 100644
--- a/ui/src/app/entity/entity-filter-dialog.controller.js
+++ b/ui/src/app/entity/entity-alias-dialog.controller.js
@@ -14,22 +14,48 @@
* limitations under the License.
*/
+import './entity-alias-dialog.scss';
+
/*@ngInject*/
-export default function EntityFilterDialogController($scope, $mdDialog, $q, entityService, types, isAdd, allowedEntityTypes, filter) {
+export default function EntityAliasDialogController($scope, $mdDialog, $q, $filter, utils, entityService, types, isAdd, allowedEntityTypes, entityAliases, alias) {
var vm = this;
vm.types = types;
vm.isAdd = isAdd;
vm.allowedEntityTypes = allowedEntityTypes;
- vm.filter = filter;
+ if (angular.isArray(entityAliases)) {
+ vm.entityAliases = entityAliases;
+ } else {
+ vm.entityAliases = [];
+ for (var aliasId in entityAliases) {
+ vm.entityAliases.push(entityAliases[aliasId]);
+ }
+ }
+ if (vm.isAdd && !alias) {
+ vm.alias = {
+ alias: '',
+ filter: {
+ resolveMultiple: false
+ }
+ };
+ } else {
+ vm.alias = alias;
+ }
vm.cancel = cancel;
vm.save = save;
- $scope.$watch('vm.filter.type', function (newType, prevType) {
- if (newType && newType != prevType) {
- updateFilter();
+ $scope.$watch('vm.alias.alias', function (newAlias) {
+ if (newAlias) {
+ var valid = true;
+ var result = $filter('filter')(vm.entityAliases, {alias: newAlias}, true);
+ if (result && result.length) {
+ if (vm.isAdd || vm.alias.id != result[0].id) {
+ valid = false;
+ }
+ }
+ $scope.theForm.aliasName.$setValidity('duplicateAliasName', valid);
}
});
@@ -39,32 +65,13 @@ export default function EntityFilterDialogController($scope, $mdDialog, $q, enti
}
});
- function updateFilter() {
- var filter = {};
- filter.type = vm.filter.type;
- filter.resolveMultiple = vm.filter.resolveMultiple;
- switch (filter.type) {
- case types.aliasFilterType.entityList.value:
- filter.entityType = null;
- filter.entityList = [];
- filter.stateEntity = false;
- break;
- case types.aliasFilterType.entityName.value:
- filter.entityType = null;
- filter.entityNameFilter = '';
- break;
- //TODO:
- }
- vm.filter = filter;
- }
-
function validate() {
var deferred = $q.defer();
var validationResult = {
entity: null,
stateEntity: false
}
- entityService.resolveAliasFilter(vm.filter, null, 1).then(
+ entityService.resolveAliasFilter(vm.alias.filter, null, 1).then(
function success(result) {
validationResult.stateEntity = result.stateEntity;
var entities = result.entities;
@@ -87,12 +94,11 @@ export default function EntityFilterDialogController($scope, $mdDialog, $q, enti
function save() {
$scope.theForm.$setPristine();
validate().then(
- function success(validationResult) {
- $mdDialog.hide({
- filter: vm.filter,
- entity: validationResult.entity,
- stateEntity: validationResult.stateEntity
- });
+ function success() {
+ if (vm.isAdd) {
+ vm.alias.id = utils.guid();
+ }
+ $mdDialog.hide(vm.alias);
},
function fail() {
$scope.theForm.$setValidity('entityFilter', false);
@@ -101,4 +107,3 @@ export default function EntityFilterDialogController($scope, $mdDialog, $q, enti
}
}
-
diff --git a/ui/src/app/entity/entity-alias-dialog.scss b/ui/src/app/entity/entity-alias-dialog.scss
new file mode 100644
index 0000000000..96df6fd1e8
--- /dev/null
+++ b/ui/src/app/entity/entity-alias-dialog.scss
@@ -0,0 +1,27 @@
+/**
+ * Copyright © 2016-2017 The Thingsboard Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+.tb-entity-alias-dialog {
+ .tb-resolve-multiple-switch {
+ padding-left: 10px;
+ .resolve-multiple-switch {
+ margin: 0;
+ }
+ .resolve-multiple-label {
+ margin: 5px 0;
+ }
+ }
+}
\ No newline at end of file
diff --git a/ui/src/app/entity/entity-alias-dialog.tpl.html b/ui/src/app/entity/entity-alias-dialog.tpl.html
new file mode 100644
index 0000000000..b78a795e61
--- /dev/null
+++ b/ui/src/app/entity/entity-alias-dialog.tpl.html
@@ -0,0 +1,73 @@
+
+