From c02c92890c0c244aa199e6b8f084cbdab0defb45 Mon Sep 17 00:00:00 2001 From: Jared Tabor Date: Tue, 19 Jun 2018 12:59:12 -0700 Subject: [PATCH] Enables smart inventories to be shown on the network UI --- .../list/inventory-list.controller.js | 7 ++- .../src/inventories-hosts/inventories/main.js | 8 ++- .../client/src/network-ui/extract_messages.js | 2 +- .../client/src/network-ui/network-nav/main.js | 50 +------------------ .../network-nav/network.nav.controller.js | 10 ++-- .../src/network-ui/network.ui.controller.js | 4 +- .../client/src/network-ui/network.ui.route.js | 34 +++++++++++++ .../src/network-ui/network.ui.strings.js | 2 +- .../src/network-ui/vendor/svg-crowbar.js | 6 +-- 9 files changed, 59 insertions(+), 64 deletions(-) create mode 100644 awx/ui/client/src/network-ui/network.ui.route.js diff --git a/awx/ui/client/src/inventories-hosts/inventories/list/inventory-list.controller.js b/awx/ui/client/src/inventories-hosts/inventories/list/inventory-list.controller.js index f3f0736740..a63fe5731f 100644 --- a/awx/ui/client/src/inventories-hosts/inventories/list/inventory-list.controller.js +++ b/awx/ui/client/src/inventories-hosts/inventories/list/inventory-list.controller.js @@ -86,7 +86,12 @@ function InventoriesList($scope, }; $scope.goToGraph = function(inventory){ - $state.go('inventories.edit.networking', {inventory_id: inventory.id, inventory_name: inventory.name}); + if(inventory.kind && inventory.kind === 'smart') { + $state.go('inventories.editSmartInventory.networking', {smartinventory_id: inventory.id, inventory_name: inventory.name}); + } + else { + $state.go('inventories.edit.networking', {inventory_id: inventory.id, inventory_name: inventory.name}); + } }; $scope.editInventory = function (inventory, reload) { diff --git a/awx/ui/client/src/inventories-hosts/inventories/main.js b/awx/ui/client/src/inventories-hosts/inventories/main.js index 20feecfe10..cf13eaacd5 100644 --- a/awx/ui/client/src/inventories-hosts/inventories/main.js +++ b/awx/ui/client/src/inventories-hosts/inventories/main.js @@ -46,6 +46,7 @@ import groupNestedGroupsAssociateRoute from './related/groups/related/nested-gro import nestedHostsAssociateRoute from './related/groups/related/nested-hosts/group-nested-hosts-associate.route'; import nestedHostsAddRoute from './related/groups/related/nested-hosts/group-nested-hosts-add.route'; import hostCompletedJobsRoute from '~features/jobs/routes/hostCompletedJobs.route.js'; +import networkUIRoute from '../../network-ui/network.ui.route.js'; export default angular.module('inventory', [ @@ -294,6 +295,9 @@ angular.module('inventory', [ let relatedHostCompletedJobs = _.cloneDeep(hostCompletedJobsRoute); relatedHostCompletedJobs.name = 'inventories.edit.hosts.edit.completed_jobs'; + let smartInvNetworkUI = _.cloneDeep(networkUIRoute); + smartInvNetworkUI.name = 'inventories.editSmartInventory.networking'; + return Promise.all([ standardInventoryAdd, standardInventoryEdit, @@ -342,7 +346,9 @@ angular.module('inventory', [ stateExtender.buildDefinition(nestedHostsAssociateRoute), stateExtender.buildDefinition(nestedGroupsAdd), stateExtender.buildDefinition(nestedHostsAddRoute), - stateExtender.buildDefinition(relatedHostCompletedJobs) + stateExtender.buildDefinition(relatedHostCompletedJobs), + stateExtender.buildDefinition(networkUIRoute), + stateExtender.buildDefinition(smartInvNetworkUI) ]) }; }); diff --git a/awx/ui/client/src/network-ui/extract_messages.js b/awx/ui/client/src/network-ui/extract_messages.js index 80e96f09be..aee32413de 100755 --- a/awx/ui/client/src/network-ui/extract_messages.js +++ b/awx/ui/client/src/network-ui/extract_messages.js @@ -54,4 +54,4 @@ while(next_message !== undefined) { } -controller.log.debug(YAML.stringify(data)); +console.log(YAML.stringify(data)); diff --git a/awx/ui/client/src/network-ui/network-nav/main.js b/awx/ui/client/src/network-ui/network-nav/main.js index facbb7cd7d..8561a2017d 100644 --- a/awx/ui/client/src/network-ui/network-nav/main.js +++ b/awx/ui/client/src/network-ui/network-nav/main.js @@ -1,54 +1,6 @@ -import NetworkingController from './network.nav.controller'; - const MODULE_NAME = 'at.features.networking'; -const networkNavTemplate = require('~network-ui/network-nav/network.nav.view.html'); - -function NetworkingResolve ($stateParams, resourceData) { - const resolve = { - inventory: { - id: $stateParams.inventory_id, - name: $stateParams.inventory_name - }, - canEdit: resourceData.data.summary_fields.user_capabilities.edit - }; - if (!resolve.inventory.name) { - resolve.inventory.name = resourceData.data.name; - } - return resolve; -} - -NetworkingResolve.$inject = [ - '$stateParams', - 'resourceData' -]; -function NetworkingRun ($stateExtender, strings) { - $stateExtender.addState({ - name: 'inventories.edit.networking', - route: '/networking', - ncyBreadcrumb: { - label: strings.get('state.BREADCRUMB_LABEL') - }, - views: { - 'networking@': { - templateUrl: networkNavTemplate, - controller: NetworkingController, - controllerAs: 'vm' - } - }, - resolve: { - resolvedModels: NetworkingResolve - } - }); -} - -NetworkingRun.$inject = [ - '$stateExtender', - 'awxNetStrings' -]; - angular - .module(MODULE_NAME, []) - .run(NetworkingRun); + .module(MODULE_NAME, []); export default MODULE_NAME; diff --git a/awx/ui/client/src/network-ui/network-nav/network.nav.controller.js b/awx/ui/client/src/network-ui/network-nav/network.nav.controller.js index 1e0f9573c4..b9103431a8 100644 --- a/awx/ui/client/src/network-ui/network-nav/network.nav.controller.js +++ b/awx/ui/client/src/network-ui/network-nav/network.nav.controller.js @@ -1,15 +1,12 @@ /* eslint-disable */ -function NetworkingController (models, $state, $scope, strings) { +function NetworkingController (canEdit, inventory, $state, $scope, strings) { const vm = this || {}; - const { - inventory - } = models; vm.networkUIisOpen = true; vm.strings = strings; vm.panelTitle = `${strings.get('state.BREADCRUMB_LABEL')} | ${inventory.name}`; vm.hostDetail = {}; - vm.canEdit = models.canEdit; + vm.canEdit = canEdit; vm.rightPanelIsExpanded = false; vm.leftPanelIsExpanded = true; vm.keyPanelExpanded = false; @@ -131,7 +128,8 @@ function NetworkingController (models, $state, $scope, strings) { } NetworkingController.$inject = [ - 'resolvedModels', + 'canEdit', + 'inventory', '$state', '$scope', 'awxNetStrings', diff --git a/awx/ui/client/src/network-ui/network.ui.controller.js b/awx/ui/client/src/network-ui/network.ui.controller.js index 8f9a8ae240..70114aeae1 100644 --- a/awx/ui/client/src/network-ui/network.ui.controller.js +++ b/awx/ui/client/src/network-ui/network.ui.controller.js @@ -42,7 +42,7 @@ var NetworkUIController = function($scope, $scope.topology_id = 0; // Create a web socket to connect to the backend server - $scope.inventory_id = $state.params.inventory_id; + $scope.inventory_id = $scope.$parent.$resolve.inventory.id; var protocol = null; @@ -153,7 +153,7 @@ var NetworkUIController = function($scope, from_y: 0, to_x: 0, to_y: 0}; - $scope.canEdit = $scope.$parent.$resolve.resolvedModels.canEdit; + $scope.canEdit = $scope.$parent.$resolve.canEdit; $scope.strings = awxNetStrings; $scope.send_trace_message = function (message) { if (!$scope.recording) { diff --git a/awx/ui/client/src/network-ui/network.ui.route.js b/awx/ui/client/src/network-ui/network.ui.route.js new file mode 100644 index 0000000000..3c158b04f0 --- /dev/null +++ b/awx/ui/client/src/network-ui/network.ui.route.js @@ -0,0 +1,34 @@ +import { N_ } from '../i18n'; +import NetworkingController from './network-nav/network.nav.controller'; + +const networkNavTemplate = require('~network-ui/network-nav/network.nav.view.html'); + +export default { + name: 'inventories.edit.networking', + route: '/networking', + ncyBreadcrumb: { + label: N_("INVENTORIES") + }, + views: { + 'networking@': { + templateUrl: networkNavTemplate, + controller: NetworkingController, + controllerAs: 'vm' + } + }, + resolve: { + inventory: ['$stateParams', 'resourceData', + function($stateParams, resourceData){ + let inventory = { + name: $stateParams.inventory_name || resourceData.data.name, + id: $stateParams.inventory_id || $stateParams.smartinventory_id + }; + return inventory; + }], + canEdit: ['$stateParams', 'resourceData', + function($stateParams, resourceData){ + return resourceData.data.summary_fields.user_capabilities.edit; + } + ] + } +}; \ No newline at end of file diff --git a/awx/ui/client/src/network-ui/network.ui.strings.js b/awx/ui/client/src/network-ui/network.ui.strings.js index 4b93ea90a6..3a847334a1 100644 --- a/awx/ui/client/src/network-ui/network.ui.strings.js +++ b/awx/ui/client/src/network-ui/network.ui.strings.js @@ -46,7 +46,7 @@ function awxNetStrings (BaseString) { DESCRIPTION: t.s('Description'), HOST_POPOVER: t.s('Provide a host name, ip address, or ip address:port. Examples include:'), SAVE_COMPLETE: t.s('Save Complete'), - CANCEL: t.s('Cancel') + CLOSE: t.s('Close') }; } diff --git a/awx/ui/client/src/network-ui/vendor/svg-crowbar.js b/awx/ui/client/src/network-ui/vendor/svg-crowbar.js index fd9e242eaf..bba3093801 100644 --- a/awx/ui/client/src/network-ui/vendor/svg-crowbar.js +++ b/awx/ui/client/src/network-ui/vendor/svg-crowbar.js @@ -30,7 +30,7 @@ function svg_crowbar () { documents.push(el.contentDocument); } } catch(err) { - controller.log.debug(err); + console.log(err); } }); @@ -40,7 +40,7 @@ function svg_crowbar () { documents.push(el.contentDocument); } } catch(err) { - controller.log.debug(err); + console.log(err); } }); @@ -124,7 +124,7 @@ function svg_crowbar () { button.textContent = "Download"; button.onclick = function() { - // controller.log.debug(el, d, i, sources) + // console.log(el, d, i, sources) download(d); };