aboutsummaryrefslogtreecommitdiff
path: root/src/graduation-common.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/graduation-common.ts')
-rw-r--r--src/graduation-common.ts199
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,