Commit d0bff3d6eb2b2f0724798df2ebe9688cb6387b50

Authored by VoBa
Committed by GitHub
2 parents 57adec67 77e73516

Merge pull request #61 from deaflynx/develop/2.6-edge

Develop/2.6 edge UI updates
@@ -28,31 +28,31 @@ function ComponentDescriptorService($http, $q) { @@ -28,31 +28,31 @@ function ComponentDescriptorService($http, $q) {
28 28
29 return service; 29 return service;
30 30
31 - function getComponentDescriptorsByTypes(componentTypes, type) { 31 + function getComponentDescriptorsByTypes(componentTypes, ruleChainType) {
32 var deferred = $q.defer(); 32 var deferred = $q.defer();
33 var result = []; 33 var result = [];
34 - if (!componentsByType[type]) {  
35 - componentsByType[type] = {}; 34 + if (!componentsByType[ruleChainType]) {
  35 + componentsByType[ruleChainType] = {};
36 } 36 }
37 for (var i=componentTypes.length-1;i>=0;i--) { 37 for (var i=componentTypes.length-1;i>=0;i--) {
38 var componentType = componentTypes[i]; 38 var componentType = componentTypes[i];
39 - if (componentsByType[type][componentType]) {  
40 - result = result.concat(componentsByType[type][componentType]); 39 + if (componentsByType[ruleChainType][componentType]) {
  40 + result = result.concat(componentsByType[ruleChainType][componentType]);
41 componentTypes.splice(i, 1); 41 componentTypes.splice(i, 1);
42 } 42 }
43 } 43 }
44 if (!componentTypes.length) { 44 if (!componentTypes.length) {
45 deferred.resolve(result); 45 deferred.resolve(result);
46 } else { 46 } else {
47 - var url = '/api/components?componentTypes=' + componentTypes.join(',') + '&ruleChainType=' + type; 47 + var url = '/api/components?componentTypes=' + componentTypes.join(',') + '&ruleChainType=' + ruleChainType;
48 $http.get(url, null).then(function success(response) { 48 $http.get(url, null).then(function success(response) {
49 var components = response.data; 49 var components = response.data;
50 for (var i = 0; i < components.length; i++) { 50 for (var i = 0; i < components.length; i++) {
51 var component = components[i]; 51 var component = components[i];
52 - var componentsList = componentsByType[type][component.type]; 52 + var componentsList = componentsByType[ruleChainType][component.type];
53 if (!componentsList) { 53 if (!componentsList) {
54 componentsList = []; 54 componentsList = [];
55 - componentsByType[type][component.type] = componentsList; 55 + componentsByType[ruleChainType][component.type] = componentsList;
56 } 56 }
57 componentsList.push(component); 57 componentsList.push(component);
58 componentsByClazz[component.clazz] = component; 58 componentsByClazz[component.clazz] = component;
@@ -27,6 +27,9 @@ @@ -27,6 +27,9 @@
27 <md-button ng-click="onDeleteAsset({event: $event})" 27 <md-button ng-click="onDeleteAsset({event: $event})"
28 ng-show="!isEdit && assetScope === 'tenant'" 28 ng-show="!isEdit && assetScope === 'tenant'"
29 class="md-raised md-primary">{{ 'asset.delete' | translate }}</md-button> 29 class="md-raised md-primary">{{ 'asset.delete' | translate }}</md-button>
  30 +<md-button ng-click="onUnassignFromEdge({event: $event})"
  31 + ng-show="!isEdit && assetScope === 'edge'"
  32 + class="md-raised md-primary">{{ 'edge.unassign-from-edge' | translate }}</md-button>
30 33
31 <div layout="row"> 34 <div layout="row">
32 <md-button ngclipboard data-clipboard-action="copy" 35 <md-button ngclipboard data-clipboard-action="copy"
@@ -130,6 +130,7 @@ export function AssetController($rootScope, userService, assetService, customerS @@ -130,6 +130,7 @@ export function AssetController($rootScope, userService, assetService, customerS
130 vm.assignToCustomer = assignToCustomer; 130 vm.assignToCustomer = assignToCustomer;
131 vm.makePublic = makePublic; 131 vm.makePublic = makePublic;
132 vm.unassignFromCustomer = unassignFromCustomer; 132 vm.unassignFromCustomer = unassignFromCustomer;
  133 + vm.unassignFromEdge = unassignFromEdge;
133 134
134 initController(); 135 initController();
135 136
@@ -66,7 +66,8 @@ export default function AssetDirective($compile, $templateCache, toast, $transla @@ -66,7 +66,8 @@ export default function AssetDirective($compile, $templateCache, toast, $transla
66 onAssignToCustomer: '&', 66 onAssignToCustomer: '&',
67 onMakePublic: '&', 67 onMakePublic: '&',
68 onUnassignFromCustomer: '&', 68 onUnassignFromCustomer: '&',
69 - onDeleteAsset: '&' 69 + onDeleteAsset: '&',
  70 + onUnassignFromEdge: '&'
70 } 71 }
71 }; 72 };
72 } 73 }
@@ -29,6 +29,7 @@ @@ -29,6 +29,7 @@
29 on-assign-to-customer="vm.assignToCustomer(event, [ vm.grid.detailsConfig.currentItem.id.id ])" 29 on-assign-to-customer="vm.assignToCustomer(event, [ vm.grid.detailsConfig.currentItem.id.id ])"
30 on-make-public="vm.makePublic(event, vm.grid.detailsConfig.currentItem)" 30 on-make-public="vm.makePublic(event, vm.grid.detailsConfig.currentItem)"
31 on-unassign-from-customer="vm.unassignFromCustomer(event, vm.grid.detailsConfig.currentItem, isPublic)" 31 on-unassign-from-customer="vm.unassignFromCustomer(event, vm.grid.detailsConfig.currentItem, isPublic)"
  32 + on-unassign-from-edge="vm.unassignFromEdge(event, vm.grid.detailsConfig.currentItem)"
32 on-delete-asset="vm.grid.deleteItem(event, vm.grid.detailsConfig.currentItem)"></tb-asset> 33 on-delete-asset="vm.grid.deleteItem(event, vm.grid.detailsConfig.currentItem)"></tb-asset>
33 </md-tab> 34 </md-tab>
34 <md-tab ng-if="!vm.grid.detailsConfig.isDetailsEditMode" md-on-select="vm.grid.triggerResize()" label="{{ 'attribute.attributes' | translate }}"> 35 <md-tab ng-if="!vm.grid.detailsConfig.isDetailsEditMode" md-on-select="vm.grid.triggerResize()" label="{{ 'attribute.attributes' | translate }}">
@@ -16,7 +16,7 @@ @@ -16,7 +16,7 @@
16 16
17 --> 17 -->
18 <md-button ng-click="onExportDashboard({event: $event})" 18 <md-button ng-click="onExportDashboard({event: $event})"
19 - ng-show="!isEdit && dashboardScope === 'tenant'" 19 + ng-show="!isEdit && (dashboardScope === 'tenant' || dashboardScope === 'edge')"
20 class="md-raised md-primary">{{ 'dashboard.export' | translate }}</md-button> 20 class="md-raised md-primary">{{ 'dashboard.export' | translate }}</md-button>
21 <md-button ng-click="onMakePublic({event: $event})" 21 <md-button ng-click="onMakePublic({event: $event})"
22 ng-show="!isEdit && dashboardScope === 'tenant' && !dashboard.publicCustomerId" 22 ng-show="!isEdit && dashboardScope === 'tenant' && !dashboard.publicCustomerId"
@@ -34,6 +34,9 @@ @@ -34,6 +34,9 @@
34 <md-button ng-click="onDeleteDashboard({event: $event})" 34 <md-button ng-click="onDeleteDashboard({event: $event})"
35 ng-show="!isEdit && dashboardScope === 'tenant'" 35 ng-show="!isEdit && dashboardScope === 'tenant'"
36 class="md-raised md-primary">{{ 'dashboard.delete' | translate }}</md-button> 36 class="md-raised md-primary">{{ 'dashboard.delete' | translate }}</md-button>
  37 +<md-button ng-click="onUnassignFromEdge({event: $event})"
  38 + ng-show="!isEdit && dashboardScope === 'edge'"
  39 + class="md-raised md-primary">{{ 'edge.unassign-from-edge' | translate }}</md-button>
37 <md-content class="md-padding" layout="column"> 40 <md-content class="md-padding" layout="column">
38 <md-input-container class="md-block" 41 <md-input-container class="md-block"
39 ng-show="!isEdit && dashboard.assignedCustomersText && dashboardScope === 'tenant'"> 42 ng-show="!isEdit && dashboard.assignedCustomersText && dashboardScope === 'tenant'">
@@ -48,12 +48,14 @@ export default function DashboardDirective($compile, $templateCache, $translate, @@ -48,12 +48,14 @@ export default function DashboardDirective($compile, $templateCache, $translate,
48 dashboard: '=', 48 dashboard: '=',
49 isEdit: '=', 49 isEdit: '=',
50 customerId: '=', 50 customerId: '=',
  51 + edgeId: '=',
51 dashboardScope: '=', 52 dashboardScope: '=',
52 theForm: '=', 53 theForm: '=',
53 onMakePublic: '&', 54 onMakePublic: '&',
54 onMakePrivate: '&', 55 onMakePrivate: '&',
55 onManageAssignedCustomers: '&', 56 onManageAssignedCustomers: '&',
56 onUnassignFromCustomer: '&', 57 onUnassignFromCustomer: '&',
  58 + onUnassignFromEdge: '&',
57 onExportDashboard: '&', 59 onExportDashboard: '&',
58 onDeleteDashboard: '&' 60 onDeleteDashboard: '&'
59 } 61 }
@@ -129,6 +129,7 @@ export function DashboardsController(userService, dashboardService, customerServ @@ -129,6 +129,7 @@ export function DashboardsController(userService, dashboardService, customerServ
129 vm.manageAssignedCustomers = manageAssignedCustomers; 129 vm.manageAssignedCustomers = manageAssignedCustomers;
130 vm.unassignFromCustomer = unassignFromCustomer; 130 vm.unassignFromCustomer = unassignFromCustomer;
131 vm.exportDashboard = exportDashboard; 131 vm.exportDashboard = exportDashboard;
  132 + vm.unassignFromEdge = unassignFromEdge;
132 133
133 initController(); 134 initController();
134 135
@@ -156,6 +157,10 @@ export function DashboardsController(userService, dashboardService, customerServ @@ -156,6 +157,10 @@ export function DashboardsController(userService, dashboardService, customerServ
156 ); 157 );
157 } 158 }
158 159
  160 + if (edgeId) {
  161 + vm.edgeId = edgeId;
  162 + }
  163 +
159 if (vm.dashboardsScope === 'tenant') { 164 if (vm.dashboardsScope === 'tenant') {
160 fetchDashboardsFunction = function (pageLink) { 165 fetchDashboardsFunction = function (pageLink) {
161 return dashboardService.getTenantDashboards(pageLink); 166 return dashboardService.getTenantDashboards(pageLink);
@@ -26,12 +26,14 @@ @@ -26,12 +26,14 @@
26 is-edit="vm.grid.detailsConfig.isDetailsEditMode" 26 is-edit="vm.grid.detailsConfig.isDetailsEditMode"
27 dashboard-scope="vm.dashboardsScope" 27 dashboard-scope="vm.dashboardsScope"
28 customer-id="vm.customerId" 28 customer-id="vm.customerId"
  29 + edge-id="vm.edgeId"
29 the-form="vm.grid.detailsForm" 30 the-form="vm.grid.detailsForm"
30 on-make-public="vm.makePublic(event, vm.grid.detailsConfig.currentItem)" 31 on-make-public="vm.makePublic(event, vm.grid.detailsConfig.currentItem)"
31 on-make-private="vm.makePrivate(event, vm.grid.detailsConfig.currentItem)" 32 on-make-private="vm.makePrivate(event, vm.grid.detailsConfig.currentItem)"
32 on-manage-assigned-customers="vm.manageAssignedCustomers(event, vm.grid.detailsConfig.currentItem)" 33 on-manage-assigned-customers="vm.manageAssignedCustomers(event, vm.grid.detailsConfig.currentItem)"
33 on-unassign-from-customer="vm.unassignFromCustomer(event, vm.grid.detailsConfig.currentItem, vm.customerId)" 34 on-unassign-from-customer="vm.unassignFromCustomer(event, vm.grid.detailsConfig.currentItem, vm.customerId)"
34 - on-export-dashboard="vm.exportDashboard(event, vm.grid.detailsConfig.currentItem)" 35 + on-unassign-from-edge="vm.unassignFromEdge(event, vm.grid.detailsConfig.currentItem, vm.edgeId)"
  36 + on-export-dashboard="vm.exportDashboard(event, vm.grid.detailsConfig.currentItem)"
35 on-delete-dashboard="vm.grid.deleteItem(event, vm.grid.detailsConfig.currentItem)"></tb-dashboard-details> 37 on-delete-dashboard="vm.grid.deleteItem(event, vm.grid.detailsConfig.currentItem)"></tb-dashboard-details>
36 </md-tab> 38 </md-tab>
37 <md-tab ng-if="!vm.grid.detailsConfig.isDetailsEditMode && vm.grid.isTenantAdmin()" md-on-select="vm.grid.triggerResize()" label="{{ 'audit-log.audit-logs' | translate }}"> 39 <md-tab ng-if="!vm.grid.detailsConfig.isDetailsEditMode && vm.grid.isTenantAdmin()" md-on-select="vm.grid.triggerResize()" label="{{ 'audit-log.audit-logs' | translate }}">
@@ -24,6 +24,9 @@ @@ -24,6 +24,9 @@
24 <md-button ng-click="onUnassignFromCustomer({event: $event, isPublic: isPublic})" 24 <md-button ng-click="onUnassignFromCustomer({event: $event, isPublic: isPublic})"
25 ng-show="!isEdit && (deviceScope === 'customer' || deviceScope === 'tenant') && isAssignedToCustomer" 25 ng-show="!isEdit && (deviceScope === 'customer' || deviceScope === 'tenant') && isAssignedToCustomer"
26 class="md-raised md-primary">{{ isPublic ? 'device.make-private' : 'device.unassign-from-customer' | translate }}</md-button> 26 class="md-raised md-primary">{{ isPublic ? 'device.make-private' : 'device.unassign-from-customer' | translate }}</md-button>
  27 +<md-button ng-click="onUnassignFromEdge({event: $event})"
  28 + ng-show="!isEdit && deviceScope === 'edge'"
  29 + class="md-raised md-primary">{{ 'edge.unassign-from-edge' | translate }}</md-button>
27 <md-button ng-click="onManageCredentials({event: $event})" 30 <md-button ng-click="onManageCredentials({event: $event})"
28 ng-show="!isEdit" 31 ng-show="!isEdit"
29 class="md-raised md-primary">{{ (deviceScope === 'customer_user' ? 'device.view-credentials' : 'device.manage-credentials') | translate }}</md-button> 32 class="md-raised md-primary">{{ (deviceScope === 'customer_user' ? 'device.view-credentials' : 'device.manage-credentials') | translate }}</md-button>
@@ -131,6 +131,7 @@ export function DeviceController($rootScope, userService, deviceService, custome @@ -131,6 +131,7 @@ export function DeviceController($rootScope, userService, deviceService, custome
131 vm.makePublic = makePublic; 131 vm.makePublic = makePublic;
132 vm.unassignFromCustomer = unassignFromCustomer; 132 vm.unassignFromCustomer = unassignFromCustomer;
133 vm.manageCredentials = manageCredentials; 133 vm.manageCredentials = manageCredentials;
  134 + vm.unassignFromEdge = unassignFromEdge;
134 135
135 initController(); 136 initController();
136 137
@@ -82,7 +82,8 @@ export default function DeviceDirective($compile, $templateCache, toast, $transl @@ -82,7 +82,8 @@ export default function DeviceDirective($compile, $templateCache, toast, $transl
82 onMakePublic: '&', 82 onMakePublic: '&',
83 onUnassignFromCustomer: '&', 83 onUnassignFromCustomer: '&',
84 onManageCredentials: '&', 84 onManageCredentials: '&',
85 - onDeleteDevice: '&' 85 + onDeleteDevice: '&',
  86 + onUnassignFromEdge: '&',
86 } 87 }
87 }; 88 };
88 } 89 }
@@ -29,6 +29,7 @@ @@ -29,6 +29,7 @@
29 on-assign-to-customer="vm.assignToCustomer(event, [ vm.grid.detailsConfig.currentItem.id.id ])" 29 on-assign-to-customer="vm.assignToCustomer(event, [ vm.grid.detailsConfig.currentItem.id.id ])"
30 on-make-public="vm.makePublic(event, vm.grid.detailsConfig.currentItem)" 30 on-make-public="vm.makePublic(event, vm.grid.detailsConfig.currentItem)"
31 on-unassign-from-customer="vm.unassignFromCustomer(event, vm.grid.detailsConfig.currentItem, isPublic)" 31 on-unassign-from-customer="vm.unassignFromCustomer(event, vm.grid.detailsConfig.currentItem, isPublic)"
  32 + on-unassign-from-edge="vm.unassignFromEdge(event, vm.grid.detailsConfig.currentItem)"
32 on-manage-credentials="vm.manageCredentials(event, vm.grid.detailsConfig.currentItem)" 33 on-manage-credentials="vm.manageCredentials(event, vm.grid.detailsConfig.currentItem)"
33 on-delete-device="vm.grid.deleteItem(event, vm.grid.detailsConfig.currentItem)"></tb-device> 34 on-delete-device="vm.grid.deleteItem(event, vm.grid.detailsConfig.currentItem)"></tb-device>
34 </md-tab> 35 </md-tab>
@@ -283,7 +283,7 @@ export function EdgeController($rootScope, userService, edgeService, customerSer @@ -283,7 +283,7 @@ export function EdgeController($rootScope, userService, edgeService, customerSer
283 details: function() { 283 details: function() {
284 return $translate.instant('edge.manage-edge-rulechains'); 284 return $translate.instant('edge.manage-edge-rulechains');
285 }, 285 },
286 - icon: "settings_ethernet" 286 + icon: "code"
287 } 287 }
288 ); 288 );
289 289
@@ -49,7 +49,7 @@ export default function EdgeRoutes($stateProvider, types) { @@ -49,7 +49,7 @@ export default function EdgeRoutes($stateProvider, types) {
49 pageTitle: 'edge.edges' 49 pageTitle: 'edge.edges'
50 }, 50 },
51 ncyBreadcrumb: { 51 ncyBreadcrumb: {
52 - label: '{"icon": "transform", "label": "edge.edges"}' 52 + label: '{"icon": "router", "label": "edge.edges"}'
53 } 53 }
54 }).state('home.edges.entityViews', { 54 }).state('home.edges.entityViews', {
55 url: '/:edgeId/entityViews', 55 url: '/:edgeId/entityViews',
@@ -27,6 +27,9 @@ @@ -27,6 +27,9 @@
27 <md-button ng-click="onDeleteEntityView({event: $event})" 27 <md-button ng-click="onDeleteEntityView({event: $event})"
28 ng-show="!isEdit && entityViewScope === 'tenant'" 28 ng-show="!isEdit && entityViewScope === 'tenant'"
29 class="md-raised md-primary">{{ 'entity-view.delete' | translate }}</md-button> 29 class="md-raised md-primary">{{ 'entity-view.delete' | translate }}</md-button>
  30 +<md-button ng-click="onUnassignFromEdge({event: $event})"
  31 + ng-show="!isEdit && entityViewScope === 'edge'"
  32 + class="md-raised md-primary">{{ 'edge.unassign-from-edge' | translate }}</md-button>
30 33
31 <div layout="row"> 34 <div layout="row">
32 <md-button ngclipboard data-clipboard-action="copy" 35 <md-button ngclipboard data-clipboard-action="copy"
@@ -106,6 +106,7 @@ export function EntityViewController($rootScope, userService, entityViewService, @@ -106,6 +106,7 @@ export function EntityViewController($rootScope, userService, entityViewService,
106 vm.assignToCustomer = assignToCustomer; 106 vm.assignToCustomer = assignToCustomer;
107 vm.makePublic = makePublic; 107 vm.makePublic = makePublic;
108 vm.unassignFromCustomer = unassignFromCustomer; 108 vm.unassignFromCustomer = unassignFromCustomer;
  109 + vm.unassignFromEdge = unassignFromEdge;
109 110
110 initController(); 111 initController();
111 112
@@ -144,7 +144,8 @@ export default function EntityViewDirective($q, $compile, $templateCache, $filte @@ -144,7 +144,8 @@ export default function EntityViewDirective($q, $compile, $templateCache, $filte
144 onAssignToCustomer: '&', 144 onAssignToCustomer: '&',
145 onMakePublic: '&', 145 onMakePublic: '&',
146 onUnassignFromCustomer: '&', 146 onUnassignFromCustomer: '&',
147 - onDeleteEntityView: '&' 147 + onDeleteEntityView: '&',
  148 + onUnassignFromEdge: '&'
148 } 149 }
149 }; 150 };
150 } 151 }
@@ -29,6 +29,7 @@ @@ -29,6 +29,7 @@
29 on-assign-to-customer="vm.assignToCustomer(event, [ vm.grid.detailsConfig.currentItem.id.id ])" 29 on-assign-to-customer="vm.assignToCustomer(event, [ vm.grid.detailsConfig.currentItem.id.id ])"
30 on-make-public="vm.makePublic(event, vm.grid.detailsConfig.currentItem)" 30 on-make-public="vm.makePublic(event, vm.grid.detailsConfig.currentItem)"
31 on-unassign-from-customer="vm.unassignFromCustomer(event, vm.grid.detailsConfig.currentItem, isPublic)" 31 on-unassign-from-customer="vm.unassignFromCustomer(event, vm.grid.detailsConfig.currentItem, isPublic)"
  32 + on-unassign-from-edge="vm.unassignFromEdge(event, vm.grid.detailsConfig.currentItem)"
32 on-delete-entity-view="vm.grid.deleteItem(event, vm.grid.detailsConfig.currentItem)"></tb-entity-view> 33 on-delete-entity-view="vm.grid.deleteItem(event, vm.grid.detailsConfig.currentItem)"></tb-entity-view>
33 </md-tab> 34 </md-tab>
34 <md-tab ng-if="!vm.grid.detailsConfig.isDetailsEditMode" md-on-select="vm.grid.triggerResize()" label="{{ 'attribute.attributes' | translate }}"> 35 <md-tab ng-if="!vm.grid.detailsConfig.isDetailsEditMode" md-on-select="vm.grid.triggerResize()" label="{{ 'attribute.attributes' | translate }}">
@@ -844,7 +844,8 @@ @@ -844,7 +844,8 @@
844 "set-root-rule-chain-to-edges-text": "Set root rule chain for { count, plural, 1 {1 edge} other {# edges} }", 844 "set-root-rule-chain-to-edges-text": "Set root rule chain for { count, plural, 1 {1 edge} other {# edges} }",
845 "status": "Received by edge", 845 "status": "Received by edge",
846 "deployed": "Deployed", 846 "deployed": "Deployed",
847 - "pending": "Pending" 847 + "pending": "Pending",
  848 + "unassign-edges-action-title": "Unassign { count, plural, 1 {1 edge} other {# edges} } from customer"
848 }, 849 },
849 "error": { 850 "error": {
850 "unable-to-connect": "Unable to connect to the server! Please check your internet connection.", 851 "unable-to-connect": "Unable to connect to the server! Please check your internet connection.",
@@ -1539,6 +1540,7 @@ @@ -1539,6 +1540,7 @@
1539 "rulechains": "Rule chains", 1540 "rulechains": "Rule chains",
1540 "core-rulechains": "Core Rule chains", 1541 "core-rulechains": "Core Rule chains",
1541 "edge-rulechains": "Edge Rule chains", 1542 "edge-rulechains": "Edge Rule chains",
  1543 + "default-root": "Default root",
1542 "root": "Root", 1544 "root": "Root",
1543 "delete": "Delete rule chain", 1545 "delete": "Delete rule chain",
1544 "name": "Name", 1546 "name": "Name",
@@ -1589,10 +1591,10 @@ @@ -1589,10 +1591,10 @@
1589 "set-default-root-edge-rulechain-title": "Are you sure you want to make the rule chain '{{ruleChainName}}' default edge root?", 1591 "set-default-root-edge-rulechain-title": "Are you sure you want to make the rule chain '{{ruleChainName}}' default edge root?",
1590 "set-default-root-edge-rulechain-text": "After the confirmation the rule chain will become default edge root and will handle all incoming transport messages.", 1592 "set-default-root-edge-rulechain-text": "After the confirmation the rule chain will become default edge root and will handle all incoming transport messages.",
1591 "invalid-rulechain-type-error": "Unable to import rule chain: Invalid rule chain type. Expected type is {{expectedRuleChainType}}.", 1593 "invalid-rulechain-type-error": "Unable to import rule chain: Invalid rule chain type. Expected type is {{expectedRuleChainType}}.",
1592 - "set-default-edge": "Make edge rule chain default", 1594 + "set-default-edge": "Make rule chain default",
1593 "set-default-edge-title": "Are you sure you want to make the edge rule chain '{{ruleChainName}}' default?", 1595 "set-default-edge-title": "Are you sure you want to make the edge rule chain '{{ruleChainName}}' default?",
1594 "set-default-edge-text": "After the confirmation the edge rule chain will be added to default list and assigned to newly created edge(s).", 1596 "set-default-edge-text": "After the confirmation the edge rule chain will be added to default list and assigned to newly created edge(s).",
1595 - "remove-default-edge": "Remove edge rule chain from defaults", 1597 + "remove-default-edge": "Remove rule chain from defaults",
1596 "remove-default-edge-title": "Are you sure you want to remove the edge rule chain '{{ruleChainName}}' from default list?", 1598 "remove-default-edge-title": "Are you sure you want to remove the edge rule chain '{{ruleChainName}}' from default list?",
1597 "remove-default-edge-text": "After the confirmation the edge rule chain will not be assigned for a newly created edges." 1599 "remove-default-edge-text": "After the confirmation the edge rule chain will not be assigned for a newly created edges."
1598 }, 1600 },
@@ -16,7 +16,8 @@ @@ -16,7 +16,8 @@
16 16
17 --> 17 -->
18 <div ng-if="(vm.parentCtl.ruleChainsScope === 'tenant' && item && item.root) || 18 <div ng-if="(vm.parentCtl.ruleChainsScope === 'tenant' && item && item.root) ||
19 - (vm.parentCtl.ruleChainsScope === 'edge' && vm.parentCtl.isRootRuleChain(item)) ||  
20 - (vm.parentCtl.ruleChainsScope === 'edges' && vm.parentCtl.isRootRuleChain(item))" translate>rulechain.root</div> 19 + (vm.parentCtl.ruleChainsScope === 'edge' && vm.parentCtl.isRootRuleChain(item))" translate>rulechain.root</div>
  20 +
  21 +<div ng-if="vm.parentCtl.ruleChainsScope === 'edges' && vm.parentCtl.isRootRuleChain(item)" translate>rulechain.default-root</div>
21 22
22 <div ng-if="(vm.parentCtl.ruleChainsScope === 'edges' && vm.parentCtl.isDefaultEdgeRuleChain(item))" translate>rulechain.default</div> 23 <div ng-if="(vm.parentCtl.ruleChainsScope === 'edges' && vm.parentCtl.isDefaultEdgeRuleChain(item))" translate>rulechain.default</div>
@@ -18,11 +18,27 @@ @@ -18,11 +18,27 @@
18 <md-button ng-click="onExportRuleChain({event: $event})" 18 <md-button ng-click="onExportRuleChain({event: $event})"
19 ng-show="!isEdit" 19 ng-show="!isEdit"
20 class="md-raised md-primary">{{ 'rulechain.export' | translate }}</md-button> 20 class="md-raised md-primary">{{ 'rulechain.export' | translate }}</md-button>
  21 +
21 <md-button ng-click="onSetRootRuleChain({event: $event})" 22 <md-button ng-click="onSetRootRuleChain({event: $event})"
22 - ng-show="!isEdit && !ruleChain.root" 23 + ng-show="!isEdit && !ruleChain.root && ruleChainsScope == 'tenant'"
23 class="md-raised md-primary">{{ 'rulechain.set-root' | translate }}</md-button> 24 class="md-raised md-primary">{{ 'rulechain.set-root' | translate }}</md-button>
  25 +
  26 +<md-button ng-click="onSetRootRuleChain({event: $event})"
  27 + ng-show="!isEdit && !ruleChain.root && ruleChainsScope == 'edges'"
  28 + class="md-raised md-primary">{{ 'rulechain.set-default-root-edge' | translate }}</md-button>
  29 +<md-button ng-click="onSetDefaultEdgeRuleChain({event: $event})"
  30 + ng-show="!isEdit && !ruleChain.root && !ruleChain.isDefault && ruleChainsScope == 'edges'"
  31 + class="md-raised md-primary">{{ 'rulechain.set-default-edge' | translate }}</md-button>
  32 +<md-button ng-click="onRemoveDefaultEdgeRuleChain({event: $event})"
  33 + ng-show="!isEdit && !ruleChain.root && ruleChain.isDefault && ruleChainsScope == 'edges'"
  34 + class="md-raised md-primary">{{ 'rulechain.remove-default-edge' | translate }}</md-button>
  35 +
  36 +<md-button ng-click="onSetRootRuleChain({event: $event})"
  37 + ng-show="!isEdit && ruleChainsScope == 'edge' && edge.rootRuleChainId.id !== ruleChain.id.id"
  38 + class="md-raised md-primary">{{ 'rulechain.set-root' | translate }}</md-button>
  39 +
24 <md-button ng-click="onDeleteRuleChain({event: $event})" 40 <md-button ng-click="onDeleteRuleChain({event: $event})"
25 - ng-show="!isEdit && !ruleChain.root" 41 + ng-show="!isEdit && !ruleChain.root && ruleChainsScope != 'edge'"
26 class="md-raised md-primary">{{ 'rulechain.delete' | translate }}</md-button> 42 class="md-raised md-primary">{{ 'rulechain.delete' | translate }}</md-button>
27 43
28 <div layout="row"> 44 <div layout="row">
@@ -40,6 +40,10 @@ export default function RuleChainDirective($compile, $templateCache, $mdDialog, @@ -40,6 +40,10 @@ export default function RuleChainDirective($compile, $templateCache, $mdDialog,
40 isEdit: '=', 40 isEdit: '=',
41 isReadOnly: '=', 41 isReadOnly: '=',
42 theForm: '=', 42 theForm: '=',
  43 + ruleChainsScope: '=',
  44 + edge: '=',
  45 + onSetDefaultEdgeRuleChain: '&',
  46 + onRemoveDefaultEdgeRuleChain: '&',
43 onSetRootRuleChain: '&', 47 onSetRootRuleChain: '&',
44 onExportRuleChain: '&', 48 onExportRuleChain: '&',
45 onDeleteRuleChain: '&' 49 onDeleteRuleChain: '&'
@@ -97,6 +97,8 @@ export default function RuleChainsController(ruleChainService, userService, impo @@ -97,6 +97,8 @@ export default function RuleChainsController(ruleChainService, userService, impo
97 97
98 vm.exportRuleChain = exportRuleChain; 98 vm.exportRuleChain = exportRuleChain;
99 vm.setRootRuleChain = setRootRuleChain; 99 vm.setRootRuleChain = setRootRuleChain;
  100 + vm.setDefaultEdgeRuleChain = setDefaultEdgeRuleChain;
  101 + vm.removeDefaultEdgeRuleChain = removeDefaultEdgeRuleChain;
100 102
101 initController(); 103 initController();
102 104
@@ -26,6 +26,10 @@ @@ -26,6 +26,10 @@
26 is-edit="vm.grid.detailsConfig.isDetailsEditMode" 26 is-edit="vm.grid.detailsConfig.isDetailsEditMode"
27 is-read-only="vm.grid.isDetailsReadOnly(vm.grid.operatingItem())" 27 is-read-only="vm.grid.isDetailsReadOnly(vm.grid.operatingItem())"
28 the-form="vm.grid.detailsForm" 28 the-form="vm.grid.detailsForm"
  29 + rule-chains-scope="vm.ruleChainsScope"
  30 + edge="vm.edge"
  31 + on-set-default-edge-rule-chain="vm.setDefaultEdgeRuleChain(event, vm.grid.detailsConfig.currentItem)"
  32 + on-remove-default-edge-rule-chain="vm.removeDefaultEdgeRuleChain(event, vm.grid.detailsConfig.currentItem)"
29 on-set-root-rule-chain="vm.setRootRuleChain(event, vm.grid.detailsConfig.currentItem)" 33 on-set-root-rule-chain="vm.setRootRuleChain(event, vm.grid.detailsConfig.currentItem)"
30 on-export-rule-chain="vm.exportRuleChain(event, vm.grid.detailsConfig.currentItem)" 34 on-export-rule-chain="vm.exportRuleChain(event, vm.grid.detailsConfig.currentItem)"
31 on-delete-rule-chain="vm.grid.deleteItem(event, vm.grid.detailsConfig.currentItem)"> 35 on-delete-rule-chain="vm.grid.deleteItem(event, vm.grid.detailsConfig.currentItem)">