From 2629f953a2a3ebe23a71fd805e6e27f540981773 Mon Sep 17 00:00:00 2001 From: Martin Mechtel <mechtelm@user.hu-berlin.de> Date: Sun, 27 Jan 2019 21:45:36 +0100 Subject: [PATCH] syscheck: save report works --- src/app/sys-check/backend.service.ts | 30 ++++++++++++++++++- .../environment-check.component.html | 2 +- .../environment-check.component.ts | 18 ++++++----- .../network-check/network-check.component.ts | 25 ++++++++++------ .../questionnaire/questionnaire.component.ts | 8 ++--- src/app/sys-check/report/report.component.ts | 3 +- src/app/sys-check/run.component.ts | 17 +++++++++-- src/app/sys-check/syscheck-data.service.ts | 8 +---- src/environments/environment.build.ts | 2 +- src/environments/environment.ts | 2 +- 10 files changed, 81 insertions(+), 34 deletions(-) diff --git a/src/app/sys-check/backend.service.ts b/src/app/sys-check/backend.service.ts index 5c6bfee6..682b1936 100644 --- a/src/app/sys-check/backend.service.ts +++ b/src/app/sys-check/backend.service.ts @@ -72,6 +72,24 @@ export class BackendService { ); } + // BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB + public saveReport (cid: string, keyphrase: string, title: string, + envResults: ReportEntry[], networkResults: ReportEntry[], questionnaireResults: ReportEntry[]): Observable<Boolean> { + const httpOptions = { + headers: new HttpHeaders({ + 'Content-Type': 'application/json' + }) + }; + return this.http + .post<boolean>(this.serverUrl + 'saveSysCheckReport.php', + {c: cid, k: keyphrase, t: title, e: envResults, n: networkResults, q: questionnaireResults}, httpOptions) + .pipe( + catchError(problem_data => { + return of(false); + }) + ); + } + // BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB public getUnitData (configId: string): Observable<UnitData> { const httpOptions = { @@ -87,10 +105,13 @@ export class BackendService { return of(myreturn); }) ); - } + } + // 7777777777777777777777777777777777777777777777777777777777777777777777 // 7777777777777777777777777777777777777777777777777777777777777777777777 // Network check functions + // 7777777777777777777777777777777777777777777777777777777777777777777777 + // 7777777777777777777777777777777777777777777777777777777777777777777777 benchmarkDownloadRequest (requestedDownloadSize: number, timeout: number, callback: RequestBenchmarkerFunctionCallback): void { @@ -247,3 +268,10 @@ export interface NetworkRequestTestResult { 'size': number; 'duration': number; } + +export interface ReportEntry { + id: string; + type: string; + label: string; + value: string; +} diff --git a/src/app/sys-check/environment-check/environment-check.component.html b/src/app/sys-check/environment-check/environment-check.component.html index 687c3630..6084432f 100644 --- a/src/app/sys-check/environment-check/environment-check.component.html +++ b/src/app/sys-check/environment-check/environment-check.component.html @@ -16,7 +16,7 @@ <mat-card> <mat-card-title>Browser</mat-card-title> <mat-card-content> - <p>{{ browserVersion }}</p> + <p>{{ browser }}</p> </mat-card-content> </mat-card> </div> diff --git a/src/app/sys-check/environment-check/environment-check.component.ts b/src/app/sys-check/environment-check/environment-check.component.ts index 4ebfd355..c4354173 100644 --- a/src/app/sys-check/environment-check/environment-check.component.ts +++ b/src/app/sys-check/environment-check/environment-check.component.ts @@ -1,8 +1,7 @@ -import { ReportEntry } from './../syscheck-data.service'; +import { ReportEntry } from './../backend.service'; import { Component, OnInit } from '@angular/core'; import { SyscheckDataService } from '../syscheck-data.service'; - @Component({ selector: 'iqb-environment-check', templateUrl: './environment-check.component.html', @@ -11,7 +10,9 @@ import { SyscheckDataService } from '../syscheck-data.service'; export class EnvironmentCheckComponent implements OnInit { screenSizeText = 'bitte warten'; osName = 'bitte warten'; - browserVersion = 'bitte warten'; + browser = 'bitte warten'; + browserVersion = ''; + browserName = ''; constructor( @@ -30,7 +31,9 @@ export class EnvironmentCheckComponent implements OnInit { const helperRegex = /[^.]*/; const browserInfo = helperRegex.exec(deviceInfoSplits[0]); const browserInfoSplits = browserInfo[0].split('/'); - this.browserVersion = browserInfoSplits[0] + ' Version ' + browserInfoSplits[1]; + this.browserVersion = browserInfoSplits[1]; + this.browserName = browserInfoSplits[0]; + this.browser = this.browserName + ' Version ' + this.browserVersion; // os + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -69,9 +72,10 @@ export class EnvironmentCheckComponent implements OnInit { const myReport: ReportEntry[] = []; - myReport.push({'label': 'Betriebssystem', 'value': this.osName}); - myReport.push({'label': 'Browser', 'value': this.browserVersion}); - myReport.push({'label': 'Bildschirm', 'value': this.screenSizeText}); + myReport.push({'id': '0', 'type': 'environment', 'label': 'Betriebssystem', 'value': this.osName}); + myReport.push({'id': '0', 'type': 'environment', 'label': 'Browser Name', 'value': this.browserName}); + myReport.push({'id': '0', 'type': 'environment', 'label': 'Browser Version', 'value': this.browserVersion}); + myReport.push({'id': '0', 'type': 'environment', 'label': 'Bildschirm', 'value': this.screenSizeText}); this.ds.environmentData$.next(myReport); } diff --git a/src/app/sys-check/network-check/network-check.component.ts b/src/app/sys-check/network-check/network-check.component.ts index 325dacae..df1fe1f0 100644 --- a/src/app/sys-check/network-check/network-check.component.ts +++ b/src/app/sys-check/network-check/network-check.component.ts @@ -1,7 +1,7 @@ -import { SyscheckDataService, ReportEntry } from './../syscheck-data.service'; +import { SyscheckDataService } from './../syscheck-data.service'; import { Component, OnInit } from '@angular/core'; import { BackendService, NetworkRequestTestResult, RequestBenchmarkerFunction, - RequestBenchmarkerFunctionCallback} from '../backend.service'; + RequestBenchmarkerFunctionCallback, ReportEntry} from '../backend.service'; @Component({ selector: 'iqb-network-check', @@ -150,16 +150,23 @@ export class NetworkCheckComponent implements OnInit { // send data for reporting const myReport: ReportEntry[] = []; - myReport.push({'label': 'Downloadgeschwindigkeit', 'value': this.averageSpeed.downloadTest.toLocaleString()}); - myReport.push({'label': 'Downloadbewertung', 'value': this.networkRating.downloadRating}); + myReport.push({'id': '0', 'type': 'network', + 'label': 'Downloadgeschwindigkeit', 'value': this.averageSpeed.downloadTest.toLocaleString()}); + myReport.push({'id': '0', 'type': 'network', + 'label': 'Downloadbewertung', 'value': this.networkRating.downloadRating}); - myReport.push({'label': 'Uploadgeschwindigkeit', 'value': this.averageSpeed.uploadTest.toLocaleString()}); - myReport.push({'label': 'Uploadbewertung', 'value': this.networkRating.uploadRating}); + myReport.push({'id': '0', 'type': 'network', + 'label': 'Uploadgeschwindigkeit', 'value': this.averageSpeed.uploadTest.toLocaleString()}); + myReport.push({'id': '0', 'type': 'network', + 'label': 'Uploadbewertung', 'value': this.networkRating.uploadRating}); - myReport.push({'label': 'Ping', 'value': this.averageSpeed.pingTest.toLocaleString()}); - myReport.push({'label': 'Ping-Bewertung', 'value': this.networkRating.pingRating}); + myReport.push({'id': '0', 'type': 'network', + 'label': 'Ping', 'value': this.averageSpeed.pingTest.toLocaleString()}); + myReport.push({'id': '0', 'type': 'network', + 'label': 'Ping-Bewertung', 'value': this.networkRating.pingRating}); - myReport.push({'label': 'Allgemeine Bewertung der Verbindung zum Server', 'value': this.networkRating.overallRating}); + myReport.push({'id': '0', 'type': 'network', + 'label': 'Allgemeine Bewertung der Verbindung zum Server', 'value': this.networkRating.overallRating}); this.ds.networkData$.next(myReport); diff --git a/src/app/sys-check/questionnaire/questionnaire.component.ts b/src/app/sys-check/questionnaire/questionnaire.component.ts index b94f110e..4488b89f 100644 --- a/src/app/sys-check/questionnaire/questionnaire.component.ts +++ b/src/app/sys-check/questionnaire/questionnaire.component.ts @@ -1,6 +1,6 @@ import { FormControl, FormGroup } from '@angular/forms'; -import { FormDefEntry } from './../backend.service'; -import { SyscheckDataService, ReportEntry } from './../syscheck-data.service'; +import { FormDefEntry, ReportEntry } from './../backend.service'; +import { SyscheckDataService } from './../syscheck-data.service'; import { Component, OnInit, ViewChild, ElementRef } from '@angular/core'; @Component({ @@ -39,10 +39,10 @@ export class QuestionnaireComponent implements OnInit { const myReportEntries: ReportEntry[] = []; this.questions.forEach(element => { if (element.type === 'header') { - myReportEntries.push({'label': element.value, 'value': ''}); + myReportEntries.push({'id': element.id, 'type': element.type, 'label': element.value, 'value': ''}); } else { const myValue = this.form.controls[element.id].value; - myReportEntries.push({'label': element.prompt, 'value': myValue}); + myReportEntries.push({'id': element.id, 'type': element.type, 'label': element.prompt, 'value': myValue}); } }); this.ds.questionnaireData$.next(myReportEntries); diff --git a/src/app/sys-check/report/report.component.ts b/src/app/sys-check/report/report.component.ts index 43a3522f..f59a423e 100644 --- a/src/app/sys-check/report/report.component.ts +++ b/src/app/sys-check/report/report.component.ts @@ -1,4 +1,5 @@ -import { SyscheckDataService, ReportEntry } from './../syscheck-data.service'; +import { ReportEntry } from './../backend.service'; +import { SyscheckDataService } from './../syscheck-data.service'; import { Component, OnInit } from '@angular/core'; @Component({ diff --git a/src/app/sys-check/run.component.ts b/src/app/sys-check/run.component.ts index 08d2eca0..bf6c976a 100644 --- a/src/app/sys-check/run.component.ts +++ b/src/app/sys-check/run.component.ts @@ -5,7 +5,7 @@ import { SyscheckDataService } from './syscheck-data.service'; import { BehaviorSubject } from 'rxjs'; import { ActivatedRoute, ParamMap } from '@angular/router'; import { Component, OnInit, ViewChild } from '@angular/core'; -import { CheckConfigData, BackendService } from './backend.service'; +import { CheckConfigData, BackendService, ReportEntry } from './backend.service'; import { MatStepper, MatStep } from '../../../node_modules/@angular/material'; import { UnitCheckComponent } from './unit-check/unit-check.component'; import { EnvironmentCheckComponent } from './environment-check/environment-check.component'; @@ -142,7 +142,20 @@ export class RunComponent implements OnInit { }); dialogRef.afterClosed().subscribe(result => { if (result !== false) { - this.snackBar.open('Bericht gespeichert.', '', {duration: 3000}); + const reportKey = result.get('key').value as string; + const reportTitle = result.get('title').value as string; + const cd = this.ds.checkConfig$.getValue(); + this.bs.saveReport(cd.id, reportKey, reportTitle, + this.ds.environmentData$.getValue(), + this.ds.networkData$.getValue(), + this.ds.questionnaireData$.getValue() + ).subscribe((saveOK: boolean) => { + if (saveOK) { + this.snackBar.open('Bericht gespeichert.', '', {duration: 3000}); + } else { + this.snackBar.open('Konnte Bericht nicht speichern.', '', {duration: 3000}); + } + }); } }); } diff --git a/src/app/sys-check/syscheck-data.service.ts b/src/app/sys-check/syscheck-data.service.ts index 4460e891..1107a063 100644 --- a/src/app/sys-check/syscheck-data.service.ts +++ b/src/app/sys-check/syscheck-data.service.ts @@ -1,4 +1,4 @@ -import { CheckConfigData } from './backend.service'; +import { CheckConfigData, ReportEntry } from './backend.service'; import { BehaviorSubject } from 'rxjs'; import { Injectable } from '@angular/core'; // import { e } from '@angular/core/src/render3'; @@ -36,9 +36,3 @@ export class SyscheckDataService { this.pageTitle$.next('IQB-Testcenter - System-Check'); } } - -export interface ReportEntry { - label: string; - value: string; -} - diff --git a/src/environments/environment.build.ts b/src/environments/environment.build.ts index 70c550e4..7d501065 100644 --- a/src/environments/environment.build.ts +++ b/src/environments/environment.build.ts @@ -5,5 +5,5 @@ export const environment = { testcenterUrl: '/', appName: 'IQB-Testcenter', appPublisher: 'IQB - Institut zur Qualitätsentwicklung im Bildungswesen', - appVersion: '0.14.0 - 17.1.2019' + appVersion: '0.14.1 - 27.1.2019' }; diff --git a/src/environments/environment.ts b/src/environments/environment.ts index f3e2e760..50ce0325 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -4,7 +4,7 @@ export const environment = { production: false, - testcenterUrl: 'https://ocba.iqb.hu-berlin.de/', + testcenterUrl: 'https://www.iqb-testcenter.de/', appName: 'IQB-Testcenter', appPublisher: 'IQB - Institut zur Qualitätsentwicklung im Bildungswesen', appVersion: '0 (dev)' -- GitLab