0
0
Fork 1
Spiegel von https://github.com/paviliondev/discourse-custom-wizard.git synchronisiert 2024-11-30 12:31:10 +01:00
discourse-custom-wizard/assets/javascripts/wizard/models/custom.js.es6

56 Zeilen
1,4 KiB
Text

import { default as computed } from 'ember-addons/ember-computed-decorators';
2017-11-01 05:21:14 +01:00
import getUrl from 'discourse-common/lib/get-url';
2017-09-25 16:47:40 +02:00
import WizardField from 'wizard/models/wizard-field';
import { ajax } from 'wizard/lib/ajax';
import Step from 'wizard/models/step';
2017-09-25 16:47:40 +02:00
const CustomWizard = Ember.Object.extend({
@computed('steps.length')
2017-11-01 05:21:14 +01:00
totalSteps: length => length,
skip() {
if (this.get('required') && (!this.get('completed') && this.get('permitted'))) return;
2017-11-01 05:21:14 +01:00
const id = this.get('id');
CustomWizard.skip(id);
}
});
CustomWizard.reopenClass({
skip(wizardId) {
ajax({ url: `/w/${wizardId}/skip`, type: 'PUT' }).then((result) => {
CustomWizard.finished(result);
2017-11-01 05:21:14 +01:00
});
},
finished(result) {
let url = "/";
if (result.redirect_to) {
url = result.redirect_to;
}
window.location.href = getUrl(url);
}
2018-08-19 02:34:28 +02:00
});
2017-09-25 16:47:40 +02:00
2019-01-14 03:53:53 +01:00
export function findCustomWizard(wizardId, opts = {}) {
let url = `/w/${wizardId}`;
if (opts.reset) url += '?reset=true';
return ajax({ url, cache: false, dataType: 'json' }).then(result => {
const wizard = result.wizard;
2017-10-13 15:02:34 +02:00
2017-10-22 05:37:58 +02:00
if (!wizard) return null;
2017-10-13 15:02:34 +02:00
if (!wizard.completed) {
wizard.steps = wizard.steps.map(step => {
const stepObj = Step.create(step);
stepObj.fields = stepObj.fields.map(f => WizardField.create(f));
return stepObj;
});
}
2017-09-25 16:47:40 +02:00
return CustomWizard.create(wizard);
});
};
export default CustomWizard;