From e96f63b2db3ed7b3d8e15ea054671a840f4af271 Mon Sep 17 00:00:00 2001 From: zdenevuk <zdenko.vuk@ijs.si> Date: Fri, 18 Nov 2022 10:08:01 +0100 Subject: [PATCH] This is a combination of 6 commits. commented out spinner removed underline removed a console log added button added overview of indicators update --- .../existing-simulations.component.html | 5 +- .../existing-simulations.component.ts | 4 - .../ml-module/ml-module.component.scss | 3 + .../our-spider-chart.component.ts | 2 +- .../results-map/results-map.component.html | 29 +++++ .../results-map/results-map.component.ts | 113 ++++++++++-------- .../images/overviewOfIndicatorsAmsterdam.png | Bin 0 -> 2687 bytes .../images/overviewOfIndicatorsBilbao.png | Bin 0 -> 4748 bytes .../images/overviewOfIndicatorsHelsinki.png | Bin 0 -> 3959 bytes .../images/overviewOfIndicatorsMessina.png | Bin 0 -> 4244 bytes 10 files changed, 99 insertions(+), 57 deletions(-) create mode 100644 src/assets/images/overviewOfIndicatorsAmsterdam.png create mode 100644 src/assets/images/overviewOfIndicatorsBilbao.png create mode 100644 src/assets/images/overviewOfIndicatorsHelsinki.png create mode 100644 src/assets/images/overviewOfIndicatorsMessina.png diff --git a/src/app/pages/simulation-wizard/existing-simulations/existing-simulations.component.html b/src/app/pages/simulation-wizard/existing-simulations/existing-simulations.component.html index 034dc8a7..61932767 100644 --- a/src/app/pages/simulation-wizard/existing-simulations/existing-simulations.component.html +++ b/src/app/pages/simulation-wizard/existing-simulations/existing-simulations.component.html @@ -309,7 +309,8 @@ [disabled]="!selectedSimulation || runSimulationBtnDisabled" > Run simulation</button - ><nb-icon + > + <!-- <nb-icon [icon]=" runSimulation.status == 'running' ? 'loader-outline' @@ -329,7 +330,7 @@ [ngClass]="{ 'icon-spin': runSimulation.status == 'running' }" class="icon" > - </nb-icon> + </nb-icon> --> </div> <div class="mb-2 button-envelope"> <button diff --git a/src/app/pages/simulation-wizard/existing-simulations/existing-simulations.component.ts b/src/app/pages/simulation-wizard/existing-simulations/existing-simulations.component.ts index cb186bdd..8d609f2c 100644 --- a/src/app/pages/simulation-wizard/existing-simulations/existing-simulations.component.ts +++ b/src/app/pages/simulation-wizard/existing-simulations/existing-simulations.component.ts @@ -425,10 +425,6 @@ export class ExistingSimulationsComponent implements OnInit { // rudimentary way of concincing our-spider-chart to redownload evaluated json this.selectedSimulationToEmit.emit(undefined); setTimeout(() => { - console.log( - "🚀☢ ~ this.selectedSimulation.id.toString()", - this.selectedSimulation - ); this.selectedSimulationToEmit.emit(this.selectedSimulation); this.showToast(`Updating spider chart.`, "Info", "info"); }, 0); diff --git a/src/app/pages/simulation-wizard/ml-module/ml-module.component.scss b/src/app/pages/simulation-wizard/ml-module/ml-module.component.scss index 119bac56..0c7af6ef 100644 --- a/src/app/pages/simulation-wizard/ml-module/ml-module.component.scss +++ b/src/app/pages/simulation-wizard/ml-module/ml-module.component.scss @@ -27,4 +27,7 @@ } } } + a { + text-decoration: none; + } } diff --git a/src/app/pages/simulation-wizard/our-spider-chart/our-spider-chart.component.ts b/src/app/pages/simulation-wizard/our-spider-chart/our-spider-chart.component.ts index 3d8db60a..ca1c8f45 100644 --- a/src/app/pages/simulation-wizard/our-spider-chart/our-spider-chart.component.ts +++ b/src/app/pages/simulation-wizard/our-spider-chart/our-spider-chart.component.ts @@ -98,7 +98,7 @@ export class OurSpiderChartComponent implements OnChanges { values_B.push(entry[1] as string); } } else { - console.log("🚀☢ Setting 0"); + console.log("🚀☢ Setting 0 for ", entry[0]); if (j == 0) { values_A.push(0); } else if (j == 1) { diff --git a/src/app/pages/simulation-wizard/results-map/results-map.component.html b/src/app/pages/simulation-wizard/results-map/results-map.component.html index ebe01d13..79d70efe 100644 --- a/src/app/pages/simulation-wizard/results-map/results-map.component.html +++ b/src/app/pages/simulation-wizard/results-map/results-map.component.html @@ -25,7 +25,36 @@ > load {{ l }} geojson </button> + <button + nbButton + (click)="openOverviewOfIndicators(dialog)" + nbTooltip="click for overview of indicators" + [disabled]="selectedSimulation == undefined" + > + <nb-icon icon="info-outline"></nb-icon> + </button> </div> + <ng-template #dialog let-data let-ref="dialogRef"> + <nb-card> + <nb-card-header + >Overview of Indicators for {{ data | titlecase }} + </nb-card-header> + <nb-card-body> + <img + src="{{ + 'assets/images/overviewOfIndicators' + + data[0].toUpperCase() + + data.slice(1) + + '.png' + }}" + alt="" + /> + </nb-card-body> + <nb-card-footer> + <button nbButton (click)="ref.close()">Close</button> + </nb-card-footer> + </nb-card> + </ng-template> </div> <div id="grayscaleInput"> <input diff --git a/src/app/pages/simulation-wizard/results-map/results-map.component.ts b/src/app/pages/simulation-wizard/results-map/results-map.component.ts index a4aac8e1..28952550 100644 --- a/src/app/pages/simulation-wizard/results-map/results-map.component.ts +++ b/src/app/pages/simulation-wizard/results-map/results-map.component.ts @@ -1,9 +1,9 @@ -import { Component, Input } from "@angular/core"; +import { Component, Input, TemplateRef } from "@angular/core"; import * as L from "leaflet"; import { SimulationService } from "../utils/services/simulation.service"; import * as MapColors from "./map-colors-local"; -import { legendInverted, ratiosBetweenGrades } from "./results-map-settings" -import { NbToastrService } from "@nebular/theme"; +import { legendInverted, ratiosBetweenGrades } from "./results-map-settings"; +import { NbToastrService, NbDialogService } from "@nebular/theme"; import { Simulation } from "../utils/data/simulation"; @Component({ @@ -42,34 +42,35 @@ export class ResultsMapComponent { constructor( private simulationService: SimulationService, - private toastrService: NbToastrService - ) { } + private toastrService: NbToastrService, + private dialogService: NbDialogService + ) {} onMapReady(map: L.Map) { this.map = map; this.grayscaleChange(); setTimeout(() => { this.map.invalidateSize(); }, 50); - setTimeout(() => { - console.log( - "%cTemporary", - "background: crimson; font-weight: bold; color: black; font-family: serif; padding: 0 10px;" - ); - const celkomplet: HTMLElement = document.querySelectorAll( - ".ng-tns-c441-0.appearance-filled.size-medium.shape-rectangle.status-primary.ng-star-inserted.nb-transition" - )[6] as HTMLElement; - celkomplet.click(); - }, 995); - setTimeout(() => { - console.log( - "%cTemporary", - "background: peru; font-weight: bold; color: black; font-family: serif; padding: 0 10px;" - ); - const celkomplet: HTMLElement = document.querySelectorAll( - ".buttons.ng-tns-c441-0" - )[0] as HTMLElement; - celkomplet.style.display = "none"; - }, 1000); + // setTimeout(() => { + // console.log( + // "%cTemporary", + // "background: crimson; font-weight: bold; color: black; font-family: serif; padding: 0 10px;" + // ); + // const celkomplet: HTMLElement = document.querySelectorAll( + // ".ng-tns-c441-0.appearance-filled.size-medium.shape-rectangle.status-primary.ng-star-inserted.nb-transition" + // )[6] as HTMLElement; + // celkomplet.click(); + // }, 995); + // setTimeout(() => { + // console.log( + // "%cTemporary", + // "background: peru; font-weight: bold; color: black; font-family: serif; padding: 0 10px;" + // ); + // const celkomplet: HTMLElement = document.querySelectorAll( + // ".buttons.ng-tns-c441-0" + // )[0] as HTMLElement; + // celkomplet.style.display = "none"; + // }, 1000); } onLoad(selectedKpi: string) { @@ -176,7 +177,10 @@ export class ResultsMapComponent { this.maxKeyValues["maxValue_" + legendType] == undefined || this.maxKeyValues["maxValue_" + legendType] == 0 ) { - this.toastrService.info("Geojson not displayed because all values are undefined or zero!", "Geojson not displayed") + this.toastrService.info( + "Geojson not displayed because all values are undefined or zero!", + "Geojson not displayed" + ); let div = L.DomUtil.create("div"); div.innerHTML += `<p style='background:white; display: inline; font-size:17px; padding: 0 7px; background: #ff3d71'>Values for ${legendType} kpi are undefined or zero!</p>`; return div; @@ -186,24 +190,19 @@ export class ResultsMapComponent { const grades = [ 0, this.limitMyDigits( - this.maxKeyValues["maxValue_" + legendType] / - ratiosBetweenGrades[0] + this.maxKeyValues["maxValue_" + legendType] / ratiosBetweenGrades[0] ), this.limitMyDigits( - this.maxKeyValues["maxValue_" + legendType] / - ratiosBetweenGrades[1] + this.maxKeyValues["maxValue_" + legendType] / ratiosBetweenGrades[1] ), this.limitMyDigits( - this.maxKeyValues["maxValue_" + legendType] / - ratiosBetweenGrades[2] + this.maxKeyValues["maxValue_" + legendType] / ratiosBetweenGrades[2] ), this.limitMyDigits( - this.maxKeyValues["maxValue_" + legendType] / - ratiosBetweenGrades[3] + this.maxKeyValues["maxValue_" + legendType] / ratiosBetweenGrades[3] ), this.limitMyDigits( - this.maxKeyValues["maxValue_" + legendType] / - ratiosBetweenGrades[4] + this.maxKeyValues["maxValue_" + legendType] / ratiosBetweenGrades[4] ), ]; @@ -364,8 +363,8 @@ export class ResultsMapComponent { this.maxKeyValues["maxValue_" + keys[f]] == 0 ) { tmp = L.geoJSON(<any>{ - "type": "FeatureCollection", - "features": [] + type: "FeatureCollection", + features: [], }); } else { if (keys[f] == "capacity") { @@ -377,7 +376,9 @@ export class ResultsMapComponent { keys[f], this.maxKeyValues[`maxValue_${keys[f]}`], ratiosBetweenGrades, - parseInt(feature["properties"]["capacity"]) == 9999 ? true : false + parseInt(feature["properties"]["capacity"]) == 9999 + ? true + : false ), opacity: this.geoJsonStyleOpacity, }), @@ -394,11 +395,13 @@ export class ResultsMapComponent { color: MapColors.getColorHighToLow( feature["properties"]["cityWide"]["traffic"] .dailyInternalBikeTravels || - feature["properties"].dailyInternalBikeTravels, + feature["properties"].dailyInternalBikeTravels, keys[f], this.maxKeyValues[`maxValue_${keys[f]}`], ratiosBetweenGrades, - parseInt(feature["properties"]["capacity"]) == 9999 ? true : false + parseInt(feature["properties"]["capacity"]) == 9999 + ? true + : false ), opacity: this.geoJsonStyleOpacity, }), @@ -415,11 +418,13 @@ export class ResultsMapComponent { color: MapColors.getColor( feature["properties"]["cityWide"]["traffic"] .pedestrianTravelTime || - feature["properties"].pedestrianTravelTime, + feature["properties"].pedestrianTravelTime, keys[f], this.maxKeyValues[`maxValue_${keys[f]}`], ratiosBetweenGrades, - parseInt(feature["properties"]["capacity"]) == 9999 ? true : false + parseInt(feature["properties"]["capacity"]) == 9999 + ? true + : false ), opacity: this.geoJsonStyleOpacity, }), @@ -438,7 +443,9 @@ export class ResultsMapComponent { keys[f], this.maxKeyValues[`maxValue_${keys[f]}`], ratiosBetweenGrades, - parseInt(feature["properties"]["capacity"]) == 9999 ? true : false + parseInt(feature["properties"]["capacity"]) == 9999 + ? true + : false ), opacity: this.geoJsonStyleOpacity, }), @@ -473,17 +480,17 @@ export class ResultsMapComponent { if (this.maxKeyValues[`maxValue_${keys[f]}`] == undefined) { this.maxKeyValues[`maxValue_${keys[f]}`] = jsonFile["features"][g]["properties"]["cityWide"]["pollution"][ - keys[f] + keys[f] ]; } if ( jsonFile["features"][g]["properties"]["cityWide"]["pollution"][ - keys[f] + keys[f] ] > this.maxKeyValues[`maxValue_${keys[f]}`] ) { this.maxKeyValues[`maxValue_${keys[f]}`] = jsonFile["features"][g]["properties"]["cityWide"]["pollution"][ - keys[f] + keys[f] ]; } } @@ -494,17 +501,17 @@ export class ResultsMapComponent { if (this.maxKeyValues[`maxValue_${keys[f]}`] == undefined) { this.maxKeyValues[`maxValue_${keys[f]}`] = jsonFile["features"][g]["properties"]["cityWide"]["traffic"][ - keys[f] + keys[f] ]; } if ( jsonFile["features"][g]["properties"]["cityWide"]["traffic"][ - keys[f] + keys[f] ] > this.maxKeyValues[`maxValue_${keys[f]}`] ) { this.maxKeyValues[`maxValue_${keys[f]}`] = jsonFile["features"][g]["properties"]["cityWide"]["traffic"][ - keys[f] + keys[f] ]; } } @@ -584,4 +591,10 @@ export class ResultsMapComponent { }); } } + + openOverviewOfIndicators(dialog: TemplateRef<any>) { + this.dialogService.open(dialog, { + context: this.selectedSimulation["city"]["cityId"] + }); + } } diff --git a/src/assets/images/overviewOfIndicatorsAmsterdam.png b/src/assets/images/overviewOfIndicatorsAmsterdam.png new file mode 100644 index 0000000000000000000000000000000000000000..06b8ff8eadfc3d28210c222b8bf1f0e182406e3d GIT binary patch literal 2687 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/overviewOfIndicatorsBilbao.png b/src/assets/images/overviewOfIndicatorsBilbao.png new file mode 100644 index 0000000000000000000000000000000000000000..f1412b8aa99c3db2cf2de7f32d5325b671984f91 GIT binary patch literal 4748 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/overviewOfIndicatorsHelsinki.png b/src/assets/images/overviewOfIndicatorsHelsinki.png new file mode 100644 index 0000000000000000000000000000000000000000..97521a8252ce50e181a6f27038f572721380d81b GIT binary patch literal 3959 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/overviewOfIndicatorsMessina.png b/src/assets/images/overviewOfIndicatorsMessina.png new file mode 100644 index 0000000000000000000000000000000000000000..12900cd5021e9868289266dc067dda3a3da74b66 GIT binary patch literal 4244 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�FUr>?(U@4{N(J>}Tm=e1jpb4I;%_9~4#X(ClTb5Bs%t<EV2wUwQ` geuI+%DzWPavs&qfGQ$VE9)Wt>p00i_>zopr03%u$<^TWy literal 0 HcmV?d00001 -- GitLab