mirror of
https://github.com/optim-enterprises-bv/vault.git
synced 2025-11-01 19:17:58 +00:00
Ui/transform role edit updates transformations (#9910)
* Update transform role delete button to be ConfirmAction with dropdown * Set backend on fetched record so that it saves correctly * Update transformation after role transformations changed works * Clean up transform adapter * Add role to allowed_roles on added transformations and remove from removed transformations on role save, with flash message * Add backend to transform role model, and update serializer to add backend to paginated results * Clean up error message handling * Connect backend to transform roles list response * Capabilities on transform roles is correct * Fix cancel button on transform role edit location * Fix model path * Remove unnecessary tab param from controller * Add backend to transform model
This commit is contained in:
@@ -1,22 +1,17 @@
|
||||
import { inject as service } from '@ember/service';
|
||||
import { or } from '@ember/object/computed';
|
||||
import { isBlank } from '@ember/utils';
|
||||
import { task, waitForEvent } from 'ember-concurrency';
|
||||
import Component from '@ember/component';
|
||||
import { set, get } from '@ember/object';
|
||||
import FocusOnInsertMixin from 'vault/mixins/focus-on-insert';
|
||||
import keys from 'vault/lib/keycodes';
|
||||
|
||||
const LIST_ROOT_ROUTE = 'vault.cluster.secrets.backend.list-root';
|
||||
const SHOW_ROUTE = 'vault.cluster.secrets.backend.show';
|
||||
|
||||
export default Component.extend(FocusOnInsertMixin, {
|
||||
router: service(),
|
||||
wizard: service(),
|
||||
|
||||
mode: null,
|
||||
// TODO: Investigate if we need all of these
|
||||
emptyData: '{\n}',
|
||||
onDataChange() {},
|
||||
onRefresh() {},
|
||||
model: null,
|
||||
@@ -34,15 +29,6 @@ export default Component.extend(FocusOnInsertMixin, {
|
||||
}
|
||||
},
|
||||
|
||||
waitForKeyUp: task(function*() {
|
||||
while (true) {
|
||||
let event = yield waitForEvent(document.body, 'keyup');
|
||||
this.onEscape(event);
|
||||
}
|
||||
})
|
||||
.on('didInsertElement')
|
||||
.cancelOn('willDestroyElement'),
|
||||
|
||||
transitionToRoute() {
|
||||
this.get('router').transitionTo(...arguments);
|
||||
},
|
||||
@@ -54,45 +40,33 @@ export default Component.extend(FocusOnInsertMixin, {
|
||||
}
|
||||
return modelPrefix;
|
||||
},
|
||||
|
||||
onEscape(e) {
|
||||
if (e.keyCode !== keys.ESC || this.get('mode') !== 'show') {
|
||||
return;
|
||||
}
|
||||
this.transitionToRoute(LIST_ROOT_ROUTE);
|
||||
},
|
||||
|
||||
hasDataChanges() {
|
||||
get(this, 'onDataChange')(get(this, 'model.hasDirtyAttributes'));
|
||||
},
|
||||
|
||||
persist(method, successCallback) {
|
||||
const model = get(this, 'model');
|
||||
return model[method]().then(() => {
|
||||
if (!get(model, 'isError')) {
|
||||
if (this.get('wizard.featureState') === 'role') {
|
||||
this.get('wizard').transitionFeatureMachine('role', 'CONTINUE', this.get('backendType'));
|
||||
}
|
||||
successCallback(model);
|
||||
}
|
||||
successCallback(model);
|
||||
});
|
||||
},
|
||||
|
||||
applyChanges(type, callback = () => {}) {
|
||||
const modelId = this.get('model.id') || this.get('model.name'); // transform comes in as model.name
|
||||
const modelPrefix = this.modelPrefixFromType(this.get('model.constructor.modelName'));
|
||||
// prevent from submitting if there's no key
|
||||
// maybe do something fancier later
|
||||
if (type === 'create' && isBlank(modelId)) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.persist('save', () => {
|
||||
callback();
|
||||
this.transitionToRoute(SHOW_ROUTE, `${modelPrefix}${modelId}`);
|
||||
});
|
||||
},
|
||||
|
||||
actions: {
|
||||
createOrUpdate(type, event) {
|
||||
event.preventDefault();
|
||||
const modelId = this.get('model.id') || this.get('model.name'); // transform comes in as model.name
|
||||
const modelPrefix = this.modelPrefixFromType(this.get('model.constructor.modelName'));
|
||||
// prevent from submitting if there's no key
|
||||
// maybe do something fancier later
|
||||
if (type === 'create' && isBlank(modelId)) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.persist('save', () => {
|
||||
this.hasDataChanges();
|
||||
this.transitionToRoute(SHOW_ROUTE, `${modelPrefix}${modelId}`);
|
||||
});
|
||||
this.applyChanges(type);
|
||||
},
|
||||
|
||||
setValue(key, event) {
|
||||
|
||||
Reference in New Issue
Block a user