0
0
Fork 1
Spiegel von https://github.com/paviliondev/discourse-custom-wizard.git synchronisiert 2024-11-15 22:32:54 +01:00
discourse-custom-wizard/assets/javascripts/discourse/routes/admin-wizards-wizard.js.es6
2021-01-27 10:38:26 +05:30

96 Zeilen
Kein EOL
2,4 KiB
JavaScript

import DiscourseRoute from "discourse/routes/discourse";
import { buildFieldTypes, buildFieldValidations } from '../lib/wizard-schema';
import EmberObject, { set } from "@ember/object";
import { A } from "@ember/array";
import { all } from "rsvp";
import { ajax } from 'discourse/lib/ajax';
export default DiscourseRoute.extend({
model() {
return ajax("/admin/wizards/wizard");
},
afterModel(model) {
buildFieldTypes(model.field_types);
buildFieldValidations(model.realtime_validations);
return all([
this._getThemes(model),
this._getApis(model),
this._getUserFields(model)
]);
},
_getThemes(model) {
return ajax('/admin/themes')
.then((result) => {
set(model, 'themes', result.themes.map(t => {
return {
id: t.id,
name: t.name
}
}));
});
},
_getApis(model) {
return ajax('/admin/wizards/api')
.then((result) => set(model, 'apis', result));
},
_getUserFields(model) {
return this.store.findAll('user-field').then((result) => {
if (result && result.content) {
set(model, 'userFields',
result.content.map((f) => ({
id: `user_field_${f.id}`,
name: f.name
}))
);
}
});
},
currentWizard() {
const params = this.paramsFor('adminWizardsWizardShow');
if (params && params.wizardId) {
return params.wizardId;
} else {
return null;
}
},
setupController(controller, model) {
controller.setProperties({
wizardList: model.wizard_list,
wizardId: this.currentWizard(),
custom_fields: A(model.custom_fields.map(f => EmberObject.create(f)))
});
},
actions: {
changeWizard(wizardId) {
this.controllerFor('adminWizardsWizard').set('wizardId', wizardId);
if (wizardId) {
this.transitionTo('adminWizardsWizardShow', wizardId);
} else {
this.transitionTo('adminWizardsWizard');
}
},
afterDestroy() {
this.transitionTo('adminWizardsWizard').then(() => this.refresh());
},
afterSave(wizardId) {
this.refresh().then(() => this.send('changeWizard', wizardId));
},
createWizard() {
this.controllerFor('adminWizardsWizard').set('wizardId', 'create');
this.transitionTo('adminWizardsWizardShow', 'create');
}
}
});