diff --git a/src/app/app-root/admin-starter/admin-starter.component.ts b/src/app/app-root/admin-starter/admin-starter.component.ts index ce891c06c31bd76b79acf4e5d2800440d4053d43..c5651dbc0d7c4817e31c4585f9dd242e6325ab3c 100644 --- a/src/app/app-root/admin-starter/admin-starter.component.ts +++ b/src/app/app-root/admin-starter/admin-starter.component.ts @@ -10,7 +10,7 @@ import { MainDataService } from '../../maindata.service'; templateUrl: './admin-starter.component.html', styles: [ 'mat-card {margin: 10px;}', - '.mat-card-gray {background-color: lightgray}' + '.mat-card-gray {background-color: var(--tc-box-background)}' ] }) diff --git a/src/app/app-root/code-input/code-input.component.ts b/src/app/app-root/code-input/code-input.component.ts index 60b37bf747200695c36508ceb25cae5a0cd6be1c..747ed0a6b566f7d17db461d17155ca52d5b6194f 100644 --- a/src/app/app-root/code-input/code-input.component.ts +++ b/src/app/app-root/code-input/code-input.component.ts @@ -13,7 +13,7 @@ import { BackendService } from '../../backend.service'; templateUrl: './code-input.component.html', styles: [ 'mat-card {margin: 10px;}', - '.mat-card-gray {background-color: lightgray}' + '.mat-card-gray {background-color: var(--tc-box-background)}' ] }) export class CodeInputComponent implements OnInit { diff --git a/src/app/app-root/login/login.component.ts b/src/app/app-root/login/login.component.ts index e9377fb13ad79615d22bfa458a68b4690160ebe5..a2f133f31b273faa305d98d8b481ebd891838175 100644 --- a/src/app/app-root/login/login.component.ts +++ b/src/app/app-root/login/login.component.ts @@ -11,8 +11,7 @@ import { BackendService } from '../../backend.service'; styles: [ 'mat-card {margin: 10px;}', '.mat-card-gray {background: var(--tc-box-background)}', - '#toggle-show-password {cursor: pointer}', - '.mat-card-header {background-color: salmon; padding: 4px;}' + '#toggle-show-password {cursor: pointer}' ] }) diff --git a/src/app/app-root/test-starter/test-starter.component.css b/src/app/app-root/test-starter/test-starter.component.css index 3b5ec57ae392c2fd46e02ace3a907721b9cc15e5..3563ebfab4c3fd2497472aa51f010ee412111b35 100644 --- a/src/app/app-root/test-starter/test-starter.component.css +++ b/src/app/app-root/test-starter/test-starter.component.css @@ -20,5 +20,5 @@ mat-card { } .mat-card-gray { - background-color: lightgray + background-color: var(--tc-box-background) } diff --git a/src/app/config/app.config.ts b/src/app/config/app.config.ts index 429914b95deb33760178e56026c1ced23dca200d..e14963471f7ae271e4d1c65e7d59605dd7954096 100644 --- a/src/app/config/app.config.ts +++ b/src/app/config/app.config.ts @@ -96,42 +96,43 @@ export class AppConfig { this.impressum_html = 'Impressum/Datenschutz nicht definiert'; } this.mainLogo = 'assets/IQB-LogoA.png'; - this.background_body = ''; - this.background_box = ''; + const elementStyle = window.getComputedStyle(document.body); + this.background_body = elementStyle.getPropertyValue('--tc-body-background'); + this.background_box = elementStyle.getPropertyValue('--tc-box-background'); this.trusted_intro_html = null; this.trusted_impressum_html = null; this.global_warning = ''; this.global_warning_expired_day = ''; this.global_warning_expired_hour = ''; if (appConfig) { - Object.keys(appConfig).forEach(k => { + appConfig.forEach((v, k) => { switch (k) { case 'app_title': - this.app_title = appConfig[k]; + this.app_title = v; break; case 'mainLogo': - this.mainLogo = appConfig[k]; + this.mainLogo = v; break; case 'background_body': - this.background_body = appConfig[k]; + this.background_body = v; break; case 'background_box': - this.background_box = appConfig[k]; + this.background_box = v; break; case 'intro_html': - this.intro_html = appConfig[k]; + this.intro_html = v; break; case 'impressum_html': - this.impressum_html = appConfig[k]; + this.impressum_html = v; break; case 'global_warning': - this.global_warning = appConfig[k]; + this.global_warning = v; break; case 'global_warning_expired_day': - this.global_warning_expired_day = appConfig[k]; + this.global_warning_expired_day = v; break; case 'global_warning_expired_hour': - this.global_warning_expired_hour = appConfig[k]; + this.global_warning_expired_hour = v; break; default: console.warn(`unknown key in appConfig "${k}"`); diff --git a/src/app/superadmin/backend.service.ts b/src/app/superadmin/backend.service.ts index 7fba22e381b3d65c46837d0bf0f55e7aeb384a1e..c55927b8e61b19e46b586ccaabfd9ffe3bb15e7a 100644 --- a/src/app/superadmin/backend.service.ts +++ b/src/app/superadmin/backend.service.ts @@ -133,7 +133,7 @@ export class BackendService { setAppConfig(newConfig: Map<string, string>): Observable<boolean> { return this.http - .patch<boolean>(`${this.serverUrl}system/config/app`, { newConfig }) + .patch<boolean>(`${this.serverUrl}system/config/app`, newConfig) .pipe(catchError((err: ApiError) => { console.warn(`setAppConfig Api-Error: ${err.code} ${err.info}`); return of(false); diff --git a/src/app/superadmin/settings/app-config.component.html b/src/app/superadmin/settings/app-config.component.html index 88b455d15fc5b1646868eac256f55fe38e8c0255..d53c7758e302782588871115459d5ff1921ce13b 100644 --- a/src/app/superadmin/settings/app-config.component.html +++ b/src/app/superadmin/settings/app-config.component.html @@ -39,10 +39,17 @@ cdkTextareaAutosize cdkAutosizeMinRows="6"></textarea> </mat-form-field> + <mat-form-field fxLayout="column"> + <mat-label>Hintergrundfarbe Anwendung</mat-label> + <input matInput formControlName="backgroundBody" placeholder="Farbe"> + </mat-form-field> + <mat-form-field fxLayout="column"> + <mat-label>Hintergrundfarbe sekundäre Boxen</mat-label> + <input matInput formControlName="backgroundBox" placeholder="Farbe"> + </mat-form-field> <div fxLayout="row" fxLayoutGap="30px" fxLayoutAlign="start start"> <button mat-raised-button color="primary" [disabled]="!dataChanged" (click)="saveData()"> Speichern </button> - <div *ngIf="dataChanged" fxFlex>Nach dem Speichern bitte die Seite neu laden, damit die Änderungen wirksam werden!</div> </div> </form> diff --git a/src/app/superadmin/settings/app-config.component.ts b/src/app/superadmin/settings/app-config.component.ts index 41b216bb135c1632663a28785a24673b26838ece..1c151b85936d517b5ece092f68811f282098c269 100644 --- a/src/app/superadmin/settings/app-config.component.ts +++ b/src/app/superadmin/settings/app-config.component.ts @@ -53,19 +53,32 @@ export class AppConfigComponent implements OnInit, OnDestroy { private snackBar: MatSnackBar, private mds: MainDataService, private bs: BackendService - ) { } + ) { + this.configForm = this.fb.group({ + appTitle: this.fb.control(''), + introHtml: this.fb.control(''), + impressumHtml: this.fb.control(''), + globalWarningText: this.fb.control(''), + globalWarningExpiredDay: this.fb.control(''), + globalWarningExpiredHour: this.fb.control(''), + backgroundBody: this.fb.control(''), + backgroundBox: this.fb.control('') + }); + } ngOnInit(): void { setTimeout(() => { const appConfig = this.mds.appConfig.getAppConfig(); - this.configForm = this.fb.group({ - appTitle: this.fb.control(appConfig.get('app_title')), - introHtml: this.fb.control(appConfig.get('intro_html')), - impressumHtml: this.fb.control(appConfig.get('impressum_html')), - globalWarningText: this.fb.control(appConfig.get('global_warning')), - globalWarningExpiredDay: this.fb.control(appConfig.get('global_warning_expired_day')), - globalWarningExpiredHour: this.fb.control(appConfig.get('global_warning_expired_hour')) - }); + this.configForm.setValue({ + appTitle: appConfig.get('app_title'), + introHtml: appConfig.get('intro_html'), + impressumHtml: appConfig.get('impressum_html'), + globalWarningText: appConfig.get('global_warning'), + globalWarningExpiredDay: appConfig.get('global_warning_expired_day'), + globalWarningExpiredHour: appConfig.get('global_warning_expired_hour'), + backgroundBody: appConfig.get('background_body'), + backgroundBox: appConfig.get('background_box') + }, { emitEvent: false }); this.warningIsExpired = AppConfig.isWarningExpired( appConfig.get('global_warning_expired_day'), appConfig.get('global_warning_expired_hour') @@ -91,9 +104,9 @@ export class AppConfigComponent implements OnInit, OnDestroy { appConfig.set('global_warning', this.configForm.get('globalWarningText').value); appConfig.set('global_warning_expired_day', this.configForm.get('globalWarningExpiredDay').value); appConfig.set('global_warning_expired_hour', this.configForm.get('globalWarningExpiredHour').value); + appConfig.set('background_body', this.configForm.get('backgroundBody').value); + appConfig.set('background_box', this.configForm.get('backgroundBox').value); - this.mds.appConfig.setAppConfig(appConfig); - this.mds.appConfig.applyBackgroundColors(); this.bs.setAppConfig(appConfig).subscribe(isOk => { if (isOk) { this.snackBar.open( @@ -102,6 +115,7 @@ export class AppConfigComponent implements OnInit, OnDestroy { this.dataChanged = false; this.mds.appConfig.setAppConfig(appConfig); this.mds.appConfig.applyBackgroundColors(); + this.mds.appTitle$.next(this.configForm.get('appTitle').value); } else { this.snackBar.open('Konnte Konfigurationsdaten der Anwendung nicht speichern', 'Fehler', { duration: 3000 }); } diff --git a/src/app/test-controller/test-status/test-status.component.css b/src/app/test-controller/test-status/test-status.component.css index c4a9660190a52f9bd12eac69cdc49197418c26d4..4cfb6aa957f273313240920f2e2e16f475ce866a 100644 --- a/src/app/test-controller/test-status/test-status.component.css +++ b/src/app/test-controller/test-status/test-status.component.css @@ -8,7 +8,7 @@ mat-card { } .mat-card-gray { - background-color: lightgray + background-color: var(--tc-box-background) } .active-unit { diff --git a/src/app/test-controller/unit-menu/unit-menu.component.css b/src/app/test-controller/unit-menu/unit-menu.component.css index ae2a713279c55ac9857dcea0cdaf5ed619cf3ae0..d8abef87f3c7225c26c5990aebf0ea7188ed37b0 100644 --- a/src/app/test-controller/unit-menu/unit-menu.component.css +++ b/src/app/test-controller/unit-menu/unit-menu.component.css @@ -8,7 +8,7 @@ mat-card { } .mat-card-gray { - background-color: lightgray + background-color: var(--tc-box-background) } .active-unit {