"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.cast_de_nrw_schule_svws_core_kursblockung_KursblockungDynFachart = exports.KursblockungDynFachart = void 0; const JavaObject_1 = require("../../java/lang/JavaObject"); class KursblockungDynFachart extends JavaObject_1.JavaObject { nr; representation; kursArr; schuelerMax = 0; kurseMax = 0; schuelerAnzNow = 0; statistik; /** * @param pNr Eine laufende Nummer (ID) für alle Facharten. * @param pRepresentation Eine String-Darstellung der Fachart, z.B. 'D;LK'. * @param pStatistik Dem Statistik-Objekt wird eine Veränderung der * Kursdifferenz mitgeteilt. */ constructor(pNr, pRepresentation, pStatistik) { super(); this.nr = pNr; this.representation = pRepresentation; this.statistik = pStatistik; this.kursArr = Array(0).fill(null); this.kurseMax = 0; this.schuelerMax = 0; this.schuelerAnzNow = 0; } /** * Durch das Überschreiben dieser Methode, liefert dieses Objekt eine * automatische String-Darstellung, beispielsweise 'D;LK'. */ toString() { return this.representation; } /** * Liefert die Nummer dieser Fachart. * * @return Die Nummer dieser Fachart. */ gibNr() { return this.nr; } /** * Liefert die maximale Anzahl ({@link #schuelerMax}) an SuS, die dieser Fachart * zugeordnet sein können. Das ist die Anzahl der Fachwahlen. * * @return Die Anzahl der SuS, die diese Fachart gewählt haben. */ gibSchuelerMax() { return this.schuelerMax; } /** * Liefert die aktuelle Anzahl ({@link #schuelerAnzNow}) an SuS, die dieser * Fachart zugeordnet sind. * * @return Die Anzahl der SuS, die diese Fachart aktuell zugeordnet sind. */ gibSchuelerZordnungen() { return this.schuelerAnzNow; } /** * Liefert die Anzahl der Kurse die dieser Fachart zugeordnet sind. * * @return Die Anzahl der Kurse die dieser Fachart zugeordnet sind. */ gibKurseMax() { return this.kurseMax; } /** * Liefert die aktuell größte Kursdifferenz. * * @return Die aktuell größte Kursdifferenz. */ gibKursdifferenz() { return this.kursArr[this.kursArr.length - 1].gibSchuelerAnzahl() - this.kursArr[0].gibSchuelerAnzahl(); } /** * Liefert das Array aller Kurse dieser Fachart. * * @return Das Array aller Kurse dieser Fachart. */ gibKurse() { return this.kursArr; } /** * Ordnet alle Kurse der Fachart zu. Die Kurse haben noch keine SuS und sind * somit automatisch sortiert. * * @param pKursArr Alle Kurse der Fachart. */ aktionSetKurse(pKursArr) { this.kursArr = pKursArr; } /** * Erhöht die Anzahl ({@link #schuelerMax}) an SuS, die diese Fachart gewählt * haben um 1. */ aktionMaxSchuelerErhoehen() { this.schuelerMax++; } /** * Erhöht die Anzahl ({@link #kurseMax}) an Kursen, die zu dieser Fachart * gehören. */ aktionMaxKurseErhoehen() { this.kurseMax++; } /** * Muss aufgerufen werden, bevor die Schüleranzahl eines Kurses verändert wird. */ aktionKursdifferenzEntfernen() { this.statistik.aktionKursdifferenzEntfernen(this.gibKursdifferenz()); } /** * Muss aufgerufen werden, nachdem die Schüleranzahl eines Kurses verändert * wird. */ aktionKursdifferenzHinzufuegen() { this.statistik.aktionKursdifferenzHinzufuegen(this.gibKursdifferenz()); } /** * Erhöht die Anzahl ({@link #schuelerAnzNow}) an Schülern, die dieser Fachart * momentan zugeordnet sind um 1. Die Aufru */ aktionSchuelerWurdeHinzugefuegt() { this.schuelerAnzNow++; for (let i = 1; i < this.kursArr.length; i++) { let kursL = this.kursArr[i - 1]; let kursR = this.kursArr[i]; if (kursL.gibSchuelerAnzahl() > kursR.gibSchuelerAnzahl()) { this.kursArr[i - 1] = kursR; this.kursArr[i] = kursL; } } } /** * Verringert die Anzahl ({@link #schuelerAnzNow}) an SuS, die dieser Fachart * momentan zugeordnet sind um 1. */ aktionSchuelerWurdeEntfernt() { this.schuelerAnzNow--; for (let i = this.kursArr.length - 1; i >= 1; i--) { let kursL = this.kursArr[i - 1]; let kursR = this.kursArr[i]; if (kursL.gibSchuelerAnzahl() > kursR.gibSchuelerAnzahl()) { this.kursArr[i - 1] = kursR; this.kursArr[i] = kursL; } } } /** * Debug Ausgabe. Nur für Testzwecke. */ debug() { for (let i = 0; i < this.kursArr.length; i++) { console.log(JSON.stringify(" " + this.kursArr[i] + " --> " + this.kursArr[i].gibSchuelerAnzahl() + " SuS.")); } } /** * Liefert TRUE, falls mindestens ein Kurs dieser Fachart ein Multikur ist. * * @return TRUE, falls mindestens ein Kurs dieser Fachart ein Multikur ist. */ gibHatMultikurs() { for (let kurs of this.kursArr) { if (kurs.gibSchienenAnzahl() > 1) { return true; } } return false; } isTranspiledInstanceOf(name) { return ['de.nrw.schule.svws.core.kursblockung.KursblockungDynFachart'].includes(name); } } exports.KursblockungDynFachart = KursblockungDynFachart; function cast_de_nrw_schule_svws_core_kursblockung_KursblockungDynFachart(obj) { return obj; } exports.cast_de_nrw_schule_svws_core_kursblockung_KursblockungDynFachart = cast_de_nrw_schule_svws_core_kursblockung_KursblockungDynFachart; //# sourceMappingURL=KursblockungDynFachart.js.map