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 233469548c53b92071b50d25e306fbe3919c433d..61707d00fed1d3df37b746d17ddb10db6e21ce29 100644 --- a/src/app/app-root/admin-starter/admin-starter.component.ts +++ b/src/app/app-root/admin-starter/admin-starter.component.ts @@ -1,11 +1,11 @@ import {Component, OnDestroy, OnInit} from '@angular/core'; -import {MainDataService} from "../../maindata.service"; -import {Router} from "@angular/router"; -import {AuthAccessKeyType, AuthData, WorkspaceData} from "../../app.interfaces"; -import {from, Subscription} from "rxjs"; -import {concatMap} from "rxjs/operators"; -import {BackendService} from "../../backend.service"; -import {CustomtextService} from "iqb-components"; +import {MainDataService} from '../../maindata.service'; +import {Router} from '@angular/router'; +import {AuthAccessKeyType, AuthData, WorkspaceData} from '../../app.interfaces'; +import {from, Subscription} from 'rxjs'; +import {concatMap} from 'rxjs/operators'; +import {BackendService} from '../../backend.service'; +import {CustomtextService} from 'iqb-components'; @Component({ @@ -47,7 +47,7 @@ export class AdminStarterComponent implements OnInit, OnDestroy { this.workspaces = []; this.getWorkspaceDataSubscription = from(authData.access[AuthAccessKeyType.WORKSPACE_ADMIN]).pipe( concatMap(workspaceId => { - return this.bs.getWorkspaceData(workspaceId) + return this.bs.getWorkspaceData(workspaceId); })).subscribe( wsData => this.workspaces.push(wsData), () => this.mds.setSpinnerOff(), @@ -68,7 +68,7 @@ export class AdminStarterComponent implements OnInit, OnDestroy { } else { this.mds.setSpinnerOff(); } - }) + }); }); } 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 c3db5a06a08c81d6346d26eeb1f02acc1266befb..aa377989d04f9d533bd9f3382e7c4bcc2af6035c 100644 --- a/src/app/app-root/code-input/code-input.component.ts +++ b/src/app/app-root/code-input/code-input.component.ts @@ -1,11 +1,11 @@ import {Component, OnInit, ViewChild} from '@angular/core'; -import {Router} from "@angular/router"; -import {MainDataService} from "../../maindata.service"; -import {FormControl, FormGroup, Validators} from "@angular/forms"; -import {CustomtextService, MessageDialogComponent, MessageDialogData, MessageType} from "iqb-components"; -import {MatDialog} from "@angular/material/dialog"; -import {AuthData} from "../../app.interfaces"; -import {BackendService} from "../../backend.service"; +import {Router} from '@angular/router'; +import {MainDataService} from '../../maindata.service'; +import {FormControl, FormGroup, Validators} from '@angular/forms'; +import {CustomtextService, MessageDialogComponent, MessageDialogData, MessageType} from 'iqb-components'; +import {MatDialog} from '@angular/material/dialog'; +import {AuthData} from '../../app.interfaces'; +import {BackendService} from '../../backend.service'; @Component({ templateUrl: './code-input.component.html', @@ -14,7 +14,7 @@ import {BackendService} from "../../backend.service"; '.mat-card-gray {background-color: lightgray}' ] }) -export class CodeInputComponent implements OnInit{ +export class CodeInputComponent implements OnInit { @ViewChild('codeInputControl') codeInputControl: FormControl; problemText = ''; @@ -36,7 +36,7 @@ export class CodeInputComponent implements OnInit{ if (element) { element.focus(); } - }) + }); } codeinput() { @@ -71,7 +71,7 @@ export class CodeInputComponent implements OnInit{ this.mds.setAuthData(authDataTyped); this.router.navigate(['/r']); } - }) + }); } } diff --git a/src/app/app-root/login/login.component.ts b/src/app/app-root/login/login.component.ts index 2c7d22b2c8fcec6f8a55942973c2e47560a50ebf..72d3966271ecb844b42bc156f535ef818f625ed0 100644 --- a/src/app/app-root/login/login.component.ts +++ b/src/app/app-root/login/login.component.ts @@ -1,11 +1,11 @@ import {Component, OnDestroy, OnInit} from '@angular/core'; -import {FormControl, FormGroup, Validators} from "@angular/forms"; -import {MainDataService} from "../../maindata.service"; -import {CustomtextService} from "iqb-components"; -import {ActivatedRoute, Router} from "@angular/router"; -import {Subscription} from "rxjs"; -import {AuthData} from "../../app.interfaces"; -import {BackendService} from "../../backend.service"; +import {FormControl, FormGroup, Validators} from '@angular/forms'; +import {MainDataService} from '../../maindata.service'; +import {CustomtextService} from 'iqb-components'; +import {ActivatedRoute, Router} from '@angular/router'; +import {Subscription} from 'rxjs'; +import {AuthData} from '../../app.interfaces'; +import {BackendService} from '../../backend.service'; @Component({ templateUrl: './login.component.html', @@ -16,8 +16,8 @@ import {BackendService} from "../../backend.service"; }) export class LoginComponent implements OnInit, OnDestroy { - private routingSubscription: Subscription = null; static oldLoginName = ''; + private routingSubscription: Subscription = null; returnTo = ''; problemText = ''; @@ -38,7 +38,7 @@ export class LoginComponent implements OnInit, OnDestroy { this.mds.setSpinnerOff(); this.routingSubscription = this.route.params.subscribe(params => { this.returnTo = params['returnTo']; - }) + }); } login() { diff --git a/src/app/app-root/privacy/privacy.component.ts b/src/app/app-root/privacy/privacy.component.ts index 402ce5f8c11a5df3acfc76293ec6955d3be2d075..509d53266b59d62a2838ca760792505c625d9745 100644 --- a/src/app/app-root/privacy/privacy.component.ts +++ b/src/app/app-root/privacy/privacy.component.ts @@ -1,16 +1,14 @@ import { Component } from '@angular/core'; -import {CustomtextService} from "iqb-components"; +import {CustomtextService} from 'iqb-components'; @Component({ templateUrl: './privacy.component.html', styles: [ - 'mat-card {margin: 10px}' //'; background-color: lightgray}' + 'mat-card {margin: 10px}' ] }) export class PrivacyComponent { - constructor( public cts: CustomtextService ) { } - } diff --git a/src/app/app-root/route-dispatcher/route-dispatcher.component.ts b/src/app/app-root/route-dispatcher/route-dispatcher.component.ts index f9f665ff41e99a08a6dc8d63492fdb4fbba4d3cb..0d5b39af69ebe443fe084d4bdc718769dca6daca 100644 --- a/src/app/app-root/route-dispatcher/route-dispatcher.component.ts +++ b/src/app/app-root/route-dispatcher/route-dispatcher.component.ts @@ -1,6 +1,6 @@ -import { Component, OnInit } from '@angular/core'; -import {CustomtextService} from "iqb-components"; -import {Router, RouterState, RouterStateSnapshot} from "@angular/router"; +import { Component } from '@angular/core'; +import {CustomtextService} from 'iqb-components'; +import {Router, RouterState, RouterStateSnapshot} from '@angular/router'; @Component({ templateUrl: './route-dispatcher.component.html', @@ -10,7 +10,7 @@ import {Router, RouterState, RouterStateSnapshot} from "@angular/router"; ] }) -export class RouteDispatcherComponent implements OnInit { +export class RouteDispatcherComponent { url = ''; constructor( @@ -21,8 +21,4 @@ export class RouteDispatcherComponent implements OnInit { const snapshot: RouterStateSnapshot = state.snapshot; this.url = snapshot.url; } - - ngOnInit(): void { - } - } diff --git a/src/app/app-root/status-card/status-card.component.ts b/src/app/app-root/status-card/status-card.component.ts index f045564eb5eeccdb762e57109276e073cabda62d..921c2acbbb1a760f949940c2ee34b5d5f2522491 100644 --- a/src/app/app-root/status-card/status-card.component.ts +++ b/src/app/app-root/status-card/status-card.component.ts @@ -1,8 +1,9 @@ import {Component, Inject, OnInit} from '@angular/core'; -import {MainDataService} from "../../maindata.service"; -import {AuthAccessKeyType, AuthFlagType} from "../../app.interfaces"; +import {MainDataService} from '../../maindata.service'; +import {AuthAccessKeyType, AuthFlagType} from '../../app.interfaces'; @Component({ + // tslint:disable-next-line:component-selector TODO rename component instead selector: 'status-card', templateUrl: './status-card.component.html' }) @@ -50,7 +51,7 @@ export class StatusCardComponent implements OnInit { this.loginAuthority.push('Code-Eingabe erforderlich'); } } - }) + }); } } diff --git a/src/app/app-root/sys-check-starter/sys-check-starter.component.ts b/src/app/app-root/sys-check-starter/sys-check-starter.component.ts index 733cec2af00f001958b64f22151cb0b68661421f..5807a9449c9f21c0484784cad150d8507506efe7 100644 --- a/src/app/app-root/sys-check-starter/sys-check-starter.component.ts +++ b/src/app/app-root/sys-check-starter/sys-check-starter.component.ts @@ -1,9 +1,9 @@ import {Component, OnInit} from '@angular/core'; -import {BackendService} from "../../backend.service"; -import {Router} from "@angular/router"; -import {MainDataService} from "../../maindata.service"; -import {SysCheckInfo} from "../../app.interfaces"; -import {CustomtextService} from "iqb-components"; +import {BackendService} from '../../backend.service'; +import {Router} from '@angular/router'; +import {MainDataService} from '../../maindata.service'; +import {SysCheckInfo} from '../../app.interfaces'; +import {CustomtextService} from 'iqb-components'; @Component({ templateUrl: './sys-check-starter.component.html', @@ -28,12 +28,12 @@ export class SysCheckStarterComponent implements OnInit { if (myConfigs) { this.checkConfigList = myConfigs; } else { - this.checkConfigList = [] + this.checkConfigList = []; } this.loading = false; this.mds.setSpinnerOff(); }); - }) + }); } buttonStartCheck(checkInfo: SysCheckInfo) { diff --git a/src/app/app-root/test-starter/test-starter.component.ts b/src/app/app-root/test-starter/test-starter.component.ts index d12a2af1fada43e36659cfd211fa3626005d943c..0b63fbccc9761c1fff048ab39f526fb7c1750394 100644 --- a/src/app/app-root/test-starter/test-starter.component.ts +++ b/src/app/app-root/test-starter/test-starter.component.ts @@ -1,17 +1,17 @@ -import { Component, OnInit } from '@angular/core'; -import {AuthAccessKeyType, AuthData, BookletData} from "../../app.interfaces"; -import {from, Subscription} from "rxjs"; -import {concatMap} from "rxjs/operators"; -import {Router} from "@angular/router"; -import {BackendService} from "../../backend.service"; -import {MainDataService} from "../../maindata.service"; -import {CustomtextService} from "iqb-components"; +import {Component, OnDestroy, OnInit} from '@angular/core'; +import {AuthAccessKeyType, AuthData, BookletData} from '../../app.interfaces'; +import {from, Subscription} from 'rxjs'; +import {concatMap} from 'rxjs/operators'; +import {Router} from '@angular/router'; +import {BackendService} from '../../backend.service'; +import {MainDataService} from '../../maindata.service'; +import {CustomtextService} from 'iqb-components'; @Component({ templateUrl: './test-starter.component.html', styleUrls: ['./test-starter.component.css'] }) -export class TestStarterComponent implements OnInit { +export class TestStarterComponent implements OnInit, OnDestroy { booklets: BookletData[] = []; private getBookletDataSubscription: Subscription = null; public bookletSelectTitle = 'Bitte wählen'; @@ -39,10 +39,10 @@ export class TestStarterComponent implements OnInit { } this.getBookletDataSubscription = from(authData.access[AuthAccessKeyType.TEST]).pipe( concatMap(bookletId => { - return this.bs.getBookletData(bookletId) + return this.bs.getBookletData(bookletId); })).subscribe( bData => { - this.booklets.push(bData) + this.booklets.push(bData); }, e => { this.problemText = `Fehler in der Netzwerkverbindung (${e}).`; @@ -66,7 +66,7 @@ export class TestStarterComponent implements OnInit { } else { this.mds.setSpinnerOff(); } - }) + }); }); } diff --git a/src/app/app-route-guards.ts b/src/app/app-route-guards.ts index 91a863809a62914e36adfcaf9300138a125c9598..030b60fbb11f9fc83bb36e57e037c028f4ae1fcb 100644 --- a/src/app/app-route-guards.ts +++ b/src/app/app-route-guards.ts @@ -1,9 +1,9 @@ -import {Injectable} from "@angular/core"; -import {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from "@angular/router"; -import {MainDataService} from "./maindata.service"; -import {Observable} from "rxjs"; -import {AuthAccessKeyType, AuthData, AuthFlagType} from "./app.interfaces"; -import {BackendService} from "./backend.service"; +import {Injectable} from '@angular/core'; +import {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from '@angular/router'; +import {MainDataService} from './maindata.service'; +import {Observable} from 'rxjs'; +import {AuthAccessKeyType, AuthData, AuthFlagType} from './app.interfaces'; +import {BackendService} from './backend.service'; @Injectable() export class RouteDispatcherActivateGuard implements CanActivate { @@ -58,20 +58,20 @@ export class DirectLoginActivateGuard implements CanActivate { if (!authData) { const directLoginName = state.url.substr(1); if (directLoginName.length > 0 && directLoginName.indexOf('/') < 0) { - this.bs.nameOnlyLogin(directLoginName).subscribe(authData => { - if (typeof authData !== 'number') { - this.mds.setAuthData(authData as AuthData); + this.bs.nameOnlyLogin(directLoginName).subscribe((authDataResponse: AuthData|number) => { + if (typeof authDataResponse !== 'number') { + this.mds.setAuthData(authDataResponse as AuthData); this.router.navigate(['/r']); - return false + return false; } else { - return true + return true; } - }) + }); } else { - return true + return true; } } else { - return true + return true; } } } @@ -90,18 +90,18 @@ export class CodeInputComponentActivateGuard implements CanActivate { if (authData) { if (authData.flags) { if (authData.flags.indexOf(AuthFlagType.CODE_REQUIRED) >= 0) { - return true + return true; } else { this.router.navigate(['/r']); - return false + return false; } } else { this.router.navigate(['/r']); - return false + return false; } } else { this.router.navigate(['/r']); - return false + return false; } } } @@ -123,15 +123,15 @@ export class AdminComponentActivateGuard implements CanActivate { return true; } else { this.router.navigate(['/r']); - return false + return false; } } else { this.router.navigate(['/r']); - return false + return false; } } else { this.router.navigate(['/r']); - return false + return false; } } } @@ -153,15 +153,15 @@ export class AdminOrSuperAdminComponentActivateGuard implements CanActivate { return true; } else { this.router.navigate(['/r']); - return false + return false; } } else { this.router.navigate(['/r']); - return false + return false; } } else { this.router.navigate(['/r']); - return false + return false; } } } @@ -183,15 +183,15 @@ export class SuperAdminComponentActivateGuard implements CanActivate { return true; } else { this.router.navigate(['/r']); - return false + return false; } } else { this.router.navigate(['/r']); - return false + return false; } } else { this.router.navigate(['/r']); - return false + return false; } } } @@ -213,15 +213,15 @@ export class TestComponentActivateGuard implements CanActivate { return true; } else { this.router.navigate(['/r']); - return false + return false; } } else { this.router.navigate(['/r']); - return false + return false; } } else { this.router.navigate(['/r']); - return false + return false; } } } @@ -236,9 +236,7 @@ export class GroupMonitorActivateGuard implements CanActivate { private router: Router ) {} - canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot) - : boolean { - + canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { const authData = MainDataService.getAuthData(); if (authData) { @@ -247,15 +245,15 @@ export class GroupMonitorActivateGuard implements CanActivate { return true; } else { this.router.navigate(['/r']); - return false + return ; } } else { this.router.navigate(['/r']); - return false + return false; } } else { this.router.navigate(['/r']); - return false + return false; } } } diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index e4bd1b4daf80bae37dfa87377d4fee5e54c8b5b7..9d402536eda6641bdba2ffb309965a635a49c0c9 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -1,19 +1,19 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; -import {AppRootComponent} from "./app-root/app-root.component"; -import {LoginComponent} from "./app-root/login/login.component"; -import {SysCheckStarterComponent} from "./app-root/sys-check-starter/sys-check-starter.component"; -import {AdminStarterComponent} from "./app-root/admin-starter/admin-starter.component"; -import {CodeInputComponent} from "./app-root/code-input/code-input.component"; +import {AppRootComponent} from './app-root/app-root.component'; +import {LoginComponent} from './app-root/login/login.component'; +import {SysCheckStarterComponent} from './app-root/sys-check-starter/sys-check-starter.component'; +import {AdminStarterComponent} from './app-root/admin-starter/admin-starter.component'; +import {CodeInputComponent} from './app-root/code-input/code-input.component'; import { AdminComponentActivateGuard, AdminOrSuperAdminComponentActivateGuard, CodeInputComponentActivateGuard, DirectLoginActivateGuard, GroupMonitorActivateGuard, RouteDispatcherActivateGuard, SuperAdminComponentActivateGuard, TestComponentActivateGuard } from './app-route-guards'; -import {TestStarterComponent} from "./app-root/test-starter/test-starter.component"; -import {RouteDispatcherComponent} from "./app-root/route-dispatcher/route-dispatcher.component"; -import {PrivacyComponent} from "./app-root/privacy/privacy.component"; +import {TestStarterComponent} from './app-root/test-starter/test-starter.component'; +import {RouteDispatcherComponent} from './app-root/route-dispatcher/route-dispatcher.component'; +import {PrivacyComponent} from './app-root/privacy/privacy.component'; import {MonitorStarterComponent} from './app-root/monitor-starter/monitor-starter.component'; diff --git a/src/app/app.component.ts b/src/app/app.component.ts index b1d9dc6479123a7491e97f7bd2df004c1ada0b2c..24a1d05dbd23ba64e0c239c6f687e12eca6e41de 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -2,8 +2,8 @@ import { MainDataService } from './maindata.service'; import {Component, Inject, OnDestroy, OnInit} from '@angular/core'; import { BackendService } from './backend.service'; import {CustomtextService} from 'iqb-components'; -import {Subscription} from "rxjs"; -import {AppError} from "./app.interfaces"; +import {Subscription} from 'rxjs'; +import {AppError} from './app.interfaces'; @Component({ selector: 'tc-root', @@ -88,9 +88,9 @@ export class AppComponent implements OnInit, OnDestroy { this.mds.isApiValid = AppComponent.isValidVersion(this.expectedApiVersion, sc.version); if (!this.mds.isApiValid) { this.mds.appError$.next({ - label: "Server-Problem: API-Version ungültig", - description: "erwartet: " + this.expectedApiVersion + ", gefunden: " + sc.version, - category: "FATAL" + label: 'Server-Problem: API-Version ungültig', + description: 'erwartet: ' + this.expectedApiVersion + ', gefunden: ' + sc.version, + category: 'FATAL' }); } if (sc.mainLogo) { diff --git a/src/app/app.interceptor.ts b/src/app/app.interceptor.ts index d254fe78ad0caa548d72bc37ec21c043c7a81380..a97d012045d2290abc4536c13e301e3c7da5220b 100644 --- a/src/app/app.interceptor.ts +++ b/src/app/app.interceptor.ts @@ -5,9 +5,9 @@ import { HttpHandler, HttpEvent, HttpErrorResponse } from '@angular/common/http'; import {Observable, throwError} from 'rxjs'; -import {catchError} from "rxjs/operators"; -import {Router, RouterState, RouterStateSnapshot} from "@angular/router"; -import {ApiError} from "./app.interfaces"; +import {catchError} from 'rxjs/operators'; +import {Router, RouterState, RouterStateSnapshot} from '@angular/router'; +import {ApiError} from './app.interfaces'; @Injectable() export class AuthInterceptor implements HttpInterceptor { @@ -35,17 +35,17 @@ export class AuthInterceptor implements HttpInterceptor { return next.handle(requestA).pipe( catchError(e => { - let apiError = new ApiError(999); + const apiError = new ApiError(999); if (e instanceof HttpErrorResponse) { // TODO is the opposite case even possible? const httpError = e as HttpErrorResponse; apiError.code = httpError.status; - apiError.info = httpError.message + " // " + httpError.error; + apiError.info = httpError.message + ' // ' + httpError.error; if (httpError.error instanceof ErrorEvent) { this.mds.appError$.next({ label: 'Fehler in der Netzwerkverbindung', description: httpError.message, - category: "PROBLEM" - }) + category: 'PROBLEM' + }); } else { let ignoreError = false; let goToLoginPage = false; @@ -99,7 +99,7 @@ export class AuthInterceptor implements HttpInterceptor { this.mds.appError$.next({ label: label, description: httpError.message, - category: "PROBLEM" + category: 'PROBLEM' }); } } @@ -108,14 +108,14 @@ export class AuthInterceptor implements HttpInterceptor { return throwError(apiError); }) - ) + ); } else { this.mds.appError$.next({ - label: "Server-Problem: API-Version ungültig", - description: "Keine weiteren Server-Aufrufe erlaubt", - category: "FATAL" + label: 'Server-Problem: API-Version ungültig', + description: 'Keine weiteren Server-Aufrufe erlaubt', + category: 'FATAL' }); - return throwError(new ApiError(500, "API-Version ungültig")); + return throwError(new ApiError(500, 'API-Version ungültig')); } } } diff --git a/src/app/app.interfaces.ts b/src/app/app.interfaces.ts index 33cbcd146db3544cc9ffcc01dec90db3c15a356c..b5a2dc82ced88eaf9e9fa6e6e00307d563c84a55 100644 --- a/src/app/app.interfaces.ts +++ b/src/app/app.interfaces.ts @@ -1,15 +1,15 @@ export enum AuthFlagType { - CODE_REQUIRED = "codeRequired", - PENDING = "pending", - EXPIRED = "expired" + CODE_REQUIRED = 'codeRequired', + PENDING = 'pending', + EXPIRED = 'expired' } export enum AuthAccessKeyType { - WORKSPACE_ADMIN = "workspaceAdmin", - SUPER_ADMIN = "superAdmin", - TEST = "test", - WORKSPACE_MONITOR = "workspaceMonitor", - TEST_GROUP_MONITOR = "testGroupMonitor" + WORKSPACE_ADMIN = 'workspaceAdmin', + SUPER_ADMIN = 'superAdmin', + TEST = 'test', + WORKSPACE_MONITOR = 'workspaceMonitor', + TEST_GROUP_MONITOR = 'testGroupMonitor' } export interface AccessType { @@ -27,7 +27,7 @@ export interface AuthData { export interface WorkspaceData { id: string; name: string; - role: "RW" | "RO" | "n.d."; + role: 'RW' | 'RO' | 'n.d.'; } export interface AccessObject { @@ -50,7 +50,7 @@ export interface KeyValuePairs { export interface AppError { label: string; description: string; - category: 'WARNING' | 'FATAL' | 'PROBLEM' + category: 'WARNING' | 'FATAL' | 'PROBLEM'; } export class ApiError { @@ -58,7 +58,7 @@ export class ApiError { info: string; constructor(code: number, info = '') { this.code = code; - this.info = info + this.info = info; } } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 23426f93d82cfb56011ef899d570c94dd8456642..0151cf450336eaeda27cbb7f45ff07afcaa1ceda 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -11,22 +11,22 @@ import { LocationStrategy, HashLocationStrategy } from '@angular/common'; import { FlexLayoutModule } from '@angular/flex-layout'; import {AuthInterceptor} from './app.interceptor'; import { IqbComponentsModule } from 'iqb-components'; -import {MatButtonModule} from "@angular/material/button"; -import {MatCardModule} from "@angular/material/card"; -import {MatCheckboxModule} from "@angular/material/checkbox"; +import {MatButtonModule} from '@angular/material/button'; +import {MatCardModule} from '@angular/material/card'; +import {MatCheckboxModule} from '@angular/material/checkbox'; import {MatDialog, MatDialogModule} from '@angular/material/dialog'; -import {MatFormFieldModule} from "@angular/material/form-field"; -import {MatIconModule} from "@angular/material/icon"; -import {MatInputModule} from "@angular/material/input"; -import {MatMenuModule} from "@angular/material/menu"; -import {MatProgressBarModule} from "@angular/material/progress-bar"; -import {MatProgressSpinnerModule} from "@angular/material/progress-spinner"; -import {MatRadioModule} from "@angular/material/radio"; -import {MatTabsModule} from "@angular/material/tabs"; -import {MatToolbarModule} from "@angular/material/toolbar"; -import {MatTooltipModule} from "@angular/material/tooltip"; +import {MatFormFieldModule} from '@angular/material/form-field'; +import {MatIconModule} from '@angular/material/icon'; +import {MatInputModule} from '@angular/material/input'; +import {MatMenuModule} from '@angular/material/menu'; +import {MatProgressBarModule} from '@angular/material/progress-bar'; +import {MatProgressSpinnerModule} from '@angular/material/progress-spinner'; +import {MatRadioModule} from '@angular/material/radio'; +import {MatTabsModule} from '@angular/material/tabs'; +import {MatToolbarModule} from '@angular/material/toolbar'; +import {MatTooltipModule} from '@angular/material/tooltip'; import {MatBadgeModule} from '@angular/material/badge'; -import {RouterModule} from "@angular/router"; +import {RouterModule} from '@angular/router'; import { AppRootComponent } from './app-root/app-root.component'; import { SysCheckStarterComponent } from './app-root/sys-check-starter/sys-check-starter.component'; import { LoginComponent } from './app-root/login/login.component'; diff --git a/src/app/backend.service.ts b/src/app/backend.service.ts index 9c8e1ddc80fdd154036292b0ac58e942773694ca..81115199fc438436385422fc4ac27c8068d455fd 100644 --- a/src/app/backend.service.ts +++ b/src/app/backend.service.ts @@ -1,4 +1,3 @@ - import { Injectable, Inject } from '@angular/core'; import {HttpClient} from '@angular/common/http'; import {Observable, of} from 'rxjs'; @@ -9,9 +8,9 @@ import { WorkspaceData, BookletData, ApiError, AccessObject } from './app.interfaces'; -import {SysConfig} from "./config/app.config"; +import {SysConfig} from './config/app.config'; + -// ============================================================================ @Injectable({ providedIn: 'root' }) @@ -30,7 +29,7 @@ export class BackendService { .pipe( catchError((err: ApiError) => { console.warn(`login Api-Error: ${err.code} ${err.info} `); - return of(err.code) + return of(err.code); }), switchMap(authData => { if (typeof authData === 'number') { @@ -58,7 +57,7 @@ export class BackendService { .pipe( catchError((err: ApiError) => { console.warn(`nameOnlyLogin Api-Error: ${err.code} ${err.info} `); - return of(err.code) + return of(err.code); }) ); } @@ -69,7 +68,7 @@ export class BackendService { .pipe( catchError((err: ApiError) => { console.warn(`codeLogin Api-Error: ${err.code} ${err.info} `); - return of(err.code) + return of(err.code); }) ); } @@ -82,28 +81,29 @@ export class BackendService { return of(<WorkspaceData>{ id: workspaceId, name: workspaceId, - role: "n.d." - }) + role: 'n.d.' + }); })); } - getGroupData(groupName: string): Observable<AccessObject> { - - interface NameAndLabel { // TODO find consistent terminology. in XSD they are called name & label and likewise (mostly) in newer BE-versions - name: string; - label: string; - } - - return this.http - .get<NameAndLabel>(this.serverUrl + 'monitor/group/' + groupName) - .pipe(map((r: NameAndLabel): AccessObject => ({id: r.name, name: r.label}))) - .pipe(catchError(() => { - console.warn('get group data failed for ' + groupName); - return of(<AccessObject>{ - id: groupName, - name: groupName, - }) - })); + getGroupData(groupName: string): Observable<AccessObject> { + + // TODO find consistent terminology. in XSD they are called name & label and likewise (mostly) in newer BE-versions + interface NameAndLabel { + name: string; + label: string; + } + + return this.http + .get<NameAndLabel>(this.serverUrl + 'monitor/group/' + groupName) + .pipe(map((r: NameAndLabel): AccessObject => ({id: r.name, name: r.label}))) + .pipe(catchError(() => { + console.warn('get group data failed for ' + groupName); + return of(<AccessObject>{ + id: groupName, + name: groupName, + }); + })); } getSessionData(): Observable<AuthData | number> { @@ -111,7 +111,7 @@ export class BackendService { .get<AuthData>(this.serverUrl + 'session') .pipe( catchError((err: ApiError) => of(err.code)) - ) + ); } getBookletData(bookletId: string): Observable<BookletData> { @@ -120,7 +120,7 @@ export class BackendService { .pipe( map(bData => { bData.id = bookletId; - return bData + return bData; }), catchError(() => { console.warn('get booklet data failed for ' + bookletId); @@ -129,7 +129,7 @@ export class BackendService { label: bookletId, locked: true, running: false - }) + }); })); } @@ -145,7 +145,7 @@ export class BackendService { getSysConfig(): Observable<SysConfig> { return this.http .get<SysConfig>(this.serverUrl + `system/config`) - .pipe(catchError(() => of(null))) + .pipe(catchError(() => of(null))); } getSysCheckInfo(): Observable<SysCheckInfo[]> { diff --git a/src/app/maindata.service.ts b/src/app/maindata.service.ts index a6cc508612d18ee4b588f83ddef4b152c64b736f..c90a97e9214c42d19055466bc663afbfeadb1a65 100644 --- a/src/app/maindata.service.ts +++ b/src/app/maindata.service.ts @@ -6,7 +6,7 @@ import { AuthData, KeyValuePairs } from './app.interfaces'; import {CustomtextService} from 'iqb-components'; -import {AppConfig} from "./config/app.config"; +import {AppConfig} from './config/app.config'; const localStorageAuthDataKey = 'iqb-tc-a'; const localStorageTestConfigKey = 'iqb-tc-c'; @@ -38,10 +38,9 @@ export class MainDataService { if (storageEntry.length > 0) { try { myReturn = JSON.parse(storageEntry as string); - } - catch (e) { - console.warn("corrupt localStorage authData entry"); - myReturn = null + } catch (e) { + console.warn('corrupt localStorage authData entry'); + myReturn = null; } } } @@ -62,10 +61,9 @@ export class MainDataService { if (storageEntry.length > 0) { try { myReturn = JSON.parse(storageEntry as string); - } - catch (e) { - console.warn("corrupt localStorage testConfig entry"); - myReturn = null + } catch (e) { + console.warn('corrupt localStorage testConfig entry'); + myReturn = null; } } } @@ -80,11 +78,11 @@ export class MainDataService { } setSpinnerOn() { - this.isSpinnerOn$.next(true) + this.isSpinnerOn$.next(true); } setSpinnerOff() { - this.isSpinnerOn$.next(false) + this.isSpinnerOn$.next(false); } setAuthData(authData: AuthData = null) { diff --git a/src/app/superadmin/backend.service.spec.ts b/src/app/superadmin/backend.service.spec.ts index ffdc1397ca5ced3a08516d7183bbc820c1001627..4f08e463495ffd25801192beb147079f598435bb 100644 --- a/src/app/superadmin/backend.service.spec.ts +++ b/src/app/superadmin/backend.service.spec.ts @@ -1,7 +1,7 @@ import { TestBed, inject } from '@angular/core/testing'; import { BackendService } from './backend.service'; -import {HttpClientModule} from "@angular/common/http"; +import {HttpClientModule} from '@angular/common/http'; describe('HttpClient testing', () => { diff --git a/src/app/superadmin/backend.service.ts b/src/app/superadmin/backend.service.ts index 273b271cc11f125427a0998901c949c0368f7db1..ad8092436cc45b362d42c61d34034d43dad17dcc 100644 --- a/src/app/superadmin/backend.service.ts +++ b/src/app/superadmin/backend.service.ts @@ -2,8 +2,8 @@ import { Injectable, Inject } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Observable, of } from 'rxjs'; import {catchError, map} from 'rxjs/operators'; -import {IdAndName, IdLabelSelectedData, IdRoleData, UserData} from "./superadmin.interfaces"; -import {ApiError} from "../app.interfaces"; +import {IdAndName, IdLabelSelectedData, IdRoleData, UserData} from './superadmin.interfaces'; +import {ApiError} from '../app.interfaces'; @Injectable({ @@ -22,18 +22,18 @@ export class BackendService { .get<UserData[]>(this.serverUrl + 'users') .pipe(catchError((err: ApiError) => { console.warn(`getUsers Api-Error: ${err.code} ${err.info} `); - return [] + return []; })); } addUser(name: string, password: string): Observable<Boolean> { return this.http - .put<Boolean>(this.serverUrl + 'user', {n: name, p: password}) + .put<Boolean>(this.serverUrl + 'user', {n: name, p: password}); } changePassword(userId: number, password: string): Observable<Boolean> { return this.http - .patch<Boolean>(this.serverUrl + `user/${userId}/password`, {p: password}) + .patch<Boolean>(this.serverUrl + `user/${userId}/password`, {p: password}); } setSuperUserStatus(userId: number, changeToSuperUser: boolean, password: string): Observable<number> { @@ -43,7 +43,7 @@ export class BackendService { map(() => 0), catchError((err: ApiError) => { console.warn(`setSuperUserStatus Api-Error: ${err.code} ${err.info} `); - return of(err.code) + return of(err.code); })); } @@ -53,7 +53,7 @@ export class BackendService { .request<boolean>('delete', this.serverUrl + 'users', {body: {u: users}}) .pipe(catchError((err: ApiError) => { console.warn(`deleteUsers Api-Error: ${err.code} ${err.info} `); - return of(false) + return of(false); })); } @@ -62,7 +62,7 @@ export class BackendService { .get<IdLabelSelectedData[]>(this.serverUrl + `user/${userId}/workspaces`) .pipe(catchError((err: ApiError) => { console.warn(`getWorkspacesByUser Api-Error: ${err.code} ${err.info} `); - return [] + return []; })); } @@ -71,7 +71,7 @@ export class BackendService { .patch<Boolean>(this.serverUrl + `user/${userId}/workspaces`, {ws: accessTo}) .pipe(catchError((err: ApiError) => { console.warn(`setWorkspacesByUser Api-Error: ${err.code} ${err.info} `); - return of(false) + return of(false); })); } @@ -80,7 +80,7 @@ export class BackendService { .put<Boolean>(this.serverUrl + 'workspace', {name: name}) .pipe(catchError((err: ApiError) => { console.warn(`addWorkspace Api-Error: ${err.code} ${err.info} `); - return of(false) + return of(false); })); } @@ -89,7 +89,7 @@ export class BackendService { .patch<Boolean>(this.serverUrl + `workspace/${workspaceId}`, {name: wsName}) .pipe(catchError((err: ApiError) => { console.warn(`renameWorkspace Api-Error: ${err.code} ${err.info} `); - return of(false) + return of(false); })); } @@ -98,7 +98,7 @@ export class BackendService { .request<Boolean>('delete', this.serverUrl + 'workspaces', {body: {ws: workspaces}}) .pipe(catchError((err: ApiError) => { console.warn(`deleteWorkspaces Api-Error: ${err.code} ${err.info} `); - return of(false) + return of(false); })); } @@ -107,7 +107,7 @@ export class BackendService { .get<IdRoleData[]>(this.serverUrl + `workspace/${workspaceId}/users`) .pipe(catchError((err: ApiError) => { console.warn(`getUsersByWorkspace Api-Error: ${err.code} ${err.info} `); - return [] + return []; })); } @@ -116,7 +116,7 @@ export class BackendService { .patch<Boolean>(this.serverUrl + `workspace/${workspaceId}/users`, {u: accessing}) .pipe(catchError((err: ApiError) => { console.warn(`setUsersByWorkspace Api-Error: ${err.code} ${err.info} `); - return of(false) + return of(false); })); } @@ -125,7 +125,7 @@ export class BackendService { .get<IdAndName[]>(this.serverUrl + 'workspaces') .pipe(catchError((err: ApiError) => { console.warn(`getWorkspaces Api-Error: ${err.code} ${err.info} `); - return [] + return []; })); } } diff --git a/src/app/superadmin/superadmin-password-request/superadmin-password-request.component.spec.ts b/src/app/superadmin/superadmin-password-request/superadmin-password-request.component.spec.ts index adb6f10e0aa2e2c661a37636415f556141f5bd65..056be171b097f6dcae49fb9de0a6bceafdd551ef 100644 --- a/src/app/superadmin/superadmin-password-request/superadmin-password-request.component.spec.ts +++ b/src/app/superadmin/superadmin-password-request/superadmin-password-request.component.spec.ts @@ -1,11 +1,11 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { SuperadminPasswordRequestComponent } from './superadmin-password-request.component'; -import {MAT_DIALOG_DATA, MatDialog, MatDialogModule} from "@angular/material/dialog"; -import {ReactiveFormsModule} from "@angular/forms"; -import {MatInputModule} from "@angular/material/input"; -import {MatFormFieldModule} from "@angular/material/form-field"; -import {NoopAnimationsModule} from "@angular/platform-browser/animations"; +import {MAT_DIALOG_DATA, MatDialog, MatDialogModule} from '@angular/material/dialog'; +import {ReactiveFormsModule} from '@angular/forms'; +import {MatInputModule} from '@angular/material/input'; +import {MatFormFieldModule} from '@angular/material/form-field'; +import {NoopAnimationsModule} from '@angular/platform-browser/animations'; describe('SuperadminPasswordRequestComponent', () => { let component: SuperadminPasswordRequestComponent; diff --git a/src/app/superadmin/superadmin-routing.module.ts b/src/app/superadmin/superadmin-routing.module.ts index edbabde86edf28d79a64465db97d6530510f884c..2ff943e30f03365ff8719a5c8752321b1ddddbc7 100644 --- a/src/app/superadmin/superadmin-routing.module.ts +++ b/src/app/superadmin/superadmin-routing.module.ts @@ -1,11 +1,9 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; - import { WorkspacesComponent } from './workspaces/workspaces.component'; import { UsersComponent } from './users/users.component'; import { SuperadminComponent } from './superadmin.component'; - const routes: Routes = [ { path: '', diff --git a/src/app/superadmin/superadmin.component.ts b/src/app/superadmin/superadmin.component.ts index b4d9118a64a6b18e0cbe2f7d6844214043909c53..eed6fb2f4d5caf058a560bfe0e88718de8024e9c 100644 --- a/src/app/superadmin/superadmin.component.ts +++ b/src/app/superadmin/superadmin.component.ts @@ -1,8 +1,6 @@ import { Component } from '@angular/core'; import { MainDataService } from '../maindata.service'; - - @Component({ templateUrl: './superadmin.component.html', styleUrls: ['./superadmin.component.css'] diff --git a/src/app/superadmin/superadmin.module.ts b/src/app/superadmin/superadmin.module.ts index 20807dca732e1e44f60196ac4c475d7fd985b368..be90fefb40e80abc9ca6f8a1ae22d36b88ce1bae 100644 --- a/src/app/superadmin/superadmin.module.ts +++ b/src/app/superadmin/superadmin.module.ts @@ -3,32 +3,32 @@ import { CommonModule } from '@angular/common'; import { SuperadminRoutingModule } from './superadmin-routing.module'; import { SuperadminComponent } from './superadmin.component'; -import { UsersComponent } from "./users/users.component"; -import { WorkspacesComponent } from "./workspaces/workspaces.component"; +import { UsersComponent } from './users/users.component'; +import { WorkspacesComponent } from './workspaces/workspaces.component'; import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; import { MatIconModule } from '@angular/material/icon'; import { MatTableModule } from '@angular/material/table'; import { MatCheckboxModule } from '@angular/material/checkbox'; -import {MatTabsModule} from "@angular/material/tabs"; -import {MatSelectModule} from "@angular/material/select"; -import {MatSortModule} from "@angular/material/sort"; -import {MatCardModule} from "@angular/material/card"; -import {MatExpansionModule} from "@angular/material/expansion"; -import {ReactiveFormsModule} from "@angular/forms"; -import {MatDialogModule} from "@angular/material/dialog"; -import {MatButtonModule} from "@angular/material/button"; -import {MatTooltipModule} from "@angular/material/tooltip"; -import {MatFormFieldModule} from "@angular/material/form-field"; -import {MatInputModule} from "@angular/material/input"; -import {MatToolbarModule} from "@angular/material/toolbar"; -import {MatSnackBarModule} from "@angular/material/snack-bar"; -import {MatGridListModule} from "@angular/material/grid-list"; -import {FlexLayoutModule} from "@angular/flex-layout"; -import {BackendService} from "./backend.service"; -import {NewpasswordComponent} from "./users/newpassword/newpassword.component"; -import {NewuserComponent} from "./users/newuser/newuser.component"; -import {NewworkspaceComponent} from "./workspaces/newworkspace/newworkspace.component"; -import {EditworkspaceComponent} from "./workspaces/editworkspace/editworkspace.component"; +import {MatTabsModule} from '@angular/material/tabs'; +import {MatSelectModule} from '@angular/material/select'; +import {MatSortModule} from '@angular/material/sort'; +import {MatCardModule} from '@angular/material/card'; +import {MatExpansionModule} from '@angular/material/expansion'; +import {ReactiveFormsModule} from '@angular/forms'; +import {MatDialogModule} from '@angular/material/dialog'; +import {MatButtonModule} from '@angular/material/button'; +import {MatTooltipModule} from '@angular/material/tooltip'; +import {MatFormFieldModule} from '@angular/material/form-field'; +import {MatInputModule} from '@angular/material/input'; +import {MatToolbarModule} from '@angular/material/toolbar'; +import {MatSnackBarModule} from '@angular/material/snack-bar'; +import {MatGridListModule} from '@angular/material/grid-list'; +import {FlexLayoutModule} from '@angular/flex-layout'; +import {BackendService} from './backend.service'; +import {NewpasswordComponent} from './users/newpassword/newpassword.component'; +import {NewuserComponent} from './users/newuser/newuser.component'; +import {NewworkspaceComponent} from './workspaces/newworkspace/newworkspace.component'; +import {EditworkspaceComponent} from './workspaces/editworkspace/editworkspace.component'; import { SuperadminPasswordRequestComponent } from './superadmin-password-request/superadmin-password-request.component'; diff --git a/src/app/superadmin/users/newpassword/newpassword.component.spec.ts b/src/app/superadmin/users/newpassword/newpassword.component.spec.ts index 9e7ddf443e512b929c57abfce9e45b156147bef6..649af73aa5d920bbbce9e7d3f24f8ea3219ad1da 100644 --- a/src/app/superadmin/users/newpassword/newpassword.component.spec.ts +++ b/src/app/superadmin/users/newpassword/newpassword.component.spec.ts @@ -1,11 +1,11 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { NewpasswordComponent } from './newpassword.component'; -import {ReactiveFormsModule} from "@angular/forms"; -import {MAT_DIALOG_DATA, MatDialog, MatDialogModule} from "@angular/material/dialog"; -import {MatInputModule} from "@angular/material/input"; -import {MatFormFieldModule} from "@angular/material/form-field"; -import {NoopAnimationsModule} from "@angular/platform-browser/animations"; +import {ReactiveFormsModule} from '@angular/forms'; +import {MAT_DIALOG_DATA, MatDialog, MatDialogModule} from '@angular/material/dialog'; +import {MatInputModule} from '@angular/material/input'; +import {MatFormFieldModule} from '@angular/material/form-field'; +import {NoopAnimationsModule} from '@angular/platform-browser/animations'; describe('NewpasswordComponent', () => { let component: NewpasswordComponent; diff --git a/src/app/superadmin/users/newuser/newuser.component.spec.ts b/src/app/superadmin/users/newuser/newuser.component.spec.ts index 75c49da6a6323a759819d5bf932c793c5ebe8e9a..f03554101e367f4d5d3f4f78a90b4c1a43eae3db 100644 --- a/src/app/superadmin/users/newuser/newuser.component.spec.ts +++ b/src/app/superadmin/users/newuser/newuser.component.spec.ts @@ -1,12 +1,12 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { NewuserComponent } from './newuser.component'; -import {ReactiveFormsModule} from "@angular/forms"; -import {MatDialog, MatDialogModule} from "@angular/material/dialog"; -import {MatInputModule} from "@angular/material/input"; -import {MatFormFieldModule} from "@angular/material/form-field"; -import {MatIconModule} from "@angular/material/icon"; -import {NoopAnimationsModule} from "@angular/platform-browser/animations"; +import {ReactiveFormsModule} from '@angular/forms'; +import {MatDialog, MatDialogModule} from '@angular/material/dialog'; +import {MatInputModule} from '@angular/material/input'; +import {MatFormFieldModule} from '@angular/material/form-field'; +import {MatIconModule} from '@angular/material/icon'; +import {NoopAnimationsModule} from '@angular/platform-browser/animations'; describe('NewuserComponent', () => { let component: NewuserComponent; diff --git a/src/app/superadmin/users/users.component.ts b/src/app/superadmin/users/users.component.ts index 66d45efa9384bd747c4cdaa35ec37a581e993cf7..6d36db3606afc00618ee90d2a73249c0618503b9 100644 --- a/src/app/superadmin/users/users.component.ts +++ b/src/app/superadmin/users/users.component.ts @@ -15,11 +15,11 @@ import { MessageDialogData, MessageType } from 'iqb-components'; import { MainDataService } from 'src/app/maindata.service'; -import {IdRoleData, UserData} from "../superadmin.interfaces"; -import {SuperadminPasswordRequestComponent} from "../superadmin-password-request/superadmin-password-request.component"; -import {catchError} from "rxjs/operators"; -import {ApiError} from "../../app.interfaces"; -import {of} from "rxjs"; +import {IdRoleData, UserData} from '../superadmin.interfaces'; +import {SuperadminPasswordRequestComponent} from '../superadmin-password-request/superadmin-password-request.component'; +import {catchError} from 'rxjs/operators'; +import {ApiError} from '../../app.interfaces'; +import {of} from 'rxjs'; @Component({ @@ -29,12 +29,12 @@ import {of} from "rxjs"; export class UsersComponent implements OnInit { public objectsDatasource: MatTableDataSource<UserData>; public displayedColumns = ['selectCheckbox', 'name']; - private tableselectionCheckbox = new SelectionModel<UserData>(true, []); - private tableselectionRow = new SelectionModel<UserData>(false, []); + public tableselectionCheckbox = new SelectionModel<UserData>(true, []); + public tableselectionRow = new SelectionModel<UserData>(false, []); public selectedUser = -1; - private selectedUserName = ''; + public selectedUserName = ''; - private pendingWorkspaceChanges = false; + public pendingWorkspaceChanges = false; public WorkspacelistDatasource: MatTableDataSource<IdRoleData>; public displayedWorkspaceColumns = ['selectCheckbox', 'label']; @@ -54,7 +54,7 @@ export class UsersComponent implements OnInit { r => { if (r.added.length > 0) { this.selectedUser = r.added[0].id; - this.selectedUserName = r.added[0].name + this.selectedUserName = r.added[0].name; } else { this.selectedUser = -1; this.selectedUserName = ''; @@ -67,10 +67,9 @@ export class UsersComponent implements OnInit { setTimeout(() => { this.mds.setSpinnerOn(); this.updateObjectList(); - }) + }); } - // *********************************************************************************** addObject() { const dialogRef = this.newuserDialog.open(NewuserComponent, { width: '600px' @@ -84,7 +83,7 @@ export class UsersComponent implements OnInit { (<FormGroup>result).get('pw').value) .pipe(catchError((err: ApiError) => { this.snackBar.open(`Konnte Nutzer nicht hinzufügen: ${err.code} ${err.info} `, 'Fehler', {duration: 5000}); - return of(false) + return of(false); })).subscribe( respOk => { if (respOk !== false) { @@ -132,14 +131,14 @@ export class UsersComponent implements OnInit { data: 'Superadmin-Status ' + (userObject.isSuperadmin ? 'entziehen' : 'setzen') }); - passwdDialogRef.afterClosed().subscribe(result => { - if (typeof result !== 'undefined') { - if (result !== false) { + passwdDialogRef.afterClosed().subscribe(afterClosedResult => { + if (typeof afterClosedResult !== 'undefined') { + if (afterClosedResult !== false) { this.mds.setSpinnerOn(); this.bs.setSuperUserStatus( selectedRows[0]['id'], !userObject.isSuperadmin, - (<FormGroup>result).get('pw').value).subscribe( + (<FormGroup>afterClosedResult).get('pw').value).subscribe( respCode => { if (respCode === 0) { this.snackBar.open('Status geändert', '', {duration: 1000}); @@ -188,7 +187,7 @@ export class UsersComponent implements OnInit { (<FormGroup>result).get('pw').value) .pipe(catchError((err: ApiError) => { this.snackBar.open(`Konnte Kennwort nicht ändern: ${err.code} ${err.info} `, 'Fehler', {duration: 5000}); - return of(false) + return of(false); })).subscribe( respOk => { this.mds.setSpinnerOff(); @@ -235,7 +234,6 @@ export class UsersComponent implements OnInit { dialogRef.afterClosed().subscribe(result => { if (result !== false) { - // ========================================================= const usersToDelete = []; selectedRows.forEach((r: UserData) => usersToDelete.push(r.id)); this.mds.setSpinnerOn(); @@ -254,7 +252,6 @@ export class UsersComponent implements OnInit { } } - // *********************************************************************************** updateWorkspaceList() { this.pendingWorkspaceChanges = false; if (this.selectedUser > -1) { @@ -262,7 +259,7 @@ export class UsersComponent implements OnInit { this.bs.getWorkspacesByUser(this.selectedUser).subscribe(dataresponse => { this.WorkspacelistDatasource = new MatTableDataSource(dataresponse); this.mds.setSpinnerOff(); - }) + }); } else { this.WorkspacelistDatasource = null; } @@ -295,7 +292,6 @@ export class UsersComponent implements OnInit { } } - // *********************************************************************************** updateObjectList() { this.tableselectionCheckbox.clear(); this.tableselectionRow.clear(); diff --git a/src/app/superadmin/workspaces/editworkspace/editworkspace.component.spec.ts b/src/app/superadmin/workspaces/editworkspace/editworkspace.component.spec.ts index e3ac6df1235284ff7634fc7884ac3cad7d79e7fe..bff9b6d215e4b0bd0cfc5eff4d4bbdb587a0ac33 100644 --- a/src/app/superadmin/workspaces/editworkspace/editworkspace.component.spec.ts +++ b/src/app/superadmin/workspaces/editworkspace/editworkspace.component.spec.ts @@ -1,11 +1,11 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { EditworkspaceComponent } from './editworkspace.component'; -import {ReactiveFormsModule} from "@angular/forms"; -import {MAT_DIALOG_DATA, MatDialog, MatDialogModule} from "@angular/material/dialog"; -import {MatInputModule} from "@angular/material/input"; -import {MatFormFieldModule} from "@angular/material/form-field"; -import {NoopAnimationsModule} from "@angular/platform-browser/animations"; +import {ReactiveFormsModule} from '@angular/forms'; +import {MAT_DIALOG_DATA, MatDialog, MatDialogModule} from '@angular/material/dialog'; +import {MatInputModule} from '@angular/material/input'; +import {MatFormFieldModule} from '@angular/material/form-field'; +import {NoopAnimationsModule} from '@angular/platform-browser/animations'; describe('EditworkspaceComponent', () => { let component: EditworkspaceComponent; diff --git a/src/app/superadmin/workspaces/newworkspace/newworkspace.component.spec.ts b/src/app/superadmin/workspaces/newworkspace/newworkspace.component.spec.ts index 0bf0a5c92355d84dcb866199a929a1cbde3b938d..6a88040e692abac3b82a771c23df5a4d85f35bfd 100644 --- a/src/app/superadmin/workspaces/newworkspace/newworkspace.component.spec.ts +++ b/src/app/superadmin/workspaces/newworkspace/newworkspace.component.spec.ts @@ -1,11 +1,11 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { NewworkspaceComponent } from './newworkspace.component'; -import {ReactiveFormsModule} from "@angular/forms"; -import {MatDialog, MatDialogModule} from "@angular/material/dialog"; -import {MatInputModule} from "@angular/material/input"; -import {MatFormFieldModule} from "@angular/material/form-field"; -import {NoopAnimationsModule} from "@angular/platform-browser/animations"; +import {ReactiveFormsModule} from '@angular/forms'; +import {MatDialog, MatDialogModule} from '@angular/material/dialog'; +import {MatInputModule} from '@angular/material/input'; +import {MatFormFieldModule} from '@angular/material/form-field'; +import {NoopAnimationsModule} from '@angular/platform-browser/animations'; describe('NewWorkspaceComponent', () => { let component: NewworkspaceComponent; diff --git a/src/app/superadmin/workspaces/newworkspace/newworkspace.component.ts b/src/app/superadmin/workspaces/newworkspace/newworkspace.component.ts index 6fd83574628b7214ad4c8f9447dcb25ba5520428..531232b84ba1e41203de4e770699a2b255dd15db 100644 --- a/src/app/superadmin/workspaces/newworkspace/newworkspace.component.ts +++ b/src/app/superadmin/workspaces/newworkspace/newworkspace.component.ts @@ -8,5 +8,5 @@ import {FormGroup, Validators, FormControl} from '@angular/forms'; export class NewworkspaceComponent { newworkspaceform = new FormGroup({ name: new FormControl('', [Validators.required, Validators.minLength(3)]) - }) + }); } diff --git a/src/app/superadmin/workspaces/workspaces.component.spec.ts b/src/app/superadmin/workspaces/workspaces.component.spec.ts index 162c69df4195920fd2a942120be5a4cc7398142f..25662b77bc06d1b31ed36c9f547072b84ed0d0de 100644 --- a/src/app/superadmin/workspaces/workspaces.component.spec.ts +++ b/src/app/superadmin/workspaces/workspaces.component.spec.ts @@ -1,11 +1,11 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { WorkspacesComponent } from './workspaces.component'; -import {HttpClientModule} from "@angular/common/http"; +import {HttpClientModule} from '@angular/common/http'; import { BackendService } from '../backend.service'; -import {MatDialogModule} from "@angular/material/dialog"; -import {MatSnackBarModule} from "@angular/material/snack-bar"; -import {MainDataService} from "../../maindata.service"; +import {MatDialogModule} from '@angular/material/dialog'; +import {MatSnackBarModule} from '@angular/material/snack-bar'; +import {MainDataService} from '../../maindata.service'; describe('WorkspacesComponent', () => { let component: WorkspacesComponent; diff --git a/src/app/superadmin/workspaces/workspaces.component.ts b/src/app/superadmin/workspaces/workspaces.component.ts index dfecfd25f4e610c32ae98b8f148985d934ca385e..939aa5a23fac09d219431a0935bfd6d1dea973b1 100644 --- a/src/app/superadmin/workspaces/workspaces.component.ts +++ b/src/app/superadmin/workspaces/workspaces.component.ts @@ -14,7 +14,7 @@ import { MessageDialogComponent, MessageDialogData, MessageType } from 'iqb-components'; import { MainDataService } from 'src/app/maindata.service'; -import {IdAndName, IdRoleData} from "../superadmin.interfaces"; +import {IdAndName, IdRoleData} from '../superadmin.interfaces'; @Component({ templateUrl: './workspaces.component.html', @@ -23,11 +23,11 @@ import {IdAndName, IdRoleData} from "../superadmin.interfaces"; export class WorkspacesComponent implements OnInit { public objectsDatasource: MatTableDataSource<IdAndName>; public displayedColumns = ['selectCheckbox', 'name']; - private tableselectionCheckbox = new SelectionModel <IdAndName>(true, []); - private tableselectionRow = new SelectionModel <IdAndName>(false, []); + public tableselectionCheckbox = new SelectionModel <IdAndName>(true, []); + public tableselectionRow = new SelectionModel <IdAndName>(false, []); public selectedWorkspaceId = 0; - private selectedWorkspaceName = ''; - private pendingUserChanges = false; + public selectedWorkspaceName = ''; + public pendingUserChanges = false; public UserlistDatasource: MatTableDataSource<IdRoleData>; public displayedUserColumns = ['selectCheckbox', 'name']; @@ -59,10 +59,9 @@ export class WorkspacesComponent implements OnInit { setTimeout(() => { this.mds.setSpinnerOn(); this.updateObjectList(); - }) + }); } - // *********************************************************************************** addObject() { const dialogRef = this.newworkspaceDialog.open(NewworkspaceComponent, { width: '600px', @@ -164,7 +163,6 @@ export class WorkspacesComponent implements OnInit { dialogRef.afterClosed().subscribe(result => { if (result !== false) { - // ========================================================= const workspacesToDelete = []; selectedRows.forEach((r: IdAndName) => workspacesToDelete.push(r.id)); this.mds.setSpinnerOn(); @@ -183,7 +181,6 @@ export class WorkspacesComponent implements OnInit { } } - // *********************************************************************************** updateUserList() { this.pendingUserChanges = false; if (this.selectedWorkspaceId > 0) { @@ -224,7 +221,6 @@ export class WorkspacesComponent implements OnInit { } } - // *********************************************************************************** updateObjectList() { this.bs.getWorkspaces().subscribe(dataresponse => { this.objectsDatasource = new MatTableDataSource(dataresponse); diff --git a/src/app/sys-check/backend.service.spec.ts b/src/app/sys-check/backend.service.spec.ts index ffdc1397ca5ced3a08516d7183bbc820c1001627..4f08e463495ffd25801192beb147079f598435bb 100644 --- a/src/app/sys-check/backend.service.spec.ts +++ b/src/app/sys-check/backend.service.spec.ts @@ -1,7 +1,7 @@ import { TestBed, inject } from '@angular/core/testing'; import { BackendService } from './backend.service'; -import {HttpClientModule} from "@angular/common/http"; +import {HttpClientModule} from '@angular/common/http'; describe('HttpClient testing', () => { diff --git a/src/app/sys-check/report/report.component.ts b/src/app/sys-check/report/report.component.ts index 8e419413f659c5ed415eb42e55fd6170bada1bf7..3c980ee15d2d4057afd5d4741a6bf874f6ed47c2 100644 --- a/src/app/sys-check/report/report.component.ts +++ b/src/app/sys-check/report/report.component.ts @@ -1,19 +1,19 @@ import { BackendService } from '../backend.service'; import { SysCheckDataService } from '../sys-check-data.service'; -import { Component, Input } from '@angular/core'; +import {Component, Input, OnDestroy} from '@angular/core'; import { SaveReportComponent } from './save-report/save-report.component'; import { ReportEntry } from '../sys-check.interfaces'; import { Subscription } from 'rxjs'; import {ServerError} from 'iqb-components'; -import {MatDialog} from "@angular/material/dialog"; -import {MatSnackBar} from "@angular/material/snack-bar"; +import {MatDialog} from '@angular/material/dialog'; +import {MatSnackBar} from '@angular/material/snack-bar'; @Component({ selector: 'iqb-report', templateUrl: './report.component.html', styleUrls: ['./report.component.css'] }) -export class ReportComponent { +export class ReportComponent implements OnDestroy { @Input() canSave: boolean; @@ -74,8 +74,8 @@ export class ReportComponent { questionnaire: this.ds.questionnaireData$.getValue(), unit: this.ds.unitData$.getValue() } - ).subscribe((result: boolean|ServerError) => { - if (result instanceof ServerError) { + ).subscribe((saveReportResult: boolean|ServerError) => { + if (saveReportResult instanceof ServerError) { this.snackBar.open('Konnte Bericht nicht speichern.', '', {duration: 3000}); } else { this.snackBar.open('Bericht gespeichert.', '', {duration: 3000}); diff --git a/src/app/sys-check/sys-check.component.ts b/src/app/sys-check/sys-check.component.ts index 2c8b26d90bd735a900a0e355607a744f89920d30..e3c7203bd5a7f5a08803817a42f2bf34b2b7fbd8 100644 --- a/src/app/sys-check/sys-check.component.ts +++ b/src/app/sys-check/sys-check.component.ts @@ -4,7 +4,7 @@ import {Component, OnDestroy, OnInit} from '@angular/core'; import { BackendService } from './backend.service'; import { Subscription } from 'rxjs'; import { CustomtextService } from 'iqb-components'; -import {MainDataService} from "../maindata.service"; +import {MainDataService} from '../maindata.service'; @Component({ templateUrl: './sys-check.component.html', @@ -36,7 +36,7 @@ export class SysCheckComponent implements OnInit, OnDestroy { this.route.paramMap.subscribe((params: ParamMap) => { const sysCheckName = params.get('sys-check-name'); - const workspaceId = parseInt(params.get('workspace-id')); + const workspaceId = parseInt(params.get('workspace-id'), 10); setTimeout(() => { this.loading = true; this.bs.getCheckConfigData(workspaceId, sysCheckName).subscribe(checkConfig => { @@ -72,7 +72,7 @@ export class SysCheckComponent implements OnInit, OnDestroy { this.isError = true; } }); - }) + }); }); } diff --git a/src/app/sys-check/sys-check.interfaces.ts b/src/app/sys-check/sys-check.interfaces.ts index f20a781c95a2474d85d40b21e34edd568f4a0c5e..860e4d8182ed47b73b46e95c461898688fcc45f3 100644 --- a/src/app/sys-check/sys-check.interfaces.ts +++ b/src/app/sys-check/sys-check.interfaces.ts @@ -88,5 +88,5 @@ export interface SysCheckReport { environment: ReportEntry[]; network: ReportEntry[]; questionnaire: ReportEntry[]; - unit: ReportEntry[] + unit: ReportEntry[]; } diff --git a/src/app/sys-check/sys-check.module.ts b/src/app/sys-check/sys-check.module.ts index 251934545b0e22d8db99c6f0e6db1ef6d9d23b73..01eb88d018e8d9744ba12f6d7e8ccf4589521391 100644 --- a/src/app/sys-check/sys-check.module.ts +++ b/src/app/sys-check/sys-check.module.ts @@ -20,20 +20,20 @@ import { SaveReportComponent } from './report/save-report/save-report.component' import { UnitNaviButtonsComponent } from './unit-check/tc-navi-buttons/unit-navi-buttons.component'; import { TcSpeedChartComponent } from './network-check/tc-speed-chart.component'; -import {MatTooltipModule} from "@angular/material/tooltip"; -import {IqbComponentsModule} from "iqb-components"; -import {MatButtonModule} from "@angular/material/button"; -import {MatCardModule} from "@angular/material/card"; -import {MatCheckboxModule} from "@angular/material/checkbox"; -import {MatDialogModule} from "@angular/material/dialog"; -import {MatFormFieldModule} from "@angular/material/form-field"; -import {MatIconModule} from "@angular/material/icon"; -import {MatInputModule} from "@angular/material/input"; -import {MatProgressSpinnerModule} from "@angular/material/progress-spinner"; -import {MatRadioModule} from "@angular/material/radio"; -import {MatSelectModule} from "@angular/material/select"; -import {MatSnackBarModule} from "@angular/material/snack-bar"; -import {MatStepperModule} from "@angular/material/stepper"; +import {MatTooltipModule} from '@angular/material/tooltip'; +import {IqbComponentsModule} from 'iqb-components'; +import {MatButtonModule} from '@angular/material/button'; +import {MatCardModule} from '@angular/material/card'; +import {MatCheckboxModule} from '@angular/material/checkbox'; +import {MatDialogModule} from '@angular/material/dialog'; +import {MatFormFieldModule} from '@angular/material/form-field'; +import {MatIconModule} from '@angular/material/icon'; +import {MatInputModule} from '@angular/material/input'; +import {MatProgressSpinnerModule} from '@angular/material/progress-spinner'; +import {MatRadioModule} from '@angular/material/radio'; +import {MatSelectModule} from '@angular/material/select'; +import {MatSnackBarModule} from '@angular/material/snack-bar'; +import {MatStepperModule} from '@angular/material/stepper'; @NgModule({ imports: [ diff --git a/src/app/sys-check/unit-check/resize-IFrameChild/resize-IFrameChild.directive.spec.ts b/src/app/sys-check/unit-check/resize-IFrameChild/resize-IFrameChild.directive.spec.ts deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/src/app/sys-check/unit-check/resize-IFrameChild/resize-IFrameChild.directive.ts b/src/app/sys-check/unit-check/resize-IFrameChild/resize-IFrameChild.directive.ts index 44fb984bff256b681c11322f1989183c44450234..3be48b20cf336a9ca41aa31af4d842869d2d2813 100644 --- a/src/app/sys-check/unit-check/resize-IFrameChild/resize-IFrameChild.directive.ts +++ b/src/app/sys-check/unit-check/resize-IFrameChild/resize-IFrameChild.directive.ts @@ -1,30 +1,26 @@ -import { Component, Directive, ElementRef, EventEmitter, HostListener, - Input, OnDestroy, OnInit, Output } from '@angular/core'; +import { Directive, ElementRef, HostListener} from '@angular/core'; - @Directive({ - selector: 'div[iqbResizeIFrameChild]' - }) - export class ResizeIFrameChildDirective { +@Directive({ + selector: 'div[iqbResizeIFrameChild]' +}) +export class ResizeIFrameChildDirective { - private _element: HTMLElement; - - // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - constructor(private element: ElementRef) { - this._element = this.element.nativeElement; - } + private _element: HTMLElement; + constructor(private element: ElementRef) { + this._element = this.element.nativeElement; + } - // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - @HostListener('window:resize') - public onResize(): any { - const iFrameList = this._element.getElementsByTagName('iframe'); - if (iFrameList.length > 0) { - let myIFrame: HTMLIFrameElement; - myIFrame = iFrameList[0]; - const divHeight = this._element.clientHeight; - myIFrame.setAttribute('height', String(Math.trunc(divHeight))); - } + @HostListener('window:resize') + public onResize(): any { + const iFrameList = this._element.getElementsByTagName('iframe'); + if (iFrameList.length > 0) { + let myIFrame: HTMLIFrameElement; + myIFrame = iFrameList[0]; + const divHeight = this._element.clientHeight; + myIFrame.setAttribute('height', String(Math.trunc(divHeight))); } } +} diff --git a/src/app/sys-check/unit-check/tc-navi-buttons/unit-navi-buttons.component.ts b/src/app/sys-check/unit-check/tc-navi-buttons/unit-navi-buttons.component.ts index 7efa477aeaa0392525939e167c86c5042369b83f..4f984cc2b5fc15cf5d1fca3b3e605076f60063bb 100644 --- a/src/app/sys-check/unit-check/tc-navi-buttons/unit-navi-buttons.component.ts +++ b/src/app/sys-check/unit-check/tc-navi-buttons/unit-navi-buttons.component.ts @@ -8,8 +8,8 @@ import { Component } from '@angular/core'; }) export class UnitNaviButtonsComponent { public showPageNaviButtons = true; - private pagePrevEnabled = false; - private pageNextEnabled = false; + public pagePrevEnabled = false; + public pageNextEnabled = false; constructor(private ds: SysCheckDataService) { diff --git a/src/app/sys-check/unit-check/unit-check.component.spec.ts b/src/app/sys-check/unit-check/unit-check.component.spec.ts index de4e5944d647198f4d5865573a4c4f6afd49d240..82a82965dd8fd760951b32e8aa5de726d39ef914 100644 --- a/src/app/sys-check/unit-check/unit-check.component.spec.ts +++ b/src/app/sys-check/unit-check/unit-check.component.spec.ts @@ -1,8 +1,8 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { UnitCheckComponent } from './unit-check.component'; -import {HttpClientModule} from "@angular/common/http"; -import {BackendService} from "../backend.service"; +import {HttpClientModule} from '@angular/common/http'; +import {BackendService} from '../backend.service'; describe('UnitCheckComponent', () => { let component: UnitCheckComponent; diff --git a/src/app/test-controller/backend.service.ts b/src/app/test-controller/backend.service.ts index 5bc6f8cdf7e0b669072b1eb2eaf3ed4d308ccc63..42ff35e9a06090f0e745852b750c413df4da4579 100644 --- a/src/app/test-controller/backend.service.ts +++ b/src/app/test-controller/backend.service.ts @@ -3,7 +3,7 @@ import { HttpClient, HttpParams } from '@angular/common/http'; import { Observable, of } from 'rxjs'; import { catchError, map } from 'rxjs/operators'; import {UnitData, TaggedString, TestData} from './test-controller.interfaces'; -import {ApiError} from "../app.interfaces"; +import {ApiError} from '../app.interfaces'; @Injectable({ @@ -24,7 +24,7 @@ export class BackendService { map(() => true), catchError((err: ApiError) => { console.warn(`saveUnitReview Api-Error: ${err.code} ${err.info} `); - return of(false) + return of(false); }) ); } @@ -36,7 +36,7 @@ export class BackendService { map(() => true), catchError((err: ApiError) => { console.warn(`saveBookletReview Api-Error: ${err.code} ${err.info} `); - return of(false) + return of(false); }) ); } @@ -47,7 +47,7 @@ export class BackendService { .pipe( catchError((err: ApiError) => { console.warn(`getTestData Api-Error: ${err.code} ${err.info} `); - return of(false) + return of(false); }) ); } @@ -58,7 +58,7 @@ export class BackendService { .pipe( catchError((err: ApiError) => { console.warn(`getUnitData Api-Error: ${err.code} ${err.info} `); - return of(false) + return of(false); }) ); } @@ -75,7 +75,7 @@ export class BackendService { map(def => <TaggedString>{tag: internalKey, value: def}), catchError((err: ApiError) => { console.warn(`getResource Api-Error: ${err.code} ${err.info} `); - return of(err.code) + return of(err.code); }) ); } @@ -87,7 +87,7 @@ export class BackendService { map(() => true), catchError((err: ApiError) => { console.warn(`addUnitLog Api-Error: ${err.code} ${err.info} `); - return of(false) + return of(false); }) ); } @@ -99,7 +99,7 @@ export class BackendService { map(() => true), catchError((err: ApiError) => { console.warn(`addBookletLog Api-Error: ${err.code} ${err.info} `); - return of(false) + return of(false); }) ); } @@ -111,7 +111,7 @@ export class BackendService { map(() => true), catchError((err: ApiError) => { console.warn(`setUnitState Api-Error: ${err.code} ${err.info} `); - return of(false) + return of(false); }) ); } @@ -123,7 +123,7 @@ export class BackendService { map(() => true), catchError((err: ApiError) => { console.warn(`setBookletState Api-Error: ${err.code} ${err.info} `); - return of(false) + return of(false); }) ); } @@ -136,7 +136,7 @@ export class BackendService { map(() => true), catchError((err: ApiError) => { console.warn(`newUnitResponse Api-Error: ${err.code} ${err.info} `); - return of(false) + return of(false); }) ); } @@ -148,7 +148,7 @@ export class BackendService { map(() => true), catchError((err: ApiError) => { console.warn(`newUnitRestorePoint Api-Error: ${err.code} ${err.info} `); - return of(false) + return of(false); }) ); } @@ -160,7 +160,7 @@ export class BackendService { map(() => true), catchError((err: ApiError) => { console.warn(`lockBooklet Api-Error: ${err.code} ${err.info} `); - return of(false) + return of(false); }) ); } diff --git a/src/app/test-controller/resize-IFrameChild/resize-IFrameChild.directive.spec.ts b/src/app/test-controller/resize-IFrameChild/resize-IFrameChild.directive.spec.ts deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/src/app/test-controller/resize-IFrameChild/resize-IFrameChild.directive.ts b/src/app/test-controller/resize-IFrameChild/resize-IFrameChild.directive.ts index 11b3280cc74f36503a482906a87b92a2028fe714..ad43d48149a28aabd55f4084ca200d32d33bc1c7 100644 --- a/src/app/test-controller/resize-IFrameChild/resize-IFrameChild.directive.ts +++ b/src/app/test-controller/resize-IFrameChild/resize-IFrameChild.directive.ts @@ -1,30 +1,23 @@ -import { Component, Directive, ElementRef, EventEmitter, HostListener, - Input, OnDestroy, OnInit, Output } from '@angular/core'; +import {Directive, ElementRef, HostListener} from '@angular/core'; +@Directive({ + selector: 'div[iqbResizeIFrameChild]' +}) +export class ResizeIFrameChildDirective { + private _element: HTMLElement; - @Directive({ - selector: 'div[iqbResizeIFrameChild]' - }) - export class ResizeIFrameChildDirective { - - - private _element: HTMLElement; - - // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - constructor(private element: ElementRef) { - this._element = this.element.nativeElement; - } - + constructor(private element: ElementRef) { + this._element = this.element.nativeElement; + } - // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - @HostListener('window:resize') - public onResize(): any { - const iFrameList = this._element.getElementsByTagName('iframe'); - if (iFrameList.length > 0) { - let myIFrame: HTMLIFrameElement; - myIFrame = iFrameList[0]; - const divHeight = this._element.clientHeight; - myIFrame.setAttribute('height', String(divHeight - 5)); - } + @HostListener('window:resize') + public onResize(): any { + const iFrameList = this._element.getElementsByTagName('iframe'); + if (iFrameList.length > 0) { + let myIFrame: HTMLIFrameElement; + myIFrame = iFrameList[0]; + const divHeight = this._element.clientHeight; + myIFrame.setAttribute('height', String(divHeight - 5)); } } +} diff --git a/src/app/test-controller/test-controller-routing.module.ts b/src/app/test-controller/test-controller-routing.module.ts index 25a74a43659d661756911ffb0b8df70a1b8e6059..1521859029e3da5ffaa900b732fba6f3be7fd475 100644 --- a/src/app/test-controller/test-controller-routing.module.ts +++ b/src/app/test-controller/test-controller-routing.module.ts @@ -3,10 +3,8 @@ import { UnithostComponent } from './unithost/unithost.component'; import { TestControllerComponent } from './test-controller.component'; import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; -import {TestStatusComponent} from "./test-status/test-status.component"; -import {TestControllerDeactivateGuard} from "./test-controller-route-guards"; - - +import {TestStatusComponent} from './test-status/test-status.component'; +import {TestControllerDeactivateGuard} from './test-controller-route-guards'; const routes: Routes = [ { diff --git a/src/app/test-controller/test-controller.classes.ts b/src/app/test-controller/test-controller.classes.ts index f827f6e34ae1794a2b4ab09cfe9aeafdc7627d24..051b32834d5bd46e176b3dfd1ac750160a5465ef 100644 --- a/src/app/test-controller/test-controller.classes.ts +++ b/src/app/test-controller/test-controller.classes.ts @@ -22,7 +22,6 @@ export class TestletContentElement { this.children = []; } - // """""""""""""""""""""""""""""""""""""""""""""""""""""""" setCanEnter (can: string, message: string, allChildren = false) { let newCan: 'y' | 'n' | 'w' = 'y'; if (can.length > 0) { @@ -42,7 +41,6 @@ export class TestletContentElement { } } - // """""""""""""""""""""""""""""""""""""""""""""""""""""""" setCanLeave (can: string, message: string, allChildren = false) { let newCan: 'y' | 'n' | 'w' = 'y'; if (can.length > 0) { @@ -62,7 +60,6 @@ export class TestletContentElement { } } - // """""""""""""""""""""""""""""""""""""""""""""""""""""""" getMaxSequenceId(tmpId = 0): number { if (this.sequenceId >= tmpId) { tmpId = this.sequenceId + 1; @@ -74,8 +71,6 @@ export class TestletContentElement { } } -// ..................................................................... -// ..................................................................... export class UnitDef extends TestletContentElement { readonly alias: string; readonly naviButtonLabel: string; @@ -99,7 +94,7 @@ export class UnitDef extends TestletContentElement { this.statusPresentation = 'no'; } - // """""""""""""""""""""""""""""""""""""""""""""""""""""""" + setStatusResponses (status: string) { let newStatus: 'no' | 'some' | 'all' = 'no'; if (status.length > 0) { @@ -113,7 +108,6 @@ export class UnitDef extends TestletContentElement { this.statusResponses = newStatus; } - // """""""""""""""""""""""""""""""""""""""""""""""""""""""" setStatusPresentation (status: string) { let newStatus: 'no' | 'partly' | 'full' = 'no'; if (status.length > 0) { @@ -128,8 +122,6 @@ export class UnitDef extends TestletContentElement { } } -// ..................................................................... -// ..................................................................... export class UnitControllerData { unitDef: UnitDef = null; codeRequiringTestlets: Testlet[] = []; @@ -140,21 +132,19 @@ export class UnitControllerData { } } -// ..................................................................... -// ..................................................................... export class Testlet extends TestletContentElement { codeToEnter = ''; codePrompt = ''; maxTimeLeft = -1; - // """""""""""""""""""""""""""""""""""""""""""""""""""""""" + addTestlet(id: string, title: string): Testlet { const newChild = new Testlet(0, id, title); this.children.push(newChild); return newChild; } - // """""""""""""""""""""""""""""""""""""""""""""""""""""""" + addUnit( sequenceId: number, id: string, @@ -166,7 +156,6 @@ export class Testlet extends TestletContentElement { return newChild; } - // ..................................................................... // first looking for the unit, then on the way back adding restrictions getUnitAt(sequenceId: number, isEntryPoint = true): UnitControllerData { let myreturn: UnitControllerData = null; @@ -194,7 +183,7 @@ export class Testlet extends TestletContentElement { if (!isEntryPoint) { const label = this.title.trim(); if (label) { - myreturn.testletLabel = label + myreturn.testletLabel = label; } } @@ -202,7 +191,6 @@ export class Testlet extends TestletContentElement { return myreturn; } - // ..................................................................... getTestlet(testletId: string): Testlet { let myreturn = null; if (this.id === testletId) { @@ -221,7 +209,6 @@ export class Testlet extends TestletContentElement { return myreturn; } - // ..................................................................... getAllUnitSequenceIds(testletId = ''): number[] { let myreturn = []; @@ -245,7 +232,6 @@ export class Testlet extends TestletContentElement { return myreturn; } - // ..................................................................... setTimeLeftNull(testletId = '') { if (testletId) { // find testlet @@ -265,7 +251,6 @@ export class Testlet extends TestletContentElement { } } - // ..................................................................... lockUnits_allChildren(testletId = '') { if (testletId) { // find testlet @@ -286,7 +271,6 @@ export class Testlet extends TestletContentElement { } } - // ..................................................................... private minTestletUnitSequenceId(id = -1): number { let myreturn = id; for (const tce of this.children) { @@ -303,7 +287,6 @@ export class Testlet extends TestletContentElement { return myreturn; } - // ..................................................................... lockUnits_before(testletId = '') { let myTestlet: Testlet = this; if (testletId) { @@ -316,7 +299,6 @@ export class Testlet extends TestletContentElement { } } - // ..................................................................... getNextUnlockedUnitSequenceId(currentUnitSequenceId: number): number { currentUnitSequenceId += 1; let myUnit: UnitControllerData = this.getUnitAt(currentUnitSequenceId); @@ -330,7 +312,6 @@ export class Testlet extends TestletContentElement { return myUnit ? currentUnitSequenceId : 0; } - // ..................................................................... getFirstUnlockedUnitSequenceId(startWith: number): number { let myreturn = startWith; const myUnit: UnitControllerData = this.getUnitAt(myreturn); @@ -348,7 +329,7 @@ export class Testlet extends TestletContentElement { return myUnit ? myreturn : 0; } - // ..................................................................... + getLastUnlockedUnitSequenceId(startWith: number): number { const maxSequenceId = this.getMaxSequenceId(); let myreturn = startWith; @@ -369,7 +350,6 @@ export class Testlet extends TestletContentElement { return myUnit ? myreturn : 0; } - // ..................................................................... lockUnitsIfTimeLeftNull(lock = false) { lock = lock || this.maxTimeLeft === 0; for (const tce of this.children) { @@ -384,9 +364,6 @@ export class Testlet extends TestletContentElement { } } - -// ..................................................................... -// ..................................................................... export class EnvironmentData { public appVersion: string; public browserVersion = ''; @@ -405,7 +382,7 @@ export class EnvironmentData { this.appVersion = appVersion; const deviceInfo = window.navigator.userAgent; - // browser + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + // browser // @ts-ignore const regex = /(MSIE|Trident|(?!Gecko.+)Firefox|(?!AppleWebKit.+Chrome.+)Safari(?!.+Edge)|(?!AppleWebKit.+)Chrome(?!.+Edge)|(?!AppleWebKit.+Chrome.+Safari.+)Edge|AppleWebKit(?!.+Chrome|.+Safari)|Gecko(?!.+Firefox))(?: |\/)([\d\.apre]+)/; // credit due to: https://gist.github.com/ticky/3909462#gistcomment-2245669 @@ -416,7 +393,7 @@ export class EnvironmentData { this.browserVersion = browserInfoSplits[1]; this.browserName = browserInfoSplits[0]; - // os + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + // os if (deviceInfo.indexOf('Windows') !== -1) { if (deviceInfo.indexOf('Windows NT 10.0') !== -1) { this.osName = 'Windows 10'; @@ -448,7 +425,6 @@ export class EnvironmentData { } } -// 7777777777777777777777777777777777777777777777777777777777777 export class MaxTimerData { timeLeftSeconds: number; // seconds testletId: string; @@ -470,7 +446,6 @@ export class MaxTimerData { } } -// 7777777777777777777777777777777777777777777777777777777777777 export class UnitDefLoadQueue { private unitsToLoad: {[sequenceId: string]: string} = {}; private loading = false; diff --git a/src/app/test-controller/test-controller.component.ts b/src/app/test-controller/test-controller.component.ts index 7e2fd1cd97cf028fad393573e57bdceac3ccd809..8c510020d59de7bbc7a31cfc4ca77274f735d1f5 100644 --- a/src/app/test-controller/test-controller.component.ts +++ b/src/app/test-controller/test-controller.component.ts @@ -20,9 +20,9 @@ import { import {from, Observable, of, Subscription, throwError} from 'rxjs'; import {concatMap, map, switchMap} from 'rxjs/operators'; import {CustomtextService} from 'iqb-components'; -import {MatDialog} from "@angular/material/dialog"; +import {MatDialog} from '@angular/material/dialog'; import {MatSnackBar} from '@angular/material/snack-bar'; -import {BookletConfig} from "../config/booklet-config"; +import {BookletConfig} from '../config/booklet-config'; import { TestMode } from '../config/test-mode'; @@ -42,7 +42,7 @@ export class TestControllerComponent implements OnInit, OnDestroy { private lastUnitSequenceId = 0; public loadProgressValue = 0; private lastTestletIndex = 0; - private timerValue: MaxTimerData = null; + public timerValue: MaxTimerData = null; private timerRunning = false; private allUnitIds: string[] = []; private loadedUnitCount = 0; @@ -69,9 +69,7 @@ export class TestControllerComponent implements OnInit, OnDestroy { .filter(function (e) { return e.nodeType === 1; }); } - // '''''''''''''''''''''''''''''''''''''''''''''''''''' // private: recursive reading testlets/units from xml - // '''''''''''''''''''''''''''''''''''''''''''''''''''' private addTestletContentFromBookletXml(targetTestlet: Testlet, node: Element) { const childElements = TestControllerComponent.getChildElements(node); if (childElements.length > 0) { @@ -153,9 +151,7 @@ export class TestControllerComponent implements OnInit, OnDestroy { } } - // '''''''''''''''''''''''''''''''''''''''''''''''''''' // private: reading booklet from xml - // '''''''''''''''''''''''''''''''''''''''''''''''''''' private getBookletFromXml(xmlString: string, loginMode: string): Testlet { let rootTestlet: Testlet = null; @@ -218,9 +214,7 @@ export class TestControllerComponent implements OnInit, OnDestroy { this.loadProgressValue = this.loadedUnitCount * 100 / this.lastUnitSequenceId; } - // '''''''''''''''''''''''''''''''''''''''''''''''''''' // private: read unitdata - // '''''''''''''''''''''''''''''''''''''''''''''''''''' private loadUnitOk (myUnit: UnitDef, sequenceId: number): Observable<number> { myUnit.setCanEnter('n', 'Fehler beim Laden'); return this.bs.getUnitData(this.tcs.testId, myUnit.id) @@ -273,17 +267,17 @@ export class TestControllerComponent implements OnInit, OnDestroy { myUnit.setCanEnter('y', ''); if (this.tcs.hasPlayer(playerId)) { - return of(sequenceId) + return of(sequenceId); } else { // to avoid multiple calls before returning: this.tcs.addPlayer(playerId, ''); return this.bs.getResource(this.tcs.testId, '', this.tcs.normaliseId(playerId, 'html'), true) .pipe( - switchMap(myData => { - if (typeof myData === 'number') { + switchMap((data: number|TaggedString) => { + if (typeof data === 'number') { return throwError(`error getting player "${playerId}"`); } else { - const player = myData as TaggedString; + const player = data as TaggedString; if (player.value.length > 0) { this.tcs.addPlayer(playerId, player.value); return of(sequenceId); @@ -301,8 +295,6 @@ export class TestControllerComponent implements OnInit, OnDestroy { ); } - // ##################################################################################### - // ##################################################################################### ngOnInit() { setTimeout(() => { this.mds.progressVisualEnabled = false; @@ -312,7 +304,7 @@ export class TestControllerComponent implements OnInit, OnDestroy { } this.errorReportingSubscription = this.mds.appError$.subscribe(e => { if (this.isProductionMode && this.tcs.testMode.saveResponses) { - console.error(e.label + " / " + e.description); + console.error(e.label + ' / ' + e.description); } this.tcs.testStatus$.next(TestStatus.ERROR); }); @@ -381,9 +373,9 @@ export class TestControllerComponent implements OnInit, OnDestroy { this.bs.getTestData(this.tcs.testId).subscribe(testDataUntyped => { if (testDataUntyped === false) { this.mds.appError$.next({ - label: "Konnte Testinformation nicht laden", - description: "TestController.Component: getTestData()", - category: "PROBLEM" + label: 'Konnte Testinformation nicht laden', + description: 'TestController.Component: getTestData()', + category: 'PROBLEM' }); } else { const testData = testDataUntyped as TestData; @@ -403,15 +395,18 @@ export class TestControllerComponent implements OnInit, OnDestroy { this.tcs.rootTestlet = this.getBookletFromXml(testData.xml, testData.mode); - document.documentElement.style.setProperty('--tc-unit-title-height', this.tcs.bookletConfig.unit_title === 'ON' ? this.mds.defaultTcUnitTitleHeight : '0'); - document.documentElement.style.setProperty('--tc-header-height', this.tcs.bookletConfig.unit_screenheader === 'OFF' ? '0' : this.mds.defaultTcHeaderHeight); - document.documentElement.style.setProperty('--tc-unit-page-nav-height', this.tcs.bookletConfig.page_navibuttons === 'SEPARATE_BOTTOM' ? this.mds.defaultTcUnitPageNavHeight : '0'); + document.documentElement.style.setProperty('--tc-unit-title-height', + this.tcs.bookletConfig.unit_title === 'ON' ? this.mds.defaultTcUnitTitleHeight : '0'); + document.documentElement.style.setProperty('--tc-header-height', + this.tcs.bookletConfig.unit_screenheader === 'OFF' ? '0' : this.mds.defaultTcHeaderHeight); + document.documentElement.style.setProperty('--tc-unit-page-nav-height', + this.tcs.bookletConfig.page_navibuttons === 'SEPARATE_BOTTOM' ? this.mds.defaultTcUnitPageNavHeight : '0'); if (this.tcs.rootTestlet === null) { this.mds.appError$.next({ - label: "Problem beim Laden der Testinformation", - description: "TestController.Component: getBookletFromXml(testData.xml)", - category: "PROBLEM" + label: 'Problem beim Laden der Testinformation', + description: 'TestController.Component: getBookletFromXml(testData.xml)', + category: 'PROBLEM' }); } else { this.tcs.maxUnitSequenceId = this.lastUnitSequenceId - 1; @@ -432,9 +427,9 @@ export class TestControllerComponent implements OnInit, OnDestroy { }, errorMessage => { this.mds.appError$.next({ - label: "Problem beim Laden der Testinformation", + label: 'Problem beim Laden der Testinformation', description: errorMessage, - category: "PROBLEM" + category: 'PROBLEM' }); }, () => { @@ -445,7 +440,7 @@ export class TestControllerComponent implements OnInit, OnDestroy { this.unitLoadBlobSubscription = from(this.unitLoadQueue).pipe( concatMap(queueEntry => { const unitSequ = Number(queueEntry.tag); - if (this.tcs.bookletConfig.loading_mode === "EAGER") { + if (this.tcs.bookletConfig.loading_mode === 'EAGER') { this.incrementProgressValueBy1(); } // avoid to load unit def if not necessary @@ -455,9 +450,9 @@ export class TestControllerComponent implements OnInit, OnDestroy { return this.bs.getResource(this.tcs.testId, queueEntry.tag, queueEntry.value).pipe( map(response => { if (typeof response === 'number') { - return throwError(`error loading voud ${this.tcs.testId} / ${queueEntry.tag} / ${queueEntry.value}: status ${response}`) + return throwError(`error loading voud ${this.tcs.testId} / ${queueEntry.tag} / ${queueEntry.value}: status ${response}`); } else { - return response + return response; } }) ); @@ -469,9 +464,9 @@ export class TestControllerComponent implements OnInit, OnDestroy { }, errorMessage => { this.mds.appError$.next({ - label: "Problem beim Laden der Testinformation", + label: 'Problem beim Laden der Testinformation', description: errorMessage, - category: "PROBLEM" + category: 'PROBLEM' }); }, () => { // complete @@ -479,14 +474,14 @@ export class TestControllerComponent implements OnInit, OnDestroy { this.loadProgressValue = 100; this.tcs.loadComplete = true; - if (this.tcs.bookletConfig.loading_mode === "EAGER") { + if (this.tcs.bookletConfig.loading_mode === 'EAGER') { this.tcs.setUnitNavigationRequest(navTarget.toString()); this.tcs.testStatus$.next(TestStatus.RUNNING); } } ); - if (this.tcs.bookletConfig.loading_mode === "LAZY") { + if (this.tcs.bookletConfig.loading_mode === 'LAZY') { this.tcs.setUnitNavigationRequest(navTarget.toString()); this.tcs.testStatus$.next(TestStatus.RUNNING); } @@ -497,12 +492,10 @@ export class TestControllerComponent implements OnInit, OnDestroy { } }); // getTestData } - }) // routingSubscription - }) // setTimeOut + }); // routingSubscription + }); // setTimeOut } - - // ##################################################################################### showReviewDialog() { if (this.tcs.rootTestlet === null) { this.snackBar.open('Kein Testheft verfügbar.', '', {duration: 3000}); @@ -559,28 +552,23 @@ export class TestControllerComponent implements OnInit, OnDestroy { private unsubscribeTestSubscriptions() { if (this.maxTimerSubscription !== null) { this.maxTimerSubscription.unsubscribe(); - this.maxTimerSubscription = null + this.maxTimerSubscription = null; } if (this.unitLoadXmlSubscription !== null) { this.unitLoadXmlSubscription.unsubscribe(); - this.unitLoadXmlSubscription = null + this.unitLoadXmlSubscription = null; } if (this.unitLoadBlobSubscription !== null) { this.unitLoadBlobSubscription.unsubscribe(); - this.unitLoadBlobSubscription = null + this.unitLoadBlobSubscription = null; } } - topMargin() { - this.isTopMargin = !this.isTopMargin; - } - bottomMargin() { this.isBottomMargin = !this.isBottomMargin; } - // % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ngOnDestroy() { if (this.routingSubscription !== null) { this.routingSubscription.unsubscribe(); diff --git a/src/app/test-controller/test-controller.interfaces.ts b/src/app/test-controller/test-controller.interfaces.ts index 4297d25c016e331925a9f56b3db2bbd7cc2861d8..b1562aa4742b058616ac6fd62da2332c66f41127 100644 --- a/src/app/test-controller/test-controller.interfaces.ts +++ b/src/app/test-controller/test-controller.interfaces.ts @@ -47,12 +47,12 @@ export interface TestData { } export enum TestStatus { - RUNNING = "RUNNING", - WAITING_LOAD_COMPLETE = "WAITING_LOAD_COMPLETE", - TERMINATED = "TERMINATED", - PAUSED = "PAUSED", - WAITING_LOAD_START = "WAITING_LOAD_START", - ERROR = "ERROR" + RUNNING = 'RUNNING', + WAITING_LOAD_COMPLETE = 'WAITING_LOAD_COMPLETE', + TERMINATED = 'TERMINATED', + PAUSED = 'PAUSED', + WAITING_LOAD_START = 'WAITING_LOAD_START', + ERROR = 'ERROR' } export interface UnitMenuButtonData { @@ -61,7 +61,7 @@ export interface UnitMenuButtonData { isCurrent: boolean; isDisabled: boolean; testletLabel: string; - testletMarker: string + testletMarker: string; } // for testcontroller service ++++++++++++++++++++++++++++++++++++++++ @@ -134,8 +134,8 @@ export interface ReviewDialogData { } export enum NoUnitFlag { - END = "end", - ERROR = "error" + END = 'end', + ERROR = 'error' } export interface KeyValuePairNumber { @@ -143,12 +143,12 @@ export interface KeyValuePairNumber { } export enum UnitNavigationTarget { - NEXT = "#next", - ERROR = "#error", - PREVIOUS = "#previous", - FIRST = "#first", - LAST = "#last", - END = "#end", - MENU = "#menu", - PAUSE = "#pause" + NEXT = '#next', + ERROR = '#error', + PREVIOUS = '#previous', + FIRST = '#first', + LAST = '#last', + END = '#end', + MENU = '#menu', + PAUSE = '#pause' } diff --git a/src/app/test-controller/test-controller.module.ts b/src/app/test-controller/test-controller.module.ts index 2f87d927c14ce1da21127d0e60cddea47c02e196..b7e53a18e151df9c8810b7d1a08931ab8a718af5 100644 --- a/src/app/test-controller/test-controller.module.ts +++ b/src/app/test-controller/test-controller.module.ts @@ -13,20 +13,20 @@ import { FlexLayoutModule } from '@angular/flex-layout'; import { ReviewDialogComponent } from './review-dialog/review-dialog.component'; import { ReactiveFormsModule } from '@angular/forms'; import { StartLockInputComponent } from './start-lock-input/start-lock-input.component'; -import {MatProgressSpinnerModule} from "@angular/material/progress-spinner"; +import {MatProgressSpinnerModule} from '@angular/material/progress-spinner'; import { MatTooltipModule } from '@angular/material/tooltip'; -import {MatSnackBarModule} from "@angular/material/snack-bar"; -import {MatCheckboxModule} from "@angular/material/checkbox"; +import {MatSnackBarModule} from '@angular/material/snack-bar'; +import {MatCheckboxModule} from '@angular/material/checkbox'; import { MatRadioModule } from '@angular/material/radio'; -import {MatCardModule} from "@angular/material/card"; -import {MatDialogModule} from "@angular/material/dialog"; -import {MatProgressBarModule} from "@angular/material/progress-bar"; -import {MatInputModule} from "@angular/material/input"; -import {MatFormFieldModule} from "@angular/material/form-field"; -import {MatMenuModule} from "@angular/material/menu"; -import {MatButtonModule} from "@angular/material/button"; -import {MatToolbarModule} from "@angular/material/toolbar"; -import {MatIconModule} from "@angular/material/icon"; +import {MatCardModule} from '@angular/material/card'; +import {MatDialogModule} from '@angular/material/dialog'; +import {MatProgressBarModule} from '@angular/material/progress-bar'; +import {MatInputModule} from '@angular/material/input'; +import {MatFormFieldModule} from '@angular/material/form-field'; +import {MatMenuModule} from '@angular/material/menu'; +import {MatButtonModule} from '@angular/material/button'; +import {MatToolbarModule} from '@angular/material/toolbar'; +import {MatIconModule} from '@angular/material/icon'; import { TestStatusComponent } from './test-status/test-status.component'; diff --git a/src/app/test-controller/test-controller.service.ts b/src/app/test-controller/test-controller.service.ts index 20e4cbe851bd0c88019616d7f50a234363743650..8f0cc821613cd0dfd24da8a6336fd3e0521206cf 100644 --- a/src/app/test-controller/test-controller.service.ts +++ b/src/app/test-controller/test-controller.service.ts @@ -14,8 +14,8 @@ import { UnitRestorePointData } from './test-controller.interfaces'; import {BackendService} from './backend.service'; -import {Router} from "@angular/router"; -import {TestMode} from "../config/test-mode"; +import {Router} from '@angular/router'; +import {TestMode} from '../config/test-mode'; import {BookletConfig} from '../config/booklet-config'; @Injectable({ @@ -72,7 +72,6 @@ export class TestControllerService { } public LastMaxTimerState: KeyValuePairNumber = {}; - // )))))))))))))))))))))))))))))))))))))))))))))))) private players: {[filename: string]: string} = {}; private unitDefinitions: {[sequenceId: number]: string} = {}; @@ -97,7 +96,6 @@ export class TestControllerService { } ); - // -- -- -- -- -- -- -- -- -- -- -- -- -- -- this.responsesToSave$.pipe( debounceTime(200)).subscribe(response => { this.bs.newUnitResponse(this.testId, Date.now(), response.unitDbKey, @@ -110,7 +108,6 @@ export class TestControllerService { ); } - // 7777777777777777777777777777777777777777777777777777777777777777777777 public resetDataStore() { this.players = {}; this.unitDefinitions = {}; @@ -133,7 +130,7 @@ export class TestControllerService { // this.bookletLoadComplete = false; } - // 7777777777777777777777777777777777777777777777777777777777777777777777 + // uppercase and add extension if not part public normaliseId(s: string, standardext = ''): string { s = s.trim().toUpperCase(); @@ -150,29 +147,30 @@ export class TestControllerService { return s; } - // 7777777777777777777777777777777777777777777777777777777777777777777777 public addPlayer (id: string, player: string) { this.players[this.normaliseId(id, 'html')] = player; } + public hasPlayer (id: string): boolean { return this.players.hasOwnProperty(this.normaliseId(id, 'html')); } + public getPlayer(id: string): string { return this.players[this.normaliseId(id, 'html')]; } - // 7777777777777777777777777777777777777777777777777777777777777777777777 public addUnitDefinition (sequenceId: number, uDef: string) { this.unitDefinitions[sequenceId] = uDef; } + public hasUnitDefinition (sequenceId: number): boolean { return this.unitDefinitions.hasOwnProperty(sequenceId); } + public getUnitDefinition(sequenceId: number): string { return this.unitDefinitions[sequenceId]; } - // 7777777777777777777777777777777777777777777777777777777777777777777777 // adding RestorePoint via newUnitRestorePoint below public hasUnitRestorePoint (sequenceId: number): boolean { return this.unitRestorePoints.hasOwnProperty(sequenceId); @@ -181,19 +179,19 @@ export class TestControllerService { return this.unitRestorePoints[sequenceId]; } - // 7777777777777777777777777777777777777777777777777777777777777777777777 // adding PresentationComplete via newUnitStatePresentationComplete below public addUnitPresentationComplete (sequenceId: number, uPC: string) { this.unitPresentationCompleteStates[sequenceId] = uPC; } + public hasUnitPresentationComplete (sequenceId: number): boolean { return this.unitPresentationCompleteStates.hasOwnProperty(sequenceId); } + public getUnitPresentationComplete(sequenceId: number): string { return this.unitPresentationCompleteStates[sequenceId]; } - // 7777777777777777777777777777777777777777777777777777777777777777777777 public addBookletLog(logKey: LogEntryKey, entry = '') { if (this.testMode.saveResponses) { const entryData = entry.length > 0 ? logKey + ': ' + JSON.stringify(entry) : logKey; @@ -204,6 +202,7 @@ export class TestControllerService { }); } } + public setBookletState(stateKey: LastStateKey, state: string) { if (this.testMode.saveResponses) { this.bs.setBookletState(this.testId, stateKey, state).subscribe(ok => { @@ -213,6 +212,7 @@ export class TestControllerService { }); } } + public addUnitLog(unitDbKey: string, logKey: LogEntryKey, entry = '') { if (this.testMode.saveResponses && this.testStatus$.getValue() === TestStatus.RUNNING) { this.bs.addUnitLog(this.testId, Date.now(), unitDbKey, @@ -223,6 +223,7 @@ export class TestControllerService { }); } } + public newUnitResponse(unitDbKey: string, response: string, responseType: string) { if (this.testMode.saveResponses) { this.responsesToSave$.next({ @@ -232,6 +233,7 @@ export class TestControllerService { }); } } + public newUnitRestorePoint(unitDbKey: string, unitSequenceId: number, restorePoint: string, postToServer: boolean) { this.unitRestorePoints[unitSequenceId] = restorePoint; if (postToServer && this.testMode.saveResponses) { @@ -241,6 +243,7 @@ export class TestControllerService { }); } } + public newUnitStatePresentationComplete(unitDbKey: string, unitSequenceId: number, presentationComplete: string) { this.unitPresentationCompleteStates[unitSequenceId] = presentationComplete; if (this.testMode.saveResponses) { @@ -258,7 +261,6 @@ export class TestControllerService { } } - // 7777777777777777777777777777777777777777777777777777777777777777777777 public startMaxTimer(testletId: string, timeLeftMinutes: number) { if (this.maxTimeIntervalSubscription !== null) { this.maxTimeIntervalSubscription.unsubscribe(); @@ -301,18 +303,18 @@ export class TestControllerService { public terminateTest() { if (this.testMode.saveResponses) { - this.bs.addBookletLog(this.testId, Date.now(), 'BOOKLETLOCKEDbyTESTEE').subscribe(OK =>{ + this.bs.addBookletLog(this.testId, Date.now(), 'BOOKLETLOCKEDbyTESTEE').subscribe(OK => { // TODO who evaluates TestStatus when navigating to root? if (OK) { this.bs.lockBooklet(this.testId).subscribe(bsOk => { this.testStatus$.next(bsOk ? TestStatus.TERMINATED : TestStatus.ERROR); this.router.navigate(['/']); - }) + }); } else { this.testStatus$.next(TestStatus.ERROR); this.router.navigate(['/']); } - }) + }); } else { this.testStatus$.next(TestStatus.TERMINATED); this.router.navigate(['/']); diff --git a/src/app/workspace-admin/backend.service.spec.ts b/src/app/workspace-admin/backend.service.spec.ts index 7d5789ab6b2884621c702ca26fb5d3dc8b8f9f62..fab66224bdd336702239d1a3343fca0f6cbb58d1 100644 --- a/src/app/workspace-admin/backend.service.spec.ts +++ b/src/app/workspace-admin/backend.service.spec.ts @@ -1,8 +1,8 @@ import { TestBed, inject } from '@angular/core/testing'; import { BackendService } from './backend.service'; -import {HttpClientModule} from "@angular/common/http"; -import {WorkspaceDataService} from "./workspacedata.service"; +import {HttpClientModule} from '@angular/common/http'; +import {WorkspaceDataService} from './workspacedata.service'; describe('HttpClient testing', () => { diff --git a/src/app/workspace-admin/backend.service.ts b/src/app/workspace-admin/backend.service.ts index 7a151d31c6fc03878fb5d77d1508582f5f0e2c43..7646f48ec8dc30182b07663252218aa4b8c5d0bd 100644 --- a/src/app/workspace-admin/backend.service.ts +++ b/src/app/workspace-admin/backend.service.ts @@ -1,11 +1,11 @@ -import { GetFileResponseData, CheckWorkspaceResponseData, SysCheckStatistics, - ReviewData, LogData, UnitResponse, ResultData } from './workspace.interfaces'; +import {GetFileResponseData, CheckWorkspaceResponseData, SysCheckStatistics, + ReviewData, LogData, UnitResponse, ResultData} from './workspace.interfaces'; import {Injectable, Inject} from '@angular/core'; -import { HttpClient } from '@angular/common/http'; +import {HttpClient} from '@angular/common/http'; import {Observable, of} from 'rxjs'; -import { catchError, map } from 'rxjs/operators'; -import {WorkspaceDataService} from "./workspacedata.service"; -import {ApiError, WorkspaceData} from "../app.interfaces"; +import {catchError, map} from 'rxjs/operators'; +import {WorkspaceDataService} from './workspacedata.service'; +import {ApiError, WorkspaceData} from '../app.interfaces'; @Injectable({ providedIn: 'root' @@ -25,7 +25,7 @@ export class BackendService { .pipe( catchError((err: ApiError) => { console.warn(`getWorkspaceData Api-Error: ${err.code} ${err.info} `); - return of(err.code) + return of(err.code); }) ); } @@ -36,7 +36,7 @@ export class BackendService { .pipe( catchError((err: ApiError) => { console.warn(`getFiles Api-Error: ${err.code} ${err.info} `); - return [] + return []; }) ); } @@ -51,7 +51,7 @@ export class BackendService { deleted: [], not_allowed: [`deleteFiles Api-Error: ${err.code} ${err.info} `], did_not_exist: [] - }) + }); }) ); } @@ -66,7 +66,7 @@ export class BackendService { errors: [`checkWorkspace Api-Error: ${err.code} ${err.info} `], infos: [], warnings: [] - }) + }); }) ); } @@ -77,7 +77,7 @@ export class BackendService { .pipe( catchError((err: ApiError) => { console.warn(`getResultData Api-Error: ${err.code} ${err.info} `); - return [] + return []; }) ); } @@ -88,7 +88,7 @@ export class BackendService { .pipe( catchError((err: ApiError) => { console.warn(`getResponses Api-Error: ${err.code} ${err.info} `); - return [] + return []; }) ); } @@ -99,7 +99,7 @@ export class BackendService { .pipe( catchError((err: ApiError) => { console.warn(`getLogs Api-Error: ${err.code} ${err.info} `); - return [] + return []; }) ); } @@ -110,7 +110,7 @@ export class BackendService { .pipe( catchError((err: ApiError) => { console.warn(`getReviews Api-Error: ${err.code} ${err.info} `); - return [] + return []; }) ); } @@ -122,7 +122,7 @@ export class BackendService { map(() => true), catchError((err: ApiError) => { console.warn(`deleteData Api-Error: ${err.code} ${err.info} `); - return of(false) + return of(false); }) ); } @@ -133,7 +133,7 @@ export class BackendService { .pipe( catchError((err: ApiError) => { console.warn(`getSysCheckReportList Api-Error: ${err.code} ${err.info} `); - return [] + return []; }) ); } @@ -157,7 +157,7 @@ export class BackendService { .pipe( catchError((err: ApiError) => { console.warn(`getSysCheckReport Api-Error: ${err.code} ${err.info} `); - return of(false) + return of(false); }) ); } @@ -172,7 +172,7 @@ export class BackendService { deleted: [], not_allowed: [`deleteSysCheckReports Api-Error: ${err.code} ${err.info} `], did_not_exist: [] - }) + }); }) ); } @@ -183,7 +183,7 @@ export class BackendService { .pipe( catchError((err: ApiError) => { console.warn(`downloadFile Api-Error: ${err.code} ${err.info} `); - return of(false) + return of(false); }) ); } diff --git a/src/app/workspace-admin/files/files.component.spec.ts b/src/app/workspace-admin/files/files.component.spec.ts index be034281f27297428faacc24ed2002f39e5f4a0c..53af9b0f52c50cd3f85d6bb92242d004bc0b42ed 100644 --- a/src/app/workspace-admin/files/files.component.spec.ts +++ b/src/app/workspace-admin/files/files.component.spec.ts @@ -1,12 +1,12 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { FilesComponent } from './files.component'; -import {HttpClientModule} from "@angular/common/http"; -import {BackendService} from "../backend.service"; -import {WorkspaceDataService} from "../workspacedata.service"; -import {MatDialogModule} from "@angular/material/dialog"; -import {MatSnackBarModule} from "@angular/material/snack-bar"; -import {MainDataService} from "../../maindata.service"; +import {HttpClientModule} from '@angular/common/http'; +import {BackendService} from '../backend.service'; +import {WorkspaceDataService} from '../workspacedata.service'; +import {MatDialogModule} from '@angular/material/dialog'; +import {MatSnackBarModule} from '@angular/material/snack-bar'; +import {MainDataService} from '../../maindata.service'; describe('FilesComponent', () => { let component: FilesComponent; diff --git a/src/app/workspace-admin/files/files.component.ts b/src/app/workspace-admin/files/files.component.ts index a0a1821d3e77254c0e9df8ff23f9fed2530a252e..9839853bbb53327d3e5f6c30595bef76fe30e5f1 100644 --- a/src/app/workspace-admin/files/files.component.ts +++ b/src/app/workspace-admin/files/files.component.ts @@ -10,7 +10,7 @@ import { ViewChild } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { MatSort } from '@angular/material/sort'; import { saveAs } from 'file-saver'; -import {MainDataService} from "../../maindata.service"; +import {MainDataService} from '../../maindata.service'; @Component({ templateUrl: './files.component.html', @@ -46,17 +46,15 @@ export class FilesComponent implements OnInit { setTimeout(() => { this.mds.setSpinnerOn(); this.updateFileList(); - }) + }); } - // *********************************************************************************** checkAll(isChecked: boolean) { this.serverfiles.data.forEach(element => { element.isChecked = isChecked; }); } - // *********************************************************************************** deleteFiles() { if (this.wds.wsRole === 'RW') { this.checkErrors = []; @@ -101,7 +99,6 @@ export class FilesComponent implements OnInit { this.snackBar.open(message.join('<br>'), message.length > 1 ? 'Achtung' : '', {duration: 1000}); this.updateFileList(); }); - // ========================================================= } }); } else { @@ -117,7 +114,7 @@ export class FilesComponent implements OnInit { } } - // *********************************************************************************** + updateFileList(empty = false) { this.checkErrors = []; this.checkWarnings = []; diff --git a/src/app/workspace-admin/files/iqb-files/iqbFilesUpload/iqbFilesUpload.component.ts b/src/app/workspace-admin/files/iqb-files/iqbFilesUpload/iqbFilesUpload.component.ts index 03efc74d60e60f1aa1a667ac887a6c50121af4d3..b07fd9833224fd2e35f9989765786cde62b7b4f8 100644 --- a/src/app/workspace-admin/files/iqb-files/iqbFilesUpload/iqbFilesUpload.component.ts +++ b/src/app/workspace-admin/files/iqb-files/iqbFilesUpload/iqbFilesUpload.component.ts @@ -3,7 +3,7 @@ import { HttpClient, HttpEventType, HttpHeaders, HttpParams, HttpEvent, HttpErrorResponse } from '@angular/common/http'; -import {ApiError} from "../../../../app.interfaces"; +import {ApiError} from '../../../../app.interfaces'; @Component({ @@ -19,7 +19,7 @@ import {ApiError} from "../../../../app.interfaces"; constructor( private myHttpClient: HttpClient) { } - // '''''''''''''''''''''''' + private _status: UploadStatus; get status(): UploadStatus { return this._status; @@ -30,7 +30,7 @@ import {ApiError} from "../../../../app.interfaces"; this.statusChangedEvent.emit(this); } - // '''''''''''''''''''''''' + private requestResponseText: string; get statustext(): string { let myreturn; @@ -102,7 +102,7 @@ import {ApiError} from "../../../../app.interfaces"; @Output() removeFileRequestEvent = new EventEmitter<IqbFilesUploadComponent>(); @Output() statusChangedEvent = new EventEmitter<IqbFilesUploadComponent>(); - private progressPercentage = 0; + public progressPercentage = 0; public loaded = 0; private total = 0; private _file: any; @@ -117,8 +117,7 @@ import {ApiError} from "../../../../app.interfaces"; this.upload(); } - // ================================================================== - private upload(): void { + upload(): void { if (this.status === UploadStatus.ready) { this.status = UploadStatus.busy; @@ -172,13 +171,12 @@ import {ApiError} from "../../../../app.interfaces"; this.requestResponseText = apiError.info; } } else { - this.requestResponseText = 'Hochladen nicht erfolgreich.' + this.requestResponseText = 'Hochladen nicht erfolgreich.'; } }); } } - // ================================================================== public remove(): void { if (this.fileUploadSubscription) { this.fileUploadSubscription.unsubscribe(); diff --git a/src/app/workspace-admin/files/iqb-files/iqbFilesUploadInputFor/iqbFilesUploadInputFor.directive.ts b/src/app/workspace-admin/files/iqb-files/iqbFilesUploadInputFor/iqbFilesUploadInputFor.directive.ts index 8d309c375563c0c4ed74839bff62f3dec17d667c..1f05e00f2e8991f4383f84d007e40b8604c41d1c 100644 --- a/src/app/workspace-admin/files/iqb-files/iqbFilesUploadInputFor/iqbFilesUploadInputFor.directive.ts +++ b/src/app/workspace-admin/files/iqb-files/iqbFilesUploadInputFor/iqbFilesUploadInputFor.directive.ts @@ -1,58 +1,53 @@ import { Directive, ElementRef, HostListener, Input } from '@angular/core'; +@Directive({ + selector: 'input[iqbFilesUploadInputFor], div[iqbFilesUploadInputFor]', +}) +export class IqbFilesUploadInputForDirective { - @Directive({ - selector: 'input[iqbFilesUploadInputFor], div[iqbFilesUploadInputFor]', - }) - export class IqbFilesUploadInputForDirective { + private _queue: any = null; + private _element: HTMLElement; - private _queue: any = null; - private _element: HTMLElement; - // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - constructor(private element: ElementRef) { - this._element = this.element.nativeElement; - } - - - @Input('iqbFilesUploadInputFor') - set filesUploadQueue(value: any) { - if (value) { - this._queue = value; - } - } - - // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - @HostListener('change') - public onChange(): any { - const files = this.element.nativeElement.files; - // this.onFileSelected.emit(files); + constructor(private element: ElementRef) { + this._element = this.element.nativeElement; + } - for (let i = 0; i < files.length; i++) { - this._queue.add(files[i]); + @Input('iqbFilesUploadInputFor') + set filesUploadQueue(value: any) { + if (value) { + this._queue = value; } - this.element.nativeElement.value = ''; - } + } - // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - @HostListener('drop', [ '$event' ]) - public onDrop(event: any): any { - const files = event.dataTransfer.files; - // this.onFileSelected.emit(files); + @HostListener('change') + public onChange(): any { + const files = this.element.nativeElement.files; + // this.onFileSelected.emit(files); - for (let i = 0; i < files.length; i++) { - this._queue.add(files[i]); - } - event.preventDefault(); - event.stopPropagation(); - this.element.nativeElement.value = ''; + for (let i = 0; i < files.length; i++) { + this._queue.add(files[i]); } + this.element.nativeElement.value = ''; + } - // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - @HostListener('dragover', [ '$event' ]) - public onDropOver(event: any): any { - event.preventDefault(); + @HostListener('drop', [ '$event' ]) + public onDrop(event: any): any { + const files = event.dataTransfer.files; + // this.onFileSelected.emit(files); + + for (let i = 0; i < files.length; i++) { + this._queue.add(files[i]); } + event.preventDefault(); + event.stopPropagation(); + this.element.nativeElement.value = ''; + } + @HostListener('dragover', [ '$event' ]) + public onDropOver(event: any): any { + event.preventDefault(); } + +} diff --git a/src/app/workspace-admin/files/iqb-files/iqbFilesUploadQueue/iqbFilesUploadQueue.component.ts b/src/app/workspace-admin/files/iqb-files/iqbFilesUploadQueue/iqbFilesUploadQueue.component.ts index a38670d4992230545f7e9315e56786eeffaa5b95..eab15d540e764ad76096dc56dabe0aa9df073474 100644 --- a/src/app/workspace-admin/files/iqb-files/iqbFilesUploadQueue/iqbFilesUploadQueue.component.ts +++ b/src/app/workspace-admin/files/iqb-files/iqbFilesUploadQueue/iqbFilesUploadQueue.component.ts @@ -16,7 +16,7 @@ import { HttpHeaders, HttpParams } from '@angular/common/http'; @ViewChildren(IqbFilesUploadComponent) fileUploads: QueryList<IqbFilesUploadComponent>; public files: Array<any> = []; - private disableClearButton = true; + public disableClearButton = true; /* Http request input bindings */ @Input() @@ -49,29 +49,25 @@ import { HttpHeaders, HttpParams } from '@angular/common/http'; @Output() uploadCompleteEvent = new EventEmitter<IqbFilesUploadQueueComponent>(); - // +++++++++++++++++++++++++++++++++++++++++++++++++ add(file: any) { this.files.push(file); } - // +++++++++++++++++++++++++++++++++++++++++++++++++ public removeAll() { this.files.splice(0, this.files.length); } - // +++++++++++++++++++++++++++++++++++++++++++++++++ ngOnDestroy() { if (this.files) { this.removeAll(); } } - // +++++++++++++++++++++++++++++++++++++++++++++++++ removeFile(fileToRemove: IqbFilesUploadComponent) { this.files.splice(fileToRemove.id, 1); } -/* // +++++++++++++++++++++++++++++++++++++++++++++++++ +/* updateStatus() { this.numberOfErrors = 0; this.numberOfUploads = 0; @@ -82,7 +78,6 @@ import { HttpHeaders, HttpParams } from '@angular/common/http'; }); } */ - // +++++++++++++++++++++++++++++++++++++++++++++++++ analyseStatus() { let someoneiscomplete = false; let someoneisbusy = false; diff --git a/src/app/workspace-admin/results/results.component.spec.ts b/src/app/workspace-admin/results/results.component.spec.ts index 8459e696515a3783ae0e28c4806ab3f1f1b67b5a..5ca49495fba82b985291f72e48341a52eddc31aa 100644 --- a/src/app/workspace-admin/results/results.component.spec.ts +++ b/src/app/workspace-admin/results/results.component.spec.ts @@ -1,11 +1,11 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { ResultsComponent } from './results.component'; -import {HttpClientModule} from "@angular/common/http"; -import {BackendService} from "../backend.service"; -import {WorkspaceDataService} from "../workspacedata.service"; -import {MatDialogModule} from "@angular/material/dialog"; -import {MatSnackBarModule} from "@angular/material/snack-bar"; +import {HttpClientModule} from '@angular/common/http'; +import {BackendService} from '../backend.service'; +import {WorkspaceDataService} from '../workspacedata.service'; +import {MatDialogModule} from '@angular/material/dialog'; +import {MatSnackBarModule} from '@angular/material/snack-bar'; describe('ResultsComponent', () => { let component: ResultsComponent; diff --git a/src/app/workspace-admin/results/results.component.ts b/src/app/workspace-admin/results/results.component.ts index df968035f98b6a2237b909b499257547fe5f3f1d..3125b27b132305c56de61e39ac6963bc6226bf63 100644 --- a/src/app/workspace-admin/results/results.component.ts +++ b/src/app/workspace-admin/results/results.component.ts @@ -10,7 +10,7 @@ import { MatTableDataSource } from '@angular/material/table'; import { SelectionModel } from '@angular/cdk/collections'; import { saveAs } from 'file-saver'; import { ResultData, UnitResponse, ReviewData } from '../workspace.interfaces'; -import {MainDataService} from "../../maindata.service"; +import {MainDataService} from '../../maindata.service'; @Component({ @@ -37,7 +37,7 @@ export class ResultsComponent implements OnInit { setTimeout(() => { this.mds.setSpinnerOn(); this.updateTable(); - }) + }); } updateTable() { @@ -130,7 +130,6 @@ export class ResultsComponent implements OnInit { } } - // 444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 downloadReviewsCSV() { if (this.tableselectionCheckbox.selected.length > 0) { const selectedGroups: string[] = []; @@ -192,7 +191,6 @@ export class ResultsComponent implements OnInit { } } - // 444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 downloadLogsCSV() { if (this.tableselectionCheckbox.selected.length > 0) { const selectedGroups: string[] = []; @@ -260,7 +258,7 @@ export class ResultsComponent implements OnInit { this.snackBar.open('Löschen nicht erfolgreich.', 'Fehler', {duration: 3000}); } this.tableselectionCheckbox.clear(); - this.updateTable() + this.updateTable(); }); } }); diff --git a/src/app/workspace-admin/syscheck/syscheck.component.spec.ts b/src/app/workspace-admin/syscheck/syscheck.component.spec.ts index 4377c7b57c2ef0f56dd511b73df2c8cd784e5e82..420681c31680e6682afcc209ca0be35fb64592a8 100644 --- a/src/app/workspace-admin/syscheck/syscheck.component.spec.ts +++ b/src/app/workspace-admin/syscheck/syscheck.component.spec.ts @@ -1,11 +1,11 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { SyscheckComponent } from './syscheck.component'; -import {HttpClientModule} from "@angular/common/http"; -import {BackendService} from "../backend.service"; -import {MatDialogModule} from "@angular/material/dialog"; -import {MatSnackBarModule} from "@angular/material/snack-bar"; -import {WorkspaceDataService} from "../workspacedata.service"; +import {HttpClientModule} from '@angular/common/http'; +import {BackendService} from '../backend.service'; +import {MatDialogModule} from '@angular/material/dialog'; +import {MatSnackBarModule} from '@angular/material/snack-bar'; +import {WorkspaceDataService} from '../workspacedata.service'; describe('Workspace-Admin: SyscheckComponent', () => { let component: SyscheckComponent; diff --git a/src/app/workspace-admin/syscheck/syscheck.component.ts b/src/app/workspace-admin/syscheck/syscheck.component.ts index 0c53dd268c103e91809df632242166ea359e8b99..e8f5916b0895748485d70c5f321aad207dcad089 100644 --- a/src/app/workspace-admin/syscheck/syscheck.component.ts +++ b/src/app/workspace-admin/syscheck/syscheck.component.ts @@ -8,7 +8,7 @@ import { MatTableDataSource } from '@angular/material/table'; import { SelectionModel } from '@angular/cdk/collections'; import { saveAs } from 'file-saver'; import { SysCheckStatistics } from '../workspace.interfaces'; -import {MainDataService} from "../../maindata.service"; +import {MainDataService} from '../../maindata.service'; @Component({ @@ -35,7 +35,7 @@ export class SyscheckComponent implements OnInit { setTimeout(() => { this.mds.setSpinnerOn(); this.updateTable(); - }) + }); } updateTable() { diff --git a/src/app/workspace-admin/workspace.component.ts b/src/app/workspace-admin/workspace.component.ts index 0a388eb8bff501f87571e89501acb3b220363374..8cc26bef2c15653ffc630e40090629580d315f73 100644 --- a/src/app/workspace-admin/workspace.component.ts +++ b/src/app/workspace-admin/workspace.component.ts @@ -2,7 +2,7 @@ import { WorkspaceDataService } from './workspacedata.service'; import { ActivatedRoute } from '@angular/router'; import { Subscription } from 'rxjs'; import { Component, OnInit, OnDestroy } from '@angular/core'; -import {BackendService} from "./backend.service"; +import {BackendService} from './backend.service'; @Component({ @@ -28,7 +28,7 @@ export class WorkspaceComponent implements OnInit, OnDestroy { this.wds.wsRole = wsData.role; } } - ) + ); }); } diff --git a/src/app/workspace-admin/workspace.interfaces.ts b/src/app/workspace-admin/workspace.interfaces.ts index 75df462de5143db0af7e28afd402d74c5b8877b5..d8d9e04943446a63abdbd5712b3b9007d6b9b6c0 100644 --- a/src/app/workspace-admin/workspace.interfaces.ts +++ b/src/app/workspace-admin/workspace.interfaces.ts @@ -1,7 +1,7 @@ export interface WorkspaceData { id: string; name: string; - role: "RW" | "RO" | "n.d."; + role: 'RW' | 'RO' | 'n.d.'; } export interface GetFileResponseData { @@ -15,8 +15,7 @@ export interface GetFileResponseData { isChecked: boolean; } -export interface CheckWorkspaceResponseData -{ +export interface CheckWorkspaceResponseData { errors: string[]; infos: string[]; warnings: string[];