← Alle dansscholen @if (loading()) {
Dansschool laden…
} @else if (!data()) {

Dansschool niet beschikbaar

{{ error() }}

} @else if (data(); as context) {

MIJN DANSSCHOOL

{{ context.school.name }}

Jouw dansers. Jouw ritme. Jouw podium.

@if (notice()) {
{{ notice() }}
} @if (error()) { } @switch (section()) { @case ('overview') {
Dansers {{ context.dancers.length }}Alle talenten bij elkaar Dansgroepen {{ context.groups.length }}Samen de vloer op Shows {{ context.shows.length }}Momenten om naar uit te kijken

DE VOLGENDE STAP

Breng je school in beweging

Een goede show begint in de studio. Zorg dat iedereen een plek heeft.

IN DE SPOTLIGHT

@if (upcoming(); as show) {

{{ show.name }}

{{ dateRange(show) }}

Drie dagdelen. Eén gedeelde passie.

Shows bekijken } @else {

Klaar voor
het grote podium?

Maak een show aan en geef je dansers iets om naartoe te werken.

}

Dansschool verwijderen

Verwijdert ook alle dansers, groepen en shows van deze school.

} @case ('dancers') {

Dansers

De mensen die jouw school in beweging brengen.

@if (context.dancers.length) { }
@for (dancer of dancers(); track dancer.id) { } @empty { }
Dansers in {{ context.school.name }}
Danser Geboortedatum Dansgroepen Acties
{{ dancer.name }}
{{ dancer.birthDate | date: 'd MMM yyyy' }} {{ groupNames(dancer.id) }}

{{ search() ? 'Geen dansers gevonden' : 'De dansvloer is nog leeg' }}

{{ search() ? 'Probeer een andere naam.' : 'Voeg je eerste danser toe. Daarna kun je die aan één of meerdere groepen koppelen.' }}

@if (!search()) { }
} @case ('groups') {

Dansgroepen

Iedere groep een eigen stijl. Iedere danser een plek.

@for (group of context.groups; track group.id) {
{{ groupType(group.type) }}

{{ group.category }}

{{ group.startAge }}–{{ group.endAge }} jaar · {{ group.dancerIds.length }} dansers

@for (style of group.styles; track style) { {{ groupStyle(style) }} } @empty { Nog geen dansstijlen }
} @empty {

Samen vind je het ritme

Maak een dansgroep aan en koppel er dansers aan.

}
} @case ('shows') {

Shows

Van maanden oefenen naar een onvergetelijk optreden.

@for (show of shows(); track show.id) {
{{ firstDate(show) | date: 'dd' }}{{ firstDate(show) | date: 'MMM yyyy' }}

{{ show.name }}

{{ show.finalized ? 'Definitief' : 'Concept' }} · preferredDayParts = {{ show.preferredDayParts }}

@for (violation of show.violations; track $index) {

{{ violation }}

}

{{ dateRange(show) }}

@for (part of show.dayParts; track $index) {

{{ part.date }} · {{ part.type }}: {{ groupNamesFor(part.danceGroupIds) }}

}

{{ scheduleValid(show) ? 'Planning voldoet aan alle harde regels.' : 'Geen geldige planning. Plan de groepen opnieuw in.' }}

@if (schedulingStatus.run(context.school.id, show.id); as run) {
@if (!schedulingStatus.connected()) {

Verbinding verbroken. Status mogelijk verouderd; de berekening loopt door.

} @if (run.state === 'RUNNING') {

Bezig met inplannen · {{ schedulingStatus.phase(run) }} · {{ schedulingStatus.elapsed(run) }}

{{ run.progress.feasible ? 'Geldige oplossing gevonden; optimalisatie loopt door.' : 'Nog geen geldige oplossing gevonden.' }}

} @else {

{{ run.message }}

Afgerond: {{ run.finishedAt | date: 'dd-MM-yyyy HH:mm:ss' }} · Duur: {{ schedulingStatus.elapsed(run) }}

@if (run.summary; as summary) {

Aanwezigheid: {{ summary.attendanceExcess }} extra dagdelen boven voorkeur (showcasedansers, exclusief coaches).

Spreiding: {{ summary.performanceSpread }} optredens verschil tussen drukste en rustigste dagdeel.

Variatie: {{ summary.varietyPenalty }} strafpunten voor opeenvolgende groepen (lager is beter).

} }
} @if (!context.groups.length || !show.dayParts.length) {

Inplannen vereist minstens één dansgroep en één dagdeel.

}
} @empty {

Het podium wacht op je

Plan een show met maximaal zes gedateerde dagdelen.

}
} } @if (editor(); as target) { } @if (scheduleEditing(); as show) { } @if (members(); as group) { } @if (deleting(); as target) { } }