123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289 |
- "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. <br>
- * {@code Beispiel vorher: 5, 0, 6, 0, 0, 1*, 0, 0, 0}<br>
- * {@code Beispiel danach: 5, 0, 6*, 0, 0, 0, 0, 0, 0}<br>
- *
- * @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. <br>
- * {@code Beispiel vorher: 5, 0, 6*, 0, 0, 0, 0, 0, 0}<br>
- * {@code Beispiel danach: 5, 0, 6, 0, 0, 1*, 0, 0, 0}<br>
- *
- * @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
|