mirror of
https://git.roussel.pro/telecom-paris/pact.git
synced 2026-02-09 02:20:17 +01:00
75 lines
2.5 KiB
JavaScript
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;
|
|
|
|
}
|
|
}
|