Spiegel von
https://github.com/paviliondev/discourse-custom-wizard.git
synchronisiert 2024-11-30 04:30:29 +01:00
76 Zeilen
1,8 KiB
JavaScript
76 Zeilen
1,8 KiB
JavaScript
import { observes, default as computed } from 'ember-addons/ember-computed-decorators';
|
|
|
|
export default Ember.Component.extend({
|
|
classNames: 'wizard-custom-step',
|
|
currentField: null,
|
|
currentAction: null,
|
|
disableId: Ember.computed.not('step.isNew'),
|
|
|
|
@observes('step')
|
|
resetCurrentObjects() {
|
|
const fields = this.get('step.fields');
|
|
const actions = this.get('step.actions');
|
|
this.setProperties({
|
|
currentField: fields.length ? fields[0] : null,
|
|
currentAction: actions.length ? actions[0] : null
|
|
});
|
|
},
|
|
|
|
@computed('availableFields', 'wizard.steps')
|
|
requiredContent(availableFields, steps) {
|
|
let content = availableFields;
|
|
let actions = [];
|
|
|
|
steps.forEach(s => {
|
|
actions.push(...s.actions);
|
|
});
|
|
|
|
actions.forEach(a => {
|
|
if (a.type === 'route_to' && a.code) {
|
|
content.push(Ember.Object.create({
|
|
id: a.code,
|
|
label: "code (Route To)"
|
|
}));
|
|
}
|
|
});
|
|
|
|
return content;
|
|
},
|
|
|
|
@computed
|
|
requiredConnectorContent() {
|
|
const label = (id) => I18n.t(`admin.wizard.step.required_data.connector.${id}`);
|
|
return [
|
|
{
|
|
id: 'equals',
|
|
label: label('equals')
|
|
}
|
|
];
|
|
},
|
|
|
|
@computed('step.id', 'wizard.save_submissions')
|
|
availableFields(currentStepId, saveSubmissions) {
|
|
const allSteps = this.get('wizard.steps');
|
|
let steps = allSteps;
|
|
let fields = [];
|
|
|
|
if (!saveSubmissions) {
|
|
steps = [allSteps.findBy('id', currentStepId)];
|
|
}
|
|
|
|
steps.forEach((s) => {
|
|
if (s.fields && s.fields.length > 0) {
|
|
let stepFields = s.fields.map((f) => {
|
|
return Ember.Object.create({
|
|
id: f.id,
|
|
label: `${f.id} (${s.id})`,
|
|
type: f.type
|
|
});
|
|
});
|
|
fields.push(...stepFields);
|
|
}
|
|
});
|
|
|
|
return fields;
|
|
},
|
|
});
|