diff --git a/frontend/src/app/app-routing.module.ts b/frontend/src/app/app-routing.module.ts
index 3ca09a1..b43c49b 100644
--- a/frontend/src/app/app-routing.module.ts
+++ b/frontend/src/app/app-routing.module.ts
@@ -3,7 +3,7 @@ import { RouterModule, Routes } from '@angular/router';
import { StudentListComponent } from './components/students/student-list/student-list.component';
import { VisitsComponent } from './components/visits/visits.component';
import { VisitsDatetimeComponent } from './components/visits/visits-datetime/visits-datetime.component';
-import {StudentRegisterComponent} from "./components/students/student-register/student-register.component";
+import { StudentRegisterComponent } from './components/students/student-register/student-register.component';
const routes: Routes = [
{ path: 'students', component: StudentListComponent },
@@ -11,7 +11,7 @@ const routes: Routes = [
{ path: 'select', component: VisitsDatetimeComponent },
{ path: 'register', component: StudentRegisterComponent },
{ path: 'visits/:date/:time', component: VisitsComponent },
- { path: '**', redirectTo: 'students' }
+ { path: '**', redirectTo: 'students' },
];
@NgModule({
diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts
index 25067a6..66ecb37 100644
--- a/frontend/src/app/app.module.ts
+++ b/frontend/src/app/app.module.ts
@@ -1,7 +1,7 @@
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
-import {FormsModule, ReactiveFormsModule} from '@angular/forms';
+import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { StudentListComponent } from './components/students/student-list/student-list.component';
@@ -21,14 +21,14 @@ import { MatDatepickerModule } from '@angular/material/datepicker';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatNativeDateModule, MatRippleModule } from '@angular/material/core';
import { StudentRegisterComponent } from './components/students/student-register/student-register.component';
-import {MatStepperModule} from "@angular/material/stepper";
-import {MatInputModule} from "@angular/material/input";
-import {MatButtonModule} from "@angular/material/button";
-import {MatRadioModule} from "@angular/material/radio";
-import {MatSelectModule} from "@angular/material/select";
-import {MatIconModule} from "@angular/material/icon";
-import {MatCheckboxModule} from "@angular/material/checkbox";
-import {MatTooltipModule} from "@angular/material/tooltip";
+import { MatStepperModule } from '@angular/material/stepper';
+import { MatInputModule } from '@angular/material/input';
+import { MatButtonModule } from '@angular/material/button';
+import { MatRadioModule } from '@angular/material/radio';
+import { MatSelectModule } from '@angular/material/select';
+import { MatIconModule } from '@angular/material/icon';
+import { MatCheckboxModule } from '@angular/material/checkbox';
+import { MatTooltipModule } from '@angular/material/tooltip';
@NgModule({
declarations: [
diff --git a/frontend/src/app/components/students/student-register/student-register.component.html b/frontend/src/app/components/students/student-register/student-register.component.html
index 281c5b2..ffb16a6 100644
--- a/frontend/src/app/components/students/student-register/student-register.component.html
+++ b/frontend/src/app/components/students/student-register/student-register.component.html
@@ -8,149 +8,206 @@
-
+
-
-
+
-
-
+
-
-
+
-
diff --git a/frontend/src/app/components/students/student-register/student-register.component.scss b/frontend/src/app/components/students/student-register/student-register.component.scss
index 103bbc9..773b918 100644
--- a/frontend/src/app/components/students/student-register/student-register.component.scss
+++ b/frontend/src/app/components/students/student-register/student-register.component.scss
@@ -10,7 +10,8 @@
background-color: transparent;
}
-input, button {
+input,
+button {
color: white;
}
@@ -18,7 +19,6 @@ button {
background-color: #0366d6;
}
-
::selection {
color: white;
background-color: #1576d5;
@@ -44,8 +44,6 @@ button {
}
}
-
-
.leftContainer {
display: flex;
flex-direction: column;
diff --git a/frontend/src/app/components/students/student-register/student-register.component.spec.ts b/frontend/src/app/components/students/student-register/student-register.component.spec.ts
index 7b5bfdb..11107a6 100644
--- a/frontend/src/app/components/students/student-register/student-register.component.spec.ts
+++ b/frontend/src/app/components/students/student-register/student-register.component.spec.ts
@@ -8,9 +8,8 @@ describe('StudentRegisterComponent', () => {
beforeEach(async () => {
await TestBed.configureTestingModule({
- declarations: [ StudentRegisterComponent ]
- })
- .compileComponents();
+ declarations: [StudentRegisterComponent],
+ }).compileComponents();
});
beforeEach(() => {
diff --git a/frontend/src/app/components/students/student-register/student-register.component.ts b/frontend/src/app/components/students/student-register/student-register.component.ts
index d716885..93c2469 100644
--- a/frontend/src/app/components/students/student-register/student-register.component.ts
+++ b/frontend/src/app/components/students/student-register/student-register.component.ts
@@ -1,12 +1,11 @@
import { Component, OnInit } from '@angular/core';
-import {FormBuilder, FormGroup, Validators} from "@angular/forms";
+import { FormBuilder, FormGroup, Validators } from '@angular/forms';
@Component({
selector: 'li-student-register',
templateUrl: './student-register.component.html',
- styleUrls: ['./student-register.component.scss']
+ styleUrls: ['./student-register.component.scss'],
})
-
export class StudentRegisterComponent implements OnInit {
masterFormGroup!: FormGroup;
zeroFormGroup!: FormGroup;
@@ -14,84 +13,89 @@ export class StudentRegisterComponent implements OnInit {
secondFormGroup!: FormGroup;
thirdFormGroup!: FormGroup;
isEditable = false;
- infoText = "Hiermit ermächtige ich die Tanz- und Sportschule Li-Dance, Inh. Lydia Kolepp (nachfolgend Li-\n" +
- "Dance) die Monatsbeiträge i.H.v. oben genannten Betrag, diverse Einmalzahlungen und sonstige\n" +
- "Verbindlichkeiten zu Lasten meines Kontos einzuziehen.\n"+
- "Bitte beachten Sie, dass im Falle einer unberechtigten Rücklastschrift Li-Dance ein\n" +
- "Verwaltungsaufwand entsteht und eine Gebühr i.H.v. derzeit 15,- € berechnet wird. Diese Gebühr\n" +
- "wird zusammen mit dem nachfolgenden Monatsbeitrag vom gleichen Konto abgebucht."
+ infoText =
+ 'Hiermit ermächtige ich die Tanz- und Sportschule Li-Dance, Inh. Lydia Kolepp (nachfolgend Li-\n' +
+ 'Dance) die Monatsbeiträge i.H.v. oben genannten Betrag, diverse Einmalzahlungen und sonstige\n' +
+ 'Verbindlichkeiten zu Lasten meines Kontos einzuziehen.\n' +
+ 'Bitte beachten Sie, dass im Falle einer unberechtigten Rücklastschrift Li-Dance ein\n' +
+ 'Verwaltungsaufwand entsteht und eine Gebühr i.H.v. derzeit 15,- € berechnet wird. Diese Gebühr\n' +
+ 'wird zusammen mit dem nachfolgenden Monatsbeitrag vom gleichen Konto abgebucht.';
- infoTextEinwilligungserklaerung = "Ich bin darüber informiert worden, dass meine personenbezogenen Daten aufgrund rechtlicher\n" +
- "Vorgaben mindestens 10 Jahre nach Vertragsende aufbewahrt werden müssen.\n" +
- "Ich bin damit einverstanden, dass die oben genannten personenbezogenen Daten zu den oben\n" +
- "genannten Zwecken erhoben, gespeichert, verarbeitet, genutzt und ggfs. weitergegeben werden.\n" +
- "Ich bin darauf hingewiesen worden, dass die im Rahmen der vorstehend genannten Zwecke\n" +
- "erhobenen persönlichen Daten meiner Person unter Beachtung der EU-\n" +
- "Datenschutzgrundverordnung (DSGVO) erhoben, gespeichert, genutzt und übermittelt werden.\n" +
- "Ich bin zudem darauf hingewiesen worden, dass die Erhebung, Speicherung, Verarbeitung und\n" +
- "Nutzung meiner Daten auf freiwilliger Basis erfolgt.\n" +
- "Ich bin darüber informiert worden, dass diese Einverständniserklärung jederzeit mit sofortiger\n" +
- "Wirkung verweigert, bzw. jederzeit mit Wirkung für die Zukunft widerrufen werden kann. Meine\n" +
- "Widerrufserklärung werde ich richten an die unten angegebene Adresse"
+ infoTextEinwilligungserklaerung =
+ 'Ich bin darüber informiert worden, dass meine personenbezogenen Daten aufgrund rechtlicher\n' +
+ 'Vorgaben mindestens 10 Jahre nach Vertragsende aufbewahrt werden müssen.\n' +
+ 'Ich bin damit einverstanden, dass die oben genannten personenbezogenen Daten zu den oben\n' +
+ 'genannten Zwecken erhoben, gespeichert, verarbeitet, genutzt und ggfs. weitergegeben werden.\n' +
+ 'Ich bin darauf hingewiesen worden, dass die im Rahmen der vorstehend genannten Zwecke\n' +
+ 'erhobenen persönlichen Daten meiner Person unter Beachtung der EU-\n' +
+ 'Datenschutzgrundverordnung (DSGVO) erhoben, gespeichert, genutzt und übermittelt werden.\n' +
+ 'Ich bin zudem darauf hingewiesen worden, dass die Erhebung, Speicherung, Verarbeitung und\n' +
+ 'Nutzung meiner Daten auf freiwilliger Basis erfolgt.\n' +
+ 'Ich bin darüber informiert worden, dass diese Einverständniserklärung jederzeit mit sofortiger\n' +
+ 'Wirkung verweigert, bzw. jederzeit mit Wirkung für die Zukunft widerrufen werden kann. Meine\n' +
+ 'Widerrufserklärung werde ich richten an die unten angegebene Adresse';
- infoTextEinverstaendniserklaerung = "Ich bin damit einverstanden, dass Bilder und Videos der Tanzschule und der Veranstaltungen,\n" +
- "die durch die Tanzschule organisiert sind und/oder an denen die Tanzschule teilnimmt, auf\n" +
- "denen ich selbst, mein Sohn oder meine Tochter zu sehen ist auf den Webseiten von Li-Dance und in anderen Online- und/oder Printmedien veröffentlicht\n" +
- "werden und für Werbezwecke von Li-Dance genutzt werden dürfen. Rechtsgrundlage: Das Recht am eigenen Bild ist ein Teil des vom Gesetz geschützten\n" +
- "allgemeinen Persönlichkeitsrechts (§22 Kunsturheberrechtsgesetz). Es gilt der Grundsatz, dass\n" +
- "Bild- und Video-Material nur mit Einwilligung des Abgebildeten verbreitet oder veröffentlicht\n" +
- "werden kann. Es handelt sich hierbei um eine rechtsgeschäftliche Willenserklärung. Deshalb\n" +
- "kann bei Minderjährigen eine Einwilligung nur durch den gesetzlichen Vertreter erfolgen.\n" +
- "Diese Einverständniserklärung kann mit sofortiger Wirkung verweigert, bzw. jederzeit mit\n" +
- "Wirkung für die Zukunft widerrufen werden. Ein Widerruf kann einen Ausschluss aus der\n" +
- "jeweiligen Veranstaltung zur Folge haben.\n" +
- "Ein späterer rückwirkender Widerruf für aktuell stattfindende bzw. bereits stattgefundene\n" +
- "Veranstaltungen ist ausgeschlossen."
+ infoTextEinverstaendniserklaerung =
+ 'Ich bin damit einverstanden, dass Bilder und Videos der Tanzschule und der Veranstaltungen,\n' +
+ 'die durch die Tanzschule organisiert sind und/oder an denen die Tanzschule teilnimmt, auf\n' +
+ 'denen ich selbst, mein Sohn oder meine Tochter zu sehen ist auf den Webseiten von Li-Dance und in anderen Online- und/oder Printmedien veröffentlicht\n' +
+ 'werden und für Werbezwecke von Li-Dance genutzt werden dürfen. Rechtsgrundlage: Das Recht am eigenen Bild ist ein Teil des vom Gesetz geschützten\n' +
+ 'allgemeinen Persönlichkeitsrechts (§22 Kunsturheberrechtsgesetz). Es gilt der Grundsatz, dass\n' +
+ 'Bild- und Video-Material nur mit Einwilligung des Abgebildeten verbreitet oder veröffentlicht\n' +
+ 'werden kann. Es handelt sich hierbei um eine rechtsgeschäftliche Willenserklärung. Deshalb\n' +
+ 'kann bei Minderjährigen eine Einwilligung nur durch den gesetzlichen Vertreter erfolgen.\n' +
+ 'Diese Einverständniserklärung kann mit sofortiger Wirkung verweigert, bzw. jederzeit mit\n' +
+ 'Wirkung für die Zukunft widerrufen werden. Ein Widerruf kann einen Ausschluss aus der\n' +
+ 'jeweiligen Veranstaltung zur Folge haben.\n' +
+ 'Ein späterer rückwirkender Widerruf für aktuell stattfindende bzw. bereits stattgefundene\n' +
+ 'Veranstaltungen ist ausgeschlossen.';
constructor(private _formBuilder: FormBuilder) {}
ngOnInit() {
//TODO Test to group all forms into one master form
- // this.masterFormGroup = this._formBuilder.group({
- // zeroFormGroup: this._formBuilder.group({
- // danceTraining: [''],
- // karateTraining: [''],
- // freeTraining: [''],
- // }, {
- // validators: [this.requireAtLeastOne]
- // }),
- // firstFormGroup: this._formBuilder.group({
- // firstName: ['', Validators.required],
- // lastName: ['', Validators.required],
- // birthdate: ['', Validators.required],
- // postalCode: ['', [Validators.required, Validators.pattern(/^\d+$/)]],
- // address: ['', Validators.required],
- // phone: ['', [Validators.required, Validators.pattern(/^\d+$/)]],
- // email: ['', [Validators.required, Validators.email]],
- // }),
- // secondFormGroup: this._formBuilder.group({
- // accountHolder: ['', Validators.required],
- // iban: ['', [Validators.required, Validators.pattern(/^\d+$/)]],
- // bic: ['', Validators.required],
- // nameOfFinancialInstitute: ['', Validators.required],
- // amount: ['', [Validators.required, Validators.pattern(/^\d+$/)]],
- // einzugsermaechtigung: ['', Validators.required],
- // }),
- // thirdFormGroup: this._formBuilder.group({
- // einwilligung: ['', Validators.required],
- // einverstaendniserklaerung: ['', Validators.required],
- // }),
- // });
- // }
+ // this.masterFormGroup = this._formBuilder.group({
+ // zeroFormGroup: this._formBuilder.group({
+ // danceTraining: [''],
+ // karateTraining: [''],
+ // freeTraining: [''],
+ // }, {
+ // validators: [this.requireAtLeastOne]
+ // }),
+ // firstFormGroup: this._formBuilder.group({
+ // firstName: ['', Validators.required],
+ // lastName: ['', Validators.required],
+ // birthdate: ['', Validators.required],
+ // postalCode: ['', [Validators.required, Validators.pattern(/^\d+$/)]],
+ // address: ['', Validators.required],
+ // phone: ['', [Validators.required, Validators.pattern(/^\d+$/)]],
+ // email: ['', [Validators.required, Validators.email]],
+ // }),
+ // secondFormGroup: this._formBuilder.group({
+ // accountHolder: ['', Validators.required],
+ // iban: ['', [Validators.required, Validators.pattern(/^\d+$/)]],
+ // bic: ['', Validators.required],
+ // nameOfFinancialInstitute: ['', Validators.required],
+ // amount: ['', [Validators.required, Validators.pattern(/^\d+$/)]],
+ // einzugsermaechtigung: ['', Validators.required],
+ // }),
+ // thirdFormGroup: this._formBuilder.group({
+ // einwilligung: ['', Validators.required],
+ // einverstaendniserklaerung: ['', Validators.required],
+ // }),
+ // });
+ // }
- this.zeroFormGroup = this._formBuilder.group({
- danceTraining: [''],
- karateTraining: [''],
- freeTraining: [''],
- }, {
- validators : [this.requireAtLeastOne]
+ this.zeroFormGroup = this._formBuilder.group(
+ {
+ danceTraining: [''],
+ karateTraining: [''],
+ freeTraining: [''],
+ },
+ {
+ validators: [this.requireAtLeastOne],
}
- )
+ );
this.firstFormGroup = this._formBuilder.group({
firstName: ['', Validators.required],
lastName: ['', Validators.required],
@@ -104,10 +108,10 @@ export class StudentRegisterComponent implements OnInit {
this.secondFormGroup = this._formBuilder.group({
accountHolder: ['', Validators.required],
- iban: ['', [Validators.required, Validators.pattern(/^\d+$/)]],
+ iban: ['', [Validators.required, Validators.pattern(/^\d+$/)]],
bic: ['', Validators.required],
nameOfFinancialInstitute: ['', Validators.required],
- amount: ['', [Validators.required, Validators.pattern(/^\d+$/)]],
+ amount: ['', [Validators.required, Validators.pattern(/^\d+$/)]],
einzugsermaechtigung: ['', Validators.required],
});
@@ -118,21 +122,19 @@ export class StudentRegisterComponent implements OnInit {
}
onClick() {
- console.log(this.zeroFormGroup)
+ console.log(this.zeroFormGroup);
}
// Custom validator function
requireAtLeastOne(formGroup: FormGroup) {
- const danceTraining = formGroup.get('danceTraining')?.value
- const karateTraining = formGroup.get('karateTraining')?.value
- const freeTraining = formGroup.get('freeTraining')?.value
+ const danceTraining = formGroup.get('danceTraining')?.value;
+ const karateTraining = formGroup.get('karateTraining')?.value;
+ const freeTraining = formGroup.get('freeTraining')?.value;
- if (!danceTraining && !karateTraining && !freeTraining ) {
- return {requiredAtLeastOne: true}
+ if (!danceTraining && !karateTraining && !freeTraining) {
+ return { requiredAtLeastOne: true };
}
- return null
-
+ return null;
}
-
}
diff --git a/frontend/src/styles.scss b/frontend/src/styles.scss
index ca886d5..52a4aad 100644
--- a/frontend/src/styles.scss
+++ b/frontend/src/styles.scss
@@ -1,7 +1,6 @@
/* Provide sufficient contrast against white background */
-@import "~bootstrap-icons/font/bootstrap-icons.css";
-
+@import '~bootstrap-icons/font/bootstrap-icons.css';
a {
color: #0366d6;
@@ -32,7 +31,6 @@ body {
font-size: 95%;
}
-
.mat-checkbox-checked.mat-accent .mat-checkbox-background {
background-color: #0366d6 !important;
}
@@ -43,13 +41,12 @@ mat-checkbox {
color: white;
margin-bottom: 16px;
}
-.mat-step-header .mat-step-icon-selected, .mat-step-icon-state-edit{
+.mat-step-header .mat-step-icon-selected,
+.mat-step-icon-state-edit {
background-color: #0366d6 !important;
}
-
-
- // customize datepicker
+// customize datepicker
//.mat-datepicker-content-container {
// background:transparent;
//}
@@ -60,8 +57,6 @@ mat-checkbox {
// color: black;
// }
-
-
//
//.mat-calendar-body-cell-content {
// background-color: #1861ac;
@@ -103,5 +98,11 @@ mat-checkbox {
// background-color: #1b6ec2;
// border-color: #1861ac;
//}
-html, body { height: 100%; }
-body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
+html,
+body {
+ height: 100%;
+}
+body {
+ margin: 0;
+ font-family: Roboto, 'Helvetica Neue', sans-serif;
+}