discourse/app/assets/javascripts/wizard/models/wizard.js.es6
Joffrey JAFFEUX 7a3c541077
UX: Preview multiple color schemes in wizard (#6151)
It was a dropdown to provide choices of color schemes,
and only one scheme could be shown.
With this commit, multiple color scheme previews can be displayed on
one page at the same time, making admins choose color schemes more
easily.

Theme preview windows are shrinked.

Imported default color schemes.

Co-Authored-By: Misaka 0x4e21 <misaka4e21@gmail.com>
2018-07-24 09:00:20 -04:00

68 lines
1.6 KiB
JavaScript

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";
const Wizard = Ember.Object.extend({
@computed("steps.length") totalSteps: length => length,
getTitle() {
const titleStep = this.get("steps").findBy("id", "forum-title");
if (!titleStep) {
return;
}
return titleStep.get("fieldsById.title.value");
},
getLogoUrl() {
const logoStep = this.get("steps").findBy("id", "logos");
if (!logoStep) {
return;
}
return logoStep.get("fieldsById.logo_url.value");
},
// A bit clunky, but get the current colors from the appropriate step
getCurrentColors(schemeId) {
const colorStep = this.get("steps").findBy("id", "colors");
if (!colorStep) {
return;
}
const themeChoice = colorStep.get("fieldsById.theme_previews");
if (!themeChoice) {
return;
}
const themeId = schemeId ? schemeId : themeChoice.get("value");
if (!themeId) {
return;
}
const choices = themeChoice.get("choices");
if (!choices) {
return;
}
const option = choices.findBy("id", themeId);
if (!option) {
return;
}
return option.data.colors;
}
});
export function findWizard() {
return ajax({ url: "/wizard.json" }).then(response => {
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);
});
}