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() { const colorStep = this.get('steps').findBy('id', 'colors'); if (!colorStep) { return; } const themeChoice = colorStep.get('fieldsById.base_scheme_id'); if (!themeChoice) { return; } const themeId = 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); }); }