Files
Telereview/code/interface_borne/assets/js/state_manager.js
2023-05-04 13:45:21 +02:00

75 lines
2.5 KiB
JavaScript

const STATE = {
sleeping: 0,
video: 1,
grade: 2,
audio: 3,
thankYou: 4,
};
class StateManager {
constructor() {
this._state = STATE.sleeping;
this._cameraPage = new CameraPage();
this._sleepingPage = new SleepingPage();
this._audioPage = new AudioPage();
this._thankYouPage = new ThankYouPage();
this._gradePage = new GradePage();
this.wsClient = new WebsocketClient(
(effects) => {
this.setState(STATE.video);
this._cameraPage.setEffects(effects)
},
(state) => this.setState(state),
(grade) => this._audioPage.setGrade(grade),
() => this.reset(),
() => this._audioPage.onRecordingDone(),
(crit) => this._gradePage.onNewCriteria(crit),
(grade) => this._gradePage.onNewGrade(grade),
);
this._sleepingPage.enabled = true;
this._cameraPage.enabled = false;
this._gradePage.enabled = false;
this._audioPage.enabled = false;
this._thankYouPage.enabled = false;
}
setState(newState) {
console.log("state change")
console.log({current:this._state,new:newState})
if(this._state == STATE.sleeping && newState == STATE.video) {
this._cameraPage.enabled = true;
this._sleepingPage.enabled = false;
this._state = newState;
}else if(this._state == STATE.video && newState == STATE.grade) {
this._cameraPage.enabled = false;
this._gradePage.enabled = true;
this._state = newState;
}else if(this._state == STATE.grade && newState == STATE.audio) {
this._gradePage.enabled = false;
this._audioPage.enabled = true;
this._state = newState;
}else if(this._state == STATE.audio && newState == STATE.thankYou) {
this._audioPage.enabled = false;
this._thankYouPage.enabled = true;
this._state = newState;
}else if(this._state == STATE.thankYou && newState == STATE.sleeping) {
this._thankYouPage.enabled = false;
this._sleepingPage.enabled = true;
this._state = newState;
}
}
reset() {
this._state = 0;
this._cameraPage.enabled = false;
this._audioPage.enabled = false;
this._thankYouPage.enabled = false;
this._audioPage.reset();
this._cameraPage.reset();
this._sleepingPage.enabled = true;
}
}