diff --git a/ui/src/app/api/component-descriptor.service.js b/ui/src/app/api/component-descriptor.service.js index b4cacf4991..b4398cb569 100644 --- a/ui/src/app/api/component-descriptor.service.js +++ b/ui/src/app/api/component-descriptor.service.js @@ -21,38 +21,63 @@ function ComponentDescriptorService($http, $q) { var componentsByType = {}; var componentsByClazz = {}; + var actionsByPlugin = {}; var service = { + getComponentDescriptorsByType: getComponentDescriptorsByType, + getComponentDescriptorByClazz: getComponentDescriptorByClazz, + getPluginActionsByPluginClazz: getPluginActionsByPluginClazz, getComponentDescriptorsByTypes: getComponentDescriptorsByTypes } return service; - function getComponentDescriptorsByTypes(componentTypes, ruleChainType) { + function getComponentDescriptorsByType(componentType) { + var deferred = $q.defer(); + if (componentsByType[componentType]) { + deferred.resolve(componentsByType[componentType]); + } else { + var url = '/api/components/' + componentType; + $http.get(url, null).then(function success(response) { + componentsByType[componentType] = response.data; + for (var i = 0; i < componentsByType[componentType].length; i++) { + var component = componentsByType[componentType][i]; + componentsByClazz[component.clazz] = component; + } + deferred.resolve(componentsByType[componentType]); + }, function fail() { + deferred.reject(); + }); + + } + return deferred.promise; + } + + function getComponentDescriptorsByTypes(componentTypes, type) { var deferred = $q.defer(); var result = []; - if (!componentsByType[ruleChainType]) { - componentsByType[ruleChainType] = {}; + if (!componentsByType[type]) { + componentsByType[type] = {}; } for (var i=componentTypes.length-1;i>=0;i--) { var componentType = componentTypes[i]; - if (componentsByType[ruleChainType][componentType]) { - result = result.concat(componentsByType[ruleChainType][componentType]); + if (componentsByType[type][componentType]) { + result = result.concat(componentsByType[type][componentType]); componentTypes.splice(i, 1); } } if (!componentTypes.length) { deferred.resolve(result); } else { - var url = '/api/components?componentTypes=' + componentTypes.join(',') + '&ruleChainType=' + ruleChainType; + var url = '/api/components?componentTypes=' + componentTypes.join(',') + '&ruleChainType=' + type; $http.get(url, null).then(function success(response) { var components = response.data; for (var i = 0; i < components.length; i++) { var component = components[i]; - var componentsList = componentsByType[ruleChainType][component.type]; + var componentsList = componentsByType[type][component.type]; if (!componentsList) { componentsList = []; - componentsByType[ruleChainType][component.type] = componentsList; + componentsByType[type][component.type] = componentsList; } componentsList.push(component); componentsByClazz[component.clazz] = component; @@ -65,4 +90,37 @@ function ComponentDescriptorService($http, $q) { } return deferred.promise; } + + function getComponentDescriptorByClazz(componentDescriptorClazz) { + var deferred = $q.defer(); + if (componentsByClazz[componentDescriptorClazz]) { + deferred.resolve(componentsByClazz[componentDescriptorClazz]); + } else { + var url = '/api/component/' + componentDescriptorClazz; + $http.get(url, null).then(function success(response) { + componentsByClazz[componentDescriptorClazz] = response.data; + deferred.resolve(componentsByClazz[componentDescriptorClazz]); + }, function fail() { + deferred.reject(); + }); + } + return deferred.promise; + } + + function getPluginActionsByPluginClazz(pluginClazz) { + var deferred = $q.defer(); + if (actionsByPlugin[pluginClazz]) { + deferred.resolve(actionsByPlugin[pluginClazz]); + } else { + var url = '/api/components/actions/' + pluginClazz; + $http.get(url, null).then(function success(response) { + actionsByPlugin[pluginClazz] = response.data; + deferred.resolve(actionsByPlugin[pluginClazz]); + }, function fail() { + deferred.reject(); + }); + } + return deferred.promise; + } + } diff --git a/ui/src/app/edge/downlinks/edge-downlinks-row.directive.js b/ui/src/app/edge/downlinks/edge-downlinks-row.directive.js index 16015d12db..bbaf1da30d 100644 --- a/ui/src/app/edge/downlinks/edge-downlinks-row.directive.js +++ b/ui/src/app/edge/downlinks/edge-downlinks-row.directive.js @@ -92,14 +92,6 @@ export default function EdgeDownlinksRowDirective($compile, $templateCache, $mdD type === types.edgeEventType.widgetsBundle ); } - scope.checkTooltip = function($event) { - var el = $event.target; - var $el = angular.element(el); - if(el.offsetWidth < el.scrollWidth && !$el.attr('title')){ - $el.attr('title', $el.text()); - } - } - $compile(element.contents())(scope); scope.updateStatus = function(downlinkCreatedTime) { diff --git a/ui/src/app/rulechain/rulechain-fieldset.tpl.html b/ui/src/app/rulechain/rulechain-fieldset.tpl.html index 6a4841a550..1f95855d96 100644 --- a/ui/src/app/rulechain/rulechain-fieldset.tpl.html +++ b/ui/src/app/rulechain/rulechain-fieldset.tpl.html @@ -24,8 +24,11 @@ class="md-raised md-primary">{{ 'rulechain.delete' | translate }}
{{ 'rulechain.set-root' | translate }} + {{ 'edge.unassign-from-edge' | translate }} {{ 'rulechain.set-edge-template-root-rulechain' | translate }} @@ -36,9 +39,7 @@ ng-show="!isEdit && !ruleChain.root && ruleChain.isDefault && ruleChainsScope == 'edges'" class="md-raised md-primary">{{ 'rulechain.unset-auto-assign-to-edge' | translate }} - {{ 'rulechain.set-root' | translate }} +
mapRuleChainsWithDefaultEdges(ruleChains)) + .then(ruleChains => deferred.resolve(ruleChains)); return deferred.promise; } } @@ -399,7 +391,7 @@ export default function RuleChainsController(ruleChainService, userService, impo } var ruleChainParams = {ruleChainId: ruleChain.id.id}; if (vm.ruleChainsScope === 'edge') { - $state.go('home.edges.ruleChains.ruleChain', Object.assign(ruleChainParams, edgeId = vm.edge.id.id)); + $state.go('home.edges.ruleChains.ruleChain', ruleChainParams); } else if (vm.ruleChainsScope === 'edges') { $state.go('home.edges.ruleChains.ruleChain', ruleChainParams); } else { @@ -416,7 +408,7 @@ export default function RuleChainsController(ruleChainService, userService, impo } function isRootRuleChain(ruleChain) { - if (angular.isDefined(vm.edge) && vm.edge != null) { + if (vm.edge != null) { return angular.isDefined(vm.edge.rootRuleChainId) && vm.edge.rootRuleChainId != null && vm.edge.rootRuleChainId.id === ruleChain.id.id; } else { return ruleChain && ruleChain.root; @@ -424,7 +416,7 @@ export default function RuleChainsController(ruleChainService, userService, impo } function isNonRootRuleChain(ruleChain) { - if (angular.isDefined(vm.edge) && vm.edge != null) { + if (vm.edge != null) { return angular.isDefined(vm.edge.rootRuleChainId) && vm.edge.rootRuleChainId != null && vm.edge.rootRuleChainId.id !== ruleChain.id.id; } else { return ruleChain && !ruleChain.root; @@ -454,7 +446,7 @@ export default function RuleChainsController(ruleChainService, userService, impo .cancel($translate.instant('action.no')) .ok($translate.instant('action.yes')); $mdDialog.show(confirm).then(function () { - if (angular.isDefined(vm.edge) && vm.edge != null) { + if (vm.edge != null) { edgeService.setRootRuleChain(vm.edge.id.id, ruleChain.id.id).then( (edge) => { vm.edge = edge; @@ -525,7 +517,7 @@ export default function RuleChainsController(ruleChainService, userService, impo }); } - function unassignRuleChainsFromEdge($event, items, edgeId) { + function unassignRuleChainsFromEdge($event, items) { var confirm = $mdDialog.confirm() .targetEvent($event) .title($translate.instant('rulechain.unassign-rulechains-title', {count: items.selectedCount}, 'messageformat')) @@ -567,7 +559,7 @@ export default function RuleChainsController(ruleChainService, userService, impo controller: 'AddRuleChainsToEdgeController', controllerAs: 'vm', templateUrl: addRuleChainsToEdgeTemplate, - locals: {edgeId: edgeId, ruleChains: ruleChains}, + locals: {edgeId, ruleChains}, parent: angular.element($document[0].body), fullscreen: true, targetEvent: $event @@ -604,7 +596,7 @@ export default function RuleChainsController(ruleChainService, userService, impo }); } - function unassignFromEdge($event, ruleChain, edgeId) { + function unassignFromEdge($event, ruleChain) { if ($event) { $event.stopPropagation(); } diff --git a/ui/src/app/rulechain/rulechains.tpl.html b/ui/src/app/rulechain/rulechains.tpl.html index 94ca52f3c6..26aa54fd72 100644 --- a/ui/src/app/rulechain/rulechains.tpl.html +++ b/ui/src/app/rulechain/rulechains.tpl.html @@ -30,6 +30,7 @@ edge="vm.edge" on-set-auto-assign-to-edge-rule-chain="vm.setAutoAssignToEdgeRuleChain(event, vm.grid.detailsConfig.currentItem)" on-unset-auto-assign-to-edge-rule-chain="vm.unsetAutoAssignToEdgeRuleChain(event, vm.grid.detailsConfig.currentItem)" + on-unassign-from-edge="vm.unassignFromEdge(event, vm.grid.detailsConfig.currentItem)" on-set-root-rule-chain="vm.setRootRuleChain(event, vm.grid.detailsConfig.currentItem)" on-export-rule-chain="vm.exportRuleChain(event, vm.grid.detailsConfig.currentItem)" on-delete-rule-chain="vm.grid.deleteItem(event, vm.grid.detailsConfig.currentItem)">