diff --git a/awx/ui/client/src/dashboard/hosts/dashboard-hosts-edit.controller.js b/awx/ui/client/src/dashboard/hosts/dashboard-hosts-edit.controller.js index f77764903b..02b0e70136 100644 --- a/awx/ui/client/src/dashboard/hosts/dashboard-hosts-edit.controller.js +++ b/awx/ui/client/src/dashboard/hosts/dashboard-hosts-edit.controller.js @@ -7,9 +7,7 @@ export default ['$scope', '$state', '$stateParams', 'DashboardHostsForm', 'GenerateForm', 'ParseTypeChange', 'DashboardHostService', 'host', function($scope, $state, $stateParams, DashboardHostsForm, GenerateForm, ParseTypeChange, DashboardHostService, host){ - var generator = GenerateForm, - form = DashboardHostsForm; - $scope.parseType = 'yaml'; + $scope.parseType = 'yaml'; $scope.formCancel = function(){ $state.go('^', null, {reload: true}); }; @@ -33,11 +31,10 @@ }; var init = function(){ - $scope.host = host; - generator.inject(form, {mode: 'edit', related: false, scope: $scope}); - $scope.name = host.name; - $scope.description = host.description; - $scope.variables = host.variables === '' ? '---' : host.variables; + $scope.host = host.data; + $scope.name = host.data.name; + $scope.description = host.data.description; + $scope.variables = host.data.variables === '' ? '---' : host.data.variables; ParseTypeChange({ scope: $scope, field_id: 'host_variables', diff --git a/awx/ui/client/src/dashboard/hosts/dashboard-hosts-list.controller.js b/awx/ui/client/src/dashboard/hosts/dashboard-hosts-list.controller.js index d07c544942..3ebf7dd370 100644 --- a/awx/ui/client/src/dashboard/hosts/dashboard-hosts-list.controller.js +++ b/awx/ui/client/src/dashboard/hosts/dashboard-hosts-list.controller.js @@ -39,7 +39,7 @@ export default ['$scope', '$state', '$stateParams', 'GetBasePath', 'DashboardHos } $scope.editHost = function(id) { - $state.go('dashboardHosts.edit', { id: id }); + $state.go('dashboardHosts.edit', { host_id: id }); }; $scope.toggleHostEnabled = function(host) { diff --git a/awx/ui/client/src/dashboard/hosts/dashboard-hosts.form.js b/awx/ui/client/src/dashboard/hosts/dashboard-hosts.form.js index 6af1326980..659ccdbe44 100644 --- a/awx/ui/client/src/dashboard/hosts/dashboard-hosts.form.js +++ b/awx/ui/client/src/dashboard/hosts/dashboard-hosts.form.js @@ -12,6 +12,7 @@ export default function(){ formLabelSize: 'col-lg-3', formFieldSize: 'col-lg-9', iterator: 'host', + basePath: 'hosts', headerFields:{ enabled: { //flag: 'host.enabled', diff --git a/awx/ui/client/src/dashboard/hosts/main.js b/awx/ui/client/src/dashboard/hosts/main.js index 935dec2d49..8b383ed5bb 100644 --- a/awx/ui/client/src/dashboard/hosts/main.js +++ b/awx/ui/client/src/dashboard/hosts/main.js @@ -23,7 +23,9 @@ angular.module('dashboardHosts', []) name: 'dashboardHosts', url: '/home/hosts', lazyLoad: () => stateDefinitions.generateTree({ - url: '/home/hosts', + urls: { + list: '/home/hosts' + }, parent: 'dashboardHosts', modes: ['edit'], list: 'DashboardHostsList', @@ -32,6 +34,17 @@ angular.module('dashboardHosts', []) list: listController, edit: editController }, + resolve: { + edit: { + host: ['Rest', '$stateParams', 'GetBasePath', + function(Rest, $stateParams, GetBasePath) { + let path = GetBasePath('hosts') + $stateParams.host_id; + Rest.setUrl(path); + return Rest.get(); + } + ] + } + }, data: { activityStream: true, activityStreamTarget: 'host' diff --git a/awx/ui/client/src/shared/stateDefinitions.factory.js b/awx/ui/client/src/shared/stateDefinitions.factory.js index b76c5b5a36..dccfebb30c 100644 --- a/awx/ui/client/src/shared/stateDefinitions.factory.js +++ b/awx/ui/client/src/shared/stateDefinitions.factory.js @@ -53,9 +53,10 @@ export default ['$injector', '$stateExtender', '$log', function($injector, $stat formStates = _.map(params.modes, (mode) => this.generateFormNode(mode, form, params)); states = states.concat(_.flatten(formStates)); - $log.debug('*** Generated State Tree', states); - resolve({ states: states }); } + + $log.debug('*** Generated State Tree', states); + resolve({ states: states }); }); }, @@ -68,7 +69,8 @@ export default ['$injector', '$stateExtender', '$log', function($injector, $stat * @returns {object} a list state definition */ generateListNode: function(list, params) { - let state; + let state, + url = params.urls && params.urls.list ? params.urls.list : (params.url ? params.url : `/${list.name}`); // allows passed-in params to specify a custom templateUrl // otherwise, use html returned by generateList.build() to fulfill templateProvider fn @@ -90,7 +92,7 @@ export default ['$injector', '$stateExtender', '$log', function($injector, $stat state = $stateExtender.buildDefinition({ searchPrefix: list.iterator, name: params.parent, - url: (params.url || `/${list.name}`), + url: url, data: params.data, ncyBreadcrumb: { label: list.title @@ -135,14 +137,17 @@ export default ['$injector', '$stateExtender', '$log', function($injector, $stat * @returns {array} Array of state definitions required by form mode [{...}, {...}, ...] */ generateFormNode: function(mode, form, params) { - let formNode, states = []; + let formNode, + states = [], + url; switch (mode) { case 'add': + url = params.urls && params.urls.add ? params.urls.add : (params.url ? params.url : '/add'); // breadcrumbName necessary for resources that are more than one word like // job templates. form.name can't have spaces in it or it busts form gen formNode = $stateExtender.buildDefinition({ name: params.name || `${params.parent}.add`, - url: params.url || '/add', + url: url, ncyBreadcrumb: { [params.parent ? 'parent' : null]: `${params.parent}`, label: `CREATE ${form.breadcrumbName || form.name}` @@ -171,9 +176,10 @@ export default ['$injector', '$stateExtender', '$log', function($injector, $stat } break; case 'edit': + url = params.urls && params.urls.edit ? params.urls.edit : (params.url ? params.url : `/:${form.name}_id`); formNode = $stateExtender.buildDefinition({ name: params.name || `${params.parent}.edit`, - url: (params.url || `/:${form.name}_id`), + url: url, ncyBreadcrumb: { [params.parent ? 'parent' : null]: `${params.parent}`, label: '{{parentObject.name || name}}'