"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.cast_de_nrw_schule_svws_core_kursblockung_KursblockungDynStatistik = exports.KursblockungDynStatistik = void 0; const JavaObject_1 = require("../../java/lang/JavaObject"); const Arrays_1 = require("../../java/util/Arrays"); const System_1 = require("../../java/lang/System"); class KursblockungDynStatistik extends JavaObject_1.JavaObject { matrixFachartPaar = [...Array(0)].map(e => Array(0).fill(0)); bewertungFachartPaar = 0; bewertungFachartPaarSaveS = 0; bewertungFachartPaarSaveK = 0; bewertungNichtwahlen = 0; bewertungNichtwahlenSaveS = 0; bewertungNichtwahlenSaveK = 0; bewertungKursdifferenzen = Array(0).fill(0); bewertungKursdifferenzenSaveS = Array(0).fill(0); bewertungKursdifferenzenSaveK = Array(0).fill(0); bewertungKursdifferenzenMaxIndex = 0; /** * Initialisiert alle Attribute mit Dummy-Werten. */ constructor() { super(); this.clear(); } /** * Initialisiert alle Attribute mit Dummy-Werten. Setzt alle Werte auf 0 und * initialisiert alle Arrays auf Länge 0. */ clear() { this.bewertungFachartPaar = 0; this.bewertungFachartPaarSaveS = 0; this.bewertungFachartPaarSaveK = 0; this.bewertungNichtwahlen = 0; this.bewertungNichtwahlenSaveS = 0; this.bewertungNichtwahlenSaveK = 0; this.matrixFachartPaar = [...Array(0)].map(e => Array(0).fill(0)); this.bewertungKursdifferenzen = Array(0).fill(0); this.bewertungKursdifferenzenSaveS = Array(0).fill(0); this.bewertungKursdifferenzenSaveK = Array(0).fill(0); this.bewertungKursdifferenzenMaxIndex = 0; } /** * Initialisiert dieses Objekt mit den Anfangswerten. * * @param pMatrixFachartPaar Das 2D-Array beinhaltet pro Fachart-Paar eine * Bewertung. * @param pMaxSchueler Die maximale Anzahl an Schülern. * @param pMaxFacharten Die maximale Anzahl an Facharten. */ aktionInitialisiere(pMatrixFachartPaar, pMaxSchueler, pMaxFacharten) { this.matrixFachartPaar = pMatrixFachartPaar; this.bewertungKursdifferenzen = Array(pMaxSchueler + 1).fill(0); this.bewertungKursdifferenzenSaveS = Array(pMaxSchueler + 1).fill(0); this.bewertungKursdifferenzenSaveK = Array(pMaxSchueler + 1).fill(0); this.bewertungKursdifferenzen[0] = pMaxFacharten; this.bewertungKursdifferenzenSaveS[0] = pMaxFacharten; this.bewertungKursdifferenzenSaveK[0] = pMaxFacharten; } /** * Liefert die aktuelle Fachart-Paar-Bewertung. * * @return Die aktuelle Fachart-Paar-Bewertung. */ gibBewertungFachartPaar() { return this.bewertungFachartPaar; } /** * Liefert die aktuelle Anzahl an Nichtwahlen. Das ist die Summe aller Kurs, die * bei Schülern nicht zugeordnet wurden. * * @return Die aktuelle Anzahl an Nichtwahlen. */ gibBewertungNichtwahlen() { return this.bewertungNichtwahlen; } /** * Liefert die aktuell größte Kursdifferenz (über alle Facharten). * * @return Die aktuell größte Kursdifferenz (über alle Facharten). */ gibBewertungKursdifferenz() { return this.bewertungKursdifferenzenMaxIndex; } /** * Informiert die Statistik, dass ein Kurs-Paar hinzuzufügen ist. * * @param pKurs1 Der 1. Kurs des Kurs-Paares. * @param pKurs2 Der 2. Kurs des Kurs-Paares. */ aktionKurspaarInSchieneHinzufuegen(pKurs1, pKurs2) { let nr1 = pKurs1.gibFachart().gibNr(); let nr2 = pKurs2.gibFachart().gibNr(); this.bewertungFachartPaar += this.matrixFachartPaar[nr1][nr2]; } /** * Informiert die Statistik, dass ein Kurs-Paar zu entfernen ist. * * @param pKurs1 Der 1. Kurs des Kurs-Paares. * @param pKurs2 Der 2. Kurs des Kurs-Paares. */ aktionKurspaarInSchieneEntfernen(pKurs1, pKurs2) { let nr1 = pKurs1.gibFachart().gibNr(); let nr2 = pKurs2.gibFachart().gibNr(); this.bewertungFachartPaar -= this.matrixFachartPaar[nr1][nr2]; } /** * Informiert die Statistik über eine Veränderung der Nichtwahlen. * * @param pVeraenderung Die Veränderungen der Nichtwahlen (negative Werte sind * möglich). */ aktionNichtwahlenVeraendern(pVeraenderung) { this.bewertungNichtwahlen += pVeraenderung; } /** * Entfernt eine Kursdifferenz {@code pIndex} aus dem Histogramm * {@link KursblockungDynStatistik#bewertungKursdifferenzen} aller * Kursdifferenzen. Der Index des größten Nicht-Null-Wertes * {@link KursblockungDynStatistik#bewertungKursdifferenzenMaxIndex} wird dabei * möglicherweise kleiner.
* {@code Beispiel vorher: 5, 0, 6, 0, 0, 1*, 0, 0, 0}
* {@code Beispiel danach: 5, 0, 6*, 0, 0, 0, 0, 0, 0}
* * @param pIndex Die Kursdifferenz von der es eine weniger geben soll. */ aktionKursdifferenzEntfernen(pIndex) { this.bewertungKursdifferenzen[pIndex]--; if (pIndex === this.bewertungKursdifferenzenMaxIndex) { while ((this.bewertungKursdifferenzen[this.bewertungKursdifferenzenMaxIndex] === 0) && (this.bewertungKursdifferenzenMaxIndex > 0)) { this.bewertungKursdifferenzenMaxIndex--; } } } /** * Fügt eine Kursdifferenz {@code pIndex} dem Histogramm * {@link KursblockungDynStatistik#bewertungKursdifferenzen} aller * Kursdifferenzen hinzu. Der Index des größten Nicht-Null-Wertes * {@link KursblockungDynStatistik#bewertungKursdifferenzenMaxIndex} wird dabei * möglicherweise größer.
* {@code Beispiel vorher: 5, 0, 6*, 0, 0, 0, 0, 0, 0}
* {@code Beispiel danach: 5, 0, 6, 0, 0, 1*, 0, 0, 0}
* * @param pIndex Die Kursdifferenz von der es eine weniger geben soll. */ aktionKursdifferenzHinzufuegen(pIndex) { this.bewertungKursdifferenzen[pIndex]++; if (pIndex > this.bewertungKursdifferenzenMaxIndex) { this.bewertungKursdifferenzenMaxIndex = pIndex; } } /** * Ausgabe von Debug-Informationen. Nur für Testzwecke. */ debug() { console.log(JSON.stringify("NW = " + this.bewertungNichtwahlen + ", KDs = " + Arrays_1.Arrays.toString(this.bewertungKursdifferenzen).valueOf())); } /** * Speichert die aktuellen Werte (im Zustand S). Die Methoden * {@link KursblockungDynStatistik#gibBewertung_NW_KD_JetztS} und * {@link KursblockungDynStatistik#gibBewertungFachartPaarSchlechter} bedienen * sich dann der ehemaligen Werte um festzustellen, ob es eine Verschlechterung * gab. * */ aktionBewertungSpeichernS() { this.bewertungNichtwahlenSaveS = this.bewertungNichtwahlen; this.bewertungFachartPaarSaveS = this.bewertungFachartPaar; System_1.System.arraycopy(this.bewertungKursdifferenzen, 0, this.bewertungKursdifferenzenSaveS, 0, this.bewertungKursdifferenzen.length); } /** * Speichert die aktuellen Werte (im Zustand K). Die Methoden * {@link KursblockungDynStatistik#gibBewertung_NW_KD_JetztK()} und * {@link KursblockungDynStatistik#gibBewertungFachartPaarSchlechter} bedienen * sich dann der ehemaligen Werte um festzustellen, ob es eine Verschlechterung * gab. * */ aktionBewertungSpeichernK() { this.bewertungNichtwahlenSaveK = this.bewertungNichtwahlen; this.bewertungFachartPaarSaveK = this.bewertungFachartPaar; System_1.System.arraycopy(this.bewertungKursdifferenzen, 0, this.bewertungKursdifferenzenSaveK, 0, this.bewertungKursdifferenzen.length); } /** * Liefert den Wert {@code -1, 0 oder +1}, falls die Bewertung (Nichtwahlen, * Kursdiffenzen) des Zustandes S sich verschlechtert (-1), sich verbessert (+1) * hat oder gleichgeblieben (0) ist. * * @return {@code -1, 0 oder +1}, falls die Bewertung (Nichtwahlen, * Kursdiffenzen) des Zustandes K sich verschlechtert (-1), sich * verbessert (+1) hat oder gleichgeblieben (0) ist. */ gibBewertung_NW_KD_JetztS() { if (this.bewertungNichtwahlen > this.bewertungNichtwahlenSaveS) { return -1; } if (this.bewertungNichtwahlen < this.bewertungNichtwahlenSaveS) { return +1; } for (let i = this.bewertungKursdifferenzen.length - 1; i >= 0; i--) { if (this.bewertungKursdifferenzen[i] === this.bewertungKursdifferenzenSaveS[i]) { continue; } if (this.bewertungKursdifferenzen[i] > this.bewertungKursdifferenzenSaveS[i]) { return -1; } if (this.bewertungKursdifferenzen[i] < this.bewertungKursdifferenzenSaveS[i]) { return +1; } } return 0; } /** * Liefert den Wert {@code -1, 0 oder +1}, falls die Bewertung (Nichtwahlen, * Kursdiffenzen) des Zustandes K sich verschlechtert (-1), sich verbessert (+1) * hat oder gleichgeblieben (0) ist. * * @return {@code -1, 0 oder +1}, falls die Bewertung (Nichtwahlen, * Kursdiffenzen) des Zustandes K sich verschlechtert (-1), sich * verbessert (+1) hat oder gleichgeblieben (0) ist. */ gibBewertung_NW_KD_JetztK() { if (this.bewertungNichtwahlen > this.bewertungNichtwahlenSaveK) { return -1; } if (this.bewertungNichtwahlen < this.bewertungNichtwahlenSaveK) { return +1; } for (let i = this.bewertungKursdifferenzen.length - 1; i >= 0; i--) { if (this.bewertungKursdifferenzen[i] === this.bewertungKursdifferenzenSaveK[i]) { continue; } if (this.bewertungKursdifferenzen[i] > this.bewertungKursdifferenzenSaveK[i]) { return -1; } if (this.bewertungKursdifferenzen[i] < this.bewertungKursdifferenzenSaveK[i]) { return +1; } } if (this.bewertungFachartPaar > this.bewertungFachartPaarSaveK) { return -1; } if (this.bewertungFachartPaar < this.bewertungFachartPaarSaveK) { return +1; } return 0; } /** * Liefert den Wert {@code true}, falls die Bewertung (bewertungFachartPaar) des * Zustandes S sich verschlechtert hat. * * @return {@code true}, falls die Bewertung (bewertungFachartPaar) des * Zustandes S sich verschlechtert hat. */ gibBewertungFachartPaarSchlechter() { if (this.bewertungFachartPaar > this.bewertungFachartPaarSaveS) { return true; } if (this.bewertungFachartPaar < this.bewertungFachartPaarSaveS) { return false; } return false; } /** * Liefert den Wert {@code true}, falls die Bewertung (bewertungFachartPaar) des * Zustandes K sich verschlechtert hat. * * @return {@code true}, falls die Bewertung (bewertungFachartPaar) des * Zustandes K sich verschlechtert hat. */ gibBewertungFachartPaarSchlechterK() { if (this.bewertungFachartPaar > this.bewertungFachartPaarSaveK) { return true; } if (this.bewertungFachartPaar < this.bewertungFachartPaarSaveK) { return false; } return false; } isTranspiledInstanceOf(name) { return ['de.nrw.schule.svws.core.kursblockung.KursblockungDynStatistik'].includes(name); } } exports.KursblockungDynStatistik = KursblockungDynStatistik; function cast_de_nrw_schule_svws_core_kursblockung_KursblockungDynStatistik(obj) { return obj; } exports.cast_de_nrw_schule_svws_core_kursblockung_KursblockungDynStatistik = cast_de_nrw_schule_svws_core_kursblockung_KursblockungDynStatistik; //# sourceMappingURL=KursblockungDynStatistik.js.map