discourse/app/assets/javascripts/wizard/models/wizard.js.es6

68 lines
1.6 KiB
Plaintext
Raw Normal View History

2018-06-15 23:03:24 +08:00
import Step from "wizard/models/step";
import WizardField from "wizard/models/wizard-field";
import { ajax } from "wizard/lib/ajax";
import computed from "ember-addons/ember-computed-decorators";
2016-08-26 01:14:56 +08:00
const Wizard = Ember.Object.extend({
2018-06-15 23:03:24 +08:00
@computed("steps.length") totalSteps: length => length,
2016-09-17 04:12:56 +08:00
2016-09-17 05:02:45 +08:00
getTitle() {
2018-06-15 23:03:24 +08:00
const titleStep = this.get("steps").findBy("id", "forum-title");
if (!titleStep) {
return;
}
return titleStep.get("fieldsById.title.value");
2016-09-17 05:02:45 +08:00
},
getLogoUrl() {
2018-06-15 23:03:24 +08:00
const logoStep = this.get("steps").findBy("id", "logos");
if (!logoStep) {
return;
}
return logoStep.get("fieldsById.logo_url.value");
},
2016-09-17 04:12:56 +08:00
// A bit clunky, but get the current colors from the appropriate step
getCurrentColors() {
2018-06-15 23:03:24 +08:00
const colorStep = this.get("steps").findBy("id", "colors");
if (!colorStep) {
return;
}
2016-09-17 04:12:56 +08:00
2018-06-15 23:03:24 +08:00
const themeChoice = colorStep.get("fieldsById.base_scheme_id");
if (!themeChoice) {
return;
}
2016-09-17 04:12:56 +08:00
2018-06-15 23:03:24 +08:00
const themeId = themeChoice.get("value");
if (!themeId) {
return;
}
2016-09-17 04:12:56 +08:00
2018-06-15 23:03:24 +08:00
const choices = themeChoice.get("choices");
if (!choices) {
return;
}
2016-09-17 04:12:56 +08:00
2018-06-15 23:03:24 +08:00
const option = choices.findBy("id", themeId);
if (!option) {
return;
}
2016-09-17 04:12:56 +08:00
return option.data.colors;
}
2016-08-26 01:14:56 +08:00
});
export function findWizard() {
2018-06-15 23:03:24 +08:00
return ajax({ url: "/wizard.json" }).then(response => {
2016-08-26 01:14:56 +08:00
const wizard = response.wizard;
wizard.steps = wizard.steps.map(step => {
const stepObj = Step.create(step);
stepObj.fields = stepObj.fields.map(f => WizardField.create(f));
return stepObj;
});
return Wizard.create(wizard);
});
}