thingsboard-aplcache
Changes
ui/src/app/api/entity.service.js 41(+28 -13)
Details
ui/src/app/api/entity.service.js 41(+28 -13)
diff --git a/ui/src/app/api/entity.service.js b/ui/src/app/api/entity.service.js
index 1388536..dde6228 100644
--- a/ui/src/app/api/entity.service.js
+++ b/ui/src/app/api/entity.service.js
@@ -892,10 +892,10 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
}
}
- function getRelatedEntities(rootEntityId, entityType, entitySubTypes, maxLevel, keys, typeTranslatePrefix, relationType) {
+ function getRelatedEntities(rootEntityId, entityType, entitySubTypes, maxLevel, keys, typeTranslatePrefix, relationType, direction) {
var deferred = $q.defer();
- var entitySearchQuery = constructRelatedEntitiesSearchQuery(rootEntityId, entityType, entitySubTypes, maxLevel, relationType);
+ var entitySearchQuery = constructRelatedEntitiesSearchQuery(rootEntityId, entityType, entitySubTypes, maxLevel, relationType, direction);
if (!entitySearchQuery) {
deferred.reject();
} else {
@@ -930,12 +930,15 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
return deferred.promise;
}
- function saveRelatedEntity(relatedEntity, parentEntityId, keys, relation) {
+ function saveRelatedEntity(relatedEntity, parentEntityId, keys, relation, direction) {
var deferred = $q.defer();
+ if (!direction) {
+ direction = types.entitySearchDirection.from;
+ }
if (relatedEntity.id.id) {
- updateRelatedEntity(relatedEntity, keys, deferred, relation);
+ updateRelatedEntity(relatedEntity, keys, deferred, relation, direction);
} else {
- addRelatedEntity(relatedEntity, parentEntityId, keys, deferred, relation);
+ addRelatedEntity(relatedEntity, parentEntityId, keys, deferred, relation, direction);
}
return deferred.promise;
}
@@ -1073,7 +1076,7 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
}
}
- function addRelatedEntity(relatedEntity, parentEntityId, keys, deferred, relation) {
+ function addRelatedEntity(relatedEntity, parentEntityId, keys, deferred, relation, direction) {
var entity = {};
entity.id = relatedEntity.id;
entity.name = relatedEntity.name;
@@ -1083,13 +1086,18 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
relatedEntity.id = entity.id;
if (!relation) {
relation = {
- from: parentEntityId,
- to: relatedEntity.id,
type: types.entityRelationType.contains
};
- } else {
+ }
+
+ if (direction == types.entitySearchDirection.from) {
+ relation.from = parentEntityId;
relation.to = relatedEntity.id;
+ } else {
+ relation.from = relatedEntity.id;
+ relation.to = parentEntityId;
}
+
entityRelationService.saveRelation(relation).then(
function success() {
updateEntity(entity, relatedEntity, keys, deferred, relation);
@@ -1105,11 +1113,15 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
);
}
- function updateRelatedEntity(relatedEntity, keys, deferred, relation) {
+ function updateRelatedEntity(relatedEntity, keys, deferred, relation, direction) {
getEntityPromise(relatedEntity.id.entityType, relatedEntity.id.id, {ignoreLoading: true}).then(
function success(entity) {
if (relation) {
- relation.to = relatedEntity.id;
+ if (direction == types.entitySearchDirection.from) {
+ relation.to = relatedEntity.id;
+ } else {
+ relation.from = relatedEntity.id;
+ }
entityRelationService.saveRelation(relation).then(
function success() {
updateEntity(entity, relatedEntity, keys, deferred);
@@ -1162,16 +1174,19 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
);
}
- function constructRelatedEntitiesSearchQuery(rootEntityId, entityType, entitySubTypes, maxLevel, relationType) {
+ function constructRelatedEntitiesSearchQuery(rootEntityId, entityType, entitySubTypes, maxLevel, relationType, direction) {
var searchQuery = {
parameters: {
rootId: rootEntityId.id,
rootType: rootEntityId.entityType,
- direction: types.entitySearchDirection.from
+ direction: direction
},
relationType: relationType
};
+ if (!direction) {
+ searchQuery.parameters.direction = types.entitySearchDirection.from;
+ }
if (!relationType) {
searchQuery.relationType = types.entityRelationType.contains;
}
diff --git a/ui/src/app/components/related-entity-autocomplete.directive.js b/ui/src/app/components/related-entity-autocomplete.directive.js
index f93ded2..7ce0252 100644
--- a/ui/src/app/components/related-entity-autocomplete.directive.js
+++ b/ui/src/app/components/related-entity-autocomplete.directive.js
@@ -44,16 +44,14 @@ function RelatedEntityAutocomplete($compile, $templateCache, $q, $filter, entity
if (!scope.allEntities) {
entityService.getRelatedEntities(scope.rootEntityId, scope.entityType, scope.entitySubtypes, -1, []).then(
function success(entities) {
- if (scope.excludeEntityId) {
- var result = $filter('filter')(entities, {id: {id: scope.excludeEntityId.id} }, true);
- result = $filter('filter')(result, {id: {entityType: scope.excludeEntityId.entityType} }, true);
- if (result && result.length) {
- var excludeEntity = result[0];
- var index = entities.indexOf(excludeEntity);
- if (index > -1) {
- entities.splice(index, 1);
+ if (scope.excludeEntityIds && scope.excludeEntityIds.length) {
+ var filteredEntities = [];
+ entities.forEach(function(entity) {
+ if (scope.excludeEntityIds.indexOf(entity.id.id) == -1) {
+ filteredEntities.push(entity);
}
- }
+ });
+ entities = filteredEntities;
}
scope.allEntities = entities;
filterEntities(searchText, deferred);
@@ -116,7 +114,7 @@ function RelatedEntityAutocomplete($compile, $templateCache, $q, $filter, entity
rootEntityId: '=',
entityType: '=',
entitySubtypes: '=',
- excludeEntityId: '=?',
+ excludeEntityIds: '=?',
theForm: '=?',
tbRequired: '=?',
disabled:'=ngDisabled',