From a3099ac2854821fb80d71ab16174097282c70796 Mon Sep 17 00:00:00 2001 From: gconsidine Date: Fri, 26 May 2017 17:14:26 -0400 Subject: [PATCH] Add Me model for credential submission --- .../credentials/add-credentials.controller.js | 14 +++++- awx/ui/client/features/credentials/index.js | 44 ++++++++++++------- .../lib/components/form/form.directive.js | 13 ++---- awx/ui/client/lib/models/Base.js | 6 +++ awx/ui/client/lib/models/Me.js | 11 +++++ awx/ui/client/lib/models/index.js | 4 +- awx/ui/client/src/app.js | 3 -- 7 files changed, 63 insertions(+), 32 deletions(-) create mode 100644 awx/ui/client/lib/models/Me.js diff --git a/awx/ui/client/features/credentials/add-credentials.controller.js b/awx/ui/client/features/credentials/add-credentials.controller.js index c04bacd0ba..b2fac1621d 100644 --- a/awx/ui/client/features/credentials/add-credentials.controller.js +++ b/awx/ui/client/features/credentials/add-credentials.controller.js @@ -1,6 +1,8 @@ function AddCredentialsController (models, $state) { let vm = this || {}; + console.log($state.get()); + let me = models.me; let credential = models.credential; let credentialType = models.credentialType; @@ -9,7 +11,7 @@ function AddCredentialsController (models, $state) { }); vm.form.credential_type._data = credentialType.getResults(); - vm.form.credential_type._placeholder = 'Select A Type'; + vm.form.credential_type._placeholder = 'SELECT A TYPE'; vm.form.credential_type._display = 'name'; vm.form.credential_type._key = 'id'; vm.form.credential_type._exp = 'type as type.name group by type.kind for type in state._data'; @@ -21,7 +23,15 @@ function AddCredentialsController (models, $state) { _key: 'inputs' }; - vm.form.save = credential.post; + vm.form.save = data => { + data.user = me.getId(); + + return credential.post(data); + }; + + vm.form.saveSuccess = res => { + $state.go('credentials.edit', { id: res.data.id }); + }; } AddCredentialsController.$inject = [ diff --git a/awx/ui/client/features/credentials/index.js b/awx/ui/client/features/credentials/index.js index d053bb728b..7afae90bff 100644 --- a/awx/ui/client/features/credentials/index.js +++ b/awx/ui/client/features/credentials/index.js @@ -40,20 +40,27 @@ function config ($stateExtenderProvider, pathServiceProvider) { } }); - function CredentialsAddResolve ($q, credentialModel, credentialTypeModel) { + function CredentialsAddResolve ($q, meModel, credentialModel, credentialTypeModel) { let promises = [ + meModel.get(), credentialModel.options(), credentialTypeModel.get() ]; return $q.all(promises) .then(() => ({ + me: meModel, credential: credentialModel, credentialType: credentialTypeModel })); } - CredentialsAddResolve.$inject = ['$q', 'CredentialModel', 'CredentialTypeModel']; + CredentialsAddResolve.$inject = [ + '$q', + 'MeModel', + 'CredentialModel', + 'CredentialTypeModel' + ]; stateExtender.addState({ name: 'credentials.add', @@ -73,20 +80,25 @@ function config ($stateExtenderProvider, pathServiceProvider) { } }); - stateExtender.addState({ - name: 'credentials.edit', - route: '/edit', - ncyBreadcrumb: { - label: N_('EDIT') - }, - views: { - 'edit@credentials': { - templateProvider: function() { - return 'test-edit'; - } - } - } - }); + /* + *stateExtender.addState({ + * name: 'credentials.edit', + * route: '/edit/:id', + * ncyBreadcrumb: { + * label: N_('EDIT') + * }, + * views: { + * 'edit@credentials': { + * templateUrl: pathService.getViewPath('credentials/add-credentials'), + * controller: AddController, + * controllerAs: 'vm' + * }, + * resolve: { + * resolvedModels: CredentialsAddResolve + * } + * } + *}); + */ } config.$inject = [ diff --git a/awx/ui/client/lib/components/form/form.directive.js b/awx/ui/client/lib/components/form/form.directive.js index 2a4db42808..c827294dd9 100644 --- a/awx/ui/client/lib/components/form/form.directive.js +++ b/awx/ui/client/lib/components/form/form.directive.js @@ -66,10 +66,8 @@ function AtFormController (eventService) { if (component.state._key && typeof component.state._value === 'object') { values[component.state.id] = component.state._value[component.state._key]; } else if (component.state._group) { - values[component.state._key] = values[component.state._key] || []; - values[component.state._key].push({ - [component.state.id]: component.state._value - }); + values[component.state._key] = values[component.state._key] || {}; + values[component.state._key][component.state.id] = component.state._value; } else { values[component.state.id] = component.state._value; } @@ -77,17 +75,12 @@ function AtFormController (eventService) { return values; }, {}); - scope.state.save(data) - .then(res => vm.onSaveSuccess(res)) + .then(scope.state.created) .catch(err => vm.onSaveError(err)) .finally(() => vm.state.disabled = false); }; - vm.onSaveSuccess = res => { - console.info(res); - }; - vm.onSaveError = err => { let handled; diff --git a/awx/ui/client/lib/models/Base.js b/awx/ui/client/lib/models/Base.js index 7448f46dda..72e043ed1b 100644 --- a/awx/ui/client/lib/models/Base.js +++ b/awx/ui/client/lib/models/Base.js @@ -9,6 +9,8 @@ function BaseModel ($http) { return $http(request) .then(response => { this.model.get = response; + + return response; }); }; @@ -22,6 +24,8 @@ function BaseModel ($http) { return $http(request) .then(response => { this.model.post = response; + + return response; }); }; @@ -34,6 +38,8 @@ function BaseModel ($http) { return $http(request) .then(response => { this.model.options = response; + + return response; }); }; diff --git a/awx/ui/client/lib/models/Me.js b/awx/ui/client/lib/models/Me.js new file mode 100644 index 0000000000..9107d5b2ed --- /dev/null +++ b/awx/ui/client/lib/models/Me.js @@ -0,0 +1,11 @@ +function MeModel (BaseModel) { + BaseModel.call(this, 'me'); + + this.getId = () => { + return this.model.get.data.results[0].id; + }; +} + +MeModel.$inject = ['BaseModel']; + +export default MeModel; diff --git a/awx/ui/client/lib/models/index.js b/awx/ui/client/lib/models/index.js index 0c92326abb..dce5eef80c 100644 --- a/awx/ui/client/lib/models/index.js +++ b/awx/ui/client/lib/models/index.js @@ -1,10 +1,12 @@ import Base from './Base'; import Credential from './Credential'; import CredentialType from './CredentialType'; +import Me from './Me'; angular .module('at.lib.models', []) .service('BaseModel', Base) .service('CredentialModel', Credential) - .service('CredentialTypeModel', CredentialType); + .service('CredentialTypeModel', CredentialType) + .service('MeModel', Me); diff --git a/awx/ui/client/src/app.js b/awx/ui/client/src/app.js index 60292c1520..b17c56f981 100644 --- a/awx/ui/client/src/app.js +++ b/awx/ui/client/src/app.js @@ -7,7 +7,6 @@ // Vendor dependencies import 'jquery'; import 'angular'; -import 'angular-resource'; import 'angular-gettext'; import 'bootstrap'; import 'jquery-ui'; @@ -72,7 +71,6 @@ import footer from './footer/main'; import scheduler from './scheduler/main'; import instanceGroups from './instance-groups/main'; -import 'angular-animate'; import '../lib/components'; import '../lib/models'; import '../lib/services'; @@ -137,7 +135,6 @@ var tower = angular.module('Tower', [ 'AWDirectives', 'features', - 'ngAnimate', 'at.lib.components', 'at.lib.models', 'at.lib.services',