decide.nolog.cz/app/controllers/create.js

55 lines
1.4 KiB
JavaScript
Raw Normal View History

2018-12-29 01:27:37 +01:00
import { inject as service } from '@ember/service';
2023-10-15 17:32:11 +02:00
import { action } from '@ember/object';
2018-12-29 01:27:37 +01:00
import Controller from '@ember/controller';
2023-10-15 17:32:11 +02:00
import { TrackedSet } from 'tracked-built-ins';
export default class CreateController extends Controller {
@service
router;
get canEnterMetaStep() {
return this.visitedSteps.has('meta') && this.model.pollType;
}
get canEnterOptionsStep() {
let { title } = this.model;
return this.visitedSteps.has('options') &&
typeof title === 'string' && title.length >= 2;
}
get canEnterOptionsDatetimeStep() {
return this.visitedSteps.has('options-datetime') && this.model.options.length >= 1;
}
get canEnterSettingsStep() {
return this.visitedSteps.has('settings') && this.model.options.length >= 1;
}
get isFindADate() {
return this.model.pollType === 'FindADate';
}
@action
updateVisitedSteps() {
let { currentRouteName } = this.router;
// currentRouteName might not be defined in some edge cases
if (!currentRouteName) {
return;
}
let step = currentRouteName.split('.').pop();
this.visitedSteps.add(step);
}
listenForStepChanges() {
2023-10-15 17:32:11 +02:00
this.set('visitedSteps', new TrackedSet());
this.router.on('routeDidChange', this.updateVisitedSteps);
}
clearListenerForStepChanges() {
this.router.off('routeDidChange', this.updateVisitedSteps);
}
}