From 2441cc0ee9c662e3802632b2ec92a5e6a85a7d29 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Tue, 4 Jul 2017 17:49:05 +0300 Subject: [PATCH] UI: Minor updates. --- ui/src/app/api/entity.service.js | 43 +++++++++++++------ .../related-entity-autocomplete.directive.js | 18 ++++---- 2 files changed, 37 insertions(+), 24 deletions(-) diff --git a/ui/src/app/api/entity.service.js b/ui/src/app/api/entity.service.js index 138853629f..dde622871a 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 { - relation.to = relatedEntity.id; } + + 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 f93ded25ed..7ce02520dd 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',