From 6b2029c57f8f9b219ff0f402228e10782caede80 Mon Sep 17 00:00:00 2001 From: mechtelm <mechtel@iqb.hu-berlin.de> Date: Tue, 28 Jan 2020 18:43:49 +0100 Subject: [PATCH] * making workspace and superadmin modules lazy loading * problem: interceptor in workspace module ignored! --- package.json | 2 +- src/app/app-routing.module.ts | 6 ++--- src/app/app.interceptor.ts | 1 + src/app/app.module.ts | 8 ++----- src/app/iqb-files/iqb-files.module.ts | 6 ++--- src/app/start/start.component.ts | 2 +- src/app/superadmin/backend.service.ts | 4 ++-- .../superadmin/superadmin-routing.module.ts | 2 +- src/app/superadmin/superadmin.module.ts | 8 +++---- src/app/superadmin/users/users.component.ts | 6 +++-- .../workspaces/workspaces.component.ts | 2 +- src/app/workspace/backend.service.ts | 4 ++-- src/app/workspace/files/files.component.ts | 3 +-- .../workspace/monitor/monitor.component.ts | 2 +- .../workspace/results/results.component.ts | 24 ++++++++++--------- .../workspace/syscheck/syscheck.component.ts | 7 +++--- src/app/workspace/workspace-routing.module.ts | 4 ++-- src/app/workspace/workspace.component.ts | 9 +++---- src/app/workspace/workspace.interceptor.ts | 8 +++++-- src/app/workspace/workspace.module.ts | 12 +++------- src/app/workspace/workspacedata.service.ts | 2 +- 21 files changed, 55 insertions(+), 67 deletions(-) diff --git a/package.json b/package.json index a6e8d29c..cdebdf44 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "@angular/platform-browser-dynamic": "~8.2.14", "@angular/router": "~8.2.14", "@types/file-saver": "^2.0.1", - "iqb-components": "1.5.0", + "iqb-components": "1.6.0", "core-js": "^3.6.4", "file-saver": "^2.0.2", "hammerjs": "^2.0.8", diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 97b8c11a..fd48278b 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -1,17 +1,15 @@ import { AboutComponent } from './about/about.component'; -import { SuperadminComponent } from './superadmin/superadmin.component'; import { StartComponent } from './start/start.component'; import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; -import { WorkspaceComponent } from './workspace'; const routes: Routes = [ {path: '', redirectTo: 'start', pathMatch: 'full'}, {path: 'start', component: StartComponent}, - {path: 'ws', component: WorkspaceComponent}, {path: 'about', component: AboutComponent}, - {path: 'superadmin', component: SuperadminComponent} + {path: 'ws', loadChildren: './workspace/workspace.module#WorkspaceModule'}, + {path: 'superadmin', loadChildren: './superadmin/superadmin.module#SuperadminModule'} ]; @NgModule({ diff --git a/src/app/app.interceptor.ts b/src/app/app.interceptor.ts index a3db39b8..31dcca3d 100644 --- a/src/app/app.interceptor.ts +++ b/src/app/app.interceptor.ts @@ -25,6 +25,7 @@ export class AuthInterceptor implements HttpInterceptor { } }); + console.log('AuthInterceptor'); return next.handle(requestA); } } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 9804ce88..083e75a0 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -23,12 +23,10 @@ import { MatTooltipModule } from '@angular/material/tooltip'; import { AppComponent } from './app.component'; import { AppRoutingModule } from './app-routing.module'; -import { WorkspaceModule } from './workspace'; import { StartComponent } from './start/start.component'; -import { SuperadminModule } from './superadmin'; import { FlexLayoutModule } from '@angular/flex-layout'; import { httpInterceptorProviders } from './app.interceptor'; -import {IqbComponents} from "iqb-components"; +import {IqbComponentsModule} from "iqb-components"; @NgModule({ declarations: [ @@ -53,10 +51,8 @@ import {IqbComponents} from "iqb-components"; MatTabsModule, ReactiveFormsModule, HttpClientModule, - WorkspaceModule, - SuperadminModule, AppRoutingModule, - IqbComponents, + IqbComponentsModule, MatCardModule, MatProgressSpinnerModule, FlexLayoutModule diff --git a/src/app/iqb-files/iqb-files.module.ts b/src/app/iqb-files/iqb-files.module.ts index becf4803..02d6c9ab 100644 --- a/src/app/iqb-files/iqb-files.module.ts +++ b/src/app/iqb-files/iqb-files.module.ts @@ -1,4 +1,3 @@ -import { IqbComponents } from 'iqb-components'; import { NgModule } from '@angular/core'; import { IqbFilesUploadComponent } from './iqbFilesUpload/iqbFilesUpload.component'; import { IqbFilesUploadQueueComponent } from './iqbFilesUploadQueue/iqbFilesUploadQueue.component'; @@ -8,8 +7,8 @@ import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; import { MatProgressBarModule } from '@angular/material/progress-bar'; import { MatIconModule } from '@angular/material/icon'; -import { HttpClientModule } from '@angular/common/http'; import { CommonModule } from '@angular/common'; +import {IqbComponentsModule} from "iqb-components"; @NgModule({ @@ -18,8 +17,7 @@ import { CommonModule } from '@angular/common'; MatProgressBarModule, MatIconModule, MatCardModule, - HttpClientModule, - IqbComponents, + IqbComponentsModule, CommonModule ], declarations: [ diff --git a/src/app/start/start.component.ts b/src/app/start/start.component.ts index 49f61310..ba5b72eb 100644 --- a/src/app/start/start.component.ts +++ b/src/app/start/start.component.ts @@ -1,11 +1,11 @@ import { LoginData, WorkspaceData } from '../app.interfaces'; import { BackendService } from '../backend.service'; -import { ServerError } from 'iqb-components'; import { MainDataService } from '../maindata.service'; import { Router } from '@angular/router'; import { Component, OnInit, OnDestroy } from '@angular/core'; import { FormGroup, FormBuilder, Validators } from '@angular/forms'; import { Subscription } from 'rxjs'; +import {ServerError} from "iqb-components"; @Component({ diff --git a/src/app/superadmin/backend.service.ts b/src/app/superadmin/backend.service.ts index bb981740..d902c489 100644 --- a/src/app/superadmin/backend.service.ts +++ b/src/app/superadmin/backend.service.ts @@ -1,4 +1,4 @@ -import { Injectable, Inject } from '@angular/core'; +import {Injectable, Inject, SkipSelf} from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Observable, of } from 'rxjs'; import { catchError } from 'rxjs/operators'; @@ -11,7 +11,7 @@ export class BackendService { constructor( @Inject('SERVER_URL') private readonly serverUrl: string, - private http: HttpClient) { + @SkipSelf() private http: HttpClient) { this.serverUrl = this.serverUrl + 'php/sys.php/'; } diff --git a/src/app/superadmin/superadmin-routing.module.ts b/src/app/superadmin/superadmin-routing.module.ts index 8a09ecc7..edbabde8 100644 --- a/src/app/superadmin/superadmin-routing.module.ts +++ b/src/app/superadmin/superadmin-routing.module.ts @@ -8,7 +8,7 @@ import { SuperadminComponent } from './superadmin.component'; const routes: Routes = [ { - path: 'superadmin', + path: '', component: SuperadminComponent, children: [ {path: '', redirectTo: 'users', pathMatch: 'full'}, diff --git a/src/app/superadmin/superadmin.module.ts b/src/app/superadmin/superadmin.module.ts index 7159f02a..2d0619c7 100644 --- a/src/app/superadmin/superadmin.module.ts +++ b/src/app/superadmin/superadmin.module.ts @@ -1,5 +1,4 @@ import { NgModule } from '@angular/core'; -import { HttpClientModule } from '@angular/common/http'; import { CommonModule } from '@angular/common'; import { MatButtonModule } from '@angular/material/button'; import { MatCheckboxModule } from '@angular/material/checkbox'; @@ -23,12 +22,12 @@ import { WorkspacesComponent } from './workspaces/workspaces.component'; import { UsersComponent } from './users/users.component'; import { SuperadminComponent } from './superadmin.component'; import { BackendService } from './backend.service'; -import { IqbFilesModule } from '../iqb-files/iqb-files.module'; -import { IqbComponents } from 'iqb-components'; +import { IqbFilesModule } from '../iqb-files'; import { NewuserComponent } from './users/newuser/newuser.component'; import { NewpasswordComponent } from './users/newpassword/newpassword.component'; import { NewworkspaceComponent } from './workspaces/newworkspace/newworkspace.component'; import { EditworkspaceComponent } from './workspaces/editworkspace/editworkspace.component'; +import {IqbComponentsModule} from "iqb-components"; @NgModule({ @@ -36,14 +35,13 @@ import { EditworkspaceComponent } from './workspaces/editworkspace/editworkspace CommonModule, SuperadminRoutingModule, IqbFilesModule, - IqbComponents, + IqbComponentsModule, MatTableModule, MatTabsModule, MatIconModule, MatSelectModule, MatCheckboxModule, MatSortModule, - HttpClientModule, ReactiveFormsModule, MatProgressSpinnerModule, MatDialogModule, diff --git a/src/app/superadmin/users/users.component.ts b/src/app/superadmin/users/users.component.ts index a4ac3999..4cc23e19 100644 --- a/src/app/superadmin/users/users.component.ts +++ b/src/app/superadmin/users/users.component.ts @@ -10,8 +10,10 @@ import { MatSnackBar } from '@angular/material/snack-bar'; import { MatSort } from '@angular/material/sort'; import { FormGroup } from '@angular/forms'; import { SelectionModel } from '@angular/cdk/collections'; -import { ConfirmDialogComponent, ConfirmDialogData, MessageDialogComponent, - MessageDialogData, MessageType } from 'iqb-components'; +import { + ConfirmDialogComponent, ConfirmDialogData, MessageDialogComponent, + MessageDialogData, MessageType +} from "iqb-components"; import { Subscription } from 'rxjs'; import { MainDataService } from 'src/app/maindata.service'; diff --git a/src/app/superadmin/workspaces/workspaces.component.ts b/src/app/superadmin/workspaces/workspaces.component.ts index cd077da3..86a001c3 100644 --- a/src/app/superadmin/workspaces/workspaces.component.ts +++ b/src/app/superadmin/workspaces/workspaces.component.ts @@ -11,7 +11,7 @@ import { MatSort } from '@angular/material/sort'; import { FormGroup } from '@angular/forms'; import { SelectionModel } from '@angular/cdk/collections'; import { ConfirmDialogComponent, ConfirmDialogData, MessageDialogComponent, - MessageDialogData, MessageType } from 'iqb-components'; + MessageDialogData, MessageType } from "iqb-components"; import { Subscription } from 'rxjs'; import { MainDataService } from 'src/app/maindata.service'; diff --git a/src/app/workspace/backend.service.ts b/src/app/workspace/backend.service.ts index 7e67f5b0..e79ed687 100644 --- a/src/app/workspace/backend.service.ts +++ b/src/app/workspace/backend.service.ts @@ -1,6 +1,6 @@ import { GetFileResponseData, CheckWorkspaceResponseData, BookletsStarted, SysCheckStatistics, ReviewData, LogData, UnitResponse, ResultData, MonitorData } from './workspace.interfaces'; -import { Injectable, Inject } from '@angular/core'; +import {Injectable, Inject, SkipSelf} from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Observable } from 'rxjs'; import { catchError } from 'rxjs/operators'; @@ -12,7 +12,7 @@ export class BackendService { constructor( @Inject('SERVER_URL') private readonly serverUrl: string, - private http: HttpClient) { + @SkipSelf() private http: HttpClient) { this.serverUrlSlim = this.serverUrl + 'php/ws.php/'; this.serverUrl = this.serverUrl + 'php/'; diff --git a/src/app/workspace/files/files.component.ts b/src/app/workspace/files/files.component.ts index d9879ac5..447344b8 100644 --- a/src/app/workspace/files/files.component.ts +++ b/src/app/workspace/files/files.component.ts @@ -1,9 +1,8 @@ import { MainDataService } from '../../maindata.service'; -import { ServerError } from "iqb-components"; import { WorkspaceDataService } from '../workspacedata.service'; import { GetFileResponseData, CheckWorkspaceResponseData } from '../workspace.interfaces'; import { ConfirmDialogComponent, ConfirmDialogData, MessageDialogComponent, - MessageDialogData, MessageType } from 'iqb-components'; + MessageDialogData, MessageType, ServerError } from "iqb-components"; import { Subscription } from 'rxjs'; import { MatTableDataSource } from '@angular/material/table'; import { MatSnackBar } from '@angular/material/snack-bar'; diff --git a/src/app/workspace/monitor/monitor.component.ts b/src/app/workspace/monitor/monitor.component.ts index 090070ea..8dbad30b 100644 --- a/src/app/workspace/monitor/monitor.component.ts +++ b/src/app/workspace/monitor/monitor.component.ts @@ -9,7 +9,7 @@ import { SelectionModel } from '@angular/cdk/collections'; import { saveAs } from 'file-saver'; import { MonitorData } from '../workspace.interfaces'; import { Subscription } from 'rxjs'; -import { ServerError } from 'iqb-components'; +import {ServerError} from "iqb-components"; @Component({ diff --git a/src/app/workspace/results/results.component.ts b/src/app/workspace/results/results.component.ts index bf31c736..5cec77cd 100644 --- a/src/app/workspace/results/results.component.ts +++ b/src/app/workspace/results/results.component.ts @@ -1,8 +1,8 @@ -import { LogData } from './../workspace.interfaces'; -import { WorkspaceDataService } from './../workspacedata.service'; -import { ConfirmDialogComponent, ConfirmDialogData } from 'iqb-components'; +import { LogData } from '../workspace.interfaces'; +import { WorkspaceDataService } from '../workspacedata.service'; +import { ConfirmDialogComponent, ConfirmDialogData } from "iqb-components"; import { Component, OnInit, ViewChild, OnDestroy } from '@angular/core'; -import { BackendService } from './../backend.service'; +import { BackendService } from '../backend.service'; import { MatDialog } from '@angular/material/dialog'; import { MatSnackBar } from '@angular/material/snack-bar'; import { MatSort } from '@angular/material/sort'; @@ -35,7 +35,7 @@ export class ResultsComponent implements OnInit, OnDestroy { ) { } ngOnInit() { - this.workspaceIdSubscription = this.wds.workspaceId$.subscribe(ws => { + this.workspaceIdSubscription = this.wds.workspaceId$.subscribe(() => { this.updateTable(); }); } @@ -110,7 +110,7 @@ export class ResultsComponent implements OnInit, OnDestroy { myCsvData += lineDelimiter; } }); - var blob = new Blob([myCsvData], {type: "text/csv;charset=utf-8"}); + const blob = new Blob([myCsvData], {type: "text/csv;charset=utf-8"}); saveAs(blob, "iqb-testcenter-responses.csv"); } else { this.snackBar.open('Keine Daten verfügbar.', 'Fehler', {duration: 3000}); @@ -157,8 +157,10 @@ export class ResultsComponent implements OnInit, OnDestroy { responseData.forEach((resp: ReviewData) => { if ((resp.entry !== null) && (resp.entry.length > 0)) { - myCsvData += '"' + resp.groupname + '"' + columnDelimiter + '"' + resp.loginname + '"' + columnDelimiter + '"' + resp.code + '"' + columnDelimiter + - '"' + resp.bookletname + '"' + columnDelimiter + '"' + resp.unitname + '"' + columnDelimiter + '"' + resp.priority + '"' + columnDelimiter; + myCsvData += '"' + resp.groupname + '"' + columnDelimiter + '"' + resp.loginname + '"' + + columnDelimiter + '"' + resp.code + '"' + columnDelimiter + '"' + resp.bookletname + '"' + + columnDelimiter + '"' + resp.unitname + '"' + columnDelimiter + '"' + + resp.priority + '"' + columnDelimiter; const resp_categories = resp.categories.split(' '); allCategories.forEach(s => { if (resp_categories.includes(s)) { @@ -170,7 +172,7 @@ export class ResultsComponent implements OnInit, OnDestroy { myCsvData += '"' + resp.reviewtime + '"' + columnDelimiter + '"' + resp.entry + '"' + lineDelimiter; } }); - var blob = new Blob([myCsvData], {type: "text/csv;charset=utf-8"}); + const blob = new Blob([myCsvData], {type: "text/csv;charset=utf-8"}); saveAs(blob, "iqb-testcenter-reviews.csv"); } else { this.snackBar.open('Keine Daten verfügbar.', 'Fehler', {duration: 3000}); @@ -204,7 +206,7 @@ export class ResultsComponent implements OnInit, OnDestroy { resp.timestamp.toString() + '"' + columnDelimiter + resp.logentry.replace(/\\"/g, '""') + lineDelimiter; } }); - var blob = new Blob([myCsvData], {type: "text/csv;charset=utf-8"}); + const blob = new Blob([myCsvData], {type: "text/csv;charset=utf-8"}); saveAs(blob, "iqb-testcenter-logs.csv"); } else { this.snackBar.open('Keine Daten verfügbar.', 'Fehler', {duration: 3000}); @@ -243,7 +245,7 @@ export class ResultsComponent implements OnInit, OnDestroy { if (result !== false) { // ========================================================= this.dataLoading = true; - this.bs.deleteData(selectedGroups).subscribe((deleteOk: boolean) => { + this.bs.deleteData(selectedGroups).subscribe(() => { this.tableselectionCheckbox.clear(); this.dataLoading = false; }); diff --git a/src/app/workspace/syscheck/syscheck.component.ts b/src/app/workspace/syscheck/syscheck.component.ts index b95e5d30..8d1952fc 100644 --- a/src/app/workspace/syscheck/syscheck.component.ts +++ b/src/app/workspace/syscheck/syscheck.component.ts @@ -1,6 +1,6 @@ -import { ConfirmDialogComponent, ConfirmDialogData } from 'iqb-components'; +import { ConfirmDialogComponent, ConfirmDialogData } from "iqb-components"; import { Component, OnInit, ViewChild } from '@angular/core'; -import { BackendService } from './../backend.service'; +import { BackendService } from '../backend.service'; import { MatDialog } from '@angular/material/dialog'; import { MatSnackBar } from '@angular/material/snack-bar'; import { MatSort } from '@angular/material/sort'; @@ -17,7 +17,6 @@ import { SysCheckStatistics } from '../workspace.interfaces'; export class SyscheckComponent implements OnInit { displayedColumns: string[] = ['selectCheckbox', 'syscheckLabel', 'number', 'details']; public resultDataSource = new MatTableDataSource<SysCheckStatistics>([]); - private isAdmin = false; // prepared for selection if needed sometime public tableselectionCheckbox = new SelectionModel<SysCheckStatistics>(true, []); public dataLoading = false; @@ -114,7 +113,7 @@ export class SyscheckComponent implements OnInit { if (result !== false) { // ========================================================= this.dataLoading = true; - this.bs.deleteSysCheckReports(selectedReports).subscribe((deleteOk: boolean) => { + this.bs.deleteSysCheckReports(selectedReports).subscribe(() => { this.tableselectionCheckbox.clear(); this.dataLoading = false; }); diff --git a/src/app/workspace/workspace-routing.module.ts b/src/app/workspace/workspace-routing.module.ts index d4068ec0..98fd9e28 100644 --- a/src/app/workspace/workspace-routing.module.ts +++ b/src/app/workspace/workspace-routing.module.ts @@ -1,14 +1,14 @@ import { SyscheckComponent } from './syscheck/syscheck.component'; import { MonitorComponent } from './monitor/monitor.component'; import { ResultsComponent } from './results/results.component'; -import { NgModule, Component } from '@angular/core'; +import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import { FilesComponent } from './files/files.component'; import { WorkspaceComponent } from './workspace.component'; const routes: Routes = [ { - path: 'ws/:ws', + path: ':ws', component: WorkspaceComponent, children: [ {path: '', redirectTo: 'monitor', pathMatch: 'full'}, diff --git a/src/app/workspace/workspace.component.ts b/src/app/workspace/workspace.component.ts index 31c200b5..9c59a47d 100644 --- a/src/app/workspace/workspace.component.ts +++ b/src/app/workspace/workspace.component.ts @@ -1,11 +1,8 @@ import { WorkspaceDataService } from './workspacedata.service'; -import { MainDataService } from './../maindata.service'; +import { MainDataService } from '../maindata.service'; import { ActivatedRoute } from '@angular/router'; -import { Observable, Subscription } from 'rxjs'; +import { Subscription } from 'rxjs'; import { Component, OnInit, OnDestroy } from '@angular/core'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatSelectModule } from '@angular/material/select'; -import { MatTabsModule } from '@angular/material/tabs'; @Component({ @@ -30,7 +27,7 @@ export class WorkspaceComponent implements OnInit, OnDestroy { this.wds.setWorkspace(ws, this.mds.getWorkspaceRole(ws), this.mds.getWorkspaceName(ws)); }); - this.logindataSubscription = this.mds.loginData$.subscribe(ld => { + this.logindataSubscription = this.mds.loginData$.subscribe(() => { this.wds.setWorkspace(this.wds.ws, this.mds.getWorkspaceRole(this.wds.ws), this.mds.getWorkspaceName(this.wds.ws)); }); } diff --git a/src/app/workspace/workspace.interceptor.ts b/src/app/workspace/workspace.interceptor.ts index 01876554..24ff6b52 100644 --- a/src/app/workspace/workspace.interceptor.ts +++ b/src/app/workspace/workspace.interceptor.ts @@ -1,10 +1,13 @@ import { WorkspaceDataService } from './workspacedata.service'; -import { Injectable } from '@angular/core'; +import {Injectable} from '@angular/core'; import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HTTP_INTERCEPTORS } from '@angular/common/http'; import { Observable } from 'rxjs'; -@Injectable() +@Injectable({ + providedIn: 'root' +}) + export class WorkspaceInterceptor implements HttpInterceptor { constructor(public wds: WorkspaceDataService) {} @@ -25,6 +28,7 @@ export class WorkspaceInterceptor implements HttpInterceptor { } }); + console.log('WorkspaceInterceptor'); return next.handle(requestA); } } diff --git a/src/app/workspace/workspace.module.ts b/src/app/workspace/workspace.module.ts index ced23362..db946b1a 100644 --- a/src/app/workspace/workspace.module.ts +++ b/src/app/workspace/workspace.module.ts @@ -1,21 +1,16 @@ import { FlexLayoutModule } from '@angular/flex-layout'; import { BackendService } from './backend.service'; import { IqbFilesModule } from '../iqb-files'; -import { IqbComponents } from 'iqb-components'; import { ReactiveFormsModule } from '@angular/forms'; -import { NgModule, Component } from '@angular/core'; +import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { WorkspaceDataService } from './workspacedata.service'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; - -import { HttpClientModule } from '@angular/common/http'; import { WorkspaceRoutingModule } from './workspace-routing.module'; import { WorkspaceComponent } from './workspace.component'; import { FilesComponent } from './files/files.component'; import { ResultsComponent } from './results/results.component'; - import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; import { MatCheckboxModule } from '@angular/material/checkbox'; @@ -36,6 +31,7 @@ import { MatExpansionModule } from '@angular/material/expansion'; import {MatGridListModule} from '@angular/material/grid-list'; import { SyscheckComponent } from './syscheck/syscheck.component'; import { httpInterceptorProviders } from './workspace.interceptor'; +import {IqbComponentsModule} from 'iqb-components'; @NgModule({ imports: [ @@ -50,7 +46,6 @@ import { httpInterceptorProviders } from './workspace.interceptor'; MatSortModule, MatCardModule, MatExpansionModule, - HttpClientModule, ReactiveFormsModule, MatProgressSpinnerModule, MatDialogModule, @@ -61,10 +56,9 @@ import { httpInterceptorProviders } from './workspace.interceptor'; MatToolbarModule, MatSnackBarModule, MatGridListModule, - IqbComponents, + IqbComponentsModule, FlexLayoutModule, MatCardModule, - BrowserAnimationsModule, FlexLayoutModule ], exports: [ diff --git a/src/app/workspace/workspacedata.service.ts b/src/app/workspace/workspacedata.service.ts index 1b91eba5..6e13e13f 100644 --- a/src/app/workspace/workspacedata.service.ts +++ b/src/app/workspace/workspacedata.service.ts @@ -1,6 +1,6 @@ import { BehaviorSubject } from 'rxjs'; import { Injectable } from '@angular/core'; -import { ServerError } from "iqb-components"; +import { ServerError } from 'iqb-components'; @Injectable({ providedIn: 'root' -- GitLab