From 817d59ada9250223cba7b8350fd9214fb3e5e6aa Mon Sep 17 00:00:00 2001 From: Artem Babak Date: Mon, 21 Dec 2020 18:07:18 +0200 Subject: [PATCH] Edge management: menu refactored, hide menu section --- ui/src/app/api/user.service.js | 24 +++- ui/src/app/rulechain/rulechain.controller.js | 4 +- ui/src/app/rulechain/rulechain.routes.js | 62 +++++++--- ui/src/app/rulechain/rulechains.controller.js | 6 +- ui/src/app/services/menu.service.js | 113 +++++++++--------- 5 files changed, 129 insertions(+), 80 deletions(-) diff --git a/ui/src/app/api/user.service.js b/ui/src/app/api/user.service.js index b84bcf8428..9d99681b0d 100644 --- a/ui/src/app/api/user.service.js +++ b/ui/src/app/api/user.service.js @@ -29,7 +29,8 @@ function UserService($http, $q, $rootScope, adminService, dashboardService, time allowedDashboardIds = [], redirectParams = null, userTokenAccessEnabled = false, - userLoaded = false; + userLoaded = false, + edgesSupportEnabled = false; var refreshTokenQueue = []; @@ -65,7 +66,9 @@ function UserService($http, $q, $rootScope, adminService, dashboardService, time reloadUser: reloadUser, isUserTokenAccessEnabled: isUserTokenAccessEnabled, loginAsUser: loginAsUser, - setUserCredentialsEnabled: setUserCredentialsEnabled + setUserCredentialsEnabled: setUserCredentialsEnabled, + isEdgesSupportEnabled: isEdgesSupportEnabled, + loadIsEdgesSupportEnabled: loadIsEdgesSupportEnabled } reloadUser(); @@ -451,6 +454,7 @@ function UserService($http, $q, $rootScope, adminService, dashboardService, time function loadSystemParams() { var promises = []; promises.push(loadIsUserTokenAccessEnabled()); + promises.push(loadIsEdgesSupportEnabled()); promises.push(timeService.loadMaxDatapointsLimit()); return $q.all(promises); } @@ -685,4 +689,20 @@ function UserService($http, $q, $rootScope, adminService, dashboardService, time }); } + function isEdgesSupportEnabled() { + return edgesSupportEnabled; + } + + function loadIsEdgesSupportEnabled() { + var deferred = $q.defer(); + var url = '/api/edges/enabled'; + $http.get(url).then(function success(response) { + edgesSupportEnabled = response.data; + deferred.resolve(response.data); + }, function fail() { + deferred.reject(); + }); + return deferred.promise; + } + } diff --git a/ui/src/app/rulechain/rulechain.controller.js b/ui/src/app/rulechain/rulechain.controller.js index 51f82108c2..fee537f309 100644 --- a/ui/src/app/rulechain/rulechain.controller.js +++ b/ui/src/app/rulechain/rulechain.controller.js @@ -1270,9 +1270,9 @@ export function RuleChainController($state, $scope, $compile, $q, $mdUtil, $time vm.isImport = false; $mdUtil.nextTick(() => { if (vm.ruleChain.type === vm.types.ruleChainType.core) { - $state.go('home.ruleChains.core.ruleChain', {ruleChainId: vm.ruleChain.id.id}); + $state.go('home.ruleChains.ruleChain', {ruleChainId: vm.ruleChain.id.id}); } else { - $state.go('home.ruleChains.edge.ruleChain', {ruleChainId: vm.ruleChain.id.id}); + $state.go('home.edges.edgeRuleChains.ruleChain', {ruleChainId: vm.ruleChain.id.id}); } }); } else { diff --git a/ui/src/app/rulechain/rulechain.routes.js b/ui/src/app/rulechain/rulechain.routes.js index 8a5c13cc1d..a1d5da43e2 100644 --- a/ui/src/app/rulechain/rulechain.routes.js +++ b/ui/src/app/rulechain/rulechain.routes.js @@ -29,15 +29,6 @@ export default function RuleChainRoutes($stateProvider, NodeTemplatePathProvider $stateProvider .state('home.ruleChains', { url: '/ruleChains', - module: 'private', - auth: ['SYS_ADMIN', 'TENANT_ADMIN'], - redirectTo: 'home.ruleChains.core', - ncyBreadcrumb: { - label: '{"icon": "settings_ethernet", "label": "rulechain.rulechains"}' - } - }) - .state('home.ruleChains.core', { - url: '/ruleChains/core', params: {'topIndex': 0}, module: 'private', auth: ['SYS_ADMIN', 'TENANT_ADMIN'], @@ -50,13 +41,13 @@ export default function RuleChainRoutes($stateProvider, NodeTemplatePathProvider }, data: { searchEnabled: true, - pageTitle: 'rulechain.core-rulechains', + pageTitle: 'rulechain.rulechains', ruleChainsType: 'tenant' }, ncyBreadcrumb: { - label: '{"icon": "settings_ethernet", "label": "rulechain.core-rulechains"}' + label: '{"icon": "settings_ethernet", "label": "rulechain.rulechains"}' } - }).state('home.ruleChains.core.ruleChain', { + }).state('home.ruleChains.ruleChain', { url: '/:ruleChainId', reloadOnSearch: false, module: 'private', @@ -134,8 +125,8 @@ export default function RuleChainRoutes($stateProvider, NodeTemplatePathProvider ncyBreadcrumb: { label: '{"icon": "settings_ethernet", "label": "{{ (\'rulechain.import\' | translate) + \': \'+ vm.ruleChain.name }}", "translate": "false"}' } - }).state('home.ruleChains.edge', { - url: '/ruleChains/edge', + }).state('home.edges.edgeRuleChains', { + url: '/ruleChains', params: {'topIndex': 0}, module: 'private', auth: ['TENANT_ADMIN'], @@ -154,7 +145,7 @@ export default function RuleChainRoutes($stateProvider, NodeTemplatePathProvider ncyBreadcrumb: { label: '{"icon": "code", "label": "rulechain.edge-rulechains"}' } - }).state('home.ruleChains.edge.ruleChain', { + }).state('home.edges.edgeRuleChains.ruleChain', { url: '/:ruleChainId', reloadOnSearch: false, module: 'private', @@ -191,5 +182,46 @@ export default function RuleChainRoutes($stateProvider, NodeTemplatePathProvider ncyBreadcrumb: { label: '{"icon": "code", "label": "{{ vm.ruleChain.name }}", "translate": "false"}' } + }).state('home.edges.edgeRuleChains.importRuleChain', { + url: '/edges/ruleChains/import', + reloadOnSearch: false, + module: 'private', + auth: ['SYS_ADMIN', 'TENANT_ADMIN'], + views: { + "content@home": { + templateUrl: ruleChainTemplate, + controller: 'RuleChainController', + controllerAs: 'vm' + } + }, + params: { + ruleChainImport: {}, + ruleChainType: {} + }, + resolve: { + ruleChain: + /*@ngInject*/ + function($stateParams) { + return $stateParams.ruleChainImport.ruleChain; + }, + ruleChainMetaData: + /*@ngInject*/ + function($stateParams) { + return $stateParams.ruleChainImport.metadata; + }, + ruleNodeComponents: + /*@ngInject*/ + function($stateParams, ruleChainService) { + return ruleChainService.getRuleNodeComponents($stateParams.ruleChainType); + } + }, + data: { + import: true, + searchEnabled: true, + pageTitle: 'edge.rulechain' + }, + ncyBreadcrumb: { + label: '{"icon": "code", "label": "{{ (\'rulechain.import\' | translate) + \': \'+ vm.ruleChain.name }}", "translate": "false"}' + } }); } diff --git a/ui/src/app/rulechain/rulechains.controller.js b/ui/src/app/rulechain/rulechains.controller.js index 65eb62abbe..6de188e4a7 100644 --- a/ui/src/app/rulechain/rulechains.controller.js +++ b/ui/src/app/rulechain/rulechains.controller.js @@ -247,7 +247,7 @@ export default function RuleChainsController(ruleChainService, userService, impo onAction: function ($event) { importExport.importRuleChain($event, types.ruleChainType.edge).then( function(ruleChainImport) { - $state.go('home.ruleChains.importRuleChain', {ruleChainImport:ruleChainImport, ruleChainType: types.ruleChainType.edge}); + $state.go('home.edges.edgeRuleChains.importRuleChain', {ruleChainImport:ruleChainImport, ruleChainType: types.ruleChainType.edge}); } ); }, @@ -401,9 +401,9 @@ export default function RuleChainsController(ruleChainService, userService, impo if (vm.ruleChainsScope === 'edge') { $state.go('home.edges.ruleChains.ruleChain', Object.assign(ruleChainParams, edgeId = vm.edge.id.id)); } else if (vm.ruleChainsScope === 'edges') { - $state.go('home.ruleChains.edge.ruleChain', ruleChainParams); + $state.go('home.edges.edgeRuleChains.ruleChain', ruleChainParams); } else { - $state.go('home.ruleChains.core.ruleChain', ruleChainParams); + $state.go('home.ruleChains.ruleChain', ruleChainParams); } } diff --git a/ui/src/app/services/menu.service.js b/ui/src/app/services/menu.service.js index 4cad286de8..d46c477f4a 100644 --- a/ui/src/app/services/menu.service.js +++ b/ui/src/app/services/menu.service.js @@ -58,6 +58,45 @@ function Menu(userService, $state, $rootScope) { if (authority !== user.authority) { sections = []; authority = user.authority; + var edgeMenuSection = { + side: { + name: 'edge.management', + type: 'toggle', + state: 'home.edges', + height: '80px', + icon: 'router', + pages: [ + { + name: 'edge.edges', + type: 'link', + state: 'home.edges', + icon: 'router' + }, + { + name: 'rulechain.edge-rulechains', + type: 'link', + state: 'home.edges.edgeRuleChains', + icon: 'code' + } + ] + }, + home: { + name: 'edge.management', + places: [ + { + name: 'edge.edges', + icon: 'router', + state: 'home.edges' + }, + { + name: 'rulechain.edge-rulechains', + icon: 'code', + state: 'home.edges.edgeRuleChains' + } + ] + + } + } if (authority === 'SYS_ADMIN') { sections = [ { @@ -156,24 +195,9 @@ function Menu(userService, $state, $rootScope) { }, { name: 'rulechain.rulechains', - type: 'toggle', + type: 'link', state: 'home.ruleChains', - height: '80px', - icon: 'settings_ethernet', - pages: [ - { - name: 'rulechain.core-rulechains', - type: 'link', - state: 'home.ruleChains.core', - icon: 'settings_ethernet' - }, - { - name: 'rulechain.edge-rulechains', - type: 'link', - state: 'home.ruleChains.edge', - icon: 'code' - } - ] + icon: 'settings_ethernet' }, { name: 'customer.customers', @@ -199,12 +223,6 @@ function Menu(userService, $state, $rootScope) { state: 'home.entityViews', icon: 'view_quilt' }, - { - name: 'edge.edges', - type: 'link', - state: 'home.edges', - icon: 'router' - }, { name: 'widget.widget-library', type: 'link', @@ -226,17 +244,12 @@ function Menu(userService, $state, $rootScope) { homeSections = [{ - name: 'rulechain.management', + name: 'rulechain.rulechains', places: [ { - name: 'rulechain.core-rulechains', + name: 'rulechain.rulechains', icon: 'settings_ethernet', - state: 'home.ruleChains.core' - }, - { - name: 'rulechain.edge-rulechains', - icon: 'code', - state: 'home.ruleChains.edge' + state: 'home.ruleChains' } ] }, @@ -280,16 +293,6 @@ function Menu(userService, $state, $rootScope) { } ] }, - { - name: 'edge.management', - places: [ - { - name: 'edge.edges', - icon: 'router', - state: 'home.edges' - } - ] - }, { name: 'dashboard.management', places: [ @@ -316,6 +319,11 @@ function Menu(userService, $state, $rootScope) { ] }]; + if (userService.isEdgesSupportEnabled()) { + sections.splice(6, 0, edgeMenuSection.side); + homeSections.splice(5, 0, edgeMenuSection.home); + } + } else if (authority === 'CUSTOMER_USER') { sections = [ { @@ -342,12 +350,6 @@ function Menu(userService, $state, $rootScope) { state: 'home.entityViews', icon: 'view_quilt' }, - { - name: 'edge.edges', - type: 'link', - state: 'home.edges', - icon: 'router' - }, { name: 'dashboard.dashboards', type: 'link', @@ -386,16 +388,6 @@ function Menu(userService, $state, $rootScope) { } ] }, - { - name: 'edge.management', - places: [ - { - name: 'edge.edges', - icon: 'router', - state: 'home.edges' - } - ] - }, { name: 'dashboard.view-dashboards', places: [ @@ -406,6 +398,11 @@ function Menu(userService, $state, $rootScope) { } ] }]; + + if (userService.isEdgesSupportEnabled()) { + sections.splice(4, 0, edgeMenuSection.side); + homeSections.splice(3, 0, edgeMenuSection.home); + } } } } @@ -423,4 +420,4 @@ function Menu(userService, $state, $rootScope) { return $state.includes(section.state); } -} \ No newline at end of file +}