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 97b896848d4101e61049869790d5de8af1567b25..29fcac11ee3b8b209b092b4331d3d63c7f3a3747 100644 --- a/src/app/sys-check/network-check/network-check.component.ts +++ b/src/app/sys-check/network-check/network-check.component.ts @@ -16,7 +16,12 @@ export class NetworkCheckComponent implements OnInit { downloadTest: -1, pingTest: -1 }; - networkRating: NetworkRating = 'N/A'; + networkRating: NetworkRating = { + downloadRating: 'N/A', + uploadRating: 'N/A', + pingRating: 'N/A', + overallRating: 'N/A' +}; constructor( private ds: SyscheckDataService, @@ -144,10 +149,18 @@ export class NetworkCheckComponent implements OnInit { // send data for reporting const myReport: ReportEntry[] = []; - myReport.push({'label': 'download', 'value': this.averageSpeed.downloadTest.toLocaleString()}); - myReport.push({'label': 'upload', 'value': this.averageSpeed.uploadTest.toLocaleString()}); - myReport.push({'label': 'ping', 'value': this.averageSpeed.pingTest.toLocaleString()}); - myReport.push({'label': 'Bewertung', 'value': this.networkRating}); + + myReport.push({'label': 'Downloadgeschwindigkeit', 'value': this.averageSpeed.downloadTest.toLocaleString()}); + myReport.push({'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({'label': 'Ping', 'value': this.averageSpeed.pingTest.toLocaleString()}); + myReport.push({'label': 'Ping-Bewertung', 'value': this.networkRating.pingRating}); + + myReport.push({'label': 'Allgemeine Bewertung der Verbindung zum Server', 'value': this.networkRating.overallRating}); + this.ds.networkData$.next(myReport); }); @@ -155,32 +168,64 @@ export class NetworkCheckComponent implements OnInit { } public calculateNetworkRating(nd: NetworkData): NetworkRating { + // assumes that this.ds.checkConfig$ is already set; - /* + const testConfig = this.ds.checkConfig$.getValue(); + // console.log('Test configuration used to calculate network compatibility with the Test Center:'); + // console.log(testConfig); - <1MB download und <0.5 MB upload ---> insufficient (~ < 8Mb download; ~ < 4Mb upload) - 1-10 MB download; 0.5 - 5 MB upload ---> ok (8-80 Mb download; 4-40 Mb upload) - > 10 MB download; > 0.5 MB upload; ----> good (> 80 Mb download; > 40 Mb upload;) + const awardedNetworkRating: NetworkRating = { + downloadRating: 'N/A', + uploadRating: 'N/A', + pingRating: 'N/A', + overallRating: 'N/A' + } - */ + // the ratings are calculated individually, by a "how low can you go" approach - // assumes that this.ds.checkConfig$ is already set; + awardedNetworkRating.downloadRating = 'good'; + if (nd.downloadTest < testConfig.downloadGood) { + awardedNetworkRating.downloadRating = 'ok'; + } + if (nd.downloadTest < testConfig.downloadMinimum) { + awardedNetworkRating.downloadRating = 'insufficient'; + } - const testConfig = this.ds.checkConfig$.getValue(); - console.log('Test configuration used to calculate network compatibility with the Test Center:'); - console.log(testConfig); + awardedNetworkRating.uploadRating = 'good'; + if (nd.uploadTest < testConfig.downloadGood) { + awardedNetworkRating.uploadRating = 'ok'; + } + if (nd.uploadTest < testConfig.downloadMinimum) { + awardedNetworkRating.uploadRating = 'insufficient'; + } - if ((nd.downloadTest < testConfig.downloadMinimum) || (nd.uploadTest < testConfig.uploadMinimum)) { - return 'insufficient'; - } else { - if ((nd.downloadTest < testConfig.downloadGood) || (nd.uploadTest < testConfig.uploadGood)) { - return 'ok'; - } else { - return 'good'; + awardedNetworkRating.pingRating = 'good'; + if (nd.pingTest > testConfig.downloadGood) { + awardedNetworkRating.pingRating = 'ok'; + } + if (nd.pingTest > testConfig.downloadMinimum) { + awardedNetworkRating.pingRating = 'insufficient'; } - } - } + awardedNetworkRating.overallRating = 'good'; + if (awardedNetworkRating.downloadRating === 'ok' || + awardedNetworkRating.uploadRating === 'ok' || + awardedNetworkRating.pingRating === 'ok') { + + // if at least one rating is lower than good, then the overall network rating is also lower than good + awardedNetworkRating.overallRating = 'ok'; + } + + if (awardedNetworkRating.downloadRating === 'insufficient' || + awardedNetworkRating.uploadRating === 'insufficient' || + awardedNetworkRating.pingRating === 'insufficient') { + + // if at least one rating is lower than good, then the overall rating is also lower than good + awardedNetworkRating.overallRating = 'insufficient'; + } + + return awardedNetworkRating; + } } export interface AverageSpeed { @@ -196,5 +241,12 @@ export interface NetworkData { pingTest: number; } - export type NetworkRating = 'N/A' | 'insufficient' | 'ok' | 'good'; + export type TechCheckRating = 'N/A' | 'insufficient' | 'ok' | 'good'; + + export interface NetworkRating { + uploadRating: TechCheckRating + downloadRating: TechCheckRating + pingRating: TechCheckRating + overallRating: TechCheckRating + }