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-07-30 23:56:48 +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
|
|
|
},
|
|
|
|
|
2016-09-22 04:09:18 +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-22 04:09:18 +08:00
|
|
|
},
|
|
|
|
|
2016-09-17 04:12:56 +08:00
|
|
|
// A bit clunky, but get the current colors from the appropriate step
|
2018-07-24 21:00:20 +08:00
|
|
|
getCurrentColors(schemeId) {
|
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-07-24 21:00:20 +08:00
|
|
|
const themeChoice = colorStep.get("fieldsById.theme_previews");
|
2018-06-15 23:03:24 +08:00
|
|
|
if (!themeChoice) {
|
|
|
|
return;
|
|
|
|
}
|
2016-09-17 04:12:56 +08:00
|
|
|
|
2018-07-24 21:00:20 +08:00
|
|
|
const themeId = schemeId ? schemeId : themeChoice.get("value");
|
2018-06-15 23:03:24 +08:00
|
|
|
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);
|
|
|
|
});
|
|
|
|
}
|