diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2026-08-05 11:58:50 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2026-08-05 11:59:56 +0200 |
| commit | d35e03f0b07d1af3fecd51cd4ca42a76c300db23 (patch) | |
| tree | 92562e06ade3a2ac30e5ce39b8442d980b2fad08 /src/graduation-common.ts | |
| parent | 6c2bffd297bdfaf4e95a8f0620cf0349d3d3bb78 (diff) | |
| download | bycs-sol-d35e03f0b07d1af3fecd51cd4ca42a76c300db23.tar.gz bycs-sol-d35e03f0b07d1af3fecd51cd4ca42a76c300db23.zip | |
format: run prettier
Diffstat (limited to 'src/graduation-common.ts')
| -rw-r--r-- | src/graduation-common.ts | 199 |
1 files changed, 121 insertions, 78 deletions
diff --git a/src/graduation-common.ts b/src/graduation-common.ts index 61600d3..2c0fb69 100644 --- a/src/graduation-common.ts +++ b/src/graduation-common.ts @@ -1,5 +1,5 @@ -import { getGraduationDb, DatabaseEntry } from "./database-ENV.ts" -import type { Student } from "./student-common.ts" +import { getGraduationDb, DatabaseEntry } from "./database-ENV.ts"; +import type { Student } from "./student-common.ts"; import NeulingPng from "../assets/Neuling.png"; import EntdeckerPng from "../assets/Entdecker.png"; @@ -23,7 +23,14 @@ class GraduationChange { coach: string; context: any; - constructor(date: Date, studentId: number, change: string, reason: string, coach: string, context: any) { + constructor( + date: Date, + studentId: number, + change: string, + reason: string, + coach: string, + context: any, + ) { this.date = date; this.studentId = studentId; this.change = change; @@ -32,19 +39,26 @@ class GraduationChange { this.context = context; } - dbFields () { + dbFields() { return { - "studentId": this.studentId, - "change": this.change, - "reason": this.reason, - "context": this.context, + studentId: this.studentId, + change: this.change, + reason: this.reason, + context: this.context, }; } static fromDBEntry(e: DatabaseEntry) { - const {date, coach, json} = e; + const { date, coach, json } = e; const change = JSON.parse(json); - return new GraduationChange(new Date(date), change.change, change.student, change.reason, coach, change.context); + return new GraduationChange( + new Date(date), + change.change, + change.student, + change.reason, + coach, + change.context, + ); } static newObservationRequest() { @@ -56,11 +70,25 @@ class GraduationChange { } static newObservationEnd(reason: string, success: boolean) { - return new GraduationChange(new Date(), -1, "ObservationEnd", reason, "", JSON.stringify(success)); + return new GraduationChange( + new Date(), + -1, + "ObservationEnd", + reason, + "", + JSON.stringify(success), + ); } static newObservationChange(observation: Observation) { - return new GraduationChange(observation.date, -1, "Observation", "", "", JSON.stringify(observation.status)); + return new GraduationChange( + observation.date, + -1, + "Observation", + "", + "", + JSON.stringify(observation.status), + ); } static newGreenPointChange(reason: string, coach: string) { @@ -87,7 +115,17 @@ class Graduation { pastObservations: Array<ObservationPeriod>; changes: Array<GraduationChange>; - constructor(student: Student, green: number, orange: number, red: number, level: number, observationRequested: Date | null, observation: ObservationPeriod | null, pastObservations: Array<ObservationPeriod>, changes: Array<GraduationChange>) { + constructor( + student: Student, + green: number, + orange: number, + red: number, + level: number, + observationRequested: Date | null, + observation: ObservationPeriod | null, + pastObservations: Array<ObservationPeriod>, + changes: Array<GraduationChange>, + ) { this.student = student; this.green = green; this.orange = orange; @@ -115,63 +153,70 @@ class Graduation { for (const change of changes) { switch (change.change) { - case "Grün": - green++; - break; - - case "Orange": - orange++; - break; - - case "Rot": - red++; - break; - - case "ObservationRequest": - openObservationRequest = change.date; - break; - - case "ObservationStart": - console.assert(openObservationRequest === null, - "No request for observation start"); - - observationPeriod = new ObservationPeriod(change.date); - openObservationRequest = null; - break; - - case "ObservationEnd": - if (observationPeriod === null) { - console.error("No active observation period"); - continue; - } - observationPeriod.finishPeriod(change.context.success); - if (change.context.success) { - level++; - } - pastObservations.push(observationPeriod); - observationPeriod = null; - break; - - case "Observation": - if (observationPeriod === null) { - console.error("No active observation period"); - continue; - } - const observation = Observation.fromChange(change); - observationPeriod.addObservation(observation); - break; - - case "LevelChange": - level = change.context.level; - break; - - default: - throw new Error(`Unexpected change: ${change}`); + case "Grün": + green++; + break; + + case "Orange": + orange++; + break; + + case "Rot": + red++; + break; + + case "ObservationRequest": + openObservationRequest = change.date; + break; + + case "ObservationStart": + console.assert(openObservationRequest === null, "No request for observation start"); + + observationPeriod = new ObservationPeriod(change.date); + openObservationRequest = null; + break; + + case "ObservationEnd": + if (observationPeriod === null) { + console.error("No active observation period"); + continue; + } + observationPeriod.finishPeriod(change.context.success); + if (change.context.success) { + level++; + } + pastObservations.push(observationPeriod); + observationPeriod = null; + break; + + case "Observation": + if (observationPeriod === null) { + console.error("No active observation period"); + continue; + } + const observation = Observation.fromChange(change); + observationPeriod.addObservation(observation); + break; + + case "LevelChange": + level = change.context.level; + break; + + default: + throw new Error(`Unexpected change: ${change}`); } } - return new Graduation(student, green, orange, red, level, - openObservationRequest, observationPeriod, pastObservations, - changes); + return new Graduation( + student, + green, + orange, + red, + level, + openObservationRequest, + observationPeriod, + pastObservations, + changes, + ); } addChange(change: GraduationChange) { @@ -264,8 +309,7 @@ class ObservationPeriod { } ready() { - if (this.observations.length < 10) - return false; + if (this.observations.length < 10) return false; // at least 10 observation on different days let days = new Map(); @@ -277,14 +321,14 @@ class ObservationPeriod { } getObservationsSums() { - let sums = Array(OBSERVATION_TYPES.length).fill(null).map(() => ({"yes":0, "no":0})); + let sums = Array(OBSERVATION_TYPES.length) + .fill(null) + .map(() => ({ yes: 0, no: 0 })); for (const observation of this.observations) { for (let i = 0; i < sums.length; i++) { if (observation.status[i]) { - if (observation.status[i] === "yes") - sums[i].yes++; - else - sums[i].no++; + if (observation.status[i] === "yes") sums[i].yes++; + else sums[i].no++; } } } @@ -317,7 +361,7 @@ class Observation { } static fromChange(change: GraduationChange) { - return new Observation(change.date, JSON.parse(change.context)) + return new Observation(change.date, JSON.parse(change.context)); } } @@ -328,7 +372,7 @@ async function submitGraduationChange(graduation: Graduation, change: Graduation } async function submitObservation(graduation: Graduation, observation: Observation) { - if(graduation.observation === null) throw new Error("no active observation"); + if (graduation.observation === null) throw new Error("no active observation"); graduation.observation.addObservation(observation); await submitGraduationChange(graduation, GraduationChange.newObservationChange(observation)); } @@ -340,7 +384,6 @@ export { Graduation, submitGraduationChange, submitObservation, - OBSERVATION_TYPES, Observation, ObservationPeriod, |
