Skip to content

Commit

Permalink
Klausurplan: Anpassungen teils für Reporting
Browse files Browse the repository at this point in the history
Co-authored-by: esr <dev@mec0.de>
  • Loading branch information
Mirko Esser and mec0-de committed Jul 12, 2024
1 parent b9a8c7a commit 098d966
Show file tree
Hide file tree
Showing 6 changed files with 90 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ public GostKlausurvorgabenManager(final @NotNull List<GostKlausurvorgabe> listVo
* @param listVorgaben die Liste der GostKlausurvorgaben eines Abiturjahrgangs
* und Gost-Halbjahres
*/
public GostKlausurvorgabenManager(final @NotNull GostFaecherManager faecherManager, final @NotNull List<GostKlausurvorgabe> listVorgaben) {
public GostKlausurvorgabenManager(final GostFaecherManager faecherManager, final @NotNull List<GostKlausurvorgabe> listVorgaben) {
_faecherManager = faecherManager;
initAll(listVorgaben);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import de.svws_nrw.core.adt.map.HashMap3D;
import de.svws_nrw.core.adt.map.HashMap4D;
import de.svws_nrw.core.data.gost.GostFach;
import de.svws_nrw.core.data.gost.klausurplanung.GostKlausurenMetaDataCollection;
import de.svws_nrw.core.data.gost.klausurplanung.GostKlausurenUpdate;
import de.svws_nrw.core.data.gost.klausurplanung.GostKlausurtermin;
import de.svws_nrw.core.data.gost.klausurplanung.GostKlausurvorgabe;
Expand Down Expand Up @@ -196,6 +197,19 @@ public GostKursklausurManager(final @NotNull GostKlausurvorgabenManager vorgaben
initAll(listKlausuren, listTermine, listSchuelerklausuren, listSchuelerklausurtermine);
}

/**
* Erstellt einen neuen Manager mit den als Liste angegebenen GostKursklausuren
* und Klausurterminen und erzeugt die privaten Attribute.
*
* @param allData das Objekt der Klasse GostKlausurenMetaDataCollection, das alle Informationen enthält
*/
public GostKursklausurManager(final @NotNull GostKlausurenMetaDataCollection allData) {
_vorgabenManager = new GostKlausurvorgabenManager((allData.faecher != null && !allData.faecher.isEmpty()) ? new GostFaecherManager(allData.faecher) : null, allData.klausurdata.vorgaben);
initAll(allData.klausurdata.kursklausuren, allData.klausurdata.termine, allData.klausurdata.schuelerklausuren, allData.klausurdata.schuelerklausurtermine);
if (allData.kurse != null && !allData.kurse.isEmpty())
setKursManager(new KursManager(allData.kurse));
}

private void initAll(final @NotNull List<GostKursklausur> listKlausuren, final List<GostKlausurtermin> listTermine,
final List<GostSchuelerklausur> listSchuelerklausuren,
final List<GostSchuelerklausurTermin> listSchuelerklausurtermine) {
Expand Down Expand Up @@ -1363,8 +1377,8 @@ public List<GostKursklausur> kursklausurGetMengeByHalbjahrAndQuartal(final int a
*/
public boolean terminGetNTMengeEnthaeltFremdeJgstByHalbjahrAndQuartalMultijahrgang(final int abiJahrgang,
final @NotNull GostHalbjahr halbjahr, final int quartal, final boolean multijahrgang) {
final List<GostKlausurtermin> termine = terminGetNTMengeByHalbjahrAndQuartalMultijahrgang(abiJahrgang, halbjahr,
quartal, multijahrgang);
// final List<GostKlausurtermin> termine = terminGetNTMengeByHalbjahrAndQuartalMultijahrgang(abiJahrgang, halbjahr,
// quartal, multijahrgang);
for (final @NotNull GostKlausurtermin t : terminGetMengeByHalbjahrAndQuartalMultijahrgang(abiJahrgang, halbjahr,
quartal, multijahrgang))
if (terminMitAnderenJgst(t))
Expand Down Expand Up @@ -1579,6 +1593,30 @@ else if (termin.startzeit != null)
return maxEnd;
}

/**
* Liefert die maximale Klausurdauer innerhalb eines Klausurtermins
*
* @param idTermin die ID des Klausurtermins
*
* @return die maximale Klausurdauer innerhalb des Termins
*/
public int minKlausurdauerGetByTerminid(final long idTermin) {
int minDauer = -1;
final List<GostKursklausur> klausuren = _kursklausurmenge_by_idTermin.get(idTermin);
if (klausuren != null)
for (final @NotNull GostKursklausur klausur : klausuren) {
final @NotNull GostKlausurvorgabe vorgabe = vorgabeByKursklausur(klausur);
minDauer = (minDauer == -1 || vorgabe.dauer < minDauer) ? vorgabe.dauer : minDauer;
}
final List<GostSchuelerklausurTermin> skts = schuelerklausurterminFolgeterminGetMengeByTerminid(idTermin);
if (skts != null)
for (final @NotNull GostSchuelerklausurTermin skt : skts) {
final @NotNull GostKlausurvorgabe vorgabe = vorgabeBySchuelerklausurTermin(skt);
minDauer = (minDauer == -1 || vorgabe.dauer < minDauer) ? vorgabe.dauer : minDauer;
}
return minDauer == -1 ? 0 : minDauer;
}

/**
* Liefert die maximale Klausurdauer innerhalb eines Klausurtermins
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@
</span>
<div v-if="compactWithDate && termin.datum" class="mb-1 -mt-0.5 opacity-50 text-base">{{ DateUtils.gibDatumGermanFormat(termin.datum) }}</div>
<div v-if="compact || compactWithDate" class="svws-compact-data text-sm font-medium flex flex-wrap mt-0.5">
<span>{{ kMan().schuelerklausurterminaktuellGetMengeByTerminid(termin.id).size() }} Schüler<slot name="compactMaximaleDauer">, bis {{ kMan().maxKlausurdauerGetByTerminid(termin.id) }} Minuten</slot></span>
<span class="font-bold">{{ kMan().schuelerklausurterminaktuellGetMengeByTerminid(termin.id).size() }} Schüler,&nbsp;</span>
<span><span v-if="kMan().minKlausurdauerGetByTerminid(termin.id) < kMan().maxKlausurdauerGetByTerminid(termin.id)">{{ kMan().minKlausurdauerGetByTerminid(termin.id) }} - </span>{{ kMan().maxKlausurdauerGetByTerminid(termin.id) }} Minuten</span>

<span v-if="quartalsauswahl && quartalsauswahl.value === 0">, {{ termin.quartal ? termin.quartal + ' . Quartal' : 'Beide Quartale' }}</span>
</div>
</slot>
Expand Down Expand Up @@ -124,7 +126,7 @@
<span class="flex w-full justify-between items-center gap-1 text-sm mt-auto pr-2" :class="{'pl-3': inTooltip}">
<div class="py-3" :class="{'opacity-50': !kursklausuren().size() && (showSchuelerklausuren && !schuelerklausurtermine().size())}">
<span class="font-bold">{{ kMan().schuelerklausurterminaktuellGetMengeByTerminid(termin.id).size() }} Schüler, </span>
<span>bis {{ kMan().maxKlausurdauerGetByTerminid(termin.id) }} Min</span>
<span><span v-if="kMan().minKlausurdauerGetByTerminid(termin.id) < kMan().maxKlausurdauerGetByTerminid(termin.id)">{{ kMan().minKlausurdauerGetByTerminid(termin.id) }} - </span>{{ kMan().maxKlausurdauerGetByTerminid(termin.id) }} Minuten</span>
</div>
<slot name="loeschen" />
</span>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
<span :class="{'opacity-25': !value}">{{ value }}</span>
</template>
<template #cell(istMdlPruefung)="{ value }">
<span class="icon i-ri-chat1-line -my-0.5" v-if="value" />
<span class="icon i-ri-chat-1-line -my-0.5" v-if="value" />
<span v-else class="opacity-25">—</span>
</template>
<template #cell(istAudioNotwendig)="{ value }">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,21 +79,21 @@ export class GostKlausurvorgabenManager extends JavaObject {
* @param listVorgaben die Liste der GostKlausurvorgaben eines Abiturjahrgangs
* und Gost-Halbjahres
*/
public constructor(faecherManager : GostFaecherManager, listVorgaben : List<GostKlausurvorgabe>);
public constructor(faecherManager : GostFaecherManager | null, listVorgaben : List<GostKlausurvorgabe>);

/**
* Implementation for method overloads of 'constructor'
*/
public constructor(__param0? : GostFaecherManager | List<GostKlausurvorgabe>, __param1? : List<GostKlausurvorgabe>) {
public constructor(__param0? : GostFaecherManager | List<GostKlausurvorgabe> | null, __param1? : List<GostKlausurvorgabe>) {
super();
if ((__param0 === undefined) && (__param1 === undefined)) {
this._faecherManager = null;
} else if (((__param0 !== undefined) && ((__param0 instanceof JavaObject) && ((__param0 as JavaObject).isTranspiledInstanceOf('java.util.List'))) || (__param0 === null)) && (__param1 === undefined)) {
const listVorgaben : List<GostKlausurvorgabe> = cast_java_util_List(__param0);
this._faecherManager = null;
this.initAll(listVorgaben);
} else if (((__param0 !== undefined) && ((__param0 instanceof JavaObject) && ((__param0 as JavaObject).isTranspiledInstanceOf('de.svws_nrw.core.utils.gost.GostFaecherManager')))) && ((__param1 !== undefined) && ((__param1 instanceof JavaObject) && ((__param1 as JavaObject).isTranspiledInstanceOf('java.util.List'))) || (__param1 === null))) {
const faecherManager : GostFaecherManager = cast_de_svws_nrw_core_utils_gost_GostFaecherManager(__param0);
} else if (((__param0 !== undefined) && ((__param0 instanceof JavaObject) && ((__param0 as JavaObject).isTranspiledInstanceOf('de.svws_nrw.core.utils.gost.GostFaecherManager'))) || (__param0 === null)) && ((__param1 !== undefined) && ((__param1 instanceof JavaObject) && ((__param1 as JavaObject).isTranspiledInstanceOf('java.util.List'))) || (__param1 === null))) {
const faecherManager : GostFaecherManager | null = cast_de_svws_nrw_core_utils_gost_GostFaecherManager(__param0);
const listVorgaben : List<GostKlausurvorgabe> = cast_java_util_List(__param1);
this._faecherManager = faecherManager;
this.initAll(listVorgaben);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import { GostKlausurtermin } from '../../../../core/data/gost/klausurplanung/Gos
import { HashMap3D } from '../../../../core/adt/map/HashMap3D';
import { HashSet } from '../../../../java/util/HashSet';
import { GostFach } from '../../../../core/data/gost/GostFach';
import { GostKlausurenMetaDataCollection, cast_de_svws_nrw_core_data_gost_klausurplanung_GostKlausurenMetaDataCollection } from '../../../../core/data/gost/klausurplanung/GostKlausurenMetaDataCollection';
import { StundenplanManager } from '../../../../core/utils/stundenplan/StundenplanManager';
import { GostSchuelerklausur } from '../../../../core/data/gost/klausurplanung/GostSchuelerklausur';
import { MapUtils } from '../../../../core/utils/MapUtils';
Expand Down Expand Up @@ -191,10 +192,18 @@ export class GostKursklausurManager extends JavaObject {
*/
public constructor(vorgabenManager : GostKlausurvorgabenManager, listKlausuren : List<GostKursklausur>, listTermine : List<GostKlausurtermin> | null, listSchuelerklausuren : List<GostSchuelerklausur> | null, listSchuelerklausurtermine : List<GostSchuelerklausurTermin> | null);

/**
* Erstellt einen neuen Manager mit den als Liste angegebenen GostKursklausuren
* und Klausurterminen und erzeugt die privaten Attribute.
*
* @param allData das Objekt der Klasse GostKlausurenMetaDataCollection, das alle Informationen enthält
*/
public constructor(allData : GostKlausurenMetaDataCollection);

/**
* Implementation for method overloads of 'constructor'
*/
public constructor(__param0? : GostKlausurvorgabenManager, __param1? : List<GostKursklausur>, __param2? : List<GostKlausurtermin> | null, __param3? : List<GostSchuelerklausur> | null, __param4? : List<GostSchuelerklausurTermin> | null) {
public constructor(__param0? : GostKlausurenMetaDataCollection | GostKlausurvorgabenManager, __param1? : List<GostKursklausur>, __param2? : List<GostKlausurtermin> | null, __param3? : List<GostSchuelerklausur> | null, __param4? : List<GostSchuelerklausurTermin> | null) {
super();
if ((__param0 === undefined) && (__param1 === undefined) && (__param2 === undefined) && (__param3 === undefined) && (__param4 === undefined)) {
this._vorgabenManager = new GostKlausurvorgabenManager();
Expand All @@ -206,6 +215,12 @@ export class GostKursklausurManager extends JavaObject {
const listSchuelerklausurtermine : List<GostSchuelerklausurTermin> | null = cast_java_util_List(__param4);
this._vorgabenManager = vorgabenManager;
this.initAll(listKlausuren, listTermine, listSchuelerklausuren, listSchuelerklausurtermine);
} else if (((__param0 !== undefined) && ((__param0 instanceof JavaObject) && ((__param0 as JavaObject).isTranspiledInstanceOf('de.svws_nrw.core.data.gost.klausurplanung.GostKlausurenMetaDataCollection')))) && (__param1 === undefined) && (__param2 === undefined) && (__param3 === undefined) && (__param4 === undefined)) {
const allData : GostKlausurenMetaDataCollection = cast_de_svws_nrw_core_data_gost_klausurplanung_GostKlausurenMetaDataCollection(__param0);
this._vorgabenManager = new GostKlausurvorgabenManager((allData.faecher !== null && !allData.faecher.isEmpty()) ? new GostFaecherManager(allData.faecher) : null, allData.klausurdata.vorgaben);
this.initAll(allData.klausurdata.kursklausuren, allData.klausurdata.termine, allData.klausurdata.schuelerklausuren, allData.klausurdata.schuelerklausurtermine);
if (allData.kurse !== null && !allData.kurse.isEmpty())
this.setKursManager(new KursManager(allData.kurse));
} else throw new Error('invalid method overload');
}

Expand Down Expand Up @@ -1229,7 +1244,6 @@ export class GostKursklausurManager extends JavaObject {
* @return true, falls andere Jgst. enthalten sind, sonst false
*/
public terminGetNTMengeEnthaeltFremdeJgstByHalbjahrAndQuartalMultijahrgang(abiJahrgang : number, halbjahr : GostHalbjahr, quartal : number, multijahrgang : boolean) : boolean {
const termine : List<GostKlausurtermin> | null = this.terminGetNTMengeByHalbjahrAndQuartalMultijahrgang(abiJahrgang, halbjahr, quartal, multijahrgang);
for (const t of this.terminGetMengeByHalbjahrAndQuartalMultijahrgang(abiJahrgang, halbjahr, quartal, multijahrgang))
if (this.terminMitAnderenJgst(t))
return true;
Expand Down Expand Up @@ -1426,6 +1440,30 @@ export class GostKursklausurManager extends JavaObject {
return maxEnd;
}

/**
* Liefert die maximale Klausurdauer innerhalb eines Klausurtermins
*
* @param idTermin die ID des Klausurtermins
*
* @return die maximale Klausurdauer innerhalb des Termins
*/
public minKlausurdauerGetByTerminid(idTermin : number) : number {
let minDauer : number = -1;
const klausuren : List<GostKursklausur> | null = this._kursklausurmenge_by_idTermin.get(idTermin);
if (klausuren !== null)
for (const klausur of klausuren) {
const vorgabe : GostKlausurvorgabe = this.vorgabeByKursklausur(klausur);
minDauer = (minDauer === -1 || vorgabe.dauer < minDauer) ? vorgabe.dauer : minDauer;
}
const skts : List<GostSchuelerklausurTermin> | null = this.schuelerklausurterminFolgeterminGetMengeByTerminid(idTermin);
if (skts !== null)
for (const skt of skts) {
const vorgabe : GostKlausurvorgabe = this.vorgabeBySchuelerklausurTermin(skt);
minDauer = (minDauer === -1 || vorgabe.dauer < minDauer) ? vorgabe.dauer : minDauer;
}
return minDauer === -1 ? 0 : minDauer;
}

/**
* Liefert die maximale Klausurdauer innerhalb eines Klausurtermins
*
Expand Down

0 comments on commit 098d966

Please sign in to comment.