{"version":3,"file":"main.js","mappings":"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","sources":["./src/app/_services/analytics.service.ts","./src/app/_services/authentication.service.ts","./src/app/_services/displays.service.ts","./src/app/_services/images.service.ts","./src/app/_services/lot.service.ts","./src/app/_services/lots-groups.service.ts","./src/app/_services/parking.service.ts","./src/app/_services/sensor.service.ts","./src/app/_services/style.service.ts","./src/app/_services/type.service.ts","./src/app/_services/user.service.ts","./src/app/_shared/components/analytics-mgmt/analytics-daily/analytics-daily.component.ts","./src/app/_shared/components/analytics-mgmt/analytics-days-range/analytics-days-range.component.ts","./src/app/_shared/components/analytics-mgmt/analytics-durations/analytics-durations.component.ts","./src/app/_shared/components/analytics-mgmt/analytics-weekly/analytics-weekly.component.ts","./src/app/_shared/components/analytics-mgmt/analytics/analytics.component.ts","./src/app/_shared/components/layout/layout.component.ts","./src/app/_shared/components/oss-licenses/oss-licenses.component.ts","./src/app/_shared/components/page-not-found/page-not-found.component.ts","./src/app/_shared/components/parking-dropdown/parking-dropdown.component.ts","./src/app/_shared/components/privacy-policy/privacy-policy.component.ts","./src/app/_shared/models/display.ts","./src/app/_shared/models/image.ts","./src/app/_shared/models/lot.ts","./src/app/_shared/models/parking.ts","./src/app/_shared/modules/material.module.ts","./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.module.ts","./src/app/authentication/_guards/auth-guard.guard.ts","./src/app/authentication/_helpers/auth-config.ts","./src/app/authentication/_helpers/error.interceptor.ts","./src/app/authentication/_helpers/jwt.interceptor.ts","./src/app/authentication/_helpers/secure.pipe.ts","./src/app/authentication/authentication-routing.module.ts","./src/app/authentication/authentication.module.ts","./src/app/authentication/authentication/authentication.component.ts","./src/app/authentication/login/login.component.ts","./src/app/branch-mgmt/branch-mgmt-routing.module.ts","./src/app/branch-mgmt/branch-mgmt.module.ts","./src/app/branch-mgmt/branch-mgmt/branch-mgmt.component.ts","./src/app/branch-mgmt/branch/branch.component.ts","./src/app/branch-mgmt/edit-park/edit-park.component.ts","./src/app/branch-mgmt/editstreetmap/editstreetmap.component.ts","./src/app/branch-mgmt/parking-det/parking-det.component.ts","./src/app/branch-mgmt/streetmap/streetmap.component.ts","./src/app/branch-mgmt/upload/upload.component.ts","./src/app/home/home-routing.module.ts","./src/app/home/home.module.ts","./src/app/home/home/home.component.ts","./src/app/parking-mgmt/display/display.component.ts","./src/app/parking-mgmt/displays-list/displays-list.component.ts","./src/app/parking-mgmt/editdisplay/editdisplay.component.ts","./src/app/parking-mgmt/editgroups/editgroups.component.ts","./src/app/parking-mgmt/editlot/editlot.component.ts","./src/app/parking-mgmt/event-history/event-history.component.ts","./src/app/parking-mgmt/floor-info/floor-info.component.ts","./src/app/parking-mgmt/heatmap-map-layer/heatmap-map-layer.component.ts","./src/app/parking-mgmt/lot-charts/lot-charts.component.ts","./src/app/parking-mgmt/lot/lot.component.ts","./src/app/parking-mgmt/map-display/map-display.component.ts","./src/app/parking-mgmt/map-edit/map-edit.component.ts","./src/app/parking-mgmt/map-layer/map-layer.component.ts","./src/app/parking-mgmt/map-lot/map-lot.component.ts","./src/app/parking-mgmt/parking-mgmt-routing.module.ts","./src/app/parking-mgmt/parking-mgmt.module.ts","./src/app/parking-mgmt/parking-mgmt/parking-mgmt.component.ts","./src/app/parking-mgmt/parking/parking.component.ts","./src/app/parking-mgmt/section-info/section-info.component.ts","./src/app/parking-mgmt/sensor-status/sensor-status.component.ts","./src/app/parking-mgmt/upload-sensors/upload-sensors.component.ts","./src/environments/environment.ts","./src/main.ts"],"sourcesContent":["import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\nimport { environment } from \"src/environments/environment\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AnalyticsService {\r\n \r\n constructor(private http: HttpClient) { }\r\n \r\n /* PARKING ANALYTICS */\r\n // HTTP GET - Parking Daily Occupancy of a parking defining a period\r\n getDailyOccupancy(parkingId: string, endDate: string, startDate: string) {\r\n return this.http.get(environment.apiUri + \"analytics/parkings/\" + parkingId + \"?analyticsType=OCCUPANCY\" + \"&end=\" + endDate + \"&resolution=HOUR\" + \"&start=\" + startDate, {observe: 'response'}).toPromise();\r\n }\r\n \r\n // HTTP GET - Parking Weekly Occupancy of a parking defining a period\r\n getWeeklyOccupancy(parkingId: string, endDate: string, startDate: string) {\r\n return this.http.get(environment.apiUri + \"analytics/parkings/\" + parkingId + \"?analyticsType=OCCUPANCY\" + \"&end=\" + endDate + \"&resolution=DAY\" + \"&start=\" + startDate, {observe: 'response'}).toPromise();\r\n }\r\n \r\n // HTTP GET - Parking Daily Duration of a parking defining a period\r\n getDailyDuration(parkingId: string, endDate: string, startDate: string) {\r\n return this.http.get(environment.apiUri + \"analytics/parkings/\" + parkingId + \"?analyticsType=DURATION\" + \"&end=\" + endDate + \"&resolution=HOUR\" + \"&start=\" + startDate, {observe: 'response'}).toPromise();\r\n }\r\n \r\n /* LOT ANALYTICS */\r\n // HTTP GET - Lot occupancy of a single lot defining a period and a resolution step\r\n getLotOccupancy(lotId: string, startDate: string, endDate: string, resolution: string) {\r\n return this.http.get(environment.apiUri + \"analytics/lots/\" + lotId + \"?start=\" + startDate + \"&end=\" + endDate + \"&analyticsType=OCCUPANCY\" + \"&resolution=\" + resolution, {observe: 'response'}).toPromise();\r\n }\r\n\r\n // HTTP GET - Lot duration of a single lot defining a period and a resolution step\r\n getLotDuration(lotId: string, startDate: string, endDate: string, resolution: string) {\r\n return this.http.get(environment.apiUri + \"analytics/lots/\" + lotId + \"?start=\" + startDate + \"&end=\" + endDate + \"&analyticsType=DURATION\" + \"&resolution=\" + resolution).toPromise();\r\n }\r\n\r\n getAlerts(lotId: string, startDate: string, endDate: string) {\r\n return this.http.get(environment.apiUri + \"alerts/\" + lotId + \"?start=\" + startDate + \"&end=\" + endDate).toPromise();\r\n }\r\n \r\n /* LOT GROUPS ANALYTICS */\r\n // HTTP GET - Daily Occupancy of lots groups defining a period\r\n getDailyOccupancyGroup(startDate: string, endDate: string, groupId: string) {\r\n return this.http.get(environment.apiUri + \"analytics/aggregated/lots?start=\" + startDate + \"&end=\" + endDate + \"&groupId=\" + groupId + \"&analyticsType=OCCUPANCY\" + \"&resolution=HOUR\", {observe: 'response'}).toPromise();\r\n }\r\n \r\n // HTTP GET - Parking Weekly Occupancy of lots groups defining a period\r\n getWeeklyOccupancyGroup(startDate: string, endDate: string, groupId: string) {\r\n return this.http.get(environment.apiUri + \"analytics/aggregated/lots?start=\" + startDate + \"&end=\" + endDate + \"&groupId=\" + groupId + \"&analyticsType=OCCUPANCY\" + \"&resolution=DAY\", {observe: 'response'}).toPromise();\r\n }\r\n \r\n // HTTP GET - Parking Daily Duration of lots groups defining a period\r\n getDailyDurationGroup(startDate: string, endDate: string, groupId: string) {\r\n return this.http.get(environment.apiUri + \"analytics/aggregated/lots?start=\" + startDate + \"&end=\" + endDate + \"&groupId=\" + groupId + \"&analyticsType=DURATION\" + \"&resolution=HOUR\", {observe: 'response'}).toPromise();\r\n }\r\n \r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { BehaviorSubject, Subject } from \"rxjs\";\r\nimport jwt_decode from \"jwt-decode\";\r\nimport { User } from \"../_shared/models/user\";\r\nimport { Token } from \"../authentication/_shared/models/token\";\r\nimport { UserService } from \"./user.service\";\r\nimport { JwksValidationHandler, OAuthService, OAuthStorage } from \"angular-oauth2-oidc\";\r\nimport { authConfigAAD, authConfigSKID } from \"../authentication/_helpers/auth-config\";\r\n\r\nconst boschMailPattern = '([A-Z-a-z]{3}[0-9]{1}[A-Z-a-z]{2,3}@bosch.com$)'\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AuthenticationService {\r\n user: BehaviorSubject = new BehaviorSubject(\r\n JSON.parse(sessionStorage.getItem(\"user\"))\r\n );\r\n mail: string;\r\n pattern: RegExp;\r\n azureTokenUri: string;\r\n azureLoginUri: string;\r\n azureLogoutUri: string;\r\n state: string;\r\n nonce: string;\r\n userName: string;\r\n public code_challenge: any;\r\n public code_verifier: any;\r\n\r\n constructor(\r\n public userService: UserService,\r\n private authStorage: OAuthStorage,\r\n private oauthService: OAuthService,\r\n private router: Router,\r\n ) {\r\n this.user = new BehaviorSubject(\r\n JSON.parse(sessionStorage.getItem(\"user\"))\r\n );\r\n }\r\n\r\n // Observable string sources\r\n private homeComponent = new Subject();\r\n \r\n // Observable string streams\r\n homeComponentCalled$ = this.homeComponent.asObservable();\r\n \r\n // Service message commands\r\n callLoginOrRegister() {\r\n this.homeComponent.next();\r\n }\r\n\r\n public configureAuthentication(issuer) {\r\n if (issuer === \"AAD\") {\r\n this.oauthService.configure(authConfigAAD);\r\n\r\n } else if (issuer === \"SKID\") {\r\n this.oauthService.configure(authConfigSKID);\r\n }\r\n this.oauthService.setStorage(sessionStorage);\r\n this.oauthService.tokenValidationHandler = new JwksValidationHandler();\r\n this.oauthService.loadDiscoveryDocument();\r\n }\r\n\r\n public async authenticationFlow() {\r\n this.setAuthConfiguration();\r\n this.oauthService.loadDiscoveryDocumentAndTryLogin()\r\n .then(() => {\r\n if (this.oauthService.hasValidAccessToken()) {\r\n this.callLoginOrRegister()\r\n } else {\r\n this.oauthService.initCodeFlow('', this.mail);\r\n }\r\n })\r\n .catch(err =>\r\n console.log(err));\r\n }\r\n\r\n public setAuthConfiguration() {\r\n this.mail = localStorage.getItem('mail')\r\n if (!this.mail) {\r\n this.router.navigate([\"login\"]);\r\n } else {\r\n this.pattern = new RegExp(boschMailPattern)\r\n if (this.pattern.test(this.mail)) {\r\n this.configureAuthentication(\"AAD\");\r\n localStorage.setItem('type', \"bosch\");\r\n } else {\r\n this.configureAuthentication(\"SKID\");\r\n localStorage.setItem('type', \"skid\");\r\n }\r\n }\r\n }\r\n\r\n public async doLogin() {\r\n let status = await this.getUserOrRegister()\r\n if(status === 404){\r\n return status;\r\n }\r\n var href = sessionStorage.getItem(\"href\");\r\n if (href !== null) {\r\n window.open(sessionStorage.getItem(\"href\"), \"_self\");\r\n sessionStorage.removeItem(\"href\");\r\n } else {\r\n this.router.navigate([\"branch\"]);\r\n }\r\n }\r\n\r\n getToken(): Token {\r\n let token: Token;\r\n token = {\r\n id_token: this.authStorage.getItem('id_token'),\r\n access_token: this.authStorage.getItem('access_token'),\r\n expires_at: this.authStorage.getItem('expires_at'),\r\n token_type: '',\r\n refresh_token: this.authStorage.getItem('refresh_token')\r\n }\r\n\r\n return token;\r\n }\r\n\r\n async getUserOrRegister() {\r\n try {\r\n await this.userService.retrieveUser()\r\n .then(\r\n (data) => {\r\n console.log(\"user retrive\");\r\n sessionStorage.setItem(\"user\", JSON.stringify(data));\r\n this.user.next(data);\r\n })\r\n } catch (error) {\r\n console.log(error);\r\n\r\n if (error.status === 404) {\r\n return error.status;\r\n }\r\n }\r\n }\r\n\r\n public async registerUser() {\r\n var token = this.getToken();\r\n var decodedToken = jwt_decode(token.id_token);\r\n console.log(\"TOKEN \", decodedToken);\r\n this.userName = decodedToken[\"preferred_username\"];\r\n this.userService.addNewUser(this.userName)\r\n this.callLoginOrRegister()\r\n }\r\n\r\n getUser(): User {\r\n return this.user.value;\r\n }\r\n\r\n logout() {\r\n localStorage.removeItem('mail');\r\n localStorage.removeItem('type');\r\n sessionStorage.removeItem('user');\r\n this.oauthService.logOut();\r\n }\r\n\r\n removeToken() {\r\n this.authStorage.removeItem('access_token');\r\n this.authStorage.removeItem('access_token_stored_at');\r\n this.authStorage.removeItem('refresh_token');\r\n this.authStorage.removeItem('id_token');\r\n this.authStorage.removeItem('id_token_claims_obj');\r\n this.authStorage.removeItem('id_token_expires_at');\r\n this.authStorage.removeItem('id_token_stored_at');\r\n console.log(\"Remove expired token\");\r\n }\r\n\r\n isAuthenticated(): boolean {\r\n if (JSON.parse(sessionStorage.getItem(\"user\")) && this.authStorage.getItem('access_token')) {\r\n return true;\r\n } else {\r\n console.log(\"not authenticated\");\r\n return false;\r\n }\r\n }\r\n\r\n isAdmin(): Promise {\r\n return this.userService.checkIsAdmin().then((data: boolean) => data);\r\n }\r\n\r\n isOwner(): Promise {\r\n return this.userService.checkIsOwner().then((data: boolean) => data);\r\n }\r\n\r\n generateStateParameter(): string {\r\n var state = this.generateRandomString();\r\n sessionStorage.setItem(\"state\", JSON.stringify(state));\r\n this.state = state;\r\n return state;\r\n }\r\n\r\n generateNonceParameter(): string {\r\n var nonce = this.generateRandomString();\r\n sessionStorage.setItem(\"nonce\", JSON.stringify(nonce));\r\n this.nonce = nonce;\r\n return nonce;\r\n }\r\n\r\n generateRandomString(length = 6): string {\r\n var randomChars =\r\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n var result = \"\";\r\n for (var i = 0; i < length; i++) {\r\n result += randomChars.charAt(\r\n Math.floor(Math.random() * randomChars.length)\r\n );\r\n }\r\n return result;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\n\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DisplaysService {\r\n \r\n constructor(private http: HttpClient) { }\r\n \r\n //Retrieve All Display\r\n retrieveAllDisplays() {\r\n const headers = new HttpHeaders({ 'accept': 'application/json'});\r\n return this.http.get(environment.apiUri + \"displays\", { headers} );\r\n }\r\n \r\n //Retrieve Display by Display Id\r\n retrieveDisplay(id) {\r\n return this.http.get(environment.apiUri + \"displays/\" + id).toPromise();\r\n }\r\n\r\n //Retrieve Display by Parking Id\r\n retrieveDisplayByParkingId(id) {\r\n return this.http.get(environment.apiUri + \"displays/parkings/\" + id);\r\n }\r\n \r\n //Create display\r\n createDisplay(body) {\r\n return this.http.post(environment.apiUri + \"displays\", body).toPromise();\r\n }\r\n \r\n //Update Display\r\n updateDisplay(id, body) {\r\n return this.http.put(environment.apiUri + \"displays/\" + id, body)\r\n }\r\n \r\n //Update Display\r\n deleteDisplay(id) {\r\n return this.http.delete(environment.apiUri + \"displays/\" + id).toPromise();\r\n }\r\n\r\n //Retrieve lots by display\r\n retrieveLotsDisplay(id) {\r\n return this.http.get(environment.apiUri + \"displays/\" + id + \"/lots\");\r\n }\r\n \r\n //Retrieve lots by display\r\n updateDisplayLots(id, body) {\r\n return this.http.patch(environment.apiUri + \"displays/\" + id + \"/lots\", body);\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\nimport { Image } from 'ol/style';\r\n\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ImagesService {\r\n \r\n images: BehaviorSubject;\r\n imagesInfo: BehaviorSubject;\r\n \r\n constructor(private http: HttpClient) {\r\n this.images = new BehaviorSubject(null);\r\n this.imagesInfo = new BehaviorSubject(null);\r\n }\r\n \r\n // API v2/images/{id} returns a JPEG\r\n retriveImages(id): Observable {\r\n const headers = new HttpHeaders({ 'Accept': 'image/jpeg' });\r\n return this.http.get(environment.apiUri + \"v2/images/\" + id, { headers, responseType: 'blob' });\r\n }\r\n \r\n // API v2/images/{id} returns image info\r\n retriveImagesInfo(id) {\r\n return this.http.get(environment.apiUri + \"v4/images/\"+ id + \"/info\" ).toPromise();\r\n }\r\n \r\n // API v2/images/{id} returns whethere an image id exists\r\n retriveImagesExists(id) {\r\n return this.http.get(environment.apiUri + \"v2/images/\"+ id + \"/exists\", { observe: 'response' }).toPromise();\r\n }\r\n \r\n // API /v2/images/{id}/dot - Patch to Update dot list \r\n updateDotList(imageId, body) {\r\n return this.http.patch(environment.apiUri + \"v2/images/\" + imageId + \"/dot\", body);\r\n }\r\n \r\n // API /v2/images - POST to Upload an image\r\n uploadImage(body) {\r\n let headers = new HttpHeaders();\r\n headers.append('Content-Type','multipart/form-data');\r\n return this.http.post(environment.apiUri + \"v2/images/\", body, { headers: headers, observe: 'response' });\r\n }\r\n \r\n // API /v2/images/{id} - PUT to Update an image\r\n updateImage(imageId, body) {\r\n let headers = new HttpHeaders();\r\n headers.append('Content-Type','multipart/form-data');\r\n return this.http.put(environment.apiUri + \"v2/images/\" + imageId, body, { headers: headers, observe: 'response' });\r\n }\r\n \r\n // returns a JPEG\r\n getImages(): Image { \r\n return this.images.value;\r\n }\r\n \r\n // returns image info\r\n getImagesInfo() { \r\n return this.imagesInfo.value;\r\n }\r\n \r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\n\r\nimport { BehaviorSubject, Observable } from \"rxjs\";\r\n\r\nimport { environment } from \"src/environments/environment\";\r\n\r\nimport { LotGetModel } from \"../_shared/models/lot\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class LotService {\r\n \r\n LotsInfo: any;\r\n lots: BehaviorSubject;\r\n \r\n constructor(private http: HttpClient) {\r\n this.lots = new BehaviorSubject(null);\r\n this.LotsInfo = new BehaviorSubject(null);\r\n }\r\n \r\n // Returns lot info\r\n retriveLot(id) {\r\n return this.http.get(environment.apiUri+\"v2/lots/\"+id).toPromise().then(data=>{\r\n console.log(\"lot \"+id+\" retrive\");\r\n this.lots.next(data);\r\n });\r\n }\r\n \r\n // API /v2/lots/{parkingId}/{sectionName} - Post to add new lots\r\n addNewLot(id, sectionName, body) {\r\n return this.http.post(environment.apiUri + \"v2/lots/\" + id + \"/\" + sectionName, body).toPromise();\r\n }\r\n \r\n // API /lots/{id}/ - DELETE to delete a lot\r\n deleteLot(lotId, parkingId, sectionName) {\r\n return this.http.delete(environment.apiUri + \"lots/\" + lotId + \"?parking_id=\" + parkingId + '§ion=' + sectionName).toPromise();\r\n }\r\n \r\n // Returns lot info\r\n retriveLotById(id) {\r\n return this.http.get(environment.apiUri+\"v2/lots/\"+id);\r\n }\r\n \r\n //Update Parking Space Type\r\n updateLotType(id, body) {\r\n return this.http.patch(environment.apiUri + \"lots/\" + id + \"/type\", body);\r\n }\r\n \r\n //Update Parking Space\r\n updateLot(parkingId, sectionName, body) {\r\n return this.http.put(environment.apiUri + \"v2/lots/\" + parkingId + \"/\" + sectionName, body).toPromise();\r\n }\r\n \r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LotsGroupsService {\r\n \r\n constructor(private http: HttpClient) { }\r\n \r\n //Share lots group\r\n retrieveGroups(id) {\r\n return this.http.get(environment.apiUri + \"lotsGroups/\" + id).toPromise();\r\n }\r\n \r\n //Returns lots groups by user\r\n retrieveGroupsUser() {\r\n return this.http.get(environment.apiUri + \"lotsGroups\").toPromise();\r\n }\r\n \r\n //Update group by id\r\n updateGroup(id, body) {\r\n return this.http.put(environment.apiUri + \"lotsGroups/\" + id, body,{ headers: { 'Content-Type': 'application/json' } });\r\n }\r\n \r\n //Create lots group\r\n createGroup(name, body) {\r\n return this.http.post(environment.apiUri + \"lotsGroups?name=\" + name, body).toPromise();\r\n }\r\n \r\n //Delete group by id\r\n deleteGroup(id) {\r\n return this.http.delete(environment.apiUri + \"lotsGroups?id=\" + id);\r\n }\r\n \r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { environment } from 'src/environments/environment';\r\n\r\nimport { Parking } from '../_shared/models/parking';\r\nimport { ImageInfo } from '../_shared/models/image';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ParkingService {\r\n \r\n parking: BehaviorSubject;\r\n parkingN: BehaviorSubject;\r\n lot: BehaviorSubject;\r\n section: BehaviorSubject;\r\n parkingTypes: BehaviorSubject;\r\n private parkingID = new BehaviorSubject('defaultParkId');\r\n currentParkingId = this.parkingID.asObservable();\r\n \r\n constructor(private http: HttpClient) {\r\n this.parking= new BehaviorSubject(null);\r\n this.parkingN=new BehaviorSubject(null);\r\n this.lot= new BehaviorSubject(null);\r\n this.section= new BehaviorSubject(null);\r\n this.parkingTypes= new BehaviorSubject(null);\r\n }\r\n \r\n retriveParkingsInfo() {\r\n return this.http.get(environment.apiUri + \"parkings\").toPromise();\r\n }\r\n \r\n retriveAllInfo(id) {\r\n return this.http.get(environment.apiUri + \"parkings/allinfo/\" + id).toPromise();\r\n }\r\n \r\n retriveParking(id) {\r\n return this.http.get(environment.apiUri+\"parkings/\"+id)\r\n .toPromise()\r\n .then(data=>{\r\n console.log(\"parking retrive\");\r\n this.parking.next(data);\r\n });\r\n }\r\n \r\n //parkingID v2\r\n retriveParkingId(id, parkingStatus) {\r\n return this.http.get(environment.apiUri + \"v2/parkings/\"+ id +\"/lots?status=\" + parkingStatus);\r\n }\r\n \r\n retriveParkingSub(id) {\r\n return this.http.get(environment.apiUri+\"parkings/\"+id);\r\n }\r\n \r\n retriveParkingN(id) {\r\n return this.http.get(environment.apiUri+\"parkings/\"+id+\"/nlot\")\r\n .toPromise()\r\n .then(data=>{\r\n console.log(\"parking retrive\");\r\n this.parkingN.next(data);\r\n });\r\n }\r\n \r\n retriveParkingDet(id,status) {\r\n return this.http.get(environment.apiUri+\"parkings/\"+id+\"/nlot/type\"+\"?status=\"+status)\r\n .toPromise()\r\n .then((data)=>{\r\n console.log(id +\"det retrive \");\r\n this.parkingTypes.next(data);\r\n });\r\n }\r\n \r\n retriveLotsInfo(id) {\r\n return this.http.get(environment.apiUri+ \"v2/parkings/\" + id + \"/lots\");\r\n }\r\n \r\n retriveLot(id) {\r\n return this.http.get(environment.apiUri+\"v2/lots/\"+id)\r\n .toPromise()\r\n .then(data=>{\r\n console.log(\"lot \"+id+\" retrive\");\r\n this.lot.next(data);\r\n });\r\n }\r\n \r\n retriveSection(id, sectionname, status) {\r\n return this.http.get(environment.apiUri+\"parkings/\"+id+\"/nlot/section/type?sectionName=\"+sectionname+\"&status=\"+status)\r\n .toPromise()\r\n .then(data=>{\r\n console.log(\"area \"+sectionname+\" retrive\");\r\n this.section.next(data);\r\n });\r\n }\r\n \r\n getParking():Parking {\r\n return this.parking.value;\r\n }\r\n \r\n getParkingN() {\r\n return this.parkingN.value;\r\n }\r\n \r\n getParkingDet() {\r\n return this.parkingTypes.value;\r\n }\r\n \r\n getLot() {\r\n return this.lot.value;\r\n }\r\n \r\n getSection() {\r\n return this.section.value;\r\n }\r\n \r\n getParkingId(parkId: any) {\r\n this.parkingID.next(parkId);\r\n }\r\n \r\n //Add New Parking\r\n addNewParking(body) {\r\n return this.http.post(environment.apiUri + \"parkings\", body).toPromise();\r\n }\r\n \r\n //Update Parking\r\n updateParking(parkingId, body) {\r\n return this.http.put(environment.apiUri + \"parkings/\" + parkingId, body).toPromise();\r\n }\r\n \r\n //Delete Parking\r\n deleteParking(parkingId) {\r\n return this.http.delete(environment.apiUri + \"parkings/\" + parkingId).toPromise();\r\n }\r\n \r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { environment } from 'src/environments/environment';\r\n\r\nimport { Sensor } from '../_shared/models/sensor';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SensorService {\r\n \r\n sensorsInfo: any;\r\n sensors: BehaviorSubject;\r\n \r\n constructor(private http: HttpClient) {\r\n this.sensors = new BehaviorSubject(null);\r\n this.sensorsInfo = new BehaviorSubject(null);\r\n }\r\n \r\n public retriveSensorInfo(sensorTag) {\r\n return this.http.get(environment.apiUri + \"sensors?tag=\" + sensorTag).toPromise();\r\n }\r\n \r\n}\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StyleService {\r\n \r\n constructor() { }\r\n \r\n computeHeight(percentage) {\r\n var headerHeight = document.getElementsByTagName('rb-full-header')[0].getElementsByTagName('header')[0].offsetHeight;\r\n var footerHeight = document.getElementsByTagName('rb-footer-nav')[0].getElementsByTagName('footer')[0].offsetHeight;\r\n \r\n if (window.matchMedia(\"(min-width: 600px)\").matches) {\r\n var sum = (headerHeight + footerHeight) + percentage * (headerHeight + footerHeight) / 100;\r\n } else {\r\n var sum = (headerHeight);\r\n }\r\n var container = document.getElementById('content');\r\n container.setAttribute(\"style\", \"height: calc(100vh - \" + sum + \"px)\");\r\n }\r\n \r\n computeHeightList() {\r\n var height = document.getElementById('height').scrollHeight;\r\n var content = document.getElementById('content');\r\n content.setAttribute(\"style\", \"height:\" + height + \"px\");\r\n }\r\n \r\n computeMinHeight() {\r\n var headerHeight = document.getElementsByTagName('rb-full-header')[0].getElementsByTagName('header')[0].offsetHeight;\r\n var footerHeight = document.getElementsByTagName('rb-footer-nav')[0].getElementsByTagName('footer')[0].offsetHeight;\r\n var sum = (headerHeight + footerHeight);\r\n var container = document.getElementById('drawer-container');\r\n container.setAttribute(\"style\", \"min-height: calc(100vh - \" + sum + \"px)\");\r\n }\r\n \r\n computeLoginHeight() {\r\n var headerHeight = document.getElementsByTagName('rb-full-header')[0].getElementsByTagName('header')[0].offsetHeight;\r\n var footerHeight = document.getElementsByTagName('rb-footer-nav')[0].getElementsByTagName('footer')[0].offsetHeight;\r\n var sum = (headerHeight + footerHeight);\r\n var container = document.getElementById('login');\r\n container.setAttribute(\"style\", \"height: calc(100vh - \" + sum + \"px)\");\r\n }\r\n \r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TypeService {\r\n \r\n constructor() { }\r\n \r\n public types() {\r\n return [\"regular\", \"management\",\"guest\",\"handicap\",\"e-vehicle\",\"short-term\"]\r\n }\r\n \r\n public find(value):string {\r\n let res:string;\r\n switch(value){\r\n case \"regular\":{\r\n res='black';\r\n break;\r\n }\r\n case \"management\":{\r\n res='#50237F';\r\n break;\r\n }\r\n case \"guest\":{\r\n res='#008ECF';\r\n break;\r\n }\r\n case \"handicap\":{\r\n res='#B90276';\r\n break;\r\n }\r\n case \"e-vehicle\":{\r\n res='#00A8B0';\r\n break;\r\n }\r\n case \"short-term\":{\r\n res='#525F6B';\r\n break;\r\n }\r\n \r\n default:{\r\n res='#BFC0C2';\r\n break;\r\n }\r\n }\r\n return res;\r\n }\r\n \r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { environment } from 'src/environments/environment';\r\n\r\nimport { User } from '../_shared/models/user';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserService {\r\n \r\n constructor(private http: HttpClient) { }\r\n \r\n retrieveUser() {\r\n return this.http.get(environment.apiUri + \"v3/users\").toPromise();\r\n }\r\n \r\n addNewUser(body) {\r\n return this.http.post(environment.apiUri + \"v2/users\", body).toPromise();\r\n }\r\n \r\n userCanEditByParkingID(parkingID): Promise {\r\n return this.http.get(environment.apiUri + \"v2/users/roleByParkingID?parking_id=\" + parkingID).toPromise();\r\n }\r\n \r\n //Update user accepted term\r\n updateTerms(body) {\r\n return this.http.patch(environment.apiUri + \"v2/users\", body, { headers: { 'Content-Type': 'application/json' } });\r\n }\r\n \r\n //Returns all users based on common resources\r\n retrieveAllUsersResourceBased() {\r\n return this.http.get(environment.apiUri + \"users/resourceBased/all\").toPromise();\r\n }\r\n \r\n //Grant resources to user\r\n grantResources(id, body) {\r\n return this.http.patch(environment.apiUri + \"users/\" + id + \"/grantResource\", body);\r\n }\r\n \r\n //Deny resources to user\r\n denyResources(id, body) {\r\n return this.http.patch(environment.apiUri + \"users/\" + id + \"/denyResource\", body);\r\n }\r\n \r\n //Check isOwner\r\n checkIsOwner() {\r\n return this.http.get(environment.apiUri + \"users/checkRole?roleType=owner\").toPromise();\r\n }\r\n \r\n //Check isAdmin\r\n checkIsAdmin() {\r\n return this.http.get(environment.apiUri + \"users/checkRole?roleType=admin\").toPromise();\r\n }\r\n\r\n // Delete user\r\n deleteUser() {\r\n return this.http.delete(environment.apiUri + \"v2/users\").toPromise();\r\n }\r\n \r\n}","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { FormBuilder, FormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\n\r\nimport { AnalyticsService } from 'src/app/_services/analytics.service';\r\n\r\nimport Chart from 'chart.js/auto';\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\n@Component({\r\n selector: 'app-analytics-daily',\r\n templateUrl: './analytics-daily.component.html',\r\n styleUrls: ['./analytics-daily.component.scss']\r\n})\r\nexport class AnalyticsDailyComponent implements OnInit {\r\n \r\n public parkingId: string;\r\n \r\n // CHART declarations\r\n public dailyChartOccupancy: Chart;\r\n public ctxDaily: any;\r\n \r\n // DatePicker\r\n @Input() myGroup: UntypedFormGroup;\r\n @Input() minDate = new Date();\r\n @Input() maxDate = new Date();\r\n public maxCheckDate = new Date();\r\n public yesterday = new Date();\r\n \r\n // API variables\r\n public dailyDataOccupancyObj: any = {};\r\n public dayOccupancyRate: number[] = [];\r\n \r\n // Variable declarations\r\n public mapLoaded = true;\r\n public showError:boolean = false;\r\n \r\n //Select Parking / Group\r\n @Input() lotsGroups: any;\r\n @Input() parkings: any;\r\n groupList: any = [];\r\n parkingList: any = [];\r\n \r\n //Time range\r\n @Input() timeStart;\r\n @Input() timeEnd;\r\n dayOccupancyRateTime: any = [];\r\n \r\n constructor(\r\n private analytics: AnalyticsService,\r\n private route: ActivatedRoute) { }\r\n \r\n async ngOnInit() {\r\n this.createChart();\r\n this.yesterday.setFullYear(this.myGroup.get(\"date\").value.getFullYear(), this.myGroup.get(\"date\").value.getMonth(), this.myGroup.get(\"date\").value.getDate() - 1);\r\n this.dataComputation(this.yesterday, this.yesterday, '');\r\n \r\n this.maxCheckDate = this.maxDate;\r\n \r\n this.myGroup.valueChanges.pipe(debounceTime(400), distinctUntilChanged()).subscribe(change => {\r\n if(change.date !== null && change.endDate !== null) {\r\n if(change.date === this.maxCheckDate) {\r\n this.dataComputation(this.yesterday, this.yesterday, change.selected)\r\n } else {\r\n this.dataComputation(change.date, change.endDate, change.selected);\r\n }\r\n }\r\n });\r\n \r\n }\r\n \r\n createChart() {\r\n // Create chart DAILY OCCUPANCY\r\n this.ctxDaily = document.getElementById(\"dailyParkingOccupancy\");\r\n this.dailyChartOccupancy = new Chart(\"dailyParkingOccupancy\", {\r\n type: \"bar\",\r\n data: {\r\n labels: [\"12am\",\"1am\",\"2am\",\"3am\",\"4am\",\"5am\",\"6am\",\"7am\",\"8am\",\"9am\",\"10am\",\"11am\",\"12pm\",\"1pm\",\"2pm\",\"3pm\",\"4pm\",\"5pm\",\"6pm\",\"7pm\",\"8pm\",\"9pm\",\"10pm\",\"11pm\"],\r\n datasets: [\r\n {\r\n label: \"Occupancy\",\r\n backgroundColor: \"#005691\",\r\n borderColor: \"#005691\",\r\n data: this.dayOccupancyRate,\r\n },\r\n ],\r\n },\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n scales: {\r\n x: {\r\n ticks: {\r\n autoSkip: false\r\n }\r\n },\r\n y: \r\n {\r\n title: {\r\n display: true,\r\n text: \"Hourly Occupancy (%)\",\r\n },\r\n min: 0,\r\n max: 100,\r\n ticks: {\r\n stepSize: 10,\r\n }\r\n },\r\n },\r\n plugins: {\r\n legend: {\r\n display: false,\r\n position: \"bottom\",\r\n },\r\n }\r\n },\r\n });\r\n \r\n this.mapLoaded = true;\r\n }\r\n \r\n async dataComputation(genericDate: Date, endDate: Date, selected: any){\r\n // DAY COMPUTATION CHART\r\n this.computeChart([]);\r\n this.mapLoaded = false;\r\n \r\n var startDayDate = DateTime.fromISO(genericDate.toISOString()).setZone('Europe/Rome').plus({days: 1}).toUTC().startOf('day').toISO();\r\n var endDayDate = DateTime.fromISO(endDate.toISOString()).setZone('Europe/Rome').plus({days: 2}).toUTC().startOf('day').toISO();\r\n \r\n console.log(\"START DAY \", startDayDate)\r\n console.log(\"END DAY \", endDayDate)\r\n \r\n if(this.parkings !== undefined) {\r\n this.groupList = [];\r\n for (let i=0; i {\r\n if(x.status !== 200) {\r\n this.showError = true;\r\n this.dailyDataOccupancyObj = x.body;\r\n } else {\r\n this.showError = false;\r\n this.dailyDataOccupancyObj = x.body;\r\n }\r\n });\r\n } else if (this.groupList.indexOf(selected) !== -1) {\r\n this.parkingId = selected;\r\n await this.analytics.getDailyOccupancy(this.parkingId, endDayDate, startDayDate).then((x) => {\r\n if(x.status !== 200) {\r\n this.showError = true;\r\n this.dailyDataOccupancyObj = x.body;\r\n } else {\r\n this.showError = false;\r\n this.dailyDataOccupancyObj = x.body;\r\n }\r\n });\r\n } else if (this.parkingList.indexOf(selected) !== -1 ) {\r\n let groupId = '';\r\n for (let i = 0; i {\r\n if(x.status !== 200) {\r\n this.showError = true;\r\n this.dailyDataOccupancyObj = x.body;\r\n } else {\r\n this.showError = false;\r\n this.dailyDataOccupancyObj = x.body;\r\n }\r\n });\r\n }\r\n \r\n let offset = (DateTime.fromJSDate(this.myGroup.get(\"date\").value).setZone('Europe/Rome').offset)/60;\r\n \r\n let occupanciesObj = this.dailyDataOccupancyObj?.occupancies;\r\n \r\n if(occupanciesObj?.length>0) {\r\n occupanciesObj = occupanciesObj.reduce(function (r, a) {\r\n r[DateTime.fromISO(a.start).plus({hours: offset}).toUTC().toObject().hour] = r[DateTime.fromISO(a.start).plus({hours: offset}).toUTC().toObject().hour] || [];\r\n r[DateTime.fromISO(a.start).plus({hours: offset}).toUTC().toObject().hour].push(a);\r\n return r\r\n }, {});\r\n \r\n var occupanciesArray = Object.keys(occupanciesObj).map(function(index){\r\n let a = occupanciesObj[index]\r\n return a;\r\n })\r\n \r\n this.dayOccupancyRate = [];\r\n this.dayOccupancyRateTime = []\r\n for(let i = 0; i {\r\n if(change.date !== null && change.endDate !== null) {\r\n if(change.date === this.maxDate) {\r\n this.dataComputation(this.yesterday, this.yesterday, change.selected);\r\n } else {\r\n this.dataComputation(change.date, change.endDate, change.selected);\r\n }\r\n }\r\n });\r\n \r\n this.daysrangeChartOccupancy.resize(document.getElementById(\"dailyParkingOccupancy\").offsetWidth, document.getElementById(\"dailyParkingOccupancy\").offsetHeight);\r\n \r\n }\r\n \r\n createChart() {\r\n // Create chart DAYS RANGE OCCUPANCY\r\n this.ctxDaysRange = document.getElementById(\"daysrangeParkingOccupancy\");\r\n this.daysrangeChartOccupancy = new Chart(\"daysrangeParkingOccupancy\", {\r\n type: \"bar\",\r\n data: {\r\n labels: [],\r\n datasets: [\r\n {\r\n label: \"Occupancy\",\r\n backgroundColor: \"#00d07f\",\r\n borderColor: \"#00d07f\",\r\n data: this.daysrangeOccupancyRate,\r\n },\r\n ],\r\n },\r\n options: {\r\n animation: false,\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n scales: {\r\n y:\r\n {\r\n title: {\r\n display: true,\r\n text: \"Daily Occupancy (%)\",\r\n },\r\n min: 0,\r\n max: 100,\r\n ticks: { \r\n stepSize: 10,\r\n },\r\n },\r\n },\r\n plugins: {\r\n legend: {\r\n display: false,\r\n position: \"bottom\",\r\n },\r\n }\r\n },\r\n });\r\n \r\n this.mapLoaded = true;\r\n }\r\n \r\n async dataComputation(date: Date, genericDate: Date, selected: any){\r\n // WEEK COMPUTATION CHART\r\n this.computeChart([]);\r\n this.daysrangeDayRange = [];\r\n this.mapLoaded = false;\r\n \r\n var startDaysRangeDate = DateTime.fromISO(date.toISOString()).setZone('Europe/Rome').plus({days: 1}).toUTC().startOf('day').toISO();\r\n var endDaysRangeDate = DateTime.fromISO(genericDate.toISOString()).setZone('Europe/Rome').plus({days: 2}).toUTC().startOf('day').toISO();\r\n \r\n if(this.parkings !== undefined) {\r\n this.groupList = [];\r\n for (let i=0; i {\r\n if(x.status !== 200) {\r\n this.showError = true;\r\n this.daysrangeDataOccupancyObj = x.body;\r\n } else {\r\n this.showError = false;\r\n this.daysrangeDataOccupancyObj = x.body;\r\n }\r\n });\r\n } else if (this.groupList.indexOf(selected) !== -1) {\r\n this.parkingId = selected;\r\n await this.analytics.getWeeklyOccupancy(this.parkingId, endDaysRangeDate, startDaysRangeDate).then((x) => {\r\n if(x.status !== 200) {\r\n this.showError = true;\r\n this.daysrangeDataOccupancyObj = x.body;\r\n } else {\r\n this.showError = false;\r\n this.daysrangeDataOccupancyObj = x.body;\r\n }\r\n });\r\n } else if (this.parkingList.indexOf(selected) !== -1 ){\r\n let groupId = '';\r\n for (let i = 0; i {\r\n if(x.status !== 200) {\r\n this.showError = true;\r\n this.daysrangeDataOccupancyObj = x.body;\r\n } else {\r\n this.showError = false;\r\n this.daysrangeDataOccupancyObj = x.body;\r\n }\r\n });\r\n }\r\n \r\n for (let i = 0; i < this.daysrangeDataOccupancyObj?.occupancies?.length; i++) {\r\n this.daysrangeOccupancyRate[i] = this.daysrangeDataOccupancyObj.occupancies[i][\"occupancy_rate\"] * 100;\r\n this.daysrangeDayRange[i] = DateTime.fromISO(this.daysrangeDataOccupancyObj.occupancies[i][\"start\"]).toFormat('ccc, LLL dd, yyyy');\r\n }\r\n \r\n console.log(\"START DAYS RANGE \", startDaysRangeDate)\r\n console.log(\"END DAYS RANGE \", endDaysRangeDate)\r\n \r\n // Round to 2 decimal points\r\n this.daysrangeOccupancyRate = this.daysrangeOccupancyRate.map(function (each_element) {\r\n return Number(each_element.toFixed(2));\r\n });\r\n \r\n // UPDATE CHART\r\n this.computeChart(this.daysrangeOccupancyRate);\r\n \r\n //Compute Analytics in a time range\r\n await this.analytics.getDailyOccupancy(this.parkingId, endDaysRangeDate, startDaysRangeDate).then((x) => (this.daysrangeDataOccupancyTimeObj = x));\r\n\t\t\r\n let hourRange = this.timeEnd.hour - this.timeStart.hour;\r\n if(hourRange < 24) {\r\n this.computeTimeRange();\r\n }\r\n \r\n }\r\n \r\n computeChart(daysrangeOccupancyRate) {\r\n // WEEK CHART UPDATE\r\n this.daysrangeChartOccupancy.data.datasets[0].data = daysrangeOccupancyRate;\r\n this.daysrangeChartOccupancy.data.labels = this.daysrangeDayRange;\r\n this.daysrangeChartOccupancy.update();\r\n this.mapLoaded = true;\r\n }\r\n \r\n computeTimeRange() {\r\n //UPDATE WEEKLY\r\n let hourRange = this.timeEnd.hour - this.timeStart.hour;\r\n \r\n let offset = (DateTime.fromJSDate(this.myGroup.get(\"date\").value).setZone('Europe/Rome').offset)/60;\r\n \r\n //Selection of data in the time range given in input\r\n var newdatasetdaysrange = [];\r\n for (let i=0; i= this.timeStart.hour && DateTime.fromISO(this.daysrangeDataOccupancyTimeObj.occupancies[i].start).plus({hours: offset}).toUTC().toObject().hour < this.timeEnd.hour) {\r\n newdatasetdaysrange[i] = this.daysrangeDataOccupancyTimeObj.occupancies[i];\r\n }\r\n }\r\n \r\n //Reduce function to group the occupancies of the same day \r\n let newdatasetsdaysrange = newdatasetdaysrange.reduce(function (r, a) {\r\n r[DateTime.fromISO(a.start).toUTC().toObject().day] = r[DateTime.fromISO(a.start).toUTC().toObject().day] || [];\r\n r[DateTime.fromISO(a.start).toUTC().toObject().day].push(a);\r\n return r\r\n }, {});\r\n \r\n //Compute Occupancy Rate in a time range \r\n let occupancies = [];\r\n for (const i in newdatasetsdaysrange) {\r\n let occupancyRate = 0;\r\n for(let j = 0; j {\r\n if(change.date !== null && change.endDate !== null) {\r\n if(change.date === this.maxCheckDate) {\r\n this.dataComputation(this.yesterday, this.yesterday, change.selected)\r\n } else {\r\n this.dataComputation(change.date, change.endDate, change.selected);\r\n }\r\n }\r\n });\r\n }\r\n \r\n createChart() {\r\n // Create chart DAILY DURATIONS\r\n this.ctxDaily = document.getElementById(\"dailyDurations\");\r\n this.dailyChartDurations = new Chart(\"dailyDurations\", {\r\n type: \"bar\",\r\n data: {\r\n labels: [\"12am-4am\",\"4am-8am\",\"8am-12pm\",\"12pm-4pm\",\"4pm-8pm\",\"8pm-12am\"],\r\n datasets: [\r\n {\r\n label: \"0-30min\",\r\n backgroundColor: \"#005691\",\r\n borderColor: \"#005691\",\r\n data: this.database[0]\r\n },\r\n {\r\n label: \"30min-3hrs\",\r\n backgroundColor: \"#76b81b\",\r\n borderColor: \"#005691\",\r\n data: this.database[1]\r\n },\r\n {\r\n label: \"3hrs-9hrs\",\r\n backgroundColor: \"#ffcc00\",\r\n borderColor: \"#005691\",\r\n data: this.database[2]\r\n },\r\n {\r\n label: \"9hrs-24hrs\",\r\n backgroundColor: \"#12eaea\",\r\n borderColor: \"#005691\",\r\n data: this.database[3]\r\n },\r\n {\r\n label: \"24hrs+\",\r\n backgroundColor: \"#e83b1e\",\r\n borderColor: \"#005691\",\r\n data: this.database[4]\r\n },\r\n ],\r\n },\r\n options: {\r\n \r\n responsive: true,\r\n maintainAspectRatio: false,\r\n scales: {\r\n x: \r\n {\r\n stacked: true,\r\n },\r\n y: \r\n {\r\n stacked: true,\r\n title: {\r\n display: true,\r\n text: \"Number of Cars\",\r\n },\r\n }\r\n },\r\n plugins: {\r\n legend: {\r\n display: true,\r\n position: \"bottom\",\r\n },\r\n }\r\n },\r\n });\r\n \r\n this.mapLoaded = true;\r\n }\r\n \r\n async dataComputation(genericDate: Date, endDate: Date, selected: any) {\r\n // DAY COMPUTATION CHART\r\n this.computeChart([]);\r\n this.mapLoaded = false;\r\n let offset = (DateTime.fromJSDate(this.myGroup.get(\"date\").value).setZone('Europe/Rome').offset)/60;\r\n \r\n var startDayDate = DateTime.fromISO(genericDate.toISOString()).setZone('Europe/Rome').plus({days: 1}).toUTC().startOf('day').toISO();\r\n var endDayDate = DateTime.fromISO(endDate.toISOString()).setZone('Europe/Rome').plus({days: 2}).toUTC().startOf('day').toISO();\r\n \r\n if(this.parkings !== undefined) {\r\n this.groupList = [];\r\n for (let i=0; i {\r\n if(x.body.durations.length === 0) {\r\n this.showError = true;\r\n this.dailyDataDurationsObj = x.body;\r\n } else {\r\n this.showError = false;\r\n this.dailyDataDurationsObj = x.body;\r\n }\r\n });\r\n } else if (this.groupList.indexOf(selected) !== -1) {\r\n this.parkingId = selected;\r\n await this.analytics.getDailyDuration(this.parkingId, endDayDate, startDayDate).then((x: any) => {\r\n if(x.body.durations.length === 0) {\r\n this.showError = true;\r\n this.dailyDataDurationsObj = x.body;\r\n } else {\r\n this.showError = false;\r\n this.dailyDataDurationsObj = x.body;\r\n }\r\n });\r\n } else if (this.parkingList.indexOf(selected) !== -1 ){\r\n let groupId = '';\r\n for (let i = 0; i {\r\n if(x.body.durations.length === 0) {\r\n this.showError = true;\r\n this.dailyDataDurationsObj = x.body;\r\n } else {\r\n this.showError = false;\r\n this.dailyDataDurationsObj = x.body;\r\n }\r\n });\r\n }\r\n \r\n this.dataset = [[], [], [], [], []];\r\n for (let j=0; j < this.dailyDataDurationsObj?.durations?.length; j++) {\r\n if (this.dailyDataDurationsObj.durations[j].minutes < 30) {\r\n this.dataset[0].push(this.dailyDataDurationsObj.durations[j]);\r\n }\r\n else if (this.dailyDataDurationsObj.durations[j].minutes >= 30 && this.dailyDataDurationsObj.durations[j].minutes < 180) {\r\n this.dataset[1].push(this.dailyDataDurationsObj.durations[j]);\r\n }\r\n else if (this.dailyDataDurationsObj.durations[j].minutes >= 180 && this.dailyDataDurationsObj.durations[j].minutes < 540) {\r\n this.dataset[2].push(this.dailyDataDurationsObj.durations[j]);\r\n }\r\n else if (this.dailyDataDurationsObj.durations[j].minutes >= 540 && this.dailyDataDurationsObj.durations[j].minutes < 1440) {\r\n this.dataset[3].push(this.dailyDataDurationsObj.durations[j]);\r\n }\r\n else if (this.dailyDataDurationsObj.durations[j].minutes >= 1440) {\r\n this.dataset[4].push(this.dailyDataDurationsObj.durations[j]);\r\n }\r\n }\r\n \r\n this.database = [];\r\n for (let i=0; i < this.dataset.length; i++) {\r\n this.count1 = 0;\r\n this.count2 = 0;\r\n this.count3 = 0;\r\n this.count4 = 0;\r\n this.count5 = 0;\r\n this.count6 = 0;\r\n for (let j=0; j < this.dataset[i].length; j++) {\r\n if(DateTime.fromISO(this.dataset[i][j].start).plus({hours: offset}).toUTC().toObject().hour < 4) {\r\n this.count1++;\r\n }\r\n else if(DateTime.fromISO(this.dataset[i][j].start).plus({hours: offset}).toUTC().toObject().hour >= 4 && DateTime.fromISO(this.dataset[i][j].start).plus({hours: offset}).toUTC().toObject().hour < 8) {\r\n this.count2++;\r\n }\r\n else if (DateTime.fromISO(this.dataset[i][j].start).plus({hours: offset}).toUTC().toObject().hour >= 8 && DateTime.fromISO(this.dataset[i][j].start).plus({hours: offset}).toUTC().toObject().hour < 12) {\r\n this.count3++;\r\n }\r\n else if (DateTime.fromISO(this.dataset[i][j].start).plus({hours: offset}).toUTC().toObject().hour >= 12 && DateTime.fromISO(this.dataset[i][j].start).plus({hours: offset}).toUTC().toObject().hour < 16) {\r\n this.count4++;\r\n }\r\n else if (DateTime.fromISO(this.dataset[i][j].start).plus({hours: offset}).toUTC().toObject().hour >= 16 && DateTime.fromISO(this.dataset[i][j].start).plus({hours: offset}).toUTC().toObject().hour < 20) {\r\n this.count5++;\r\n }\r\n else if (DateTime.fromISO(this.dataset[i][j].start).plus({hours: offset}).toUTC().toObject().hour >= 20 && DateTime.fromISO(this.dataset[i][j].start).plus({hours: offset}).toUTC().toObject().hour < 24) {\r\n this.count6++;\r\n }\r\n this.database[i]=[this.count1, this.count2, this.count3, this.count4, this.count5, this.count6];\r\n }\r\n }\r\n \r\n console.log(\"START DAY DURATION \", startDayDate)\r\n console.log(\"END DAY DURATION \", endDayDate)\r\n \r\n // UPDATE CHART\r\n this.computeChart(this.database)\r\n \r\n }\r\n \r\n computeChart(database) {\r\n // DAY CHART UPDATE\r\n this.dailyChartDurations.data.datasets[0].data = database[0];\r\n this.dailyChartDurations.data.datasets[1].data = database[1];\r\n this.dailyChartDurations.data.datasets[2].data = database[2];\r\n this.dailyChartDurations.data.datasets[3].data = database[3];\r\n this.dailyChartDurations.data.datasets[4].data = database[4];\r\n \r\n this.dailyChartDurations.update();\r\n \r\n this.mapLoaded = true;\r\n }\r\n \r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { FormBuilder, FormControl, UntypedFormGroup } from '@angular/forms';\r\n\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\n\r\nimport { AnalyticsService } from 'src/app/_services/analytics.service';\r\n\r\nimport Chart from 'chart.js/auto';\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\n@Component({\r\n selector: 'app-analytics-weekly',\r\n templateUrl: './analytics-weekly.component.html',\r\n styleUrls: ['./analytics-weekly.component.scss']\r\n})\r\nexport class AnalyticsWeeklyComponent implements OnInit {\r\n \r\n public parkingId: string;\r\n \r\n // CHART declarations\r\n public weeklyChartOccupancy: Chart;\r\n public ctxWeekly: any;\r\n \r\n // DatePicker\r\n @Input() myGroup: UntypedFormGroup;\r\n @Input() minDate = new Date();\r\n @Input() maxDate = new Date();\r\n public yesterday = new Date();\r\n \r\n // API variables\r\n public weeklyDataOccupancyObj: any = {};\r\n public weekOccupancyRate: number[] = [];\r\n public weekDayRange: string[] = [];\r\n \r\n // Variable declarations\r\n public mapLoaded = true;\r\n public showError:boolean = false;\r\n \r\n //Select Parking / Group\r\n @Input() lotsGroups: any;\r\n @Input() parkings: any;\r\n groupList: any = [];\r\n parkingList: any = [];\r\n \r\n //Time range\r\n @Input() timeStart;\r\n @Input() timeEnd;\r\n weeklyDataOccupancyTimeObj: any = {};\r\n \r\n constructor(\r\n private analytics: AnalyticsService,\r\n private route: ActivatedRoute) { }\r\n \r\n async ngOnInit() {\r\n \r\n this.createChart();\r\n this.yesterday.setFullYear(this.myGroup.get(\"date\").value.getFullYear(), this.myGroup.get(\"date\").value.getMonth(), this.myGroup.get(\"date\").value.getDate() - 1);\r\n this.dataComputation(this.yesterday, '');\r\n this.myGroup.valueChanges.pipe(debounceTime(400), distinctUntilChanged()).subscribe(change => {\r\n if(change.date !== null && change.endDate !== null) {\r\n if(change.date === this.maxDate) {\r\n this.dataComputation(this.yesterday, change.selected);\r\n } else {\r\n this.dataComputation(change.endDate, change.selected);\r\n }\r\n }\r\n });\r\n \r\n this.weeklyChartOccupancy.resize(document.getElementById(\"dailyParkingOccupancy\").offsetWidth, document.getElementById(\"dailyParkingOccupancy\").offsetHeight)\r\n }\r\n \r\n createChart() {\r\n // Create chart WEEKLY OCCUPANCY\r\n this.ctxWeekly = document.getElementById(\"weeklyParkingOccupancy\");\r\n this.weeklyChartOccupancy = new Chart(\"weeklyParkingOccupancy\", {\r\n type: \"bar\",\r\n data: {\r\n labels: [],\r\n datasets: [\r\n {\r\n label: \"Occupancy\",\r\n backgroundColor: \"#50237f\",\r\n borderColor: \"#50237f\",\r\n data: this.weekOccupancyRate,\r\n },\r\n ],\r\n },\r\n options: {\r\n animation: false,\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n scales: {\r\n y:\r\n {\r\n title: {\r\n display: true,\r\n text: \"Weekly Occupancy (%)\",\r\n },\r\n min: 0,\r\n max: 100,\r\n ticks: { \r\n stepSize: 10,\r\n },\r\n },\r\n },\r\n plugins: {\r\n legend: {\r\n display: false,\r\n position: \"bottom\",\r\n },\r\n }\r\n },\r\n });\r\n \r\n this.mapLoaded = true;\r\n }\r\n \r\n async dataComputation(genericDate: Date, selected: any){\r\n // WEEK COMPUTATION CHART\r\n this.computeChart([]);\r\n this.weekDayRange = [];\r\n this.mapLoaded = false;\r\n \r\n var startWeekDate = DateTime.fromISO(genericDate.toISOString()).setZone('Europe/Rome').minus({days: 5}).toUTC().startOf('day').toISO()\r\n var endWeekDate = DateTime.fromISO(genericDate.toISOString()).setZone('Europe/Rome').plus({days: 2}).toUTC().startOf('day').toISO()\r\n \r\n if(this.parkings !== undefined) {\r\n this.groupList = [];\r\n for (let i=0; i {\r\n if(x.status !== 200) {\r\n this.showError = true;\r\n this.weeklyDataOccupancyObj = x.body;\r\n } else {\r\n this.showError = false;\r\n this.weeklyDataOccupancyObj = x.body;\r\n }\r\n });\r\n } else if (this.groupList.indexOf(selected) !== -1) {\r\n this.parkingId = selected;\r\n await this.analytics.getWeeklyOccupancy(this.parkingId, endWeekDate, startWeekDate).then((x) => {\r\n if(x.status !== 200) {\r\n this.showError = true;\r\n this.weeklyDataOccupancyObj = x.body;\r\n } else {\r\n this.showError = false;\r\n this.weeklyDataOccupancyObj = x.body;\r\n }\r\n });\r\n } else if (this.parkingList.indexOf(selected) !== -1 ){\r\n let groupId = '';\r\n for (let i = 0; i {\r\n if(x.status !== 200) {\r\n this.showError = true;\r\n this.weeklyDataOccupancyObj = x.body;\r\n } else {\r\n this.showError = false;\r\n this.weeklyDataOccupancyObj = x.body;\r\n }\r\n });\r\n }\r\n \r\n for (let i = 0; i < this.weeklyDataOccupancyObj?.occupancies?.length; i++) {\r\n this.weekOccupancyRate[i] = this.weeklyDataOccupancyObj.occupancies[i][\"occupancy_rate\"] * 100;\r\n this.weekDayRange[i] = DateTime.fromISO(this.weeklyDataOccupancyObj.occupancies[i][\"start\"]).toFormat('ccc, LLL dd, yyyy');\r\n }\r\n \r\n console.log(\"START WEEK \", startWeekDate)\r\n console.log(\"END WEEK \", endWeekDate)\r\n \r\n // Round to 2 decimal points\r\n this.weekOccupancyRate = this.weekOccupancyRate.map(function (each_element) {\r\n return Number(each_element.toFixed(2));\r\n });\r\n \r\n // UPDATE CHART\r\n this.computeChart(this.weekOccupancyRate)\r\n \r\n //Compute Analytics in a time range\r\n await this.analytics.getDailyOccupancy(this.parkingId, endWeekDate, startWeekDate).then((x) => (this.weeklyDataOccupancyTimeObj = x));\r\n\t\t\r\n let hourRange = this.timeEnd.hour - this.timeStart.hour;\r\n if(hourRange < 24) {\r\n this.computeTimeRange()\r\n }\r\n \r\n }\r\n \r\n computeChart(weekOccupancyRate) {\r\n // WEEK CHART UPDATE\r\n this.weeklyChartOccupancy.data.datasets[0].data = weekOccupancyRate;\r\n this.weeklyChartOccupancy.data.labels = this.weekDayRange;\r\n this.weeklyChartOccupancy.update();\r\n this.mapLoaded = true;\r\n }\r\n \r\n computeTimeRange() {\r\n //UPDATE WEEKLY\r\n let hourRange = this.timeEnd.hour - this.timeStart.hour;\r\n \r\n let offset = (DateTime.fromJSDate(this.myGroup.get(\"date\").value).setZone('Europe/Rome').offset)/60;\r\n \r\n //Selection of data in the time range given in input\r\n var newdatasetweek = [];\r\n for (let i=0; i= this.timeStart.hour && DateTime.fromISO(this.weeklyDataOccupancyTimeObj.occupancies[i].start).plus({hours: offset}).toUTC().toObject().hour < this.timeEnd.hour) {\r\n newdatasetweek[i] = this.weeklyDataOccupancyTimeObj.occupancies[i]\r\n }\r\n }\r\n \r\n //Reduce function to group the occupancies of the same day \r\n let newdatasetsweek = newdatasetweek.reduce(function (r, a) {\r\n r[DateTime.fromISO(a.start).toUTC().toObject().day] = r[DateTime.fromISO(a.start).toUTC().toObject().day] || [];\r\n r[DateTime.fromISO(a.start).toUTC().toObject().day].push(a);\r\n return r\r\n }, {});\r\n \r\n //Compute Occupancy Rate in a time range \r\n let occupancies = []\r\n for (const i in newdatasetsweek) {\r\n let occupancyRate = 0\r\n for(let j = 0; j {\r\n this.lotsGroups = group;\r\n });\r\n \r\n await this.parkingService.retriveParkingsInfo().then(parkings => {\r\n this.parkings = parkings as Parking[];\r\n });\r\n \r\n this.paramsId = this.route.snapshot.params.id\r\n if(this.paramsId !== undefined) {\r\n this.displayselect = false;\r\n this.displayDownload = true;\r\n } else {\r\n this.displayselect = true;\r\n this.myGroup.get(\"selected\").setValue(this.parkings[0].id);\r\n this.displayDownload = true;\r\n }\r\n \r\n let offsetNameShort = DateTime.fromJSDate(this.myGroup.get(\"date\").value).setZone('Europe/Rome').offsetNameShort;\r\n let offsetNameLong = DateTime.fromJSDate(this.myGroup.get(\"date\").value).setZone('Europe/Rome').offsetNameLong;\r\n this.offsetName = offsetNameShort + \" (\" + offsetNameLong + \")\";\r\n \r\n this.myGroup.valueChanges.subscribe(change=>{\r\n let offsetNameShort = DateTime.fromJSDate(this.myGroup.get(\"date\").value).setZone('Europe/Rome').offsetNameShort;\r\n let offsetNameLong = DateTime.fromJSDate(this.myGroup.get(\"date\").value).setZone('Europe/Rome').offsetNameLong;\r\n this.offsetName = offsetNameShort + \" (\" + offsetNameLong + \")\";\r\n this.checkDay();\r\n })\r\n \r\n this.myGroup.get(\"selected\").valueChanges.subscribe(change => {\r\n if(change.selected !== null) {\r\n this.displayDownload = true;\r\n }\r\n })\r\n \r\n this.checkDay();\r\n }\r\n \r\n ngAfterViewInit() {\r\n this.selectTime(); \r\n }\r\n \r\n selectTime() {\r\n this.childHourly.computeTimeRange();\r\n this.childDaily.computeTimeRange();\r\n this.childWeekly.computeTimeRange();\r\n }\r\n \r\n download() {\r\n let startDate = this.myGroup.get('date').value;\r\n let endDate = this.myGroup.get('endDate').value;\r\n let today = new Date();\r\n let dd = today.getDate();\r\n let mm = today.getMonth() + 1;\r\n let yyyy = today.getFullYear();\r\n if(document.getElementById('analyticsTitle') !== null) {\r\n this.title = this.paramsId;\r\n } else {\r\n this.title = this.myGroup.get('selected').value;\r\n }\r\n \r\n this.hourlyOccupancy = document.getElementById(\"dailyParkingOccupancy\");\r\n this.dailyOccupancy = document.getElementById(\"daysrangeParkingOccupancy\");\r\n this.weeklyOccupancy = document.getElementById(\"weeklyParkingOccupancy\");\r\n this.dailyDurations = document.getElementById(\"dailyDurations\");\r\n let hourlyOccupancyImage = this.hourlyOccupancy.toDataURL('image/jpg', 1.0);\r\n let dailyOccupancyImage = this.dailyOccupancy.toDataURL('image/jpg', 1.0);\r\n let weeklyOccupancyImage = this.weeklyOccupancy.toDataURL('image/jpg', 1.0);\r\n let dailyDurationsImage = this.dailyDurations.toDataURL('image/jpg', 1.0);\r\n \r\n let pdf = new jsPDF();\r\n let pdfWidth = (pdf.internal.pageSize.getWidth())*0.8;\r\n let pdfHeight = (pdf.internal.pageSize.getHeight())\r\n let margin = (pdf.internal.pageSize.getWidth())*0.1;\r\n let imgPropsHourly= pdf.getImageProperties(hourlyOccupancyImage);\r\n let pdfHeightHourly = (imgPropsHourly.height * pdfWidth) / imgPropsHourly.width;\r\n let imgPropsDaily= pdf.getImageProperties(dailyOccupancyImage);\r\n let pdfHeightDaily = (imgPropsDaily.height * pdfWidth) / imgPropsDaily.width;\r\n let imgPropsWeekly= pdf.getImageProperties(weeklyOccupancyImage);\r\n let pdfHeightWeekly = (imgPropsWeekly.height * pdfWidth) / imgPropsWeekly.width;\r\n let imgPropsDurations= pdf.getImageProperties(dailyDurationsImage);\r\n let pdfHeightDurations = (imgPropsDurations.height * pdfWidth) / imgPropsDurations.width;\r\n pdf.setFontSize(20);\r\n pdf.text(\"Analytics:\", 10, 10);\r\n pdf.text(this.title, 10, 20);\r\n pdf.addImage(\"https://smart-parking-app-d.bosch.tech/assets/img/Bosch_EN_LV_RGB.png\", \"png\",160, -2, 50, 24);\r\n pdf.setFontSize(10);\r\n pdf.text(\"Start Day: \" + startDate.toDateString() + \" - End Day: \" + endDate.toDateString(), 10, 30);\r\n pdf.setFontSize(15);\r\n pdf.text(\"Hourly Occupancy Chart\", 80, 40);\r\n pdf.addImage(hourlyOccupancyImage, 'JPEG', margin, 45, pdfWidth, pdfHeightHourly);\r\n pdf.text(\"Daily Occupancy Chart\", 80, pdfHeightHourly+60);\r\n pdf.addImage(dailyOccupancyImage, 'JPEG', margin, pdfHeightHourly+65, pdfWidth, pdfHeightDaily);\r\n if(pdfHeight < pdfHeightHourly+pdfHeightDaily+pdfHeightWeekly+85) {\r\n pdf.addPage();\r\n pdf.addImage(\"https://smart-parking-app-d.bosch.tech/assets/img/Bosch_EN_LV_RGB.png\", \"png\",160, -2, 50, 24);\r\n pdf.text(\"Weekly Occupancy Chart\", 80, 40);\r\n pdf.addImage(weeklyOccupancyImage, 'JPEG', margin, 45, pdfWidth, pdfHeightWeekly);\r\n pdf.text(\"Daily Durations Chart\", 80, pdfHeightWeekly+60);\r\n pdf.addImage(dailyDurationsImage, 'JPEG', margin, pdfHeightWeekly+65, pdfWidth, pdfHeightDurations);\r\n } else {\r\n pdf.text(\"Weekly Occupancy Chart\", 80, pdfHeightHourly+pdfHeightDaily+80);\r\n pdf.addImage(weeklyOccupancyImage, 'JPEG', margin, pdfHeightHourly+pdfHeightDaily+85, pdfWidth, pdfHeightWeekly);\r\n pdf.addPage();\r\n pdf.addImage(\"https://smart-parking-app-d.bosch.tech/assets/img/Bosch_EN_LV_RGB.png\", \"png\",160, -2, 50, 24);\r\n pdf.text(\"Daily Durations Chart\", 80, 30);\r\n pdf.addImage(dailyDurationsImage, 'JPEG', margin, 35, pdfWidth, pdfHeightDurations);\r\n }\r\n pdf.save(yyyy + \"-\" + mm + \"-\" + dd + \" \" + this.title + \" Analytics\" + \".pdf\");\r\n }\r\n \r\n setPreviousDay() {\r\n this.actualDay = this.myGroup.get(\"date\").value;\r\n this.previousDay = DateTime.fromJSDate(this.actualDay).minus({days: 1}).startOf('day').toJSDate();\r\n this.myGroup.get(\"date\").setValue(this.previousDay);\r\n this.actualEndDay = this.myGroup.get(\"endDate\").value;\r\n this.previousEndDay = DateTime.fromJSDate(this.actualEndDay).minus({days: 1}).startOf('day').toJSDate();\r\n this.myGroup.get(\"endDate\").setValue(this.previousEndDay);\r\n }\r\n \r\n setNextDay() {\r\n this.actualDay = this.myGroup.get(\"date\").value;\r\n this.nextDay = DateTime.fromJSDate(this.actualDay).plus({days: 1}).startOf('day').toJSDate();\r\n this.myGroup.get(\"date\").setValue(this.nextDay);\r\n this.actualEndDay = this.myGroup.get(\"endDate\").value;\r\n this.nextEndDay = DateTime.fromJSDate(this.actualEndDay).plus({days: 1}).startOf('day').toJSDate();\r\n this.myGroup.get(\"endDate\").setValue(this.nextEndDay);\r\n }\r\n \r\n checkDay() {\r\n let min = DateTime.fromJSDate(this.minCheckDate).startOf('day');\r\n let max = DateTime.fromJSDate(this.maxCheckDate).startOf('day');\r\n this.actualDay = this.myGroup.get(\"date\").value;\r\n this.previousDay = DateTime.fromJSDate(this.actualDay).minus({days: 1}).startOf('day').toJSDate();\r\n this.nextDay = DateTime.fromJSDate(this.actualDay).plus({days: 1}).startOf('day').toJSDate();\r\n this.actualEndDay = this.myGroup.get(\"endDate\").value;\r\n this.previousEndDay = DateTime.fromJSDate(this.actualEndDay).minus({days: 1}).startOf('day').toJSDate();\r\n this.nextEndDay = DateTime.fromJSDate(this.actualEndDay).plus({days: 1}).startOf('day').toJSDate();\r\n if(DateTime.fromJSDate(this.previousDay).ts < min.ts || DateTime.fromJSDate(this.previousEndDay).ts < min.ts) {\r\n document.getElementById(\"previousDay\").setAttribute('disabled','');\r\n } else {\r\n document.getElementById(\"previousDay\").removeAttribute('disabled');\r\n }\r\n \r\n if (DateTime.fromJSDate(this.nextDay).ts > max.ts || DateTime.fromJSDate(this.nextEndDay).ts > max.ts) {\r\n document.getElementById(\"nextDay\").setAttribute('disabled','');\r\n } else {\r\n document.getElementById(\"nextDay\").removeAttribute('disabled');\r\n }\r\n }\r\n \r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Location } from '@angular/common';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { environment } from 'src/environments/environment';\r\n\r\nimport { LanguageItem } from '@inst-iot/bosch-angular-ui-components';\r\n\r\nimport { User } from 'src/app/_shared/models/user';\r\nimport { Parking } from '../../models/parking';\r\n\r\nimport { AuthenticationService } from 'src/app/_services/authentication.service';\r\nimport { ParkingService } from 'src/app/_services/parking.service';\r\nimport { UserService } from 'src/app/_services/user.service';\r\n\r\n@Component({\r\n selector: 'app-layout',\r\n templateUrl: './layout.component.html',\r\n styleUrls: ['./layout.component.scss']\r\n})\r\nexport class LayoutComponent implements OnInit {\r\n title: string;\r\n user: User;\r\n language = 'en';\r\n parkings: Parking[];\r\n users: User[];\r\n view: string = '';\r\n userCanEdit: boolean = false;\r\n userRole: any;\r\n languages: LanguageItem[] = [\r\n { id: 'en', name: 'English' }\r\n ];\r\n parkingId: string;\r\n parkingSubscription: Subscription;\r\n \r\n constructor(\r\n public route: ActivatedRoute,\r\n public router: Router,\r\n public auth: AuthenticationService,\r\n public loc: Location,\r\n public http: HttpClient,\r\n public parkingService: ParkingService,\r\n public userService: UserService\r\n ) {\r\n this.user = { id: \"\", username: \"\", iss: \"\", client: null, groups: [], resourceMgmt: {}, timestamp: \"\", lastResourceAccessed: [], responseStatus: null, badRequests: null, accepted: null };\r\n this.title = \"SMART PARKING\";\r\n }\r\n \r\n ngOnDestroy() {\r\n this.parkingSubscription.unsubscribe();\r\n }\r\n \r\n async ngOnInit() {\r\n this.parkingSubscription = this.parkingService.currentParkingId.subscribe(\r\n async parkId => {\r\n this.parkingId = parkId;\r\n if(this.parkingId !== '' && this.parkingId !== 'defaultParkId') {\r\n await this.userService.userCanEditByParkingID(this.parkingId).then(\r\n (data) => {\r\n this.userRole = data['role'];\r\n },\r\n () => {\r\n this.userRole = null;\r\n }\r\n )\r\n }\r\n this.route.queryParams.subscribe(par => {\r\n this.view = par.view;\r\n });\r\n if(this.userRole === \"owner\"){\r\n this.userCanEdit= true;\r\n }else{\r\n this.userCanEdit= false;\r\n }\r\n }\r\n );\r\n \r\n if (this.auth.isAuthenticated()) {\r\n this.user = this.auth.user.value;\r\n \r\n this.http.get(environment.apiUri + \"parkings/allinfo\").subscribe((data: Parking[]) => {\r\n this.parkings = data;\r\n this.route.queryParams.subscribe(par => {\r\n /* if (par.view == null) {\r\n this.router.navigate([], { queryParams: { view: \"map\" }, queryParamsHandling: 'merge' });\r\n } */\r\n this.view = par.view;\r\n });\r\n });\r\n \r\n }\r\n }\r\n \r\n ngAfterViewInit() {\r\n document.getElementsByClassName(\"logo\")[0].innerHTML='\"Bosch';\r\n }\r\n \r\n backOnClick() {\r\n this.loc.back();\r\n }\r\n \r\n onClickLogout() {\r\n this.auth.logout();\r\n }\r\n \r\n sectionParam() {\r\n let sectionParam: String;\r\n this.route.queryParams.subscribe(par => {\r\n sectionParam = par.section;\r\n });\r\n return sectionParam;\r\n }\r\n \r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-oss-licenses',\r\n templateUrl: './oss-licenses.component.html',\r\n styleUrls: ['./oss-licenses.component.scss']\r\n})\r\nexport class OssLicensesComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-page-not-found',\r\n templateUrl: './page-not-found.component.html',\r\n styleUrls: ['./page-not-found.component.scss']\r\n})\r\nexport class PageNotFoundComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { AfterViewInit, Component, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { Parking } from '../../models/parking';\r\n\r\nimport { ParkingService } from 'src/app/_services/parking.service';\r\n\r\n@Component({\r\n selector: 'app-parking-dropdown',\r\n templateUrl: './parking-dropdown.component.html',\r\n styleUrls: ['./parking-dropdown.component.scss']\r\n})\r\nexport class ParkingDropdownComponent implements AfterViewInit {\r\n \r\n @Input() view: string;\r\n parkings: Parking[];\r\n sec: string;\r\n displayList: string[] = [];\r\n \r\n constructor(\r\n private router: Router,\r\n private parkingService: ParkingService,\r\n ) { }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(async () => {\r\n await this.parkingService.retriveParkingsInfo().then(parkings => {\r\n this.parkings = parkings as Parking[];\r\n });\r\n }, 1000);\r\n \r\n }\r\n \r\n go(parkingId, section) {\r\n const currentRoute = \"/parking/\" + parkingId;\r\n let path = window.location.pathname\r\n \r\n this.sec = section[0].name\r\n \r\n this.displayList = [];\r\n section.forEach((section)=>{\r\n section.display_id.forEach((display)=>{\r\n this.displayList.push(display)\r\n })\r\n })\r\n \r\n if(this.view === '' && section.length === 1) {\r\n this.view='map';\r\n } else if(this.view === '' && section.length > 1) {\r\n this.view = 'floors';\r\n } else if(this.view === undefined && section.length === 1) {\r\n this.view='map';\r\n } else if(this.view === undefined && section.length > 1) {\r\n this.view = 'floors';\r\n } else if(path === '/branch' && section.length > 1) {\r\n this.view = 'floors'\r\n } else if(this.view === 'floors' && section.length === 1) {\r\n this.view='map';\r\n } else if(this.view === 'display-list' && this.displayList.length === 0) {\r\n this.view = 'map'\r\n }\r\n \r\n if (this.view !== 'floors' && this.view !== 'analytics' && this.view !== 'sensor-status') {\r\n this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => {\r\n this.router.navigate([currentRoute], { queryParams: { view: this.view, section: this.sec }, queryParamsHandling: 'merge' }); // navigate to same route\r\n });\r\n } else {\r\n this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => {\r\n this.router.navigate([currentRoute], { queryParams: { view: this.view }, queryParamsHandling: 'merge' }); // navigate to same route\r\n });\r\n }\r\n }\r\n \r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-privacy-policy',\r\n templateUrl: './privacy-policy.component.html',\r\n styleUrls: ['./privacy-policy.component.scss']\r\n})\r\nexport class PrivacyPolicyComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","export class DisplayGetModel {\r\n name: string;\r\n url: string;\r\n layout: string;\r\n username: string;\r\n password: string;\r\n id: string;\r\n expirationDate: string;\r\n sessionId: string;\r\n status: string;\r\n pubStatus: string;\r\n loginStatus: string;\r\n groups: string[];\r\n mac: string;\r\n btia: string;\r\n x: number;\r\n y: number;\r\n parkingId: string;\r\n value: number;\r\n}\r\n\r\nexport class DisplayPostModel {\r\n name: string;\r\n url: string;\r\n layout: string;\r\n username: string;\r\n password: string;\r\n}\r\n\r\nexport class DisplayPutModel {\r\n name: string;\r\n url: string;\r\n layout: string;\r\n username: string;\r\n password: string;\r\n id: string;\r\n expirationDate: string;\r\n sessionId: string;\r\n status: string;\r\n pubStatus: string;\r\n loginStatus: string;\r\n groups: string[];\r\n mac: string;\r\n btia: string;\r\n x: number;\r\n y: number;\r\n parkingId: string;\r\n value: number;\r\n}","import { LotGetModel } from \"./lot\";\r\nimport { DisplayGetModel } from \"./display\";\r\n\r\nexport class ImageInfo {\r\n id: string;\r\n data: {\r\n type: string;\r\n data: [string]\r\n };\r\n parking_id: string;\r\n radius_lot : any;\r\n radius_lot_mobile: any;\r\n\tradius_area : any;\r\n x_multiplier: number;\r\n y_multiplier: number;\r\n dot_coordinate: [\r\n {\r\n name:string;\r\n x:number;\r\n y:number;\r\n type:string;\r\n }\r\n ];\r\n area_coordinate: [\r\n {\r\n name: string;\r\n x: number;\r\n y: number;\r\n n_lot_free: number;\r\n n_lot_busy: number;\r\n n_lot_alert: number;\r\n n_lot: number;\r\n }\r\n ];\r\n lot_coordinate: LotGetModel[];\r\n display_coordinate: DisplayGetModel[];\r\n cluster_distance: any;\r\n}\r\n","export class LotGetModel {\r\n id: string;\r\n type: string;\r\n location: {\r\n x: number;\r\n y: number;\r\n coordinates: [number, number];\r\n type: string;\r\n };\r\n area: string;\r\n authlevel: string;\r\n groups: string[];\r\n booked: boolean;\r\n x:\tnumber;\r\n y:\tnumber;\r\n timestamp: string;\r\n status: string;\r\n display: string[];\r\n sensor_id: string;\r\n config_status: string;\r\n partner_id: string;\r\n installation_timestamp: string;\r\n has_access: boolean;\r\n status_duration?:\tstring;\r\n average_stopover_time?: number;\r\n saturation_time?:\tnumber;\r\n}\r\nexport class LotPutModel {\r\n id: string;\r\n type: string;\r\n location: {\r\n x: number;\r\n y: number;\r\n coordinates: [number, number];\r\n type: string;\r\n };\r\n area: string;\r\n authlevel: string;\r\n sensorId: string;\r\n configStatus: string;\r\n groups: string[];\r\n booked: boolean;\r\n x:\tnumber;\r\n y:\tnumber;\r\n display: string[];\r\n}","export class Parking {\r\n id: string;\r\n name: string;\r\n address: string;\r\n location: {\r\n x: number;\r\n y: number;\r\n type: string;\r\n coordinates: [number, number];\r\n };\r\n section: [\r\n {\r\n name: string;\r\n lots: string[];\r\n display_id: string[];\r\n }\r\n ];\r\n groups: string[];\r\n n_lot: number;\r\n n_lot_free?: number;\r\n n_lot_busy?: number;\r\n n_lot_alert?: number;\r\n imageExists?: boolean = true;\r\n}\r\n\r\nexport class ParkingStatus {\r\n section: {\r\n id: string;\r\n n_lot: number;\r\n n_lot_free: number;\r\n n_lot_busy: number;\r\n n_lot_alert: number;\r\n };\r\n types: [\r\n {\r\n _id: string;\r\n n_lot: number;\r\n n_lot_free: number;\r\n }\r\n ]\r\n}","import {NgModule} from '@angular/core';\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatExpansionModule} from '@angular/material/expansion';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatInputModule} from '@angular/material/input';\r\nimport { MatCheckboxModule} from '@angular/material/checkbox';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatSelectModule } from '@angular/material/select'; \r\nimport { MatMenuModule } from '@angular/material/menu';\r\n\r\n@NgModule({\r\n exports: [\r\n MatButtonModule,\r\n MatButtonToggleModule,\r\n MatDividerModule,\r\n MatFormFieldModule,\r\n MatPaginatorModule,\r\n MatSidenavModule,\r\n MatSortModule,\r\n MatTooltipModule,\r\n MatExpansionModule,\r\n MatTableModule,\r\n MatInputModule,\r\n MatCheckboxModule,\r\n MatNativeDateModule,\r\n MatDatepickerModule,\r\n MatDialogModule,\r\n MatIconModule,\r\n MatListModule,\r\n MatChipsModule,\r\n MatTabsModule,\r\n MatSelectModule,\r\n MatMenuModule,\r\n ]\r\n})\r\nexport class MaterialModule {}","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n loadChildren: () => import('./home/home.module').then(m => m.HomeModule)\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { AuthenticationService } from './_services/authentication.service';\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent implements OnInit{\r\n\r\n constructor(){}\r\n\r\n displayToken: string;\r\n message;\r\n\r\n async ngOnInit() {\r\n }\r\n}\r\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport { CommonModule, AsyncPipe } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { BrowserAnimationsModule, NoopAnimationsModule } from '@angular/platform-browser/animations';\r\n\r\nimport { environment } from 'src/environments/environment';\r\n\r\nimport { AuthenticationService } from './_services/authentication.service';\r\nimport { ParkingService } from './_services/parking.service';\r\nimport { ImagesService } from './_services/images.service';\r\nimport { TypeService } from './_services/type.service';\r\nimport { UserService } from './_services/user.service';\r\n\r\nimport { JwtInterceptor } from './authentication/_helpers/jwt.interceptor';\r\nimport { ErrorInterceptor } from './authentication/_helpers/error.interceptor';\r\n\r\nimport { AppRoutingModule } from './app-routing.module';\r\n\r\nimport { HomeModule } from './home/home.module';\r\nimport { PrivacyPolicyComponent } from './_shared/components/privacy-policy/privacy-policy.component';\r\nimport { OssLicensesComponent } from './_shared/components/oss-licenses/oss-licenses.component';\r\nimport { PageNotFoundComponent } from './_shared/components/page-not-found/page-not-found.component';\r\n\r\nimport { AppComponent } from './app.component';\r\n\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { RbUiComponentsModule, ModalService, FormValidationMessageDirective, BreadcrumbsModule, ModalModule, FormFieldsModule, TabPanelModule } from '@inst-iot/bosch-angular-ui-components';\r\nimport { MaterialModule } from './_shared/modules/material.module';\r\nimport { MAT_DATE_LOCALE } from '@angular/material/core';\r\n\r\nimport { ToastContainerModule, ToastrModule } from 'ngx-toastr';\r\nimport { NgxCsvParserModule } from 'ngx-csv-parser';\r\n\r\nimport { OAuthModule, OAuthService, UrlHelperService } from 'angular-oauth2-oidc'; //here\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n PrivacyPolicyComponent,\r\n PageNotFoundComponent,\r\n OssLicensesComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n BrowserModule,\r\n HomeModule,\r\n AppRoutingModule,\r\n BrowserModule,\r\n HttpClientModule,\r\n BrowserAnimationsModule,\r\n NoopAnimationsModule,\r\n NgbModule,\r\n RbUiComponentsModule,\r\n BreadcrumbsModule.forRoot(),\r\n ModalModule.forRoot(),\r\n FormFieldsModule,\r\n TabPanelModule,\r\n MaterialModule,\r\n ToastrModule.forRoot(),\r\n OAuthModule.forRoot({\r\n resourceServer: {\r\n allowedUrls: [environment.apiUri],\r\n sendAccessToken: true\r\n }\r\n }),\r\n ToastContainerModule,\r\n NgxCsvParserModule\r\n ],\r\n providers: [\r\n AsyncPipe,\r\n ModalService,\r\n AuthenticationService,\r\n ParkingService,\r\n ImagesService,\r\n TypeService,\r\n UserService,\r\n OAuthService,\r\n UrlHelperService,\r\n { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },\r\n { provide: MAT_DATE_LOCALE, useValue: 'en-GB' }\r\n ],\r\n bootstrap: [AppComponent],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class AppModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\r\n\r\nimport { AuthenticationService } from 'src/app/_services/authentication.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthGuardGuard implements CanActivate {\r\n \r\n constructor(\r\n public router: Router,\r\n public auth: AuthenticationService\r\n ) {}\r\n \r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\r\n if (!this.auth.isAuthenticated()) {\r\n console.log(\"Redirect to login\");\r\n setTimeout(()=>{this.router.navigate(['login'])},3000);\r\n return false;\r\n }\r\n return true;\r\n }\r\n \r\n}","import { AuthConfig } from \"angular-oauth2-oidc\";\r\nimport { environment } from \"src/environments/environment\";\r\n\r\nexport const authConfigSKID: AuthConfig = {\r\n issuer: environment.ciamIssuer,\r\n redirectUri: environment.redirectUri,\r\n postLogoutRedirectUri: environment.postLogoutRedirectUri,\r\n clientId: environment.ciamClientId,\r\n responseType: environment.responseType,\r\n silentRefreshRedirectUri: window.location.origin,\r\n useSilentRefresh: true,\r\n scope: environment.ciamScope,\r\n showDebugInformation: true,\r\n requestAccessToken: true,\r\n customQueryParams: environment.skidStyleId\r\n};\r\n\r\nexport const authConfigAAD: AuthConfig = {\r\n issuer: environment.azureIssuer,\r\n redirectUri: environment.redirectUri,\r\n postLogoutRedirectUri: environment.postLogoutRedirectUri,\r\n clientId: environment.azureClientId,\r\n responseType: environment.responseType,\r\n scope: environment.azureScope,\r\n showDebugInformation: true,\r\n requestAccessToken: true,\r\n strictDiscoveryDocumentValidation: false\r\n};","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { AuthenticationService } from 'src/app/_services/authentication.service';\r\n\r\n@Injectable()\r\nexport class ErrorInterceptor implements HttpInterceptor {\r\n router: any;\r\n\r\n constructor(private authenticationService: AuthenticationService) { }\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n return next.handle(request).pipe(catchError(err => {\r\n\r\n if ([401, 403].includes(err.status)) {\r\n this.authenticationService.removeToken();\r\n this.authenticationService.authenticationFlow();\r\n }\r\n //const error = err.error?.message || err.statusText;\r\n console.error(err);\r\n return throwError(err);\r\n }));\r\n }\r\n}","import { Injectable, Optional } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { OAuthModuleConfig, OAuthStorage } from 'angular-oauth2-oidc';\r\n\r\n@Injectable()\r\nexport class JwtInterceptor implements HttpInterceptor {\r\n\r\n constructor(\r\n private authStorage: OAuthStorage,\r\n @Optional() private moduleConfig: OAuthModuleConfig\r\n ) { }\r\n\r\n private checkUrl(url: string): boolean {\r\n let found = this.moduleConfig.resourceServer.allowedUrls.find(u => url.startsWith(u));\r\n return !!found;\r\n }\r\n\r\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\r\n // add authorization header with jwt token if available\r\n /*let token = this.oauthService.getAccessToken();\r\n if (token && request.url !== this.oauthService.get) {\r\n // console.log(\"add JWT token header \")\r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: token,\r\n }\r\n });\r\n }\r\n return next.handle(request);*/\r\n let url = req.url.toLowerCase();\r\n\r\n if (!this.moduleConfig) return next.handle(req);\r\n if (!this.moduleConfig.resourceServer) return next.handle(req);\r\n if (!this.moduleConfig.resourceServer.allowedUrls) return next.handle(req);\r\n if (!this.checkUrl(url)) return next.handle(req);\r\n\r\n let sendAccessToken = this.moduleConfig.resourceServer.sendAccessToken;\r\n\r\n if (sendAccessToken) {\r\n\r\n let token = this.authStorage.getItem('access_token');\r\n let header = token;\r\n\r\n let headers = req.headers\r\n .set('Authorization', header);\r\n\r\n req = req.clone({ headers });\r\n }\r\n\r\n return next.handle(req);\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\n\r\nimport { AuthenticationService } from 'src/app/_services/authentication.service';\r\n\r\n@Pipe({\r\n name: 'authImage'\r\n})\r\nexport class SecurePipe implements PipeTransform {\r\n \r\n constructor(private http: HttpClient,\r\n private auth: AuthenticationService,) { }\r\n \r\n async transform(src: string) {\r\n const token = this.auth.getToken();\r\n const headers = new HttpHeaders({'Authorization': token.access_token,'Accept':'image/jpeg'});\r\n const imageBlob = await this.http.get(src, {headers, responseType: 'blob'}).toPromise();\r\n const reader = new FileReader();\r\n return new Promise((resolve, reject) => {\r\n reader.onloadend = () => resolve(reader.result as string);\r\n reader.readAsDataURL(imageBlob);\r\n });\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { LoginComponent } from './login/login.component';\r\nimport { AuthenticationComponent } from './authentication/authentication.component';\r\n\r\nconst AUTHENTICATION_ROUTES: Routes = [\r\n {\r\n path: \"\",\r\n component: AuthenticationComponent,\r\n children: [\r\n { path: \"login\", component: LoginComponent, data: { title: \"Login\" } },\r\n ],\r\n },\r\n];\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n RouterModule.forChild(AUTHENTICATION_ROUTES)\r\n ],\r\n exports: [RouterModule]\r\n})\r\nexport class AuthenticationRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AuthenticationRoutingModule } from './authentication-routing.module';\r\nimport { LoginComponent } from './login/login.component';\r\nimport { BreadcrumbsModule, RbUiComponentsModule, FormFieldsModule, ModalModule, TabPanelModule } from '@inst-iot/bosch-angular-ui-components';\r\nimport { AuthenticationComponent } from './authentication/authentication.component';\r\nimport { SecurePipe } from './_helpers/secure.pipe';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n LoginComponent,\r\n AuthenticationComponent,\r\n SecurePipe\r\n ],\r\n imports: [\r\n CommonModule,\r\n AuthenticationRoutingModule,\r\n BreadcrumbsModule.forRoot(),\r\n RbUiComponentsModule,\r\n FormFieldsModule,\r\n TabPanelModule,\r\n ModalModule,\r\n FormsModule\r\n ]\r\n})\r\nexport class AuthenticationModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-authentication',\r\n templateUrl: './authentication.component.html',\r\n styleUrls: ['./authentication.component.scss']\r\n})\r\nexport class AuthenticationComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { Component, OnInit, EventEmitter, Output, TemplateRef, ViewChild } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\n\r\nimport { ModalOptions, ModalService } from '@inst-iot/bosch-angular-ui-components';\r\n\r\nimport { environment } from 'src/environments/environment';\r\n\r\nimport { User } from 'src/app/_shared/models/user';\r\n\r\nimport { AuthenticationService } from 'src/app/_services/authentication.service';\r\nimport { UserService } from 'src/app/_services/user.service';\r\nimport { StyleService } from 'src/app/_services/style.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-login',\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.scss']\r\n})\r\nexport class LoginComponent implements OnInit {\r\n [x: string]: any;\r\n user: User;\r\n mail: string;\r\n displayConfirm: boolean = false;\r\n displayLogin: boolean = false;\r\n options: ModalOptions = {\r\n showClose: false,\r\n escClose: false,\r\n backdropClose: false\r\n };\r\n\r\n @ViewChild('modalContent', { static: true }) private modalContent: TemplateRef;\r\n\r\n constructor(\r\n public auth: AuthenticationService,\r\n public userService: UserService,\r\n public router: Router,\r\n private route: ActivatedRoute,\r\n public http: HttpClient,\r\n public style: StyleService,\r\n public modalService: ModalService) { }\r\n\r\n async ngOnInit() {\r\n\r\n const state: string = this.route.snapshot.queryParamMap.get('state');\r\n if (state == 'UGF0cmljaw') {\r\n this.auth.logout();\r\n }\r\n else {\r\n if (this.auth.isAuthenticated()) {\r\n await this.userService.retrieveUser()\r\n .then(\r\n (data) => {\r\n this.user = data;\r\n if (this.user.accepted === false) {\r\n this.modalService.open(this.modalContent, this.options)\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n setTimeout(() => { this.style.computeLoginHeight() }, 100);\r\n }\r\n\r\n updateStatesMail(states) {\r\n this.mail = states;\r\n if (states !== undefined && states !== '') {\r\n this.displayLogin = true;\r\n }\r\n }\r\n\r\n modelChangeFn(states) {\r\n console.log('states', states);\r\n if (states == true && this.mail !== '') {\r\n this.displayConfirm = true;\r\n } else {\r\n this.displayConfirm = false;\r\n }\r\n }\r\n\r\n confirmTerms() {\r\n let body = \"true\";\r\n this.userService.updateTerms(body).subscribe(\r\n data => {\r\n console.log(\"Terms and Conditions Accepted\")\r\n },\r\n (error) => {\r\n console.log(\"Terms and Conditions Not Accepted\")\r\n })\r\n }\r\n\r\n async onClickRegister() {\r\n //await this.auth.discoveryAzure();\r\n if (this.mail.includes(\"bosch\")) {\r\n window.open(this.auth.azureLoginUri +\r\n environment.azureLoginParam +\r\n \"/home\" +\r\n \"&state=\" + this.auth.generateStateParameter() +\r\n \"&nonce=\" + this.auth.generateNonceParameter(),\r\n \"_self\")\r\n } else {\r\n window.open(\r\n environment.ciamRegistrationUri,\r\n \"_blank\");\r\n }\r\n }\r\n\r\n onClickLogout() {\r\n this.auth.logout();\r\n this.change.emit(null);\r\n }\r\n\r\n async onClickLogin() {\r\n localStorage.setItem('mail', this.mail)\r\n this.router.navigate([\"home\"]);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { AuthGuardGuard as AuthGuard } from '../authentication/_guards/auth-guard.guard'\r\nimport { BranchMgmtComponent } from './branch-mgmt/branch-mgmt.component';\r\nimport { BranchComponent } from './branch/branch.component';\r\nimport { UploadComponent } from './upload/upload.component';\r\n\r\nconst BRANCHMGMTROUTES: Routes = [\r\n {\r\n path: '', component: BranchMgmtComponent ,\r\n children: [\r\n { path: 'branch', component: BranchComponent, canActivate: [AuthGuard]},\r\n { path: 'upload', component: UploadComponent, canActivate: [AuthGuard]},\r\n ]\r\n }\r\n];\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n RouterModule.forChild(BRANCHMGMTROUTES)\r\n ],\r\n exports:[RouterModule]\r\n})\r\nexport class BranchMgmtRoutingModule { }\r\n\r\n\r\n\r\n\r\n","import { CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { BranchMgmtRoutingModule } from './branch-mgmt-routing.module';\r\n\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { RbUiComponentsModule, FormFieldsModule } from '@inst-iot/bosch-angular-ui-components';\r\nimport { MaterialModule } from '../_shared/modules/material.module';\r\n\r\nimport { BranchMgmtComponent } from './branch-mgmt/branch-mgmt.component';\r\nimport { BranchComponent } from './branch/branch.component';\r\nimport { EditParkComponent } from './edit-park/edit-park.component';\r\nimport { EditstreetmapComponent } from './editstreetmap/editstreetmap.component';\r\nimport { ParkingDetComponent } from './parking-det/parking-det.component';\r\nimport { StreetmapComponent } from './streetmap/streetmap.component';\r\nimport { UploadComponent } from './upload/upload.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n BranchMgmtComponent,\r\n BranchComponent,\r\n EditParkComponent,\r\n EditstreetmapComponent,\r\n ParkingDetComponent,\r\n StreetmapComponent,\r\n UploadComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n BranchMgmtRoutingModule,\r\n NgbModule,\r\n RbUiComponentsModule,\r\n FormFieldsModule,\r\n MaterialModule,\r\n ],\r\n schemas: [\r\n CUSTOM_ELEMENTS_SCHEMA,\r\n NO_ERRORS_SCHEMA]\r\n})\r\nexport class BranchMgmtModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-branch-mgmt',\r\n templateUrl: './branch-mgmt.component.html',\r\n styleUrls: ['./branch-mgmt.component.scss']\r\n})\r\nexport class BranchMgmtComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { environment } from 'src/environments/environment';\r\n\r\nimport { User } from 'src/app/_shared/models/user';\r\nimport { Parking } from 'src/app/_shared/models/parking';\r\n\r\nimport { ParkingService } from '../../_services/parking.service';\r\nimport { ImagesService } from '../../_services/images.service';\r\nimport { AuthenticationService } from 'src/app/_services/authentication.service';\r\n\r\n@Component({\r\n selector: 'app-branch',\r\n templateUrl: './branch.component.html',\r\n styleUrls: ['./branch.component.scss']\r\n})\r\nexport class BranchComponent implements OnInit {\r\n \r\n parkings: Parking[];\r\n view: string;\r\n public user: User;\r\n \r\n constructor(\r\n public http: HttpClient,\r\n public router: Router,\r\n public route: ActivatedRoute,\r\n private park: ParkingService,\r\n public imagesService: ImagesService,\r\n public auth: AuthenticationService,) { }\r\n \r\n async ngOnInit() {\r\n this.user = this.auth.getUser();\r\n \r\n this.http.get(environment.apiUri + \"parkings/allinfo\").subscribe(async (data: Parking[]) => {\r\n this.parkings = data;\r\n for (let index = 0; index < this.parkings.length; index++) {\r\n var parkImagesId = \"\";\r\n await this.park.retriveParking(this.parkings[index].id);\r\n this.park.parking.subscribe((data) => {\r\n parkImagesId = this.parkings[index].id + \"-\" + data.section[0].name;\r\n });\r\n await this.imagesService.retriveImagesExists(parkImagesId)\r\n .then(\r\n (data) => {\r\n this.parkings[index].imageExists = true;\r\n },\r\n (err) => {\r\n this.parkings[index].imageExists = false;\r\n }\r\n );\r\n }\r\n \r\n this.route.queryParams.subscribe(par => {\r\n if (par.view == null) {\r\n this.router.navigate([], { queryParams: { view: \"map\" }, queryParamsHandling: 'merge' });\r\n }\r\n this.view = par.view;\r\n });\r\n });\r\n \r\n }\r\n \r\n}","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { Parking } from 'src/app/_shared/models/parking';\r\n\r\nimport { AuthenticationService } from 'src/app/_services/authentication.service';\r\nimport { ParkingService } from '../../_services/parking.service';\r\nimport { TypeService } from '../../_services/type.service';\r\n\r\nimport { ToastContainerDirective, ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-edit-park',\r\n templateUrl: './edit-park.component.html',\r\n styleUrls: ['./edit-park.component.scss']\r\n})\r\nexport class EditParkComponent implements OnInit {\r\n \r\n parking: Parking;\r\n @Input() id: string;\r\n isOwner: boolean = false;\r\n \r\n @Output() closePop: EventEmitter = new EventEmitter();\r\n \r\n // Form to add Section\r\n sectionName: string = \"\";\r\n newSectionModel: any;\r\n \r\n // Form to remove Section\r\n selectedStatesRemoveSection: any;\r\n list: any;\r\n keys: any;\r\n \r\n constructor(\r\n public http: HttpClient,\r\n private router: Router,\r\n public park: ParkingService,\r\n public auth: AuthenticationService,\r\n public t: TypeService,\r\n private toastrService: ToastrService,) {\r\n \r\n this.parking = new Parking;\r\n \r\n this.newSectionModel = {\r\n name: \"\",\r\n lots: []\r\n }\r\n }\r\n \r\n async ngOnInit() {\r\n \r\n this.isOwner = await this.auth.isOwner();\r\n this.park.retriveParkingSub(this.id).subscribe(\r\n (data: any) => {\r\n this.parking = data;\r\n },\r\n (err) => {\r\n console.log(\"Parking \" + this.id + \" don't found in DB!\");\r\n }\r\n );\r\n \r\n }\r\n \r\n putParking() {\r\n let bodyUpdate={ \r\n id: this.parking.id,\r\n name: this.parking.name,\r\n address: this.parking.address,\r\n location: {\r\n x: this.parking.location.x,\r\n y: this.parking.location.y,\r\n type: this.parking.location.type,\r\n coordinates: [this.parking.location.x, this.parking.location.y]\r\n },\r\n section: this.parking.section,\r\n groups: this.parking.groups\r\n };\r\n \r\n this.park.updateParking(this.parking.id, bodyUpdate).then( data => {\r\n this.toast('success', this.parking.id, 'Parking updated successfully');\r\n },\r\n (error) => {\r\n this.toast('error', this.parking.id, 'Parking not updated');\r\n })\r\n \r\n setTimeout(()=>{this.reloadPage();},4000);\r\n }\r\n \r\n confirmAddSection() {\r\n this.newSectionModel = {\r\n name: this.sectionName,\r\n lots: [ ],\r\n }\r\n this.parking.section.push(this.newSectionModel)\r\n this.sectionName = \"\";\r\n }\r\n \r\n updateStatesRemoveSection(states) {\r\n this.keys = Object.keys(states);\r\n this.list = this.keys.filter(function(key){\r\n return states[key]\r\n });\r\n }\r\n \r\n confirmDeleteSection() {\r\n \r\n for(let i=0; this.parking.section.length; i++) {\r\n this.list.forEach(element => {\r\n if(this.parking.section[i].name == element) {\r\n let index = this.parking.section.indexOf(this.parking.section[i]);\r\n this.parking.section.splice(index, 1);\r\n }\r\n })\r\n }\r\n \r\n }\r\n \r\n closePopover() {\r\n this.closePop.emit(true)\r\n }\r\n \r\n reloadPage() {\r\n let currentRoute = \"/branch\";\r\n \r\n this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => {\r\n this.router.navigate([currentRoute], { queryParams: { view: 'edit' }, queryParamsHandling: 'merge' }); // navigate to same route\r\n });\r\n }\r\n \r\n // Toast function\r\n toast(type: string, id: string, message: string){\r\n \r\n switch (type) {\r\n case 'success':\r\n this.toastrService.success(id, message, {\r\n positionClass: 'toast-bottom-right',\r\n progressBar: true,\r\n closeButton: true,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n case 'warning':\r\n this.toastrService.warning(id, message, {\r\n positionClass: 'toast-bottom-right',\r\n progressBar: true,\r\n closeButton: true,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n case 'error':\r\n this.toastrService.error(id, message, {\r\n positionClass: 'toast-bottom-right',\r\n progressBar: true,\r\n closeButton: true,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n case 'info':\r\n this.toastrService.info(id, message, {\r\n positionClass: 'toast-bottom-center',\r\n progressBar: false,\r\n closeButton: false,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n default:\r\n break;\r\n }\r\n }\r\n \r\n}","import { Component, Input, ElementRef, QueryList, ViewChildren, HostListener, OnInit } from \"@angular/core\";\r\nimport { Location } from \"@angular/common\";\r\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from \"@angular/forms\";\r\nimport { _fixedSizeVirtualScrollStrategyFactory } from \"@angular/cdk/scrolling\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { Router } from \"@angular/router\";\r\n\r\nimport Map from \"ol/Map\";\r\nimport View from \"ol/View\";\r\nimport VectorLayer from \"ol/layer/Vector\";\r\nimport OSM from \"ol/source/OSM\";\r\nimport * as olProj from \"ol/proj\";\r\nimport TileLayer from \"ol/layer/Tile\";\r\nimport Feature from \"ol/Feature\";\r\nimport Point from \"ol/geom/Point\";\r\nimport VectorSource from \"ol/source/Vector\";\r\nimport { Circle, Fill, Style, Text, Stroke } from \"ol/style\";\r\nimport { Zoom } from \"ol/control\";\r\nimport { Draw, Translate } from \"ol/interaction\";\r\nimport Graticule from \"ol/layer/Graticule\";\r\nimport GeometryType from \"ol/geom/GeometryType\";\r\nimport Polygon from \"ol/geom/Polygon\";\r\n\r\nimport { Parking } from \"src/app/_shared/models/parking\";\r\nimport { ImageInfo } from \"src/app/_shared/models/image\";\r\n\r\nimport { ParkingService } from \"../../_services/parking.service\";\r\nimport { AuthenticationService } from \"src/app/_services/authentication.service\";\r\nimport { TypeService } from \"../../_services/type.service\";\r\nimport { StyleService } from \"src/app/_services/style.service\";\r\n\r\nimport { ModalComponent, ModalDirective } from \"@inst-iot/bosch-angular-ui-components\";\r\n\r\nimport { ToastContainerDirective, ToastrService } from 'ngx-toastr';\r\n\r\nconst pointFeatureRadius = 20;\r\n\r\n@Component({\r\n selector: \"app-editstreetmap\",\r\n templateUrl: \"./editstreetmap.component.html\",\r\n styleUrls: [\"./editstreetmap.component.scss\"],\r\n})\r\nexport class EditstreetmapComponent implements OnInit {\r\n @Input() parkings: Parking[];\r\n \r\n @ViewChildren(\"popUpInfo\", {read: ModalDirective}) ngbPopoverInfo!: QueryList;\r\n \r\n labels: any[];\r\n map: Map;\r\n center: [number, number];\r\n vectorSource: any;\r\n vectorLayer: VectorLayer;\r\n tool: string = \"none\";\r\n ovLevel: any[];\r\n features: any[];\r\n translate: Translate;\r\n drawPolygon: Draw;\r\n info: ImageInfo;\r\n userCanEditStreetmap: boolean = false;\r\n displayEditStreetmap: boolean = false;\r\n \r\n registerAllActions: any[] = [];\r\n registerSingleAction: any[] = [];\r\n registerModalActions: any[] = [];\r\n \r\n // Form to Add Parking\r\n addParkingForm: UntypedFormGroup;\r\n parkingIdForm = new UntypedFormControl();\r\n parkingNameForm = new UntypedFormControl();\r\n parkingAddressForm = new UntypedFormControl();\r\n parkingLocationXForm = new UntypedFormControl();\r\n parkingLocationYForm = new UntypedFormControl();\r\n parkingSectionNameForm = new UntypedFormControl();\r\n displayConfirmAdd: boolean = false;\r\n \r\n constructor(\r\n private router: Router,\r\n public form: UntypedFormBuilder,\r\n private loc: Location,\r\n private park: ParkingService,\r\n public types: TypeService,\r\n public auth: AuthenticationService,\r\n private style: StyleService,\r\n private toastrService: ToastrService,\r\n ) {\r\n \r\n this.addParkingForm = form.group({\r\n parkingIdForm: this.parkingIdForm,\r\n parkingNameForm: this.parkingNameForm,\r\n parkingAddressForm: this.parkingAddressForm,\r\n parkingLocationXForm: this.parkingLocationXForm,\r\n parkingLocationYForm: this.parkingLocationYForm,\r\n parkingSectionNameForm: this.parkingSectionNameForm\r\n });\r\n \r\n this.labels = [];\r\n this.ovLevel = [];\r\n this.center = [0, 0];\r\n this.features = [];\r\n \r\n this.translate = new Translate();\r\n \r\n this.drawPolygon = new Draw({\r\n source: this.vectorSource,\r\n type: 'Polygon' as GeometryType,\r\n });\r\n }\r\n \r\n async ngOnInit() {\r\n this.userCanEditStreetmap = (await this.auth.isAdmin() || await this.auth.isOwner())\r\n if(this.userCanEditStreetmap) {\r\n this.displayEditStreetmap = true;\r\n \r\n // Compute min/maxLocationX and min/maxLocationY\r\n const maxLocationX = Math.max.apply(\r\n Math,\r\n this.parkings.map(function (o) {\r\n return o.location.x;\r\n })\r\n );\r\n const minLocationX = Math.min.apply(\r\n Math,\r\n this.parkings.map(function (o) {\r\n return o.location.x;\r\n })\r\n );\r\n const maxLocationY = Math.max.apply(\r\n Math,\r\n this.parkings.map(function (o) {\r\n return o.location.y;\r\n })\r\n );\r\n const minLocationY = Math.min.apply(\r\n Math,\r\n this.parkings.map(function (o) {\r\n return o.location.y;\r\n })\r\n );\r\n \r\n // Creation of parking features\r\n this.parkings.forEach((parking, index) => {\r\n console.log(parking);\r\n console.log(index);\r\n const pos = [parking.location.y, parking.location.x];\r\n const singleFeature = new Feature({\r\n geometry: new Point(olProj.fromLonLat(pos)),\r\n description: parking.name,\r\n park_id: parking.id,\r\n });\r\n singleFeature.set(\"value\", parking.n_lot_free);\r\n this.features.push(singleFeature);\r\n \r\n this.center[0] = this.center[0] + (maxLocationX + minLocationX) / 2;\r\n this.center[1] = this.center[1] + (maxLocationY + minLocationY) / 2;\r\n });\r\n \r\n this.vectorSource = new VectorSource({\r\n features: this.features,\r\n });\r\n \r\n this.vectorLayer = new VectorLayer({\r\n source: this.vectorSource,\r\n style: this.styleFunction,\r\n });\r\n \r\n this.center[0] = this.center[0] / this.parkings.length;\r\n this.center[1] = this.center[1] / this.parkings.length;\r\n\r\n var mapwidth = document.getElementById('edit-map');\r\n if(maxLocationY < 0 || minLocationY <0) {\r\n var maxPixelX = (((maxLocationY+180)*(mapwidth.clientWidth/360)));\r\n var minPixelX = (((minLocationY+180)*(mapwidth.clientWidth/360)));\r\n } else {\r\n var maxPixelX = (((maxLocationY)*mapwidth.clientWidth)/360);\r\n var minPixelX = (((minLocationY)*mapwidth.clientWidth)/360);\r\n }\r\n var pixelDiff = maxPixelX-minPixelX;\r\n var longDiff = (maxLocationY+180)-(minLocationY+180);\r\n \r\n // Function to calculate the zoom based on the position of xMin and xMax\r\n function getMinZoom(center: number) {\r\n var width = (center + (center - (minPixelX)) + ((maxPixelX) - center));\r\n var scaleFactor = width*256/mapwidth.clientWidth\r\n if (longDiff<100) {\r\n return Math.ceil(Math.LOG2E * Math.log(width));\r\n } else {\r\n return Math.ceil(Math.LOG2E * Math.log(width/scaleFactor));\r\n }\r\n }\r\n\r\n var computedZoom = getMinZoom(pixelDiff);\r\n \r\n // Creation StreetMap\r\n this.map = new Map({\r\n target: \"edit-map\",\r\n layers: [\r\n new TileLayer({\r\n source: new OSM(),\r\n }),\r\n new Graticule({\r\n strokeStyle: new Stroke({\r\n color: \"#6f6f76\",\r\n width: 1,\r\n }),\r\n showLabels: true,\r\n wrapX: false,\r\n targetSize: 30,\r\n }),\r\n this.vectorLayer,\r\n ],\r\n controls: [\r\n new Zoom({\r\n className: 'zoomControl'\r\n })\r\n ],\r\n \r\n overlays: this.ovLevel,\r\n view: new View({\r\n center: olProj.fromLonLat([this.center[1], this.center[0]]),\r\n zoom: isNaN(computedZoom) || !isFinite(computedZoom) ? 1 : computedZoom,\r\n }),\r\n });\r\n \r\n // Function to compute dynamically the height of the map\r\n this.style.computeHeight(0);\r\n this.map.updateSize();\r\n \r\n // Check on the Add New Parking modal fields \r\n this.addParkingForm.valueChanges.subscribe(changes=>{\r\n this.displayConfirmAdd = false;\r\n this.checkEmpty();\r\n });\r\n \r\n /*\r\n on map click:\r\n - if is feature\r\n - move Parking or delete Parking or modify Parking\r\n */\r\n this.map.on(\"click\", (event) => {\r\n var feature = this.map.forEachFeatureAtPixel(\r\n event.pixel,\r\n function (feature) {\r\n return feature;\r\n }\r\n );\r\n if (feature) {\r\n if (this.tool === \"mod\") {\r\n \r\n // Modify a Parking\r\n var park_id = feature.get(\"park_id\");\r\n var featGeometry = feature.getGeometry();\r\n \r\n if (featGeometry instanceof Point) {\r\n var popOverElements = [];\r\n popOverElements = this.ngbPopoverInfo.toArray();\r\n var popOverComponent = popOverElements.find(\r\n (x) => x.content.elementRef.nativeElement.previousSibling.id == park_id\r\n );\r\n popOverComponent.modalService.open(popOverComponent.content)\r\n }\r\n \r\n } else if (this.tool === \"delete\") {\r\n \r\n // Delete a Parking\r\n this.buttonState();\r\n if (feature instanceof Feature) {\r\n var remID = feature.get(\"park_id\");\r\n this.parkings.splice(\r\n this.parkings.indexOf(this.parkings.find((x) => x.id == remID)),\r\n 1\r\n );\r\n this.vectorSource.removeFeature(feature);\r\n }\r\n \r\n this.registerSingleAction[0] = \"DELETE\";\r\n this.registerSingleAction[1] = feature;\r\n this.updateEvent();\r\n }\r\n \r\n } else if (this.tool === \"Polygon\") {\r\n var newParkName = this.info.parking_id + \"-0000new\";\r\n }\r\n });\r\n \r\n //Move Interaction\r\n this.translate.on(\"translatestart\", (event) => {\r\n document.body.style.cursor = \"grabbing\";\r\n if(this.registerAllActions.length == 0) {\r\n this.registerSingleAction[0] = \"MOVE\";\r\n this.registerSingleAction[1] = event.features.getArray()[0];\r\n console.log(\"Old Latitude: \" + olProj.toLonLat(event.coordinate)[1])\r\n console.log(\"Old Longitude: \" + olProj.toLonLat(event.coordinate)[0])\r\n this.registerSingleAction[1].values_.oldLatitude = olProj.toLonLat(event.coordinate)[1];\r\n this.registerSingleAction[1].values_.oldLongitude = olProj.toLonLat(event.coordinate)[0];\r\n this.registerSingleAction[1].values_.coordinate = event.coordinate;\r\n } else {\r\n let newEvent: any = event.features.getArray()[0];\r\n for (let i = 0; i {\r\n document.body.style.cursor = \"grab\";\r\n this.registerSingleAction[1].values_.newLatitude = olProj.toLonLat(event.coordinate)[1];\r\n this.registerSingleAction[1].values_.newLongitude = olProj.toLonLat(event.coordinate)[0];\r\n console.log(\"New Latitude: \" + olProj.toLonLat(event.coordinate)[1])\r\n console.log(\"New Longitude: \" + olProj.toLonLat(event.coordinate)[0])\r\n this.updateEvent();\r\n this.toast('success', (event.features.getArray()[0] as any).values_.description,'Parking moved successfully')\r\n });\r\n \r\n this.drawPolygon.on(\"drawend\", (event) => {\r\n var newPolygonFeature = event.feature;\r\n this.vectorSource.addFeature(newPolygonFeature);\r\n this.vectorLayer.setStyle(this.styleFunction);\r\n });\r\n \r\n } else {\r\n this.toast('error', 'You do not have permission to access this page.', 'Access Denied')\r\n setTimeout(()=>{this.loc.back();},3000);\r\n }\r\n }\r\n \r\n // End ngOnInit\r\n \r\n //Check if the Add New Parking Fields is empty\r\n checkEmpty() {\r\n if(this.addParkingForm.controls.parkingIdForm.value !== null && this.addParkingForm.controls.parkingNameForm.value !== null && this.addParkingForm.controls.parkingAddressForm.value !== null && this.addParkingForm.controls.parkingLocationXForm.value !== null && this.addParkingForm.controls.parkingLocationYForm.value !== null && this.addParkingForm.controls.parkingSectionNameForm.value !== null) {\r\n this.displayConfirmAdd = true;\r\n return false;\r\n } else {\r\n this.displayConfirmAdd = false;\r\n return true;\r\n }\r\n }\r\n \r\n // Confirmation Add a new parking\r\n confirmAddNewParking() {\r\n let newParkingBody = {};\r\n newParkingBody = {\r\n id: this.addParkingForm.controls.parkingIdForm.value,\r\n name: this.addParkingForm.controls.parkingNameForm.value,\r\n address: this.addParkingForm.controls.parkingAddressForm.value,\r\n location: {\r\n x: this.addParkingForm.controls.parkingLocationXForm.value,\r\n y: this.addParkingForm.controls.parkingLocationYForm.value,\r\n type: \"Point\",\r\n coordinates: [\r\n this.addParkingForm.controls.parkingLocationXForm.value,\r\n this.addParkingForm.controls.parkingLocationYForm.value\r\n ]\r\n },\r\n section: [\r\n {\r\n name: this.addParkingForm.controls.parkingSectionNameForm.value,\r\n lots: [],\r\n display_id: []\r\n }\r\n ],\r\n groups: []\r\n };\r\n console.log(\"New Parking Body: \" + newParkingBody);\r\n \r\n try {\r\n this.park.addNewParking(newParkingBody);\r\n this.toast('success', this.addParkingForm.controls.parkingNameForm.value,'New parking created successfully');\r\n } catch (error) {\r\n this.toast('error', this.addParkingForm.controls.parkingNameForm.value, 'New parking not created');\r\n }\r\n \r\n setTimeout(()=>{this.reloadPage();},4000);\r\n \r\n }\r\n \r\n // Function to remove interaction with the map\r\n toolChange(val: string) {\r\n this.tool = val;\r\n if (this.tool !== \"move\") {\r\n this.map.removeInteraction(this.translate);\r\n }\r\n if (this.tool !== \"Polygon\") {\r\n this.map.removeInteraction(this.drawPolygon);\r\n }\r\n }\r\n \r\n // Function to draw polygon\r\n drawPolygonFeatures() {\r\n this.map.addInteraction(this.drawPolygon);\r\n }\r\n \r\n // Function to select features\r\n dragAndDropFeatures() {\r\n this.map.addInteraction(this.translate);\r\n }\r\n\r\n // Function to store events in array\r\n updateEvent() {\r\n if(this.registerSingleAction[0] === 'MOVE' && this.registerAllActions.length > 0) {\r\n for (let i = 0; i= 0; i--) {\r\n var lastAction = this.registerAllActions.pop();\r\n if (lastAction[0] == \"DELETE\") {\r\n this.vectorSource.addFeature(lastAction[1]);\r\n } else if(lastAction[0] == \"MOVE\") {\r\n var geom = lastAction[1].getGeometry();\r\n geom.setCoordinates(lastAction[1].values_.coordinate)\r\n }\r\n }\r\n }\r\n \r\n \r\n //Escape listener to close tool\r\n @HostListener(\"document:keydown.escape\", [\"$event\"])\r\n handleKeyboardEvent(event: KeyboardEvent) {\r\n console.log(\"Escape pressed\");\r\n this.buttonState();\r\n this.tool = \"none\";\r\n }\r\n\r\n // Function to update the status of the buttons\r\n buttonState() {\r\n document.body.style.cursor = \"default\";\r\n this.map.removeInteraction(this.translate);\r\n this.map.removeInteraction(this.drawPolygon);\r\n }\r\n \r\n // Change the cursor style to modify a Dot\r\n modifyDot() {\r\n document.body.style.cursor = \"pointer\";\r\n }\r\n \r\n // Change the cursor style to delete a Dot\r\n deleteDot() {\r\n document.body.style.cursor = \"pointer\";\r\n }\r\n \r\n // Function to manage the Save Modal\r\n saveButton() {\r\n this.registerModalActions = this.registerAllActions.slice(0);\r\n document.body.style.cursor = \"default\";\r\n }\r\n \r\n // Function to discard a change\r\n discardChanges(item) {\r\n this.registerModalActions.splice(this.registerModalActions.indexOf(item), 1);\r\n }\r\n \r\n //Modal to confirm saves\r\n async saveModification() {\r\n \r\n for (let i = 0; i < this.registerModalActions.length; i++) {\r\n if (this.registerModalActions[i][0] === 'DELETE') {\r\n try {\r\n this.park.deleteParking(this.registerModalActions[i][1].values_.park_id)\r\n this.toast('success', this.registerModalActions[i][1].values_.park_id, 'Parking deleted successfully')\r\n } catch (error) {\r\n this.toast('error', this.registerModalActions[i][1].values_.park_id, 'Parking not deleted')\r\n }\r\n }\r\n if (this.registerModalActions[i][0] === 'MOVE') {\r\n let bodyModify = {}\r\n for(let j = 0; j{this.reloadPage();},4000);\r\n }\r\n \r\n //Function to close Edit Parking Modal\r\n eventHandlerFunction(valueEmitted) {\r\n if (valueEmitted === true) {\r\n var popOverElements = [];\r\n popOverElements = this.ngbPopoverInfo.toArray();\r\n for (let i=0; i {\r\n this.router.navigate([currentRoute], { queryParams: { view: 'edit' }, queryParamsHandling: 'merge' }); // navigate to same route\r\n });\r\n }\r\n \r\n // Set the Style of the clustered feature\r\n styleFunction(feature) {\r\n if (feature.getGeometry() instanceof Polygon) {\r\n var iconStyle = new Style({\r\n stroke: new Stroke({\r\n color: \"black\",\r\n width: 2,\r\n }),\r\n fill: new Fill({\r\n color: \"rgba(112, 191, 84, 0.7)\",\r\n }),\r\n });\r\n return iconStyle;\r\n }\r\n // Name of each Parking, no name if is a cluster\r\n var parkingName = \"\";\r\n parkingName = feature.get(\"description\");\r\n \r\n var textLabel = new Text({\r\n font: \"18\" + \"px sans-serif\",\r\n text: parkingName,\r\n offsetY: -30,\r\n overflow: true,\r\n fill: new Fill({ color: \"white\" }),\r\n stroke: new Stroke({ color: \"black\", width: 3 }),\r\n });\r\n \r\n // Color strategy of each Parking Feature, red if no free parking available, green otherwise\r\n var parkingColor = \"#70BF54\";\r\n \r\n // Parking Feature with Parking Name Label\r\n var iconStyle = new Style({\r\n image: new Circle({\r\n radius: pointFeatureRadius,\r\n fill: new Fill({\r\n color: parkingColor,\r\n }),\r\n stroke: new Stroke({\r\n color: \"black\",\r\n width: 2,\r\n }),\r\n }),\r\n text: textLabel,\r\n });\r\n return iconStyle;\r\n }\r\n \r\n // Toast function\r\n toast(type: string, id: string, message: string){\r\n \r\n switch (type) {\r\n case 'success':\r\n this.toastrService.success(id, message, {\r\n positionClass: 'toast-bottom-right',\r\n progressBar: true,\r\n closeButton: true,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n case 'warning':\r\n this.toastrService.warning(id, message, {\r\n positionClass: 'toast-bottom-right',\r\n progressBar: true,\r\n closeButton: true,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n case 'error':\r\n this.toastrService.error(id, message, {\r\n positionClass: 'toast-bottom-right',\r\n progressBar: true,\r\n closeButton: true,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n case 'info':\r\n this.toastrService.info(id, message, {\r\n positionClass: 'toast-bottom-center',\r\n progressBar: false,\r\n closeButton: false,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n default:\r\n break;\r\n }\r\n }\r\n}","import { Component, OnInit, Input } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Subscription, timer } from 'rxjs';\r\n\r\nimport { environment } from 'src/environments/environment';\r\n\r\nimport { Parking } from 'src/app/_shared/models/parking';\r\n\r\nimport { ParkingService } from '../../_services/parking.service';\r\nimport { TypeService } from '../../_services/type.service';\r\n\r\n@Component({\r\n selector: 'app-parking-det',\r\n templateUrl: './parking-det.component.html',\r\n styleUrls: ['./parking-det.component.scss']\r\n})\r\nexport class ParkingDetComponent implements OnInit {\r\n \r\n @Input() status: string;\r\n @Input() parking: Parking;\r\n types: any;\r\n list: any;\r\n parsubs: Subscription;\r\n n_lot: number = 0;\r\n n_lot_free: number = 0;\r\n \r\n constructor(\r\n public http: HttpClient,\r\n public park: ParkingService,\r\n public t: TypeService) { }\r\n \r\n async ngOnInit() {\r\n this.parsubs = timer(0, 3000).subscribe(async () => {\r\n await this.park.retriveParkingDet(this.parking.id, this.status);\r\n this.types = this.park.getParkingDet().types;\r\n \r\n this.n_lot = 0;\r\n this.n_lot_free = 0;\r\n for (let j=0; j JSON.stringify(value) !== '{}');\r\n });\r\n }\r\n \r\n statusStyle(value) {\r\n let res = { color: \"black\" };\r\n res.color = this.t.find(value).toString();\r\n return res;\r\n }\r\n \r\n ngOnDestroy(){\r\n this.parsubs.unsubscribe();\r\n }\r\n \r\n}","import { Component, Input, AfterViewInit, ElementRef, QueryList, ViewChildren } from \"@angular/core\";\r\nimport { _fixedSizeVirtualScrollStrategyFactory } from \"@angular/cdk/scrolling\";\r\nimport { HttpClient, HttpErrorResponse } from \"@angular/common/http\";\r\nimport { Subscription, throwError, timer } from \"rxjs\";\r\nimport {catchError} from 'rxjs/operators'\r\n\r\nimport { environment } from \"src/environments/environment\";\r\n\r\nimport Map from \"ol/Map\";\r\nimport View from \"ol/View\";\r\nimport VectorLayer from \"ol/layer/Vector\";\r\nimport OSM from \"ol/source/OSM\";\r\nimport * as olProj from \"ol/proj\";\r\nimport TileLayer from \"ol/layer/Tile\";\r\nimport Feature from \"ol/Feature\";\r\nimport Point from \"ol/geom/Point\";\r\nimport VectorSource from \"ol/source/Vector\";\r\nimport { Circle, Fill, Style, Text, Stroke } from \"ol/style\";\r\nimport { Cluster } from \"ol/source\";\r\nimport * as olExtent from \"ol/extent\";\r\nimport ZoomToExtent from 'ol/control/ZoomToExtent';\r\n\r\nimport { User } from 'src/app/_shared/models/user';\r\nimport { Parking } from \"src/app/_shared/models/parking\";\r\n\r\nimport { ParkingService } from '../../_services/parking.service';\r\nimport { AuthenticationService } from 'src/app/_services/authentication.service';\r\nimport { ImagesService } from '../../_services/images.service';\r\nimport { StyleService } from \"src/app/_services/style.service\";\r\n\r\nimport { NgbPopover } from \"@ng-bootstrap/ng-bootstrap/popover/popover\";\r\n\r\nconst pointFeatureRadius: number = 20;\r\n\r\n@Component({\r\n selector: \"app-streetmap\",\r\n templateUrl: \"./streetmap.component.html\",\r\n styleUrls: [\"./streetmap.component.scss\"],\r\n})\r\nexport class StreetmapComponent implements AfterViewInit {\r\n \r\n @Input() parkings: Parking[];\r\n @ViewChildren(\"popUpInfo\") ngbPopoverInfo!: QueryList;\r\n labels: any[];\r\n map: Map;\r\n mapLoaded = false;\r\n center : [number, number];\r\n vectorSource: any;\r\n vectorLayer: VectorLayer;\r\n ovLevel: any[];\r\n features: any[];\r\n parking_info: String;\r\n public user: User;\r\n parkID: any;\r\n computedZoom : number;\r\n parsubs: Subscription;\r\n userCanEditStreetmap: boolean = false;\r\n \r\n constructor(\r\n public http: HttpClient,\r\n private park: ParkingService,\r\n private elementRef: ElementRef,\r\n public auth: AuthenticationService,\r\n public imagesService: ImagesService,\r\n private style: StyleService\r\n ) {\r\n this.labels = [];\r\n this.ovLevel = [];\r\n this.center = [0, 0];\r\n this.features = [];\r\n this.parking_info = \"Ciao\";\r\n }\r\n \r\n async ngAfterViewInit() {\r\n this.userCanEditStreetmap = (await this.auth.isAdmin() || await this.auth.isOwner())\r\n this.park.getParkingId('');\r\n this.user = this.auth.getUser();\r\n \r\n // Calcolo della posizione min e max di Parkings Location X e Y\r\n const maxLocationX = Math.max.apply(\r\n Math,\r\n this.parkings.map(function (o) {\r\n return o.location.x;\r\n })\r\n );\r\n const minLocationX = Math.min.apply(\r\n Math,\r\n this.parkings.map(function (o) {\r\n return o.location.x;\r\n })\r\n );\r\n const maxLocationY = Math.max.apply(\r\n Math,\r\n this.parkings.map(function (o) {\r\n return o.location.y;\r\n })\r\n );\r\n const minLocationY = Math.min.apply(\r\n Math,\r\n this.parkings.map(function (o) {\r\n return o.location.y;\r\n })\r\n );\r\n \r\n this.parkings.forEach((parking, index) => {\r\n console.log(parking);\r\n console.log(index);\r\n const pos = [parking.location.y, parking.location.x];\r\n \r\n const singleFeature = new Feature({\r\n geometry: new Point(olProj.fromLonLat(pos)),\r\n description: parking.name,\r\n park_id: parking.id,\r\n imageExists: parking.imageExists,\r\n sections: parking.section.length,\r\n firstsection: parking.section[0].name,\r\n parking: parking,\r\n });\r\n singleFeature.set(\"value\", parking.n_lot_free);\r\n this.features.push(singleFeature);\r\n \r\n this.center[0] = this.center[0] + (maxLocationX + minLocationX)/2; // x location\r\n this.center[1] = this.center[1] + (maxLocationY + minLocationY)/2; // y location\r\n \r\n });\r\n \r\n this.vectorSource = new VectorSource({\r\n features: this.features,\r\n });\r\n \r\n this.vectorLayer = new VectorLayer({\r\n source: new Cluster({\r\n distance: 30,\r\n source: this.vectorSource,\r\n }),\r\n style: this.styleFunction,\r\n });\r\n \r\n this.center[0] = this.center[0] / this.parkings.length;\r\n this.center[1] = this.center[1] / this.parkings.length;\r\n\r\n var mapwidth = document.getElementById('map');\r\n if(maxLocationY < 0 || minLocationY <0) {\r\n var maxPixelX = (((maxLocationY+180)*(mapwidth.clientWidth/360)));\r\n var minPixelX = (((minLocationY+180)*(mapwidth.clientWidth/360)));\r\n } else {\r\n var maxPixelX = (((maxLocationY)*mapwidth.clientWidth)/360);\r\n var minPixelX = (((minLocationY)*mapwidth.clientWidth)/360);\r\n }\r\n var pixelDiff = maxPixelX-minPixelX;\r\n var longDiff = (maxLocationY+180)-(minLocationY+180);\r\n\r\n\r\n // Function to calculate the zoom based on the position of xMin and xMax\r\n function getMinZoom(center: number) {\r\n var width = (center + (center - (minPixelX)) + ((maxPixelX) - center));\r\n var scaleFactor = width*256/mapwidth.clientWidth\r\n if (longDiff<100) {\r\n return Math.ceil(Math.LOG2E * Math.log(width));\r\n } else {\r\n return Math.ceil(Math.LOG2E * Math.log(width/scaleFactor));\r\n }\r\n \r\n }\r\n \r\n this.computedZoom=getMinZoom(pixelDiff)\r\n \r\n this.map = new Map({\r\n target: \"map\",\r\n layers: [\r\n new TileLayer({\r\n source: new OSM(),\r\n }),\r\n this.vectorLayer,\r\n ],\r\n overlays: this.ovLevel,\r\n view: new View({\r\n center: olProj.fromLonLat([\r\n isNaN(this.center[1]) ? 16 : this.center[1] ,\r\n isNaN(this.center[0]) ? 44 : this.center[0]\r\n ]),\r\n zoom: isNaN(this.computedZoom) || !isFinite(this.computedZoom) ? 1 : this.computedZoom,\r\n }),\r\n });\r\n // Zoom Control Button\r\n var zoom = document.createElement(\"span\");\r\n zoom.innerHTML = '';\r\n var zoomControl = new ZoomToExtent({\r\n extent: this.map.getView().calculateExtent(),\r\n label: zoom,\r\n });\r\n this.map.addControl(zoomControl);\r\n \r\n this.map.once(\"rendercomplete\", (event) => {\r\n this.mapLoaded = true;\r\n });\r\n \r\n this.parsubs = timer(0, 3000).subscribe(async () => {\r\n console.log(\"polling parkings\");\r\n this.http\r\n .get(environment.apiUri + \"parkings/allinfo\")\r\n .subscribe((data: Parking[]) => {\r\n this.parkings = data;\r\n this.parkings.forEach((park) => {\r\n let singleFeature = this.features.find(\r\n (feat) => feat.get(\"park_id\") === park.id\r\n );\r\n if (singleFeature) {\r\n let index = this.features.indexOf(singleFeature);\r\n this.features[index].set(\"value\", park.n_lot_free);\r\n }\r\n });\r\n this.vectorLayer.setStyle(this.styleFunction);\r\n });\r\n });\r\n \r\n /*\r\n zoomCluster function to zoom on Cluster click\r\n */\r\n var zoomCluster = function (feature, map) {\r\n var features = feature.get(\"features\");\r\n if (features.length > 1) {\r\n var extent = olExtent.createEmpty();\r\n features.forEach(function (feature) {\r\n olExtent.extend(extent, feature.getGeometry().getExtent());\r\n });\r\n map.getView().fit(extent, map.getSize());\r\n map.getView().setZoom(map.getView().getZoom() - 2);\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n \r\n // Function to compute dynamically the height of the map\r\n this.style.computeHeight(0);\r\n this.map.updateSize();\r\n /*\r\n on map click:\r\n - do not do anything if is a empty point\r\n - zoom on cluster\r\n - display popup if is a feature point\r\n */\r\n this.map.on(\"click\", (event) => {\r\n var feature = this.map.forEachFeatureAtPixel(\r\n event.pixel,\r\n function (feature) {\r\n return feature;\r\n }\r\n );\r\n if (feature) {\r\n if (!zoomCluster(feature, this.map)) {\r\n var parkID = feature.get(\"features\")[0].get(\"park_id\");\r\n var popupComponent = document.getElementById(parkID);\r\n \r\n popupComponent.style.setProperty(\"display\", \"block\");\r\n popupComponent.style.setProperty(\"position\", \"absolute\");\r\n var pointerEvent = event.originalEvent;\r\n \r\n var pixelXY = this.map.getPixelFromCoordinate(\r\n feature.get(\"features\")[0].getGeometry().getCoordinates()\r\n );\r\n \r\n if (pointerEvent) {\r\n popupComponent.style.setProperty(\r\n \"top\",\r\n (pixelXY[1] - pointFeatureRadius).toString() + \"px\"\r\n );\r\n popupComponent.style.setProperty(\r\n \"left\",\r\n pixelXY[0].toString() + \"px\"\r\n );\r\n var popOverElements = [];\r\n popOverElements = this.ngbPopoverInfo.toArray();\r\n var popOverComponent = popOverElements.find(\r\n (x) => x._elementRef.nativeElement.id == parkID\r\n );\r\n popOverComponent.open();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n /*\r\n Set the Style of the clustered feature\r\n */\r\n styleFunction(feature) {\r\n //get the amount of free parking into a cluster\r\n var sum = 0;\r\n feature.get(\"features\").forEach((feat) => {\r\n sum += feat.get(\"value\");\r\n });\r\n \r\n //Text fill style\r\n var textFill = new Fill({\r\n color: \"#fff\",\r\n });\r\n \r\n //Text stroke style\r\n var textStroke = new Stroke({\r\n color: \"rgba(0, 0, 0, 0.6)\",\r\n width: 3,\r\n });\r\n \r\n //Number of free parking lot\r\n var textParkingFree = new Text({\r\n font: \"20\" + \"px sans-serif\",\r\n text: sum.toString(),\r\n fill: textFill,\r\n stroke: textStroke,\r\n });\r\n \r\n //Name of each Parking, no name if is a cluster\r\n var parkingName = \"\";\r\n if (feature.get(\"features\").length == 1) {\r\n parkingName = feature.get(\"features\")[0].get(\"description\");\r\n }\r\n var textLabel = new Text({\r\n font: \"18\" + \"px sans-serif\",\r\n text: parkingName,\r\n offsetY: -30,\r\n overflow: true,\r\n fill: new Fill({ color: \"white\" }),\r\n stroke: new Stroke({ color: \"black\", width: 3 }),\r\n });\r\n \r\n //Color strategy of each Parking Feature, red if no free parking available, green otherwise\r\n var parkingColor = \"#70BF54\";\r\n if (sum > 0) {\r\n parkingColor = \"#70BF54\";\r\n } else {\r\n parkingColor = \"#E11F26\";\r\n }\r\n \r\n //Parking Free Label\r\n var iconStyle = new Style({\r\n text: textParkingFree,\r\n });\r\n \r\n //Parking Feature with Parking Name Label\r\n var iconStyle2 = new Style({\r\n image: new Circle({\r\n radius: pointFeatureRadius,\r\n fill: new Fill({\r\n color: parkingColor,\r\n }),\r\n stroke: new Stroke({\r\n color: \"black\",\r\n width: 2,\r\n }),\r\n }),\r\n text: textLabel,\r\n });\r\n return [iconStyle, iconStyle2];\r\n }\r\n \r\n ngOnDestroy() {\r\n this.parsubs.unsubscribe();\r\n }\r\n \r\n}","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { Location } from \"@angular/common\";\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from \"@angular/forms\";\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\nimport { environment } from 'src/environments/environment';\r\n\r\nimport { AuthenticationService } from 'src/app/_services/authentication.service';\r\nimport { ImagesService } from 'src/app/_services/images.service';\r\n\r\nimport { ToastContainerDirective, ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-upload',\r\n templateUrl: './upload.component.html',\r\n styleUrls: ['./upload.component.scss']\r\n})\r\n\r\nexport class UploadComponent implements OnInit {\r\n \r\n selectedFile = null;\r\n accessableParkings = [];\r\n parkingSelected = \"\";\r\n confirmationMessage: SafeHtml;\r\n isUserAllowedToUpload: boolean = false;\r\n \r\n addParkingImageForm: UntypedFormGroup;\r\n parkingNameAdd = new UntypedFormControl();\r\n sectionNameAdd = new UntypedFormControl();\r\n radiusLotAdd = new UntypedFormControl();\r\n radiusAreaAdd = new UntypedFormControl();\r\n radiusLotMobileAdd = new UntypedFormControl();\r\n clusterDistanceAdd = new UntypedFormControl();\r\n \r\n imageId: string = '';\r\n disableUpload: boolean = true;\r\n \r\n constructor(\r\n public http: HttpClient,\r\n public router: Router,\r\n private loc: Location,\r\n private sanitized: DomSanitizer,\r\n public form: UntypedFormBuilder,\r\n public auth: AuthenticationService,\r\n public imagesService: ImagesService,\r\n private toastrService: ToastrService,\r\n ) { \r\n this.addParkingImageForm = form.group({\r\n parkingNameAdd: this.parkingNameAdd,\r\n sectionNameAdd: this.sectionNameAdd,\r\n radiusLotAdd: this.radiusLotAdd,\r\n radiusAreaAdd: this.radiusAreaAdd,\r\n radiusLotMobileAdd: this.radiusLotMobileAdd,\r\n clusterDistanceAdd: this.clusterDistanceAdd\r\n });\r\n }\r\n \r\n async ngOnInit() {\r\n this.isUserAllowedToUpload = await this.auth.isOwner();\r\n if(this.isUserAllowedToUpload) {\r\n this.http.get(environment.apiUri+\"parkings\").subscribe(res=>{\r\n for (const [key, value] of Object.entries(res)) {\r\n this.accessableParkings.push(value.id);\r\n }\r\n this.parkingSelected = this.accessableParkings[0]\r\n });\r\n \r\n this.addParkingImageForm.get('sectionNameAdd').setValue('0');\r\n this.addParkingImageForm.get('radiusLotAdd').setValue(9);\r\n this.addParkingImageForm.get('radiusAreaAdd').setValue(56);\r\n this.addParkingImageForm.get('radiusLotMobileAdd').setValue(9);\r\n this.addParkingImageForm.get('clusterDistanceAdd').setValue(20);\r\n \r\n this.addParkingImageForm.get('parkingNameAdd').valueChanges.subscribe(change=>{\r\n this.imageId = this.parkingNameAdd.value + '-' + this.sectionNameAdd.value;\r\n })\r\n \r\n this.addParkingImageForm.get('sectionNameAdd').valueChanges.subscribe(change=>{\r\n this.imageId = this.parkingNameAdd.value + '-' + this.sectionNameAdd.value;\r\n })\r\n \r\n setTimeout(()=>this.addParkingImageForm.controls.parkingNameAdd.setValue(this.parkingSelected), 1000)\r\n } else {\r\n this.toast('error', 'You do not have permission to access this page.', 'Access Denied')\r\n setTimeout(()=>{this.loc.back();},3000);\r\n }\r\n }\r\n \r\n onFileSelected(event) {\r\n if(event.length > 0) {\r\n this.disableUpload = false;\r\n this.selectedFile = event[0];\r\n } else {\r\n this.disableUpload = true;\r\n }\r\n }\r\n \r\n addNewImage() {\r\n const formData = new FormData();\r\n let image = this.selectedFile;\r\n if(image) {\r\n var blob = new Blob([image], {type: \"image/jpeg\"});\r\n formData.append('id', this.imageId);\r\n formData.append('parkingId ', this.parkingNameAdd.value)\r\n formData.append('radiusLot', this.radiusLotAdd.value);\r\n formData.append('radiusArea', this.radiusAreaAdd.value);\r\n formData.append('radiusLotMobile', this.radiusLotMobileAdd.value);\r\n formData.append('clusterDistance', this.clusterDistanceAdd.value);\r\n formData.append('file', blob);\r\n this.imagesService.uploadImage(formData).subscribe(res =>{\r\n if (res.ok) {\r\n this.confirmationMessage = this.sanitized.bypassSecurityTrustHtml('
Upload Successfull for Image '+this.imageId+' of the parking '+this.parkingNameAdd.value+'
');\r\n } else {\r\n this.confirmationMessage = this.sanitized.bypassSecurityTrustHtml('
Upload Failed: Server replied with status message '+ res.statusText + '
');\r\n }\r\n });\r\n } else {\r\n this.confirmationMessage = this.sanitized.bypassSecurityTrustHtml('
No image is selected
');\r\n throw new Error('No image is selected');\r\n }\r\n }\r\n \r\n //Toast function\r\n toast(type: string, id: string, message: string) {\r\n \r\n switch (type) {\r\n case 'success':\r\n this.toastrService.success(id, message, {\r\n positionClass: 'toast-bottom-right',\r\n progressBar: true,\r\n closeButton: true,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n case 'warning':\r\n this.toastrService.warning(id, message, {\r\n positionClass: 'toast-bottom-right',\r\n progressBar: true,\r\n closeButton: true,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n case 'error':\r\n this.toastrService.error(id, message, {\r\n positionClass: 'toast-bottom-right',\r\n progressBar: true,\r\n closeButton: true,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n case 'info':\r\n this.toastrService.info(id, message, {\r\n positionClass: 'toast-bottom-center',\r\n progressBar: false,\r\n closeButton: false,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n default:\r\n break;\r\n }\r\n }\r\n \r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { AuthGuardGuard as AuthGuard } from '../authentication/_guards/auth-guard.guard'\r\n\r\nimport { LayoutComponent } from '../_shared/components/layout/layout.component';\r\nimport { HomeComponent } from './home/home.component';\r\nimport { AnalyticsComponent } from '../_shared/components/analytics-mgmt/analytics/analytics.component';\r\nimport { PrivacyPolicyComponent } from '../_shared/components/privacy-policy/privacy-policy.component';\r\nimport { PageNotFoundComponent } from '../_shared/components/page-not-found/page-not-found.component';\r\nimport { OssLicensesComponent } from '../_shared/components/oss-licenses/oss-licenses.component';\r\n\r\nconst routes: Routes = [\r\n\r\n {\r\n path: '', component: LayoutComponent, data: {title: 'Home'},\r\n children: [\r\n { path: '', redirectTo: 'home', pathMatch: 'full'},\r\n { path: 'home', component: HomeComponent, data: {title: ''}},\r\n { path: 'analytics', component: AnalyticsComponent, canActivate: [AuthGuard]},\r\n { path: 'privacy-policy', component: PrivacyPolicyComponent},\r\n { path: 'OSS-licenses', component: OssLicensesComponent},\r\n { path: '', loadChildren: () => import('../branch-mgmt/branch-mgmt.module').then(m => m.BranchMgmtModule),data: {title: ''}},\r\n { path: '', loadChildren: () => import('../authentication/authentication.module').then(m => m.AuthenticationModule),data: {title: ''}},\r\n { path: '', loadChildren: () => import('../parking-mgmt/parking-mgmt.module').then(m => m.ParkingMgmtModule),data: {title: ''}},\r\n { path: '', loadChildren: () => import('../user-mgmt/user-mgmt.module').then(m => m.UserMgmtModule),data: {title: ''} },\r\n {path: '**', pathMatch: 'full', component: PageNotFoundComponent },\r\n ]\r\n }\r\n\r\n];\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class HomeRoutingModule { }\r\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { HomeRoutingModule } from './home-routing.module';\r\n\r\nimport { AuthenticationModule } from '../authentication/authentication.module';\r\nimport { BranchMgmtModule } from '../branch-mgmt/branch-mgmt.module';\r\nimport { ParkingMgmtModule } from '../parking-mgmt/parking-mgmt.module';\r\n\r\nimport { HomeComponent } from './home/home.component';\r\nimport { LayoutComponent } from '../_shared/components/layout/layout.component';\r\nimport { ParkingDropdownComponent } from '../_shared/components/parking-dropdown/parking-dropdown.component';\r\n\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { RbUiComponentsModule, FormFieldsModule, TabPanelModule } from '@inst-iot/bosch-angular-ui-components';\r\nimport { MaterialModule } from '../_shared/modules/material.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n HomeComponent,\r\n LayoutComponent,\r\n ParkingDropdownComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n HomeRoutingModule,\r\n AuthenticationModule,\r\n BranchMgmtModule,\r\n ParkingMgmtModule,\r\n NgbModule,\r\n RbUiComponentsModule,\r\n FormFieldsModule,\r\n TabPanelModule,\r\n MaterialModule,\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class HomeModule { }\r\n","import { Component, OnInit, TemplateRef, ViewChild } from '@angular/core';\r\nimport { AuthenticationService } from 'src/app/_services/authentication.service';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { ModalService } from '@inst-iot/bosch-angular-ui-components';\r\n@Component({\r\n selector: \"app-home\",\r\n templateUrl: \"./home.component.html\",\r\n styleUrls: [\"./home.component.scss\"],\r\n})\r\nexport class HomeComponent implements OnInit {\r\n pattern: RegExp;\r\n displayConfirm: boolean = false;\r\n modalUser\r\n\r\n @ViewChild('modalNewUsers') modalNewUsers: TemplateRef;\r\n\r\n constructor(\r\n public auth: AuthenticationService,\r\n private oauthService: OAuthService,\r\n private modalService: ModalService\r\n ) { \r\n this.auth.homeComponentCalled$.subscribe(\r\n () => {\r\n this.loginOrRegister();\r\n }\r\n );\r\n }\r\n\r\n onClickRegister() {\r\n this.auth.registerUser()\r\n }\r\n\r\n modelChangeFn(states) {\r\n console.log('states', states);\r\n if (states == true) {\r\n this.displayConfirm = true;\r\n } else {\r\n this.displayConfirm = false;\r\n }\r\n }\r\n\r\n public async loginOrRegister(){\r\n if (await this.auth.doLogin() === 404) {\r\n this.modalService.open(this.modalNewUsers)\r\n }\r\n }\r\n\r\n public async ngOnInit() {\r\n if (!this.oauthService.hasValidAccessToken()) {\r\n await this.auth.authenticationFlow();\r\n } else {\r\n this.loginOrRegister();\r\n }\r\n }\r\n}\r\n\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport {trigger, state, style, animate, transition, keyframes} from '@angular/animations';\r\n\r\nimport { Subscription, timer } from 'rxjs';\r\n\r\nimport { DisplayGetModel } from 'src/app/_shared/models/display';\r\n\r\nimport { DisplaysService } from 'src/app/_services/displays.service';\r\n\r\n@Component({\r\n selector: 'app-display',\r\n templateUrl: './display.component.html',\r\n styleUrls: ['./display.component.scss'],\r\n animations: [\r\n trigger('openClose', [\r\n state('open', style({ transform: 'scale(1)' })),\r\n state('closed', style({ transform: 'scale(1)' })),\r\n transition('* <=> *', [\r\n animate(\"6s\", keyframes([\r\n style({opacity: 0, offset: 0.3}),\r\n style({opacity: 0.5, offset: 0.6})\r\n ])),\r\n ]),\r\n ])\r\n ],\r\n})\r\nexport class DisplayComponent implements OnInit {\r\n \r\n @Input() display: DisplayGetModel;\r\n @Input() sectionName: any;\r\n view: any;\r\n viewmap: boolean = false;\r\n isOpen: boolean = true;\r\n \r\n displaySubscription: Subscription;\r\n \r\n constructor(\r\n private route: ActivatedRoute,\r\n public displayService: DisplaysService,\r\n ) { }\r\n \r\n ngOnDestroy() {\r\n console.log('unsuscribe polling');\r\n this.displaySubscription.unsubscribe();\r\n }\r\n \r\n ngOnChanges() {\r\n this.isOpen = !this.isOpen;\r\n }\r\n \r\n async ngOnInit() {\r\n this.view = this.route.snapshot.queryParams.view;\r\n \r\n if (this.view == 'map') {\r\n this.viewmap = true;\r\n }\r\n \r\n this.displaySubscription = timer(0, 3000).subscribe(async () => {\r\n await this.displayService.retrieveDisplay(this.display.id).then( (data: DisplayGetModel) => {\r\n this.display = data\r\n })\r\n });\r\n }\r\n \r\n statusStyle() {\r\n let res = { color: \"red\" };\r\n switch (this.display?.status) {\r\n case \"ok\": {\r\n res.color = '#70BF54';\r\n break;\r\n }\r\n case \"alert\": {\r\n res.color = '#FCAF17';\r\n break;\r\n }\r\n default: {\r\n res.color = '#BFC0C2';\r\n break;\r\n }\r\n }\r\n return res;\r\n }\r\n \r\n}","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport { DisplaysService } from 'src/app/_services/displays.service';\r\nimport { ImagesService } from 'src/app/_services/images.service';\r\n\r\nimport { DisplayGetModel } from 'src/app/_shared/models/display';\r\n\r\n@Component({\r\n selector: 'app-displays-list',\r\n templateUrl: './displays-list.component.html',\r\n styleUrls: ['./displays-list.component.scss']\r\n})\r\nexport class DisplaysListComponent implements OnInit {\r\n \r\n @Input() parking_id: string\r\n section: any;\r\n displayName: any\r\n initialDisplay: any;\r\n displaymap: boolean = true;\r\n parkImagesId: string;\r\n \r\n //Display Variables\r\n allDisplays: DisplayGetModel[] = []; \r\n displays: DisplayGetModel[] = [];\r\n display: any;\r\n displaysList: any = [];\r\n list: any = [];\r\n \r\n constructor(\r\n private route: ActivatedRoute,\r\n public router: Router,\r\n public displayService: DisplaysService,\r\n public imagesService: ImagesService,\r\n ) { }\r\n \r\n async ngOnInit() {\r\n \r\n this.section = this.route.snapshot.queryParams.section;\r\n \r\n await this.displayService.retrieveDisplayByParkingId(this.parking_id).toPromise().then(displays => {\r\n this.allDisplays = displays as DisplayGetModel[];\r\n })\r\n \r\n if(this.allDisplays.length>0) {\r\n this.allDisplays.forEach((display, index) => {\r\n if(this.section.includes('-')) {\r\n let indexStart = this.allDisplays[index].name.lastIndexOf('-')-1;\r\n let sectionNameWithDash = '-' + this.section;\r\n if(this.allDisplays[index].name.includes(sectionNameWithDash, indexStart)) {\r\n this.displays.push(this.allDisplays[index])\r\n } \r\n } else {\r\n let indexStart = this.allDisplays[index].name.lastIndexOf('-');\r\n let sectionNameWithDash = '-' + this.section;\r\n if(this.allDisplays[index].name.includes(sectionNameWithDash, indexStart) && this.allDisplays[index].name.includes('--')==false) {\r\n this.displays.push(this.allDisplays[index])\r\n }\r\n }\r\n })\r\n }\r\n \r\n for(let i=0; i x.id == this.initialDisplay)\r\n this.viewDisplayInfo(this.display[0]);\r\n } else {\r\n this.router.navigate([], { queryParams: { display: this.displaysList[0].name }, queryParamsHandling: 'merge' });\r\n this.display = this.displaysList[0]\r\n this.viewDisplayInfo(this.display);\r\n }\r\n \r\n this.route.queryParams.subscribe(par => {\r\n this.displayName = par.display;\r\n if(this.displayName !== undefined) {\r\n \r\n this.displays.forEach((display, index)=>{\r\n if(this.displays[index].name == this.displayName) {\r\n this.display = display\r\n }\r\n })\r\n \r\n this.displayService.retrieveLotsDisplay(this.display.id).toPromise().then(list=>{\r\n this.list = list;\r\n })\r\n }\r\n \r\n })\r\n \r\n this.parkImagesId = this.parking_id + \"-\" + this.section;\r\n await this.imagesService.retriveImagesExists(this.parkImagesId)\r\n .then(\r\n (data) => {\r\n },\r\n (err) => {\r\n this.displaymap = false\r\n }\r\n );\r\n \r\n }\r\n \r\n styleObjectDisplay(display) {\r\n let res;\r\n res = { cursor: \"pointer\", border: \"1px solid black\", margin: \"5px 5px 0 0\"};\r\n res.backgroundColor = '#BFC0C2';\r\n \r\n const dis = this.displaysList.filter(function (l) {\r\n return (l.id == display.id);\r\n });\r\n if (dis.length !== 0) {\r\n switch (dis[0]?.status) {\r\n case \"ok\": {\r\n res.backgroundColor = '#70BF54';\r\n break;\r\n } \r\n case \"alert\": {\r\n // res.backgroundColor='#FCAF17';\r\n res.animation = \"colorChange 1s infinite\";\r\n break;\r\n }\r\n default: {\r\n res.backgroundColor = '#BFC0C2';\r\n break;\r\n }\r\n }\r\n }\r\n return res;\r\n }\r\n \r\n viewDisplayInfo(parkSpaceX) {\r\n this.display = parkSpaceX;\r\n }\r\n \r\n}","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\n\r\nimport { DisplaysService } from 'src/app/_services/displays.service';\r\nimport { ParkingService } from 'src/app/_services/parking.service';\r\n\r\nimport { DisplayGetModel, DisplayPutModel } from 'src/app/_shared/models/display';\r\n\r\nimport { ToastContainerDirective, ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-editdisplay',\r\n templateUrl: './editdisplay.component.html',\r\n styleUrls: ['./editdisplay.component.scss']\r\n})\r\nexport class EditdisplayComponent implements OnInit {\r\n \r\n @Input() id: string;\r\n @Output() closePop: EventEmitter = new EventEmitter();\r\n \r\n display: DisplayGetModel;\r\n lotsDisplay: any;\r\n parking: any\r\n lotsList: any = [];\r\n item: any;\r\n \r\n //Form to associate lots to a display\r\n groupUpdate: any;\r\n list: any;\r\n selectedStatesDisplay: any;\r\n keys: any;\r\n \r\n constructor(\r\n public displayService: DisplaysService,\r\n public parkingService: ParkingService,\r\n private toastrService: ToastrService,\r\n ) { }\r\n \r\n async ngOnInit() {\r\n await this.displayService.retrieveDisplay(this.id).then((data: DisplayGetModel)=>{\r\n this.display = data;\r\n })\r\n \r\n await this.parkingService.retriveParkingSub(this.display.parkingId).toPromise().then((data)=>{\r\n this.parking = data;\r\n \r\n for(let i = 0; i {\r\n this.lotsDisplay = lots;\r\n })\r\n \r\n this.associatedLots()\r\n \r\n }\r\n \r\n associatedLots() {\r\n this.selectedStatesDisplay = {}\r\n for(let i = 0; i= 0) {\r\n this.list.splice(index, 1);\r\n }\r\n \r\n this.selectedStatesDisplay = {}\r\n for (let i = 0; i < this.list.length; i++) {\r\n this.selectedStatesDisplay[this.list[i]] = true;\r\n }\r\n this.updateStatesDisplay(this.selectedStatesDisplay)\r\n }\r\n \r\n confirmUpdateDisplay() {\r\n \r\n let updateBody: DisplayPutModel = {\r\n name: this.display.name,\r\n url: this.display.url,\r\n layout: this.display.layout,\r\n username: this.display.username,\r\n password: this.display.password,\r\n id: this.display.id,\r\n expirationDate: this.display.expirationDate,\r\n sessionId: this.display.sessionId,\r\n status: this.display.status,\r\n pubStatus: this.display.pubStatus,\r\n loginStatus: this.display.loginStatus,\r\n groups: this.display.groups,\r\n mac: this.display.mac,\r\n btia: this.display.btia,\r\n x: this.display.x,\r\n y: this.display.y,\r\n parkingId: this.display.parkingId,\r\n value: this.display.value,\r\n }\r\n \r\n this.displayService.updateDisplay(this.display.id, updateBody).subscribe(\r\n data => {\r\n console.log(\"PUT Request is successful \", data);\r\n this.toast('success', this.display.id, 'Display updated successfully');\r\n },\r\n (error) => {\r\n console.log(\"Error PUT Request \", error);\r\n this.toast('error', this.display.id, 'Display not updated');\r\n }\r\n )\r\n }\r\n\r\n confirmUpdateLots() {\r\n this.displayService.updateDisplayLots(this.display.id, this.list).subscribe(\r\n data => {\r\n console.log(\"PUT Request is successful \", data);\r\n this.toast('success', this.display.id, 'Parking Spaces list updated successfully');\r\n },\r\n (error) => {\r\n console.log(\"Error PUT Request \", error);\r\n this.toast('error', this.display.id, 'Parking Spaces list not updated');\r\n }\r\n )\r\n }\r\n \r\n closePopover() {\r\n this.closePop.emit(true)\r\n }\r\n\r\n // Toast function\r\n toast(type: string, id: string, message: string) {\r\n \r\n switch (type) {\r\n case 'success':\r\n this.toastrService.success(id, message, {\r\n positionClass: 'toast-bottom-right',\r\n progressBar: true,\r\n closeButton: true,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n case 'warning':\r\n this.toastrService.warning(id, message, {\r\n positionClass: 'toast-bottom-right',\r\n progressBar: true,\r\n closeButton: true,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n case 'error':\r\n this.toastrService.error(id, message, {\r\n positionClass: 'toast-bottom-right',\r\n progressBar: true,\r\n closeButton: true,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n default:\r\n break;\r\n }\r\n }\r\n \r\n }","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from \"@angular/forms\";\r\n\r\nimport { Collection, Feature, Graticule, View } from \"ol\";\r\nimport Geometry from \"ol/geom/Geometry\";\r\n\r\nimport { LotsGroupsService } from 'src/app/_services/lots-groups.service';\r\nimport { ParkingService } from 'src/app/_services/parking.service';\r\n\r\nimport { ToastContainerDirective, ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-editgroups',\r\n templateUrl: './editgroups.component.html',\r\n styleUrls: ['./editgroups.component.scss']\r\n})\r\nexport class EditgroupsComponent implements OnInit {\r\n \r\n @Input() selectedFeatures: Collection>\r\n @Input() displaybutton: boolean;\r\n @Input() displayselector: boolean;\r\n \r\n parkingspaces: any;\r\n item: any;\r\n selectedItem: any[] = [];\r\n \r\n // Form to Create group\r\n createGroupForm: UntypedFormGroup;\r\n groupNameForm = new UntypedFormControl('');\r\n selectedStatesNewGroup: any;\r\n displayButtonCreate: boolean = false;\r\n \r\n //Form to update lots to a group\r\n updateGroupForm: UntypedFormGroup;\r\n groupNameUpdateForm = new UntypedFormControl();\r\n groupNameUpdatedForm = new UntypedFormControl();\r\n selectedStatesUpdateGroup: any;\r\n idGroupUpdate: any;\r\n displayButtonUpdate: boolean = false;\r\n \r\n //Form to delete group\r\n deleteGroupForm: UntypedFormGroup;\r\n groupNameDeleteForm = new UntypedFormControl();\r\n idGroupDelete: any;\r\n displayButtonDelete: boolean = false;\r\n \r\n //Filter Variables\r\n keys: any;\r\n list: any;\r\n \r\n //Groups variables\r\n lotsGroups: any;\r\n lotsList: any = [];\r\n updateList: any;\r\n \r\n constructor(\r\n private toastrService: ToastrService,\r\n public form: UntypedFormBuilder,\r\n public groupsService: LotsGroupsService,\r\n public parkingService: ParkingService,\r\n private route: ActivatedRoute,\r\n ) {\r\n this.createGroupForm = form.group({\r\n groupNameForm: this.groupNameForm,\r\n });\r\n this.updateGroupForm = form.group({\r\n groupNameUpdateForm: this.groupNameUpdateForm,\r\n groupNameUpdatedForm: this.groupNameUpdatedForm,\r\n });\r\n this.deleteGroupForm = form.group({\r\n groupNameDeleteForm: this.groupNameDeleteForm,\r\n })\r\n }\r\n \r\n async ngOnInit() {\r\n await this.groupsService.retrieveGroupsUser().then(group => {\r\n this.lotsGroups = group;\r\n });\r\n \r\n let parkingId = this.route.snapshot.params.id;\r\n let section = this.route.snapshot.queryParams.section;\r\n \r\n await this.parkingService.retriveParkingSub(parkingId).subscribe( x => {\r\n this.parkingspaces = x;\r\n \r\n this.item = []\r\n for (let i=0; i{\r\n this.checkEmpty(change);\r\n this.checkName(change);\r\n })\r\n \r\n this.updateGroupForm.get(\"groupNameUpdatedForm\").valueChanges.subscribe(change=>{\r\n this.checkEmptyUpdate(change);\r\n })\r\n \r\n this.deleteGroupForm.get(\"groupNameDeleteForm\").valueChanges.subscribe(change=>{\r\n this.checkEmptyDelete(change);\r\n })\r\n }\r\n \r\n // Create new group\r\n selectedNewGroup() { \r\n this.selectedStatesNewGroup = {}\r\n this.selectedItem = this.selectedFeatures.getArray();\r\n for (let i = 0; i < this.selectedItem.length; i++) {\r\n this.selectedStatesNewGroup[this.selectedItem[i].values_.description] = true;\r\n }\r\n this.updateStatesNewGroup(this.selectedStatesNewGroup)\r\n }\r\n \r\n updateStatesNewGroup(states) {\r\n console.log('states', states);\r\n this.keys = Object.keys(states);\r\n this.list = this.keys.filter(function(key){\r\n return states[key]\r\n })\r\n this.checkEmpty(this.createGroupForm.get(\"groupNameForm\").value)\r\n this.checkName(this.createGroupForm.get(\"groupNameForm\").value)\r\n }\r\n \r\n confirmNewGroup() {\r\n this.groupsService.createGroup(this.groupNameForm.value, this.list);\r\n this.toast('success', this.groupNameForm.value, 'Parking Spaces group created successfully');\r\n }\r\n \r\n removeNewGroup(lot: any): void {\r\n const index = this.list.indexOf(lot);\r\n \r\n if (index >= 0) {\r\n this.list.splice(index, 1);\r\n }\r\n \r\n this.selectedStatesNewGroup = {}\r\n for (let i = 0; i < this.list.length; i++) {\r\n this.selectedStatesNewGroup[this.list[i]] = true;\r\n }\r\n this.updateStatesNewGroup(this.selectedStatesNewGroup)\r\n }\r\n \r\n checkEmpty(name) {\r\n if(name !== '' && this.list.length !== 0) {\r\n this.displayButtonCreate = true;\r\n } else {\r\n this.displayButtonCreate = false;\r\n }\r\n }\r\n \r\n checkName(name) {\r\n for (let i=0; i x.name == this.groupNameUpdateForm.value)\r\n this.selectedStatesUpdateGroup = {}\r\n \r\n this.lotsList = [];\r\n for (let i=0; i {\r\n console.log(\"PUT Request is successful \", data);\r\n this.toast('success', this.groupNameUpdateForm.value, 'Parking Spaces group updated successfully');\r\n },\r\n (error) => {\r\n console.log(\"Error PUT Request \", error);\r\n this.toast('error', this.groupNameUpdateForm.value, 'Parking Spaces group not updated');\r\n }\r\n );\r\n \r\n \r\n }\r\n \r\n removeUpdateGroup(lot: any): void {\r\n const index = this.list.indexOf(lot);\r\n \r\n if (index >= 0) {\r\n this.list.splice(index, 1);\r\n }\r\n \r\n this.selectedStatesUpdateGroup = {}\r\n for (let i = 0; i < this.list.length; i++) {\r\n this.selectedStatesUpdateGroup[this.list[i]] = true;\r\n }\r\n this.updateStatesUpdateGroup(this.selectedStatesUpdateGroup)\r\n }\r\n \r\n checkEmptyUpdate(name) {\r\n if(name !== '' && name !== null) {\r\n this.displayButtonUpdate = true;\r\n } else {\r\n this.displayButtonUpdate = false;\r\n }\r\n }\r\n \r\n //Delete group\r\n deleteGroup() {\r\n this.lotsList = [];\r\n for (let i=0; i x.name == this.groupNameDeleteForm.value);\r\n \r\n this.groupsService.deleteGroup(this.idGroupDelete[0].id).subscribe(\r\n data => {\r\n console.log(\"DELETE Request is successful \", data);\r\n this.toast('success', this.groupNameDeleteForm.value, 'Parking Spaces group deleted successfully');\r\n },\r\n (error) => {\r\n console.log(\"Error DELETE Request \", error);\r\n this.toast('error', this.groupNameDeleteForm.value, 'Parking Spaces group not deleted');\r\n }\r\n );\r\n }\r\n \r\n checkEmptyDelete(name) {\r\n if(name !== '' && name !== null) {\r\n this.displayButtonDelete = true;\r\n } else {\r\n this.displayButtonDelete = false;\r\n }\r\n }\r\n \r\n // Toast function\r\n toast(type: string, id: string, message: string) {\r\n \r\n switch (type) {\r\n case 'success':\r\n this.toastrService.success(id, message, {\r\n positionClass: 'toast-bottom-right',\r\n progressBar: true,\r\n closeButton: true,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n case 'warning':\r\n this.toastrService.warning(id, message, {\r\n positionClass: 'toast-bottom-right',\r\n progressBar: true,\r\n closeButton: true,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n case 'error':\r\n this.toastrService.error(id, message, {\r\n positionClass: 'toast-bottom-right',\r\n progressBar: true,\r\n closeButton: true,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n default:\r\n break;\r\n }\r\n }\r\n \r\n}","import { Component, OnInit, Input, Output, EventEmitter} from '@angular/core';\r\nimport { HttpClient} from '@angular/common/http';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport { environment } from 'src/environments/environment';\r\n\r\nimport { LotGetModel } from 'src/app/_shared/models/lot';\r\n\r\nimport { AuthenticationService } from 'src/app/_services/authentication.service';\r\nimport { LotService } from 'src/app/_services/lot.service';\r\nimport { TypeService } from 'src/app/_services/type.service';\r\nimport { LotsGroupsService } from 'src/app/_services/lots-groups.service';\r\n\r\nimport { ToastContainerDirective, ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-editlot',\r\n templateUrl: './editlot.component.html',\r\n styleUrls: ['./editlot.component.scss']\r\n})\r\nexport class EditlotComponent implements OnInit {\r\n \r\n lot: LotGetModel;\r\n @Input() id: string;\r\n @Input() x: number;\r\n @Input() y: number;\r\n disabledMultiSelect = true;\r\n timestamp: string;\r\n @Output() newItemEvent = new EventEmitter();\r\n @Output() closePop: EventEmitter = new EventEmitter();\r\n section: string=\"\";\r\n parking_id: string;\r\n types:any=[\"regular\", \"handicap\", \"management\", \"guest\", \"e-vehicle\", \"short-term\"];\r\n \r\n //Groups variables\r\n lotsGroups: any;\r\n \r\n //Form to update lots to a group\r\n groupUpdate: any;\r\n list: any;\r\n selectedStatesGroup: any;\r\n keys: any;\r\n initialGroups: any[];\r\n \r\n constructor(\r\n public http: HttpClient,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n public lotService: LotService,\r\n public auth: AuthenticationService,\r\n public t: TypeService,\r\n private toastrService: ToastrService,\r\n public groupsService: LotsGroupsService)\r\n {\r\n this.lot= new LotGetModel();\r\n }\r\n \r\n async ngOnInit() {\r\n console.log(\"Edit lot \"+ this.id);\r\n this.parking_id=this.route.snapshot.params.id;\r\n this.route.queryParams.subscribe( (par:any)=>{\r\n this.section=par.section;\r\n this.lotService.retriveLotById(this.id).subscribe(\r\n (data:any)=>{\r\n this.lot=data;\r\n },\r\n (err) => {\r\n console.log(\"Lot \"+ this.id + \" don't found in DB, it will be created after SAVE\");\r\n this.lot.type=\"regular\";\r\n this.lot.id=this.id;\r\n }\r\n );\r\n console.log(\"Lotto \"+ this.lot.id);\r\n });\r\n \r\n this.selectedStatesGroup = {}\r\n await this.groupsService.retrieveGroupsUser().then(group => {\r\n this.lotsGroups = group;\r\n \r\n for (let i=0; i {\r\n console.log(\"PUT Request is successful \", data);\r\n this.toast('success', this.id,'Parking Space updated successfully')\r\n this.newItemEvent.emit(this.lot.id);\r\n },\r\n (error) => {\r\n console.log(\"Error PUT Request \", error);\r\n this.toast('error', this.id, 'Parking Space not updated')\r\n }\r\n )\r\n this.reloadPage();\r\n }\r\n \r\n closePopover() {\r\n this.closePop.emit(true)\r\n }\r\n \r\n statusTStyle(value) {\r\n let res={color:\"black\"};\r\n res.color=this.t.find(value).toString();\r\n return res;\r\n }\r\n \r\n // Toast function\r\n toast(type: string, id: string, message: string) {\r\n \r\n switch (type) {\r\n case 'success':\r\n this.toastrService.success(id, message, {\r\n positionClass: 'toast-bottom-right',\r\n progressBar: true,\r\n closeButton: true,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n case 'warning':\r\n this.toastrService.warning(id, message, {\r\n positionClass: 'toast-bottom-right',\r\n progressBar: true,\r\n closeButton: true,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n case 'error':\r\n this.toastrService.error(id, message, {\r\n positionClass: 'toast-bottom-right',\r\n progressBar: true,\r\n closeButton: true,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n case 'info':\r\n this.toastrService.info(id, message, {\r\n positionClass: 'toast-bottom-center',\r\n progressBar: false,\r\n closeButton: false,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n default:\r\n break;\r\n }\r\n }\r\n \r\n //Update Parking Spaces Groups\r\n confirmUpdateGroup() {\r\n this.groupUpdate = []\r\n for (let i=0; i0) {\r\n for(let k=0; k e === this.lot.id)) {\r\n body = {\"name\":this.groupUpdate[k].name, \"lots\": this.groupUpdate[k].lots}\r\n } else {\r\n this.groupUpdate[k].lots.push(this.lot.id)\r\n body = {\"name\":this.groupUpdate[k].name, \"lots\": this.groupUpdate[k].lots}\r\n this.groupsService.updateGroup(this.groupUpdate[k].id, JSON.stringify(body)).subscribe(\r\n data => {\r\n this.toast('success', '', this.id + ' has been added to the ' + this.groupUpdate[k].name + ' Parking Spaces Group')\r\n },\r\n (error) => {\r\n this.toast('error', '', this.id + ' has not been added to the ' + this.groupUpdate[k].name + ' Parking Spaces Group')\r\n });\r\n }\r\n }\r\n }\r\n \r\n this.initialGroups.forEach(element => {\r\n if(this.list.indexOf(element) === -1) {\r\n for(let i=0; i {\r\n this.toast('success', '', this.id + ' has been removed to the ' + this.lotsGroups[i].name + ' Parking Spaces Group')\r\n },\r\n (error) => {\r\n this.toast('error', '', this.id + ' has not been removed to the ' + this.lotsGroups[i].name + ' Parking Spaces Group')\r\n });\r\n }\r\n }\r\n }\r\n })\r\n }\r\n \r\n reloadPage() {\r\n let parkingId = this.route.snapshot.params.id;\r\n let section = this.route.snapshot.queryParams.section;\r\n let currentRoute = \"/parking/\" + parkingId;\r\n \r\n this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => {\r\n this.router.navigate([currentRoute], { queryParams: { view: 'edit', section: section }, queryParamsHandling: 'merge' }); // navigate to same route\r\n });\r\n }\r\n \r\n}","import { Component, Input, OnChanges, OnInit } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { CalendarEvent, CalendarView } from 'angular-calendar';\r\nimport { EventColor } from 'calendar-utils';\r\nimport { AnalyticsService } from 'src/app/_services/analytics.service';\r\nimport { startOfDay, endOfDay, subDays, addDays, endOfMonth, isSameDay, isSameMonth, addHours } from 'date-fns';\r\n\r\nconst colors: Record = {\r\n busy: {\r\n primary: '#AD2121',\r\n secondary: '#FAE3E3',\r\n },\r\n alert: {\r\n primary: '#E3BC08',\r\n secondary: '#FDF1BA',\r\n },\r\n};\r\n\r\n@Component({\r\n selector: 'app-event-history',\r\n templateUrl: './event-history.component.html',\r\n styleUrls: ['./event-history.component.scss']\r\n})\r\n\r\nexport class EventHistoryComponent implements OnChanges {\r\n @Input() lotId: string;\r\n \r\n view: CalendarView = CalendarView.Week;\r\n CalendarView = CalendarView;\r\n viewDate: Date = new Date();\r\n refresh = new Subject();\r\n events: CalendarEvent[] = [];\r\n activeDayIsOpen: boolean = true;\r\n \r\n durationObj: any;\r\n alertObj: any;\r\n \r\n constructor(private analytics: AnalyticsService) {}\r\n \r\n async ngOnChanges() {\r\n this.events=[];\r\n var today = new Date();\r\n var start = new Date(today.setMonth(today.getMonth()-6)).toISOString();\r\n var end = new Date().toISOString();\r\n \r\n await this.analytics.getLotDuration(this.lotId, start, end, \"HOUR\").then((x)=>(this.durationObj=x))\r\n \r\n this.durationObj.durations.forEach((item)=>{\r\n let startDate = item.start.replace('T', ' ').slice(0, -5);\r\n let endDate = item.end.replace('T', ' ').slice(0, -5);\r\n let title = '
Status: Busy
Start: '+ startDate +'
End: ' + endDate + '
'\r\n let event: CalendarEvent = {\r\n start: new Date(item.start),\r\n end: new Date(item.end),\r\n title: title,\r\n color: { ...colors.busy },\r\n }\r\n this.events.push(event)\r\n })\r\n \r\n await this.analytics.getAlerts(this.lotId, start, end).then((x)=>(this.alertObj=x))\r\n \r\n this.alertObj.forEach((item)=>{\r\n if(Object.keys(item.end).length === 0) {\r\n let startDate = item.start.timestamp.replace('T', ' ').slice(0, -5)\r\n let endDate = new Date().toISOString().replace('T', ' ').slice(0, -5)\r\n let title = '
Status: Alert
Start: '+ startDate +'
End: ' + endDate + '
'\r\n let event: CalendarEvent = {\r\n start: new Date(item.start.timestamp),\r\n end: new Date(),\r\n title: title,\r\n color: {...colors.alert}\r\n }\r\n this.events.push(event)\r\n } else {\r\n let startDate = item.start.timestamp.replace('T', ' ').slice(0, -5)\r\n let endDate = item.end.timestamp.replace('T', ' ').slice(0, -5)\r\n let title = '
Status: Alert
Start: '+ startDate +'
End: ' + endDate + '
'\r\n let event: CalendarEvent = {\r\n start: new Date(item.start.timestamp),\r\n end: new Date(item.end.timestamp),\r\n title: title,\r\n color: {...colors.alert}\r\n }\r\n this.events.push(event)\r\n }\r\n })\r\n \r\n this.refresh.next()\r\n }\r\n\r\n dayClicked({ date, events }: { date: Date; events: CalendarEvent[] }): void {\r\n if (isSameMonth(date, this.viewDate)) {\r\n if (\r\n (isSameDay(this.viewDate, date) && this.activeDayIsOpen === true) ||\r\n events.length === 0\r\n ) {\r\n this.activeDayIsOpen = false;\r\n } else {\r\n this.activeDayIsOpen = true;\r\n }\r\n this.viewDate = date;\r\n }\r\n }\r\n \r\n setView(view: CalendarView) {\r\n this.view = view;\r\n }\r\n \r\n closeOpenMonthViewDay() {\r\n this.activeDayIsOpen = false;\r\n }\r\n \r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Subscription, timer } from 'rxjs';\r\n\r\nimport { ParkingStatus } from 'src/app/_shared/models/parking';\r\n\r\nimport { ParkingService } from 'src/app/_services/parking.service';\r\nimport { TypeService } from '../../_services/type.service';\r\n\r\n@Component({\r\n selector: 'app-floor-info',\r\n templateUrl: './floor-info.component.html',\r\n styleUrls: ['./floor-info.component.scss']\r\n})\r\nexport class FloorInfoComponent implements OnInit {\r\n \r\n @Input() id: string;\r\n @Input() section: string;\r\n \r\n //Multy-storey variables\r\n sectionSubscription: Subscription;\r\n parsubs: Subscription;\r\n sectionInfo: ParkingStatus;\r\n list: any;\r\n \r\n constructor(\r\n private park: ParkingService,\r\n public t: TypeService\r\n )\r\n {\r\n this.sectionInfo = new ParkingStatus();\r\n }\r\n \r\n async ngOnInit() {\r\n this.parsubs = timer(0, 5000).subscribe(async () => {\r\n await this.park.retriveSection(this.id, this.section, 'free');\r\n this.sectionInfo = this.park.getSection();\r\n this.list = [];\r\n for(let i=0; i JSON.stringify(value) !== '{}');\r\n });\r\n }\r\n \r\n ngOnDestroy() {\r\n this.parsubs.unsubscribe();\r\n }\r\n \r\n statusStyle(value) {\r\n let res = { color: \"black\" };\r\n res.color = this.t.find(value).toString();\r\n return res;\r\n }\r\n \r\n changeColor() {\r\n if(this.sectionInfo.section.n_lot_free == 0) {\r\n return { 'color': '#E11F26' };\r\n } else return {'color': '#70BF54'}\r\n }\r\n \r\n}","import { OnInit, Component, QueryList, ViewChildren } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { UntypedFormBuilder } from '@angular/forms';\r\nimport { timer, Subscription } from 'rxjs';\r\n\r\nimport { environment } from 'src/environments/environment';\r\n\r\nimport { Feature, View } from 'ol';\r\nimport Point from 'ol/geom/Point';\r\nimport VectorLayer from 'ol/layer/Vector';\r\nimport Projection from 'ol/proj/Projection';\r\nimport VectorSource from 'ol/source/Vector';\r\nimport { Cluster } from \"ol/source\";\r\nimport { Circle, Fill, Stroke, Style, Text } from 'ol/style';\r\nimport { Heatmap as HeatmapLayer } from 'ol/layer';\r\nimport ImageLayer from \"ol/layer/Image\";\r\nimport Static from \"ol/source/ImageStatic\";\r\nimport { getCenter } from \"ol/extent\";\r\nimport Map from 'ol/Map';\r\nimport * as olExtent from \"ol/extent\";\r\nimport ZoomToExtent from 'ol/control/ZoomToExtent';\r\n\r\nimport { ImageInfo } from 'src/app/_shared/models/image';\r\n\r\nimport { AuthenticationService } from 'src/app/_services/authentication.service';\r\nimport { ParkingService } from 'src/app/_services/parking.service';\r\nimport { TypeService } from 'src/app/_services/type.service';\r\nimport { AnalyticsService } from 'src/app/_services/analytics.service';\r\nimport { ImagesService } from 'src/app/_services/images.service';\r\nimport { StyleService } from 'src/app/_services/style.service';\r\n\r\nimport { NgbPopover } from '@ng-bootstrap/ng-bootstrap/popover/popover';\r\n\r\nconst { DateTime } = require(\"luxon\");\r\nconst lot_type = \"lot\";\r\n\r\n@Component({\r\n selector: 'app-heatmap-map-layer',\r\n templateUrl: './heatmap-map-layer.component.html',\r\n styleUrls: ['./heatmap-map-layer.component.scss']\r\n})\r\nexport class HeatmapMapLayerComponent implements OnInit {\r\n \r\n @ViewChildren('popUpInfo') ngbPopoverInfo!: QueryList;\r\n map: Map;\r\n id: string;\r\n subs: Subscription;\r\n parsubs: Subscription;\r\n section: string = \"\";\r\n info: ImageInfo;\r\n url: string;\r\n lots: any;\r\n areas: any;\r\n extent: any;\r\n features: any;\r\n vectorSource: VectorSource;\r\n vector: HeatmapLayer;\r\n vectorLayer: VectorLayer;\r\n pointFeatureRadius: number = 18;\r\n retriveImages: string;\r\n getImages: string;\r\n parkingId: string;\r\n images: any;\r\n parkImagesId: string;\r\n getUrl: string;\r\n mapLoaded = false;\r\n imagesInfo: any;\r\n endDate: any;\r\n startDate: any;\r\n \r\n constructor(\r\n public http: HttpClient,\r\n private park: ParkingService,\r\n private lotAnalytics: AnalyticsService,\r\n public auth: AuthenticationService,\r\n public types: TypeService,\r\n private route: ActivatedRoute,\r\n public imagesService: ImagesService, // Injecting the Service\r\n private fb: UntypedFormBuilder,\r\n private style: StyleService\r\n ) {\r\n this.features = [];\r\n }\r\n \r\n // tslint:disable-next-line: use-life-cycle-interface\r\n ngOnDestroy() {\r\n console.log('unsuscribe polling');\r\n //this.subs.unsubscribe();\r\n this.parsubs.unsubscribe();\r\n }\r\n \r\n async ngOnInit() {\r\n \r\n console.log(\"load map layer\");\r\n this.id = this.route.snapshot.params.id;\r\n this.parsubs = this.route.queryParams.subscribe((par: any) => {\r\n this.section = par.section;\r\n this.url = '../../../assets/images/' + this.id + '-' + this.section + '.jpg';\r\n this.parkImagesId = this.id + '-' + this.section;\r\n this.retriveImages = (environment.apiUri + \"v2/images/\" + this.parkImagesId);\r\n });\r\n \r\n this.endDate = new Date();\r\n this.startDate = new Date();\r\n this.endDate.setDate(this.endDate.getDate()-1);\r\n this.startDate.setDate(this.startDate.getDate()-16);\r\n this.endDate = DateTime.fromISO(this.endDate.toISOString()).plus({days: 1}).toUTC().startOf('day').toISO();\r\n this.startDate = DateTime.fromISO(this.startDate.toISOString()).plus({days: 1}).toUTC().startOf('day').toISO();\r\n \r\n await this.imagesService.retriveImagesInfo(this.parkImagesId).then(x => this.imagesInfo = x as any);\r\n \r\n let extentHeight = this.imagesInfo.y_multiplier;\r\n let extentWidth = this.imagesInfo.x_multiplier;\r\n this.extent = [0, 0, extentWidth, extentHeight];\r\n let projection = new Projection({\r\n code: \"xkcd-image\",\r\n units: \"pixels\",\r\n extent: this.extent,\r\n });\r\n \r\n //Setup a Vector Source\r\n this.vectorSource = new VectorSource({\r\n features: [],\r\n });\r\n \r\n //Setup a Vector Layer\r\n this.vectorLayer = new VectorLayer({\r\n source: new Cluster({\r\n distance: 50,\r\n source: this.vectorSource,\r\n }),\r\n style: this.styleObject,\r\n });\r\n \r\n this.vector = new HeatmapLayer({\r\n source: this.vectorSource,\r\n blur: 8,\r\n radius: 20,\r\n gradient: ['#00f', '#0f0', '#ff0', '#f00'],\r\n weight: function (feature) {\r\n const name = feature.get('description');\r\n const saturation = feature.get('saturation');\r\n return saturation;\r\n },\r\n });\r\n \r\n let sourceStaticImage = new Static({\r\n imageLoadFunction: (function (image, src) {\r\n this.imagesService.retriveImages(src)\r\n .subscribe(data => {\r\n let reader = new FileReader();\r\n reader.addEventListener(\"loadend\", () => {\r\n image.getImage().src = reader.result;\r\n }, false);\r\n if (data) {\r\n reader.readAsDataURL(data);\r\n }\r\n }, error => {\r\n console.log(error);\r\n });\r\n }).bind(this),\r\n url: this.parkImagesId,\r\n projection: projection,\r\n imageExtent: this.extent\r\n });\r\n \r\n this.map = new Map({\r\n layers: [\r\n new ImageLayer({\r\n source: sourceStaticImage\r\n }),\r\n // this.vectorLayer //Add Vector in layers\r\n ],\r\n target: \"map-layer\",\r\n view: new View({\r\n projection: projection,\r\n center: getCenter(this.extent),\r\n maxZoom: 6,\r\n zoom: 1,\r\n extent: [-(0.2*extentWidth), -(0.2*extentHeight), extentWidth+(0.2*extentWidth), extentHeight+(0.2*extentHeight)],\r\n showFullExtent: true\r\n })\r\n });\r\n \r\n // Function to compute dynamically the height of the map\r\n this.style.computeHeight(25);\r\n this.map.updateSize();\r\n \r\n // Zoom Control Button\r\n let zoom = document.createElement(\"span\");\r\n zoom.innerHTML = '';\r\n let zoomControl = new ZoomToExtent({\r\n extent: [0, 0, extentWidth, extentHeight],\r\n label: zoom,\r\n });\r\n \r\n this.map.addControl(zoomControl);\r\n this.map.once(\"rendercomplete\", (event) => {\r\n this.map.addLayer(this.vector);\r\n });\r\n \r\n this.map.getView().fit(sourceStaticImage.getImageExtent());\r\n \r\n await this.imagesService.retriveImagesInfo(this.parkImagesId).then(async (info) => {\r\n this.info = info as any;\r\n /*\r\n * insert Feature into openlayer map\r\n */\r\n for (let index = 0; index < this.info.dot_coordinate.length; index++) {\r\n if (this.info.dot_coordinate[index].type === lot_type) {\r\n const pos = [this.info.dot_coordinate[index].x, (extentHeight - this.info.dot_coordinate[index].y)];\r\n const singleFeature = new Feature({\r\n geometry: new Point(pos),\r\n description: this.info.dot_coordinate[index].name,\r\n status: \"\",\r\n type: \"regular\",\r\n saturation: 0\r\n });\r\n try {\r\n await this.lotAnalytics.getLotOccupancy(\r\n this.info.dot_coordinate[index].name,\r\n this.startDate,\r\n this.endDate,\r\n \"DAY\")\r\n .then((x:any) => {\r\n singleFeature.set(\"saturation\", x[\"avg_occupancy\"]);\r\n }\r\n );\r\n } catch (error) {\r\n singleFeature.set(\"saturation\", 0);\r\n }\r\n this.features.push(singleFeature);\r\n }\r\n }\r\n this.vectorSource.addFeatures(this.features);\r\n this.mapLoaded = true;\r\n });\r\n \r\n /*\r\n zoomCluster function to zoom on Cluster click\r\n */\r\n let zoomCluster = function (feature, map) {\r\n let features = feature.get(\"features\");\r\n if (features.length > 1) {\r\n let extent = olExtent.createEmpty();\r\n features.forEach(function (feature) {\r\n olExtent.extend(extent, feature.getGeometry().getExtent());\r\n });\r\n let zoom = map.getView().getZoom();\r\n map.getView().fit(extent, map.getSize());\r\n map.getView().setZoom(zoom + 2);\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n }\r\n \r\n styleObject = (dot) => {\r\n \r\n let nFreeLots = 0;\r\n let nNotStatusLots = 0;\r\n let nAlertStatusLots = 0;\r\n let nBusyLots = 0;\r\n let nLotsLabel = \"\";\r\n let lotColor = '#BFC0C2';\r\n let lotStrokeColor = '#BFC0C2';\r\n let strokeWidth = 2;\r\n let colorText = \"#fff\";\r\n let colorTextStroke = \"rgba(0, 0, 0, 0.6)\";\r\n \r\n if (dot.get(\"features\").length === 1) {\r\n switch (dot.get(\"features\")[0].get(\"status\")) {\r\n case \"free\": {\r\n lotColor = '#70BF54';\r\n break;\r\n }\r\n case \"busy\": {\r\n lotColor = '#E11F26';\r\n break;\r\n }\r\n case \"alert\": {\r\n lotColor = 'rgb(252,175,23)';\r\n nLotsLabel = '!';\r\n colorText = \"rgb(0, 0, 0)\";\r\n colorTextStroke = \"rgb(255, 0, 0)\";\r\n break;\r\n }\r\n default: {\r\n lotColor = '#BFC0C2';\r\n break;\r\n }\r\n }\r\n lotStrokeColor = 'black';\r\n \r\n if (dot.get(\"features\")[0].get(\"status\") != \"alert\") {\r\n switch (dot.get(\"features\")[0].get(\"type\")) {\r\n case \"regular\": {\r\n nLotsLabel = '';\r\n break;\r\n }\r\n case \"management\": {\r\n nLotsLabel = 'M';\r\n break;\r\n }\r\n case \"guest\": {\r\n nLotsLabel = 'G';\r\n break;\r\n }\r\n case \"handicap\": {\r\n nLotsLabel = 'H';\r\n break;\r\n }\r\n case \"e-vehicle\": {\r\n nLotsLabel = 'e';\r\n break;\r\n }\r\n case \"short-term\": {\r\n nLotsLabel = 's-t';\r\n break;\r\n }\r\n default: {\r\n nLotsLabel = '';\r\n break;\r\n }\r\n }\r\n }\r\n } else if (dot.get(\"features\").length > 1) {\r\n console.log(dot.get(\"features\"));\r\n for (let i = 0; i < dot.get(\"features\").length; i++) {\r\n if (dot.get(\"features\")[i].get(\"status\") === 'free') {\r\n nFreeLots++;\r\n } else if (dot.get(\"features\")[i].get(\"status\") === '') {\r\n nNotStatusLots++;\r\n } else if (dot.get(\"features\")[i].get(\"status\") === 'alert') {\r\n nAlertStatusLots++;\r\n } else if (dot.get(\"features\")[i].get(\"status\") === 'busy') {\r\n nBusyLots++;\r\n }\r\n }\r\n strokeWidth = 2;\r\n lotStrokeColor = 'black';\r\n if (nFreeLots > 0) {\r\n lotColor = '#70BF54';\r\n nLotsLabel = nFreeLots.toString();\r\n } else if (nNotStatusLots > 0) {\r\n lotColor = '#BFC0C2';\r\n nLotsLabel = nNotStatusLots.toString();\r\n } else if (nAlertStatusLots > 0) {\r\n lotColor = 'rgb(252,175,23)';\r\n nLotsLabel = nAlertStatusLots.toString();\r\n } else if (nBusyLots > 0) {\r\n lotColor = '#E11F26';\r\n nLotsLabel = nBusyLots.toString();\r\n }\r\n }\r\n \r\n //Text fill style\r\n let textFill = new Fill({\r\n color: colorText\r\n });\r\n \r\n //Text stroke style\r\n let textStroke = new Stroke({\r\n color: colorTextStroke,\r\n width: 4,\r\n });\r\n \r\n //Number of free parking lot\r\n let textParkingFree = new Text({\r\n font: \"20\" + \"px sans-serif\",\r\n text: nLotsLabel,\r\n fill: textFill,\r\n stroke: textStroke,\r\n });\r\n \r\n let iconStyle = new Style({\r\n image: new Circle({\r\n radius: this.pointFeatureRadius,\r\n fill: new Fill({\r\n color: lotColor,\r\n }),\r\n stroke: new Stroke({\r\n color: lotStrokeColor,\r\n width: strokeWidth,\r\n }),\r\n }),\r\n text: textParkingFree,\r\n });\r\n return iconStyle;\r\n }\r\n \r\n generateRandomString(length = 6) {\r\n let randomChars = 'abcdef0123456789';\r\n let result = '';\r\n for (let i = 0; i < length; i++) {\r\n result += randomChars.charAt(Math.floor(Math.random() * randomChars.length));\r\n }\r\n return result;\r\n }\r\n \r\n generateRandomLastUpdate(sY, sM, sD, eY, eM, eD, startHour, endHour): string {\r\n let start: any;\r\n let end: any;\r\n start = new Date(sY, sM, sD);\r\n end = new Date(eY, eM, eD);\r\n \r\n let date = new Date(+start + Math.random() * (end - start));\r\n // tslint:disable-next-line: no-bitwise\r\n let hour = startHour + Math.random() * (endHour - startHour) | 0;\r\n date.setHours(hour);\r\n return date.toUTCString();\r\n }\r\n \r\n generateRandomNumberMaxMin(max, min) {\r\n return (Math.trunc((Math.random() * (max - min) + 1))).toString();\r\n }\r\n \r\n generateRandomNumberMaxMin_toNumber(max, min) {\r\n return (Math.trunc((Math.random() * (max - min) + 1)));\r\n }\r\n}\r\n\r\nfunction addNow(time): string {\r\n return new Date(new Date().getTime() + time).toISOString();\r\n}","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\n\r\nimport { AnalyticsService } from 'src/app/_services/analytics.service';\r\n\r\nimport Chart from 'chart.js/auto';\r\n\r\nimport { jsPDF } from \"jspdf\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\n@Component({\r\n selector: \"app-lot-charts\",\r\n templateUrl: \"./lot-charts.component.html\",\r\n styleUrls: [\"./lot-charts.component.scss\"],\r\n})\r\nexport class LotChartsComponent implements OnInit {\r\n // INPUT declarations\r\n @Input() lotId: string;\r\n \r\n // CHART declarations\r\n public dailyChartOccupancy: Chart;\r\n public ctxDaily: any;\r\n public daysrangeChartOccupancy: Chart;\r\n public ctxDaysRange: any;\r\n public weeklyChartOccupancy: Chart;\r\n public ctxWeekly: any;\r\n \r\n // DatePicker\r\n public myGroup: UntypedFormGroup;\r\n public minDate = new Date();\r\n public maxDate = new Date();\r\n public yesterday = new Date();\r\n public dayBefore = new Date();\r\n public dayEndBefore = new Date();\r\n \r\n // API variables\r\n public dailyDataOccupancyObj: any;\r\n public dayOccupancyRate: number[] = [];\r\n public daysrangeDataOccupancyObj: any;\r\n public daysrangeOccupancyRate: number[] = [];\r\n public daysrangeDayRange: string[] = [];\r\n public weeklyDataOccupancyObj: any;\r\n public weekOccupancyRate: number[] = [];\r\n public weekDayRange: string[] = [];\r\n public step;\r\n \r\n // Variable declarations\r\n public mapLoaded = true;\r\n public showErrorHourly: boolean = false;\r\n public showErrorDaily: boolean = false;\r\n public showErrorWeekly: boolean = false;\r\n offsetName: string;\r\n \r\n //Time range\r\n dayOccupancyRateTime: any;\r\n weeklyDataOccupancyTimeObj: any;\r\n daysrangeDataOccupancyTimeObj: any;\r\n timeStart = {hour: 0, minute: 0};\r\n timeEnd = {hour: 24, minute: 0}\r\n meridian = true;\r\n hourStep = 1;\r\n minuteStep = 15;\r\n \r\n //Controls Day\r\n minCheckDate = new Date();\r\n maxCheckDate = new Date();\r\n actualDay = new Date();\r\n previousDay = new Date();\r\n nextDay = new Date();\r\n actualEndDay = new Date();\r\n previousEndDay = new Date();\r\n nextEndDay = new Date();\r\n \r\n //Download variables\r\n hourlyOccupancy: any;\r\n dailyOccupancy: any;\r\n weeklyOccupancy: any;\r\n title: any;\r\n \r\n constructor(private analytics: AnalyticsService) {}\r\n \r\n async ngOnInit() {\r\n \r\n this.minDate.setFullYear(this.maxDate.getFullYear(), this.maxDate.getMonth() - 3, this.maxDate.getDate());\r\n this.maxDate.setDate(this.maxDate.getDate() - 1);\r\n this.minCheckDate = this.minDate;\r\n this.maxCheckDate = this.maxDate;\r\n \r\n this.myGroup = new UntypedFormGroup({\r\n date: new UntypedFormControl(this.maxDate),\r\n endDate: new UntypedFormControl(this.maxDate)\r\n });\r\n \r\n this.createChart();\r\n this.yesterday.setDate(this.maxDate.getDate() - 1);\r\n this.dataComputation(this.yesterday, this.yesterday, \"HOUR\",\"DAY\");\r\n \r\n this.myGroup.valueChanges.pipe(debounceTime(400), distinctUntilChanged()).subscribe(dateSelected => {\r\n if(dateSelected.date !== null && dateSelected.endDate !== null) {\r\n this.dataComputation(dateSelected.date, dateSelected.endDate, \"HOUR\", \"DAY\");\r\n }\r\n })\r\n \r\n let offsetNameShort = DateTime.fromJSDate(this.myGroup.get(\"date\").value).setZone('Europe/Rome').offsetNameShort;\r\n let offsetNameLong = DateTime.fromJSDate(this.myGroup.get(\"date\").value).setZone('Europe/Rome').offsetNameLong;\r\n this.offsetName = offsetNameShort + \" (\" + offsetNameLong + \")\"\r\n \r\n this.myGroup.valueChanges.subscribe(change=>{\r\n let offsetNameShort = DateTime.fromJSDate(this.myGroup.get(\"date\").value).setZone('Europe/Rome').offsetNameShort;\r\n let offsetNameLong = DateTime.fromJSDate(this.myGroup.get(\"date\").value).setZone('Europe/Rome').offsetNameLong;\r\n this.offsetName = offsetNameShort + \" (\" + offsetNameLong + \")\"\r\n this.checkDay();\r\n })\r\n \r\n this.checkDay();\r\n }\r\n \r\n ngOnChanges() {\r\n setTimeout(() => {\r\n this.dayBefore.setFullYear(this.myGroup.get(\"date\").value.getFullYear(), this.myGroup.get(\"date\").value.getMonth(), this.myGroup.get(\"date\").value.getDate() - 1);\r\n this.dayEndBefore.setFullYear(this.myGroup.get(\"endDate\").value.getFullYear(), this.myGroup.get(\"endDate\").value.getMonth(), this.myGroup.get(\"endDate\").value.getDate() - 1);\r\n this.dataComputation(this.dayBefore, this.dayEndBefore, \"HOUR\",\"DAY\");\r\n }, 500)\r\n }\r\n \r\n createChart() {\r\n // Create chart HOURLY OCCUPANCY\r\n this.ctxDaily = document.getElementById(\"dailyOccupancy\");\r\n this.dailyChartOccupancy = new Chart(\"dailyOccupancy\", {\r\n type: \"bar\",\r\n data: {\r\n labels: [\"12am\",\"1am\",\"2am\",\"3am\",\"4am\",\"5am\",\"6am\",\"7am\",\"8am\",\"9am\",\"10am\",\"11am\",\"12pm\",\"1pm\",\"2pm\",\"3pm\",\"4pm\",\"5pm\",\"6pm\",\"7pm\",\"8pm\",\"9pm\",\"10pm\",\"11pm\"],\r\n datasets: [\r\n {\r\n label: \"Occupancy\",\r\n backgroundColor: \"#005691\",\r\n borderColor: \"#005691\",\r\n data: this.dayOccupancyRate,\r\n },\r\n ],\r\n },\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n scales: {\r\n x: {\r\n ticks: {\r\n autoSkip: false\r\n }\r\n },\r\n y:\r\n {\r\n title: {\r\n display: true,\r\n text: \"Hourly Occupancy (%)\",\r\n },\r\n min: 0,\r\n max: 100,\r\n ticks: {\r\n stepSize: 10,\r\n },\r\n }, \r\n },\r\n plugins: {\r\n legend: {\r\n display: false,\r\n position: \"bottom\",\r\n },\r\n }\r\n },\r\n });\r\n \r\n // Create chart DAILY OCCUPANCY\r\n this.ctxDaysRange = document.getElementById(\"daysrangeOccupancy\");\r\n this.daysrangeChartOccupancy = new Chart(\"daysrangeOccupancy\", {\r\n type: \"bar\",\r\n data: {\r\n labels: [],\r\n datasets: [\r\n {\r\n label: \"Occupancy\",\r\n backgroundColor: \"#00d07f\",\r\n borderColor: \"#00d07f\",\r\n data: this.daysrangeOccupancyRate,\r\n },\r\n ],\r\n },\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n scales: {\r\n y:\r\n {\r\n title: {\r\n display: true,\r\n text: \"Daily Occupancy (%)\",\r\n },\r\n min: 0,\r\n max: 100,\r\n ticks: {\r\n stepSize: 10,\r\n },\r\n },\r\n },\r\n plugins: {\r\n legend: {\r\n display: false,\r\n position: \"bottom\",\r\n },\r\n }\r\n },\r\n });\r\n \r\n // Create chart WEEKLY OCCUPANCY\r\n this.ctxWeekly = document.getElementById(\"weeklyOccupancy\");\r\n this.weeklyChartOccupancy = new Chart(\"weeklyOccupancy\", {\r\n type: \"bar\",\r\n data: {\r\n labels: [],\r\n datasets: [\r\n {\r\n label: \"Occupancy\",\r\n backgroundColor: \"#50237f\",\r\n borderColor: \"#50237f\",\r\n data: this.weekOccupancyRate,\r\n },\r\n ],\r\n },\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n scales: {\r\n y:\r\n {\r\n title: {\r\n display: true,\r\n text: \"Weekly Occupancy (%)\",\r\n },\r\n min: 0,\r\n max: 100,\r\n ticks: {\r\n stepSize: 10,\r\n },\r\n },\r\n },\r\n plugins: {\r\n legend: {\r\n display: false,\r\n position: \"bottom\",\r\n },\r\n }\r\n },\r\n });\r\n \r\n /* var weeklyChartRef = this.weeklyChartOccupancy;\r\n document.getElementById(\"weeklyOccupancy\").onclick = function (evt) {\r\n var activePoints = weeklyChartRef.getElementsAtEvent(evt);\r\n var firstPoint = activePoints[0];\r\n var label = weeklyChartRef.data.labels[firstPoint._index];\r\n var value =\r\n weeklyChartRef.data.datasets[firstPoint._datasetIndex].data[\r\n firstPoint._index\r\n ];\r\n if (firstPoint !== undefined) console.log(label + \": \" + value);\r\n }; */\r\n \r\n this.mapLoaded = true;\r\n }\r\n \r\n async dataComputation(genericDate: Date, endDate: Date, dayStep: string, weekStep: string) {\r\n // DAY COMPUTATION CHART\r\n this.computeChart([],[],[]);\r\n this.mapLoaded = false;\r\n \r\n let offset = (DateTime.fromJSDate(this.myGroup.get(\"date\").value).setZone('Europe/Rome').offset)/60;\r\n \r\n var startDayDate = DateTime.fromISO(genericDate.toISOString()).setZone('Europe/Rome').plus({days: 1}).toUTC().startOf('day').toISO();\r\n var endDayDate = DateTime.fromISO(endDate.toISOString()).setZone('Europe/Rome').plus({days: 2}).toUTC().startOf('day').toISO();\r\n \r\n console.log(\"START DAY \", startDayDate)\r\n console.log(\"END DAY \", endDayDate)\r\n \r\n await this.analytics.getLotOccupancy(this.lotId, startDayDate, endDayDate, dayStep).then((x) => {\r\n if(x.status !== 200) {\r\n this.showErrorHourly = true;\r\n this.dailyDataOccupancyObj = x.body;\r\n } else {\r\n this.showErrorHourly = false;\r\n this.dailyDataOccupancyObj = x.body;\r\n }\r\n });\r\n \r\n if(this.dailyDataOccupancyObj?.occupancies?.length > 0) {\r\n let occupanciesObj = this.dailyDataOccupancyObj?.occupancies;\r\n \r\n occupanciesObj = occupanciesObj.reduce(function (r, a) {\r\n r[DateTime.fromISO(a.start).plus({hours: offset}).toUTC().toObject().hour] = r[DateTime.fromISO(a.start).plus({hours: offset}).toUTC().toObject().hour] || [];\r\n r[DateTime.fromISO(a.start).plus({hours: offset}).toUTC().toObject().hour].push(a);\r\n return r\r\n }, {});\r\n \r\n var occupanciesArray = Object.keys(occupanciesObj).map(function(index){\r\n let a = occupanciesObj[index];\r\n return a;\r\n })\r\n \r\n this.dayOccupancyRate = [];\r\n this.dayOccupancyRateTime = [];\r\n for(let i = 0; i {\r\n if(x.status !== 200) {\r\n this.showErrorDaily = true;\r\n this.daysrangeDataOccupancyObj = x.body;\r\n } else {\r\n this.showErrorDaily = false;\r\n this.daysrangeDataOccupancyObj = x.body;\r\n }\r\n });\r\n \r\n if(this.daysrangeDataOccupancyObj?.occupancies?.length > 0) {\r\n for (let i = 0; i < this.daysrangeDataOccupancyObj.occupancies.length; i++) {\r\n this.daysrangeOccupancyRate[i] = this.daysrangeDataOccupancyObj.occupancies[i][\"occupancy_rate\"] * 100;\r\n this.daysrangeDayRange[i] = DateTime.fromISO(this.daysrangeDataOccupancyObj.occupancies[i][\"start\"]).toFormat('ccc, LLL dd, yyyy');\r\n }\r\n \r\n // Round to 2 decimal points\r\n this.daysrangeOccupancyRate = this.daysrangeOccupancyRate.map(function (each_element) {\r\n return Number(each_element.toFixed(2));\r\n });\r\n } else {\r\n this.mapLoaded = true;\r\n }\r\n \r\n // WEEK COMPUTATION CHART\r\n this.computeChart([],[],[]);\r\n this.weekDayRange = [];\r\n this.mapLoaded = false;\r\n \r\n var startWeekDate = DateTime.fromISO(endDate.toISOString()).setZone('Europe/Rome').minus({days: 5}).toUTC().startOf('day').toISO();\r\n var endWeekDate = DateTime.fromISO(endDate.toISOString()).setZone('Europe/Rome').plus({days: 2}).toUTC().startOf('day').toISO();\r\n \r\n console.log(\"START WEEK \", startWeekDate)\r\n console.log(\"END WEEK \", endWeekDate)\r\n \r\n await this.analytics.getLotOccupancy(this.lotId, startWeekDate, endWeekDate, weekStep).then((x) => {\r\n if(x.status !== 200) {\r\n this.showErrorWeekly = true;\r\n this.weeklyDataOccupancyObj = x.body;\r\n } else {\r\n this.showErrorWeekly = false;\r\n this.weeklyDataOccupancyObj = x.body;\r\n }\r\n });\r\n \r\n if(this.weeklyDataOccupancyObj?.occupancies?.length > 0) {\r\n for (let i = 0; i < this.weeklyDataOccupancyObj.occupancies.length; i++) {\r\n this.weekOccupancyRate[i] = this.weeklyDataOccupancyObj.occupancies[i][\"occupancy_rate\"] * 100;\r\n this.weekDayRange[i] = DateTime.fromISO(this.weeklyDataOccupancyObj.occupancies[i][\"start\"]).toFormat('ccc, LLL dd, yyyy');\r\n }\r\n \r\n // Round to 2 decimal points\r\n this.weekOccupancyRate = this.weekOccupancyRate.map(function (each_element) {\r\n return Number(each_element.toFixed(2));\r\n });\r\n } else {\r\n this.mapLoaded = true;\r\n }\r\n \r\n // UPDATE CHART\r\n this.computeChart(this.dayOccupancyRate, this.daysrangeOccupancyRate, this.weekOccupancyRate);\r\n \r\n //Compute Analytics in a time range\r\n await this.analytics.getLotOccupancy(this.lotId, startWeekDate, endWeekDate, dayStep).then((x) => {\r\n if(x.status !== 200) {\r\n this.showErrorWeekly = true;\r\n this.weeklyDataOccupancyTimeObj = x.body;\r\n } else {\r\n this.showErrorWeekly = false;\r\n this.weeklyDataOccupancyTimeObj = x.body;\r\n }\r\n });\r\n \r\n //Compute Analytics in a time range - Days Range\r\n await this.analytics.getLotOccupancy(this.lotId, startDaysRangeDate, endDaysRangeDate, dayStep).then((x) => {\r\n if(x.status !== 200) {\r\n this.showErrorDaily = true;\r\n this.daysrangeDataOccupancyTimeObj = x.body;\r\n } else {\r\n this.showErrorDaily = false;\r\n this.daysrangeDataOccupancyTimeObj = x.body;\r\n }\r\n });\r\n\t\t\r\n let hourRange = this.timeEnd.hour - this.timeStart.hour;\r\n if(hourRange < 24) {\r\n this.computeTimeRange();\r\n }\r\n }\r\n \r\n computeChart(dayOccupancyRate, daysrangeOccupancyRate, weekOccupancyRate) {\r\n // DAY CHART UPDATE\r\n this.dailyChartOccupancy.data.datasets[0].data = dayOccupancyRate;\r\n this.dailyChartOccupancy.update();\r\n \r\n // DAYS RANGE CHART UPDATE\r\n this.daysrangeChartOccupancy.data.datasets[0].data = daysrangeOccupancyRate;\r\n this.daysrangeChartOccupancy.data.labels = this.daysrangeDayRange;\r\n this.daysrangeChartOccupancy.update();\r\n \r\n // WEEK CHART UPDATE\r\n this.weeklyChartOccupancy.data.datasets[0].data = weekOccupancyRate;\r\n this.weeklyChartOccupancy.data.labels = this.weekDayRange;\r\n this.weeklyChartOccupancy.update();\r\n\r\n this.mapLoaded = true;\r\n }\r\n \r\n computeTimeRange() {\r\n //UPDATE DAILY\r\n let hourRange = this.timeEnd.hour - this.timeStart.hour;\r\n let newlabel = []\r\n for(let i = 0; i= this.timeStart.hour && DateTime.fromISO(this.daysrangeDataOccupancyTimeObj.occupancies[i].start).plus({hours: offset}).toUTC().toObject().hour < this.timeEnd.hour) {\r\n newdatasetdaysrange[i] = this.daysrangeDataOccupancyTimeObj.occupancies[i];\r\n }\r\n }\r\n \r\n //Reduce function to group the occupancies of the same day \r\n let newdatasetsdaysrange = newdatasetdaysrange.reduce(function (r, a) {\r\n r[DateTime.fromISO(a.start).toUTC().toObject().day] = r[DateTime.fromISO(a.start).toUTC().toObject().day] || [];\r\n r[DateTime.fromISO(a.start).toUTC().toObject().day].push(a);\r\n return r\r\n }, {});\r\n \r\n //Compute Occupancy Rate in a time range \r\n let daysrangeoccupancies = [];\r\n for (const i in newdatasetsdaysrange) {\r\n let daysrangeoccupancyRate = 0;\r\n for(let j = 0; j= this.timeStart.hour && DateTime.fromISO(this.weeklyDataOccupancyTimeObj.occupancies[i].start).plus({hours: offset}).toUTC().toObject().hour < this.timeEnd.hour) {\r\n newdatasetweek[i] = this.weeklyDataOccupancyTimeObj.occupancies[i];\r\n }\r\n }\r\n \r\n //Reduce function to group the occupancies of the same day \r\n let newdatasetsweek = newdatasetweek.reduce(function (r, a) {\r\n r[DateTime.fromISO(a.start).toUTC().toObject().day] = r[DateTime.fromISO(a.start).toUTC().toObject().day] || [];\r\n r[DateTime.fromISO(a.start).toUTC().toObject().day].push(a);\r\n return r\r\n }, {});\r\n \r\n //Compute Occupancy Rate in a time range \r\n let occupancies = [];\r\n for (const i in newdatasetsweek) {\r\n let occupancyRate = 0;\r\n for(let j = 0; j max.ts || DateTime.fromJSDate(this.nextEndDay).ts > max.ts) {\r\n document.getElementById(\"nextDay\").setAttribute('disabled','');\r\n } else {\r\n document.getElementById(\"nextDay\").removeAttribute('disabled');\r\n }\r\n }\r\n \r\n download() {\r\n let startDate = this.myGroup.get('date').value;\r\n let endDate = this.myGroup.get('endDate').value;\r\n let today = new Date();\r\n let dd = today.getDate();\r\n let mm = today.getMonth() + 1;\r\n let yyyy = today.getFullYear();\r\n this.title = this.lotId;\r\n \r\n this.hourlyOccupancy = document.getElementById(\"dailyOccupancy\");\r\n this.dailyOccupancy = document.getElementById(\"daysrangeOccupancy\");\r\n this.weeklyOccupancy = document.getElementById(\"weeklyOccupancy\");\r\n let hourlyOccupancyImage = this.hourlyOccupancy.toDataURL('image/jpg', 1.0);\r\n let dailyOccupancyImage = this.dailyOccupancy.toDataURL('image/jpg', 1.0);\r\n let weeklyOccupancyImage = this.weeklyOccupancy.toDataURL('image/jpg', 1.0);\r\n \r\n let pdf = new jsPDF();\r\n let pdfWidth = (pdf.internal.pageSize.getWidth())*0.8;\r\n let pdfHeight = (pdf.internal.pageSize.getHeight());\r\n let margin = (pdf.internal.pageSize.getWidth())*0.1;\r\n let imgPropsHourly= pdf.getImageProperties(hourlyOccupancyImage);\r\n let pdfHeightHourly = (imgPropsHourly.height * pdfWidth) / imgPropsHourly.width;\r\n let imgPropsDaily= pdf.getImageProperties(dailyOccupancyImage);\r\n let pdfHeightDaily = (imgPropsDaily.height * pdfWidth) / imgPropsDaily.width;\r\n let imgPropsWeekly= pdf.getImageProperties(weeklyOccupancyImage);\r\n let pdfHeightWeekly = (imgPropsWeekly.height * pdfWidth) / imgPropsWeekly.width;\r\n pdf.setFontSize(20);\r\n pdf.text(\"Parking Space Analytics: \", 10, 10);\r\n pdf.text(this.title, 10, 20);\r\n pdf.addImage(\"https://smart-parking-app-d.bosch.tech/assets/img/Bosch_EN_LV_RGB.png\", \"png\",160, -2, 50, 24)\r\n pdf.setFontSize(10);\r\n pdf.text(\"Start Day: \" + startDate.toDateString() + \" - End Day: \" + endDate.toDateString(), 10, 30);\r\n pdf.setFontSize(15);\r\n pdf.text(\"Hourly Occupancy Chart\", 80, 40);\r\n pdf.addImage(hourlyOccupancyImage, 'JPEG', margin, 45, pdfWidth, pdfHeightHourly);\r\n pdf.text(\"Daily Occupancy Chart\", 80, pdfHeightHourly+60);\r\n pdf.addImage(dailyOccupancyImage, 'JPEG', margin, pdfHeightHourly+65, pdfWidth, pdfHeightDaily);\r\n if(pdfHeight < pdfHeightHourly+pdfHeightDaily+pdfHeightWeekly+85) {\r\n pdf.addPage();\r\n pdf.addImage(\"https://smart-parking-app-d.bosch.tech/assets/img/Bosch_EN_LV_RGB.png\", \"png\",160, -2, 50, 24)\r\n pdf.text(\"Weekly Occupancy Chart\", 80, 30);\r\n pdf.addImage(weeklyOccupancyImage, 'JPEG', margin, 35, pdfWidth, pdfHeightWeekly);\r\n } else {\r\n pdf.text(\"Weekly Occupancy Chart\", 80, pdfHeightHourly+pdfHeightDaily+80);\r\n pdf.addImage(weeklyOccupancyImage, 'JPEG', margin, pdfHeightHourly+pdfHeightDaily+85, pdfWidth, pdfHeightWeekly);\r\n }\r\n pdf.save(yyyy + \"-\" + mm + \"-\" + dd + \" \" + this.title + \" Analytics\" + \".pdf\");\r\n }\r\n \r\n}","import { Component, OnInit, Input} from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {trigger, state, style, animate, transition, keyframes} from '@angular/animations';\r\n\r\nimport { LotGetModel } from 'src/app/_shared/models/lot';\r\n\r\nimport { AuthenticationService } from 'src/app/_services/authentication.service';\r\nimport { ParkingService } from 'src/app/_services/parking.service';\r\nimport { TypeService } from 'src/app/_services/type.service';\r\n\r\n@Component({\r\n selector: 'app-lot',\r\n templateUrl: './lot.component.html',\r\n styleUrls: ['./lot.component.scss'],\r\n animations: [\r\n trigger('openClose', [\r\n state('open', style({ transform: 'scale(1)' })),\r\n state('closed', style({ transform: 'scale(1)' })),\r\n transition('* <=> *', [\r\n animate(\"6s\", keyframes([\r\n style({opacity: 0, offset: 0.3}),\r\n style({opacity: 0.5, offset: 0.6})\r\n ])),\r\n ]),\r\n ])\r\n ],\r\n})\r\nexport class LotComponent implements OnInit {\r\n \r\n lot: LotGetModel;\r\n @Input() id: string;\r\n @Input() sectionName: any;\r\n disabledMultiSelect = true;\r\n selectedType: string = \"\";\r\n timestamp: string;\r\n save = false;\r\n error = false;\r\n average_stopover_time_hours = 0;\r\n average_stopover_time_minutes = 0; \r\n @Input() random_sensorID: string;\r\n @Input() random_partnerID: string;\r\n @Input() random_status: string;\r\n @Input() random_last_update: string;\r\n @Input() random_avgSaturation_hours: string;\r\n @Input() random_avgSaturation_minutes: string;\r\n @Input() random_avgSaturation_percent: string;\r\n viewmap: boolean = false;\r\n view: any;\r\n isOpen: boolean = true;\r\n \r\n constructor(\r\n public http: HttpClient,\r\n public park: ParkingService,\r\n public auth: AuthenticationService,\r\n private route: ActivatedRoute,\r\n public t: TypeService) {\r\n this.lot = new LotGetModel();\r\n }\r\n \r\n // tslint:disable-next-line: use-life-cycle-interface\r\n ngOnChanges() {\r\n this.ngOnInit();\r\n this.isOpen = !this.isOpen;\r\n }\r\n \r\n async ngOnInit() {\r\n\r\n await this.park.retriveLot(this.id);\r\n this.lot = this.park.getLot();\r\n if (this.lot.average_stopover_time) {\r\n this.average_stopover_time_hours = Math.trunc((this.lot.average_stopover_time) / 60);\r\n this.average_stopover_time_minutes = this.lot.average_stopover_time - (this.average_stopover_time_hours * 60);\r\n }\r\n this.selectedType = this.lot.type;\r\n let t = new Date(this.lot.timestamp);\r\n this.timestamp = t.toLocaleString();\r\n console.log(\"Lotto \" + this.lot.id);\r\n \r\n console.log(\"Lot component \" + this.id);\r\n \r\n this.view = this.route.snapshot.queryParams.view;\r\n \r\n if (this.view == 'map') {\r\n this.viewmap = true;\r\n }\r\n }\r\n \r\n generateRandomNumberMaxMin(max, min) {\r\n return (Math.trunc((Math.random() * (max - min) + 1))).toString();\r\n };\r\n \r\n generateRandomNumberMaxMin_toNumber(max, min) {\r\n return (Math.trunc((Math.random() * (max - min) + 1)));\r\n };\r\n \r\n statusStyle() {\r\n let res = { color: \"red\" };\r\n switch (this.lot.status) {\r\n case \"free\": {\r\n res.color = '#70BF54';\r\n break;\r\n }\r\n case \"busy\": {\r\n res.color = '#E11F26';\r\n break;\r\n }\r\n case \"alert\": {\r\n res.color = '#FCAF17';\r\n break;\r\n }\r\n default: {\r\n res.color = '#BFC0C2';\r\n break;\r\n }\r\n }\r\n return res;\r\n }\r\n \r\n generateRandomString(length = 6) {\r\n var randomChars = 'abcdef0123456789';\r\n var result = '';\r\n for (var i = 0; i < length; i++) {\r\n result += randomChars.charAt(Math.floor(Math.random() * randomChars.length));\r\n }\r\n return result;\r\n }\r\n \r\n generateRandomLastUpdate(start, end, startHour, endHour): string {\r\n var date = new Date(+start + Math.random() * (end - start));\r\n var hour = startHour + Math.random() * (endHour - startHour) | 0;\r\n date.setHours(hour);\r\n return date.toString();\r\n }\r\n \r\n statusTStyle(value) {\r\n let res = { color: \"black\" };\r\n res.color = this.t.find(value).toString();\r\n return res;\r\n }\r\n \r\n}","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { Feature, View } from 'ol';\r\nimport Point from 'ol/geom/Point';\r\nimport VectorLayer from 'ol/layer/Vector';\r\nimport Projection from 'ol/proj/Projection';\r\nimport VectorSource from 'ol/source/Vector';\r\nimport { Cluster, Vector } from 'ol/source';\r\nimport { Fill, RegularShape, Stroke, Style, Text } from 'ol/style';\r\nimport ImageLayer from 'ol/layer/Image';\r\nimport Static from 'ol/source/ImageStatic';\r\nimport Map from 'ol/Map';\r\nimport * as olExtent from \"ol/extent\";\r\nimport ZoomToExtent from 'ol/control/ZoomToExtent';\r\n\r\nimport { ImagesService } from 'src/app/_services/images.service';\r\nimport { StyleService } from 'src/app/_services/style.service';\r\n\r\n@Component({\r\n selector: 'app-map-display',\r\n templateUrl: './map-display.component.html',\r\n styleUrls: ['./map-display.component.scss']\r\n})\r\nexport class MapDisplayComponent implements OnInit {\r\n \r\n @Input() display;\r\n \r\n id: string;\r\n section: string = \"\";\r\n parkImagesId: string;\r\n parsubs: Subscription;\r\n mapLoaded:boolean = false;\r\n imagesInfo: any;\r\n extent: any;\r\n features: any;\r\n vectorSource: VectorSource = new Vector({});\r\n vectorLayer: VectorLayer;\r\n map: Map;\r\n x: number;\r\n y: number;\r\n center: any;\r\n \r\n constructor(\r\n private route: ActivatedRoute,\r\n public imagesService: ImagesService,\r\n public style: StyleService,\r\n ) {\r\n this.features = [];\r\n }\r\n \r\n async ngOnChanges() {\r\n this.id = this.route.snapshot.params.id;\r\n this.parsubs = this.route.queryParams.subscribe((par:any) => {\r\n this.section = par.section;\r\n this.parkImagesId = this.id + '-' + this.section;\r\n });\r\n \r\n await this.imagesService.retriveImagesInfo(this.parkImagesId).then(info => {\r\n this.imagesInfo = info as any;\r\n this.x = this.display.x\r\n this.y = this.display.y\r\n });\r\n \r\n var extentHeight = this.imagesInfo.y_multiplier;\r\n this.center = [this.x, (extentHeight - this.y)];\r\n \r\n if(!this.vectorSource.isEmpty()) {\r\n this.features = [];\r\n this.vectorSource.clear();\r\n const pos = [this.x, (extentHeight - this.y)];\r\n const singleFeature = new Feature({\r\n geometry: new Point(pos),\r\n });\r\n this.features.push(singleFeature);\r\n this.vectorSource.addFeatures(this.features);\r\n \r\n //Set Map Center Dynamically\r\n this.map.getView().setCenter(this.center);\r\n } \r\n }\r\n \r\n async ngOnInit() {\r\n this.id = this.route.snapshot.params.id;\r\n this.parsubs = this.route.queryParams.subscribe((par:any) => {\r\n this.section = par.section;\r\n this.parkImagesId = this.id + '-' + this.section;\r\n });\r\n \r\n await this.imagesService.retriveImagesInfo(this.parkImagesId).then(info => {\r\n this.imagesInfo = info as any;\r\n this.x = this.display.x\r\n this.y = this.display.y\r\n });\r\n \r\n var extentHeight = this.imagesInfo.y_multiplier;\r\n var extentWidth = this.imagesInfo.x_multiplier;\r\n this.extent = [0, 0, extentWidth, extentHeight];\r\n var projection = new Projection({\r\n code: \"xkcd-image\",\r\n units: \"pixels\",\r\n extent: this.extent,\r\n });\r\n //Setup a Vector Source\r\n this.vectorSource = new VectorSource({\r\n features: [],\r\n });\r\n \r\n //Setup a Vector Layer\r\n this.vectorLayer = new VectorLayer({\r\n source: new Cluster({\r\n distance: 50,\r\n source: this.vectorSource,\r\n }),\r\n style: this.styleObjectDisplay,\r\n });\r\n \r\n var sourceStaticImage = new Static({\r\n imageLoadFunction: (function (image, src) {\r\n this.imagesService.retriveImages(src)\r\n .subscribe(data => {\r\n let reader = new FileReader();\r\n reader.addEventListener(\"loadend\", () => {\r\n image.getImage().src = reader.result;\r\n }, false);\r\n if (data) {\r\n reader.readAsDataURL(data);\r\n }\r\n }, error => {\r\n console.log(error);\r\n });\r\n }).bind(this),\r\n url: this.parkImagesId,\r\n projection: projection,\r\n imageExtent: this.extent\r\n })\r\n \r\n this.map = new Map({\r\n layers: [\r\n new ImageLayer({\r\n source: sourceStaticImage\r\n }),\r\n ],\r\n target: \"map-layer\",\r\n view: new View({\r\n projection: projection,\r\n center: [this.x, (extentHeight - this.y)],\r\n maxZoom: 6,\r\n zoom: 2,\r\n extent: [-(0.1*extentWidth), -(0.1*extentHeight), extentWidth+(0.1*extentWidth), extentHeight+(0.1*extentHeight)],\r\n showFullExtent: true\r\n })\r\n });\r\n \r\n // Function to compute dynamically the height of the map\r\n this.style.computeHeightList();\r\n this.map.updateSize();\r\n \r\n // Zoom Control Button\r\n var zoom = document.createElement(\"span\");\r\n zoom.innerHTML = '';\r\n var zoomControl = new ZoomToExtent({\r\n extent: [0, 0, extentWidth, extentHeight],\r\n label: zoom,\r\n });\r\n \r\n this.map.addControl(zoomControl);\r\n this.map.once(\"rendercomplete\", (event) => {\r\n this.mapLoaded = true;\r\n this.map.addLayer(this.vectorLayer);\r\n });\r\n \r\n this.features = [];\r\n \r\n const pos = [this.x, (extentHeight - this.y)];\r\n const singleFeature = new Feature({\r\n geometry: new Point(pos),\r\n });\r\n this.features.push(singleFeature);\r\n this.vectorSource.addFeatures(this.features);\r\n }\r\n \r\n styleObjectDisplay = (display) => {\r\n \r\n var displayColor = '#BFC0C2';\r\n var displayStrokeColor = '#000000';\r\n var strokeWidth = 6;\r\n var colorText = \"#FFFFFF\";\r\n var colorTextStroke = \"#FFFFFF\";\r\n var font = (this.map.getView().getZoom()*12).toString() + \"px 'Codystar', cursive\";\r\n \r\n if(this.display.status == \"ok\") {\r\n displayColor = '#70BF54';\r\n } else if (this.display.status == \"alert\") {\r\n displayColor = '#FCAF17';\r\n } else {\r\n displayColor = '#BFC0C2';\r\n }\r\n \r\n //Text fill style\r\n var textFill = new Fill({\r\n color: colorText\r\n });\r\n \r\n //Text stroke style\r\n var textStroke = new Stroke({\r\n color: colorTextStroke,\r\n width: 1,\r\n });\r\n \r\n var textDisplayCode = new Text({\r\n font: font,\r\n text: this.display.code,\r\n fill: textFill,\r\n stroke: textStroke,\r\n });\r\n \r\n var iconStyleDisplay = new Style({\r\n image: new RegularShape({\r\n fill: new Fill({\r\n color: displayColor,\r\n }),\r\n stroke: new Stroke({\r\n color: displayStrokeColor,\r\n width: strokeWidth,\r\n }),\r\n radius: this.map.getView().getZoom() * (20 / Math.SQRT2),\r\n radius2: this.map.getView().getZoom() * 20,\r\n points: 4,\r\n angle: 0,\r\n scale: [1, 0.5],\r\n }),\r\n text: textDisplayCode,\r\n });\r\n return iconStyleDisplay;\r\n \r\n }\r\n \r\n}","import { OnInit, Component, QueryList, ViewChildren, HostListener, ViewChild, Input, Output, EventEmitter } from \"@angular/core\";\r\nimport { Location } from \"@angular/common\";\r\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from \"@angular/forms\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\nimport { of, Subscription, throwError } from \"rxjs\";\r\n\r\nimport { Collection, Feature, Graticule, View } from \"ol\";\r\nimport Map from \"ol/Map\";\r\nimport Polygon from \"ol/geom/Polygon\";\r\nimport Point from \"ol/geom/Point\";\r\nimport Geometry from \"ol/geom/Geometry\";\r\nimport GeometryType from \"ol/geom/GeometryType\";\r\nimport VectorLayer from \"ol/layer/Vector\";\r\nimport VectorSource from \"ol/source/Vector\";\r\nimport { Circle, Fill, RegularShape, Stroke, Style, Text } from \"ol/style\";\r\nimport { DragBox, DragPan, Draw, Select, Translate } from \"ol/interaction\";\r\nimport { mouseOnly, noModifierKeys, platformModifierKeyOnly } from \"ol/events/condition\";\r\n\r\nimport { ImageInfo } from 'src/app/_shared/models/image';\r\nimport { LotGetModel, LotPutModel } from \"src/app/_shared/models/lot\";\r\nimport { DisplayGetModel, DisplayPostModel, DisplayPutModel } from \"src/app/_shared/models/display\";\r\n\r\nimport { ParkingService } from 'src/app/_services/parking.service';\r\nimport { TypeService } from 'src/app/_services/type.service';\r\nimport { AuthenticationService } from 'src/app/_services/authentication.service';\r\nimport { UserService } from \"src/app/_services/user.service\";\r\nimport { ImagesService } from \"src/app/_services/images.service\";\r\nimport { StyleService } from \"src/app/_services/style.service\";\r\nimport { LotService } from \"src/app/_services/lot.service\";\r\nimport { DisplaysService } from \"src/app/_services/displays.service\";\r\n\r\nimport { ModalComponent, ModalDirective } from \"@inst-iot/bosch-angular-ui-components\";\r\nimport { MatSidenav } from \"@angular/material/sidenav\";\r\n\r\nimport { ToastContainerDirective, ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-map-edit',\r\n templateUrl: './map-edit.component.html',\r\n styleUrls: ['./map-edit.component.scss']\r\n})\r\nexport class MapEditComponent implements OnInit {\r\n @ViewChildren(\"popUpInfo\", {read: ModalDirective}) ngbPopoverInfo!: QueryList;\r\n @ViewChildren(\"popUpInfoDisplay\", {read: ModalDirective}) ngbPopoverInfoDisplay!: QueryList;\r\n @Input() parkingdrawer: MatSidenav;\r\n \r\n //Input Variables from the map layer\r\n @Input() id: string;\r\n @Input() section: string;\r\n @Input() map: Map;\r\n @Input() vectorSource: VectorSource;\r\n @Input() info: ImageInfo;\r\n @Input() lots: any;\r\n @Input() features: any;\r\n @Input() vectorSourceDisplay: VectorSource;\r\n @Input() displays: DisplayGetModel[];\r\n \r\n //Output Variables (selectedFeatures)\r\n @Output() newItemEvent = new EventEmitter();\r\n @Output() newItemEventDisplay = new EventEmitter();\r\n \r\n userRole: any;\r\n tool = \"none\";\r\n type: any;\r\n \r\n vectorLayer: VectorLayer;\r\n translate: Translate;\r\n drawPolygon: Draw;\r\n AxisLayer: VectorLayer;\r\n graticule: Graticule;\r\n select: Select;\r\n xCoordClick;\r\n yCoordClick;\r\n pointFeatureRadius = 18;\r\n pointFeatureOffset = 46;\r\n \r\n vectorLayerDisplay: VectorLayer;\r\n allDisplays: DisplayGetModel[];\r\n \r\n // Variables for Undo and Modal\r\n registerAllActions: any[] = [];\r\n registerSingleAction: any[] = [];\r\n registerModalActions: any[] = [];\r\n moveActionArray: any[] = [];\r\n selectedFeatures: Collection>;\r\n copiedFeature: Feature[] = [];\r\n \r\n // Form to Add dot\r\n addDotForm: UntypedFormGroup;\r\n parkingIdForm = new UntypedFormControl();\r\n sectionNameForm = new UntypedFormControl();\r\n lotNumberForm = new UntypedFormControl('')\r\n letterNameForm = new UntypedFormControl(\"\");\r\n letterName: string = '';\r\n \r\n // Form to Add dot\r\n addDisplayForm: UntypedFormGroup;\r\n parkingIdDisplayForm = new UntypedFormControl();\r\n sectionNameDisplayForm = new UntypedFormControl();\r\n letterNameDisplayForm = new UntypedFormControl('');\r\n letterNameDisplay: string = '';\r\n displayNumberDisplayForm = new UntypedFormControl('')\r\n \r\n // Model to send new dot\r\n newDotModel: any[] = [];\r\n modalReference = null;\r\n \r\n display: boolean = false;\r\n displayEmpty: boolean = false;\r\n name: any;\r\n \r\n displayConfirm: boolean = false;\r\n displayEmptyConfirm: boolean = false;\r\n nameDisplay: any;\r\n \r\n //Variables to enable group management functions\r\n displaybutton: boolean = false;\r\n displayselector: boolean = false;\r\n \r\n //Reposition Variables\r\n repoDot: any;\r\n repositionDot: any;\r\n repositionForm: UntypedFormGroup;\r\n dotNameRepositionForm = new UntypedFormControl();\r\n displayReposition: boolean = false;\r\n updateDotModel: any[];\r\n searchFunc;\r\n filteredDotList = [];\r\n \r\n //Move All Dot Variables\r\n translateAll: Translate;\r\n \r\n //Change Type\r\n typeList: any = [\"regular\", \"handicap\", \"management\", \"guest\", \"e-vehicle\", \"short-term\"];\r\n typeGroupForm: UntypedFormGroup;\r\n typeNameForm = new UntypedFormControl();\r\n selectedStatesType: any;\r\n selectedItemType: any;\r\n keys: any;\r\n selectedListType: any;\r\n \r\n // Variables to replace Map Image \r\n selectedFile = null;\r\n confirmationMessageReplaceImage: SafeHtml;\r\n displayConfirmReplaceImage: boolean = false;\r\n radiusLot: number = 9;\r\n radiusArea: number = 56;\r\n radiusLotMobile: number = 9;\r\n clusterDistance: number = 20;\r\n \r\n constructor(\r\n private park: ParkingService,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private sanitized: DomSanitizer,\r\n public auth: AuthenticationService,\r\n public userService: UserService,\r\n private loc: Location,\r\n public imagesService: ImagesService,\r\n private style: StyleService,\r\n public t: TypeService,\r\n private toastrService: ToastrService,\r\n public form: UntypedFormBuilder,\r\n public lotService: LotService,\r\n public displayService: DisplaysService,\r\n ) {\r\n this.addDotForm = form.group({\r\n parkingIdForm: this.parkingIdForm,\r\n sectionNameForm: this.sectionNameForm,\r\n lotNumberForm: this.lotNumberForm,\r\n letterNameForm: this.letterNameForm\r\n });\r\n \r\n this.addDisplayForm = form.group({\r\n parkingIdDisplayForm: this.parkingIdDisplayForm,\r\n sectionNameDisplayForm: this.sectionNameDisplayForm,\r\n displayNumberDisplayForm: this.displayNumberDisplayForm,\r\n letterNameDisplayForm: this.letterNameDisplayForm\r\n });\r\n \r\n this.repositionForm = form.group({\r\n dotNameRepositionForm: this.dotNameRepositionForm\r\n });\r\n \r\n this.typeGroupForm = form.group({\r\n typeNameForm: this.typeNameForm\r\n });\r\n \r\n this.features = [];\r\n \r\n this.translate = new Translate({\r\n filter: function (feature) {\r\n //avoid translate on grid axis\r\n return feature.getGeometry().getType() !== \"LineString\";\r\n },\r\n });\r\n \r\n this.drawPolygon = new Draw({\r\n source: this.vectorSource,\r\n type: 'Polygon' as GeometryType,\r\n });\r\n \r\n this.info = new ImageInfo();\r\n }\r\n \r\n ngOnDestroy() {\r\n this.undoAllEvent();\r\n this.map.removeInteraction(this.select);\r\n this.map.removeInteraction(this.translate);\r\n this.map.removeLayer(this.vectorLayer);\r\n this.map.removeLayer(this.vectorLayerDisplay);\r\n this.map.removeLayer(this.graticule);\r\n }\r\n \r\n async ngOnInit() {\r\n \r\n await this.userService.userCanEditByParkingID(this.id).then(\r\n (data) => {\r\n this.userRole = data['role'];\r\n },\r\n () => {\r\n this.userRole = null;\r\n }\r\n )\r\n \r\n if (this.userRole == \"admin\" || this.userRole == \"owner\") {\r\n this.type = \"lot\";\r\n \r\n this.allDisplays = this.displays;\r\n \r\n //Setup a Vector Layer\r\n this.vectorLayer = new VectorLayer({\r\n source: this.vectorSource,\r\n style: this.styleObject,\r\n });\r\n \r\n //Setup a Vector Layer\r\n this.vectorLayerDisplay = new VectorLayer({\r\n source: this.vectorSourceDisplay,\r\n style: this.styleObjectDisplay,\r\n });\r\n \r\n //Axis Definition\r\n const axisStyle = new Style({\r\n stroke: new Stroke({\r\n color: \"rgba(0,0,0,0.1)\",\r\n width: 1,\r\n }),\r\n });\r\n \r\n this.AxisLayer = new VectorLayer({\r\n source: new VectorSource(),\r\n });\r\n \r\n this.AxisLayer.setStyle(axisStyle);\r\n \r\n this.AxisLayer.setMap(this.map);\r\n \r\n //Layer Order Definition\r\n this.AxisLayer.setZIndex(1);\r\n this.vectorLayer.setZIndex(5);\r\n this.vectorLayerDisplay.setZIndex(5);\r\n \r\n //Create and Add Graticule to Map\r\n this.graticule = new Graticule({\r\n strokeStyle: new Stroke({\r\n color: \"lightgrey\",\r\n width: 1,\r\n }),\r\n showLabels: false,\r\n wrapX: false,\r\n targetSize: 30,\r\n });\r\n \r\n this.map.addLayer(this.graticule);\r\n \r\n //Add VectorLayer to Map\r\n this.map.addLayer(this.vectorLayer);\r\n this.map.addLayer(this.vectorLayerDisplay);\r\n \r\n //Compute ID in form of next dot that could be added\r\n const progressiveNum = this.generateDotId(this.info);\r\n this.addDotForm.controls.lotNumberForm.setValue(progressiveNum);\r\n \r\n //Initialization form to add lots\r\n this.computeAddForm(this.id, this.section, this.info);\r\n \r\n //Initialization form to add lots\r\n this.computeAddDisplayForm(this.id, this.section, this.info);\r\n \r\n //Initialization Reposition Feature\r\n this.park.retriveParkingSub(this.id).subscribe((data: any) => {\r\n this.repoDot = data;\r\n for (let i = 0; i < this.repoDot.section.length; i++) {\r\n if (this.repoDot.section[i].name == this.section) {\r\n this.repositionDot = this.repoDot.section[i].lots;\r\n }\r\n }\r\n this.repositionForm.controls.dotNameRepositionForm.setValue(\r\n this.repositionDot[0]\r\n );\r\n });\r\n \r\n /*\r\n on map click:\r\n - if is feature\r\n - move Parking Space / Display or delete Parking Space / Display or modify Parking Space / Display\r\n - if not\r\n - create new feature (create new Parking Space / Display)\r\n */\r\n this.map.on(\"click\", (event) => {\r\n var feature = this.map.forEachFeatureAtPixel(\r\n event.pixel,\r\n function (feature) {\r\n return feature;\r\n }\r\n );\r\n if (feature) {\r\n if (this.tool === \"move\") {\r\n //Move Function\r\n this.translate.on(\"translatestart\", (event) => {});\r\n this.translate.on(\"translateend\", (event) => {});\r\n } else if (this.tool === \"mod\") {\r\n //Modify Function\r\n var lotID = feature.get(\"description\");\r\n var featGeometry = feature.getGeometry();\r\n \r\n if (featGeometry instanceof Point) {\r\n var popOverElements = [];\r\n popOverElements = this.ngbPopoverInfo.toArray();\r\n var popOverComponent = popOverElements.find(\r\n (x) =>\r\n x.content.elementRef.nativeElement.previousSibling.id == lotID\r\n );\r\n popOverComponent.modalService.open(popOverComponent.content);\r\n }\r\n } else if (this.tool === \"modDisplay\") {\r\n //Modify Function\r\n var displayID = feature.get(\"description\");\r\n var featGeometry = feature.getGeometry();\r\n \r\n if (featGeometry instanceof Point) {\r\n var popOverElements = [];\r\n popOverElements = this.ngbPopoverInfoDisplay.toArray();\r\n var popOverComponent = popOverElements.find(\r\n (x) =>\r\n x.content.elementRef.nativeElement.previousSibling.id == displayID\r\n );\r\n popOverComponent.modalService.open(popOverComponent.content);\r\n }\r\n } else if (this.tool === \"delete\") {\r\n // Delete Function\r\n this.deleteEvent(feature);\r\n }\r\n } else {\r\n if (this.tool === \"reposition\") {\r\n // Reposition Function\r\n let dotName = this.selectDotToMove();\r\n \r\n if (!this.isLocated(dotName)) {\r\n var newFeature = new Feature({\r\n geometry: new Point(event.coordinate),\r\n description: dotName,\r\n status: \"\",\r\n type: \"\",\r\n });\r\n \r\n this.vectorSource.addFeature(newFeature);\r\n this.vectorLayer.setStyle(this.styleObject);\r\n \r\n this.info.dot_coordinate.push({\r\n name: dotName,\r\n x: event.coordinate[0],\r\n y: event.coordinate[1],\r\n type: \"lot\",\r\n });\r\n \r\n // Registro l'evento di REPOSITION in un vettore e chiamo la funzione update\r\n this.registerSingleAction[0] = \"REPOSITION\";\r\n this.registerSingleAction[1] = newFeature;\r\n \r\n this.updateEvent();\r\n \r\n this.toast(\"success\", dotName, \"Dot repositioned successfully\");\r\n \r\n for (let i = 0; i < this.registerAllActions.length; i++) {\r\n if (this.registerAllActions[i][0] == \"REPOSITION\") {\r\n for (let j = 0; j < this.registerAllActions.length; j++) {\r\n if (\r\n this.registerAllActions[j][0] == \"DELETE\" &&\r\n this.registerAllActions[j][1].values_.description ==\r\n this.registerAllActions[i][1].values_.description\r\n )\r\n this.registerAllActions.splice(\r\n this.registerAllActions.indexOf(\r\n this.registerAllActions[j]\r\n ),\r\n 1\r\n );\r\n }\r\n }\r\n }\r\n } else {\r\n this.toast(\"error\", dotName, \"Dot is already placed\");\r\n }\r\n } else if (this.tool === \"crosshair\") {\r\n // ADD new point\r\n this.buttonState();\r\n document.body.style.cursor = \"crosshair\";\r\n \r\n this.letterName = this.addDotForm.controls.letterNameForm.value;\r\n const progressiveNum = this.generateDotId(this.info);\r\n this.addDotForm.controls.lotNumberForm.setValue(progressiveNum);\r\n console.log(\"NEW INFO PARKING ID \", this.info);\r\n var newLotName =\r\n this.info.parking_id +\r\n \"-\" +\r\n this.section +\r\n this.letterName +\r\n progressiveNum.toString(); // NEW NAME: \"parking id\"-\"section\"\"letter\"\"progressiveNum\"\r\n var newFeature = new Feature({\r\n geometry: new Point(event.coordinate),\r\n description: newLotName,\r\n status: \"\",\r\n type: \"\",\r\n });\r\n \r\n this.vectorSource.addFeature(newFeature);\r\n this.vectorLayer.setStyle(this.styleObject);\r\n \r\n this.info.dot_coordinate.push({\r\n name: newLotName,\r\n x: Math.round(event.coordinate[0]),\r\n y: Math.round(event.coordinate[1]),\r\n type: \"lot\",\r\n });\r\n \r\n // Registro l'evento di ADD in un vettore e chiamo la funzione update\r\n this.registerSingleAction[0] = \"ADD\";\r\n this.registerSingleAction[1] = newFeature;\r\n \r\n this.updateEvent();\r\n if (this.checkExistAdd(newLotName) && this.checkEmpty()) {\r\n this.toast(\"success\", newLotName, \"Dot added successfully\");\r\n } else if (!this.checkEmpty()) {\r\n var lastFeature = this.registerAllActions.pop()[1];\r\n this.vectorSource.removeFeature(lastFeature);\r\n this.toast(\r\n \"error\",\r\n newLotName,\r\n \"Please enter a valid Parking Space name\"\r\n );\r\n } else {\r\n var lastFeature = this.registerAllActions.pop()[1];\r\n this.vectorSource.removeFeature(lastFeature);\r\n this.toast(\r\n \"error\",\r\n newLotName,\r\n \"Parking Space name already exists\"\r\n );\r\n }\r\n } else if (this.tool === \"addDisplay\") {\r\n // Add New display\r\n this.buttonState();\r\n document.body.style.cursor = \"crosshair\";\r\n \r\n this.letterNameDisplay = this.addDisplayForm.controls.letterNameDisplayForm.value;\r\n const progressiveNum = this.generateDisplayNumber(this.info);\r\n this.addDisplayForm.controls.displayNumberDisplayForm.setValue(progressiveNum);\r\n \r\n var newDisplayName =\r\n this.info.parking_id +\r\n \"-display-\" +\r\n this.section +\r\n this.letterNameDisplay +\r\n progressiveNum.toString(); // NEW DISPLAY: \"parkingId\"+\"-display\"+\"section\"+\"letter\"+\"progressiveNum\"\r\n \r\n var newDisplayFeature = new Feature({\r\n geometry: new Point(event.coordinate),\r\n description: newDisplayName,\r\n status: \"\",\r\n type: \"\",\r\n featureType: 'display',\r\n });\r\n \r\n this.vectorSourceDisplay.addFeature(newDisplayFeature);\r\n this.vectorLayerDisplay.setStyle(this.styleObjectDisplay);\r\n \r\n this.allDisplays.push({\r\n name: newDisplayName,\r\n url: \"\",\r\n layout: \"\",\r\n username: \"\",\r\n password: \"\",\r\n id: \"\",\r\n expirationDate: \"\",\r\n sessionId: \"\",\r\n status: \"\",\r\n pubStatus: \"\",\r\n loginStatus: \"\",\r\n groups: [],\r\n mac: \"\",\r\n btia: \"\",\r\n x: Math.round(event.coordinate[0]),\r\n y: Math.round(event.coordinate[1]),\r\n parkingId: \"\",\r\n value: 0\r\n });\r\n \r\n // Registro l'evento di ADD in un vettore e chiamo la funzione update\r\n this.registerSingleAction[0] = \"ADD DISPLAY\";\r\n this.registerSingleAction[1] = newDisplayFeature;\r\n \r\n this.updateEvent();\r\n \r\n if (this.checkExistDisplayAdd(newDisplayName) && this.checkEmptyDisplay()) {\r\n this.toast(\"success\", newDisplayName, \"Display added successfully\");\r\n } else if (!this.checkEmptyDisplay()) {\r\n var lastFeature = this.registerAllActions.pop()[1];\r\n this.vectorSourceDisplay.removeFeature(lastFeature);\r\n this.toast(\r\n \"error\",\r\n newDisplayName,\r\n \"Please enter a valid Display name\"\r\n );\r\n } else {\r\n var lastFeature = this.registerAllActions.pop()[1];\r\n this.vectorSourceDisplay.removeFeature(lastFeature);\r\n this.toast(\r\n \"error\",\r\n newDisplayName,\r\n \"Display name already exists\"\r\n );\r\n }\r\n \r\n } else if (this.tool === \"Polygon\") {\r\n var newLotName = this.info.parking_id + \"-0000new\";\r\n }\r\n }\r\n });\r\n \r\n this.translate.on(\"translateend\", (event) => {\r\n console.log(event.features.getArray()[0].get('featureType'))\r\n if(event.features.getArray()[0].get('featureType') == 'display') {\r\n this.registerSingleAction[0] = \"MOVE DISPLAY\";\r\n this.registerSingleAction[1] = event.features.getArray()[0];\r\n \r\n this.updateEvent();\r\n this.toast(\"success\",(event.features.getArray()[0] as any).values_.description, \"Display moved successfully\");\r\n } else {\r\n this.registerSingleAction[0] = \"MOVE\";\r\n this.registerSingleAction[1] = event.features.getArray()[0];\r\n \r\n this.updateEvent();\r\n this.toast(\"success\",(event.features.getArray()[0] as any).values_.description, \"Dot moved successfully\");\r\n }\r\n \r\n });\r\n \r\n this.drawPolygon.on(\"drawend\", (event) => {\r\n var newPolygonFeature = event.feature;\r\n this.vectorSource.addFeature(newPolygonFeature);\r\n this.vectorLayer.setStyle(this.styleObject);\r\n });\r\n } else {\r\n this.toast(\r\n \"error\",\r\n \"You do not have permission to access this page.\",\r\n \"Access Denied\"\r\n );\r\n setTimeout(() => {\r\n this.loc.back();\r\n }, 3000);\r\n }\r\n \r\n // Set Style of selected features\r\n var iconStyle = new Style({\r\n image: new Circle({\r\n radius: this.pointFeatureRadius,\r\n fill: new Fill({\r\n color: \"rgb(63, 170, 219)\",\r\n }),\r\n stroke: new Stroke({\r\n color: \"rgb(0, 86, 145)\",\r\n width: 2,\r\n }),\r\n }),\r\n });\r\n \r\n // Select interaction to handle click\r\n this.select = new Select({ style: iconStyle });\r\n this.map.addInteraction(this.select);\r\n this.selectedFeatures = this.select.getFeatures();\r\n this.addNewItem(this.selectedFeatures)\r\n this.addNewItemDisplay(this.selectedFeatures)\r\n \r\n // a DragBox interaction used to select features by drawing boxes. Mouse left click\r\n const dragBox = new DragBox({\r\n condition: platformModifierKeyOnly\r\n });\r\n this.map.addInteraction(dragBox);\r\n \r\n // a DragPan to move map\r\n const dragPan = new DragPan({\r\n condition: mouseOnly && noModifierKeys\r\n \r\n })\r\n this.map.addInteraction(dragPan);\r\n \r\n // clear selection when drawing a new box and when clicking on the map\r\n dragBox.on(\"boxstart\", () => {\r\n document.body.style.cursor = \"default\";\r\n this.selectedFeatures.clear();\r\n });\r\n \r\n dragBox.on(\"boxend\", (event) => {\r\n const extent = dragBox.getGeometry().getExtent();\r\n this.vectorSource.forEachFeatureIntersectingExtent(extent, (feature) => {\r\n this.selectedFeatures.push(feature);\r\n });\r\n this.addNewItem(this.selectedFeatures)\r\n this.addNewItemDisplay(this.selectedFeatures)\r\n /* this.toast(\"info\",'',\"Right Click to open the menu\") */\r\n });\r\n \r\n this.addDotForm.valueChanges.subscribe(changes=>{\r\n this.display = false;\r\n this.displayEmpty = false;\r\n this.checkEmpty();\r\n this.checkExist();\r\n });\r\n \r\n this.addDisplayForm.valueChanges.subscribe(changes=>{\r\n this.checkEmptyDisplay();\r\n this.checkExistDisplay();\r\n });\r\n \r\n this.repositionForm.get('dotNameRepositionForm').valueChanges.subscribe(changes => {\r\n this.isLocated(changes)\r\n })\r\n \r\n this.filteredDotList = this.repositionDot;\r\n this.searchFunc = this.search.bind(this);\r\n \r\n this.style.computeMinHeight();\r\n }\r\n \r\n //Check if the next Parking Space name is empty\r\n checkEmpty() {\r\n if(this.addDotForm.controls.lotNumberForm.value === null) {\r\n this.displayEmpty = true;\r\n return false;\r\n } else {\r\n this.displayEmpty = false;\r\n return true;\r\n }\r\n }\r\n \r\n //Check if the next Parking Space name is empty\r\n checkEmptyDisplay() {\r\n if(this.addDisplayForm.controls.displayNumberDisplayForm.value === null) {\r\n this.displayEmptyConfirm = false;\r\n return false;\r\n } else {\r\n this.displayEmptyConfirm = true;\r\n return true;\r\n }\r\n }\r\n \r\n //Check if the initial Parking Space name exists\r\n checkExist() {\r\n this.name = this.addDotForm.controls.parkingIdForm.value + '-' + this.addDotForm.controls.sectionNameForm.value + this.addDotForm.controls.letterNameForm.value + this.addDotForm.controls.lotNumberForm.value;\r\n for(let i=0; i a + b, 0);\r\n const avg = (sum / onlyCoordinate.length) || 0;\r\n for (let i = 0; i < this.selectedFeatures.getArray().length; i++) {\r\n this.selectedFeatures.getArray()[i].getGeometry().translate(0, avg - this.selectedFeatures.getArray()[i]['values_'].geometry.flatCoordinates[1]);\r\n }\r\n \r\n for(let i=0; i a + b, 0);\r\n const avg = (sum / onlyCoordinate.length) || 0;\r\n for (let i = 0; i < this.selectedFeatures.getArray().length; i++) {\r\n this.selectedFeatures.getArray()[i].getGeometry().translate(avg - this.selectedFeatures.getArray()[i]['values_'].geometry.flatCoordinates[0], 0)\r\n }\r\n \r\n for(let i=0; i b['values_'].geometry.flatCoordinates[0] ){\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n \r\n //Function to distribute selected dot vertically\r\n distributeVertically() {\r\n let onlyCoordinate = [];\r\n this.selectedFeatures.getArray().sort(this.compareY)\r\n for (let i = 0; i b['values_'].geometry.flatCoordinates[1] ){\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n \r\n //Function to generate the dot ID\r\n generateDotId(info: ImageInfo) {\r\n let numberId = [];\r\n if (info.dot_coordinate.length < 1) {\r\n numberId[0] = this.addDotForm.controls.lotNumberForm.value - 1;\r\n } else {\r\n if ((this.addDotForm.controls.lotNumberForm.value) == null) {\r\n numberId[0] = Number(info.dot_coordinate[info.dot_coordinate.length-1].name.replace(info.parking_id + '-' + this.section + this.letterName,'').split(/(\\d+)/)[1])\r\n } else {\r\n if ((this.addDotForm.controls.lotNumberForm.value) !== Number(info.dot_coordinate[info.dot_coordinate.length-1].name.replace(info.parking_id + '-' + this.section + this.letterName,'').split(/(\\d+)/)[1])\r\n ) {\r\n numberId[0] = this.addDotForm.controls.lotNumberForm.value - 1;\r\n } else {\r\n for (let i = 0; i < info.dot_coordinate.length; i++) {\r\n numberId[i] = Number(info.dot_coordinate[i].name.replace(info.parking_id + '-' + this.section + this.letterName,'').split(/(\\d+)/)[1]);\r\n }\r\n } \r\n }\r\n }\r\n return (numberId[numberId.length-1] + 1);\r\n }\r\n \r\n //Function to generate the Display Name\r\n generateDisplayNumber(info: ImageInfo) {\r\n let numberId = [];\r\n if (this.allDisplays.length < 1) {\r\n numberId[0] = this.addDisplayForm.controls.displayNumberDisplayForm.value - 1;\r\n } else {\r\n if ((this.addDisplayForm.controls.displayNumberDisplayForm.value) == null) {\r\n numberId[0] = Number(this.allDisplays[this.allDisplays.length-1].name.replace(info.parking_id + '-display-' + this.section + this.letterNameDisplay,'').split(/(\\d+)/)[1])\r\n } else {\r\n if ((this.addDisplayForm.controls.displayNumberDisplayForm.value) !== Number(this.allDisplays[this.allDisplays.length-1].name.replace(info.parking_id + '-display-' + this.section + this.letterNameDisplay,'').split(/(\\d+)/)[1])\r\n ) {\r\n numberId[0] = this.addDisplayForm.controls.displayNumberDisplayForm.value - 1;\r\n } else {\r\n for (let i = 0; i < this.allDisplays.length; i++) {\r\n numberId[i] = Number(this.allDisplays[i].name.replace(info.parking_id + '-display-' + this.section + this.letterNameDisplay,'').split(/(\\d+)/)[1]);\r\n }\r\n } \r\n }\r\n }\r\n return (numberId[numberId.length-1] + 1);\r\n }\r\n \r\n //Function to change the cursor style\r\n changeMouse(){\r\n document.body.style.cursor = \"crosshair\";\r\n }\r\n \r\n //Delete Event\r\n deleteEvent(feature) {\r\n this.buttonState();\r\n document.body.style.cursor = \"pointer\";\r\n let deleted = feature.values_.description\r\n this.deleteFromFeature(feature);\r\n if(feature.values_.featureType == 'display') {\r\n this.toast('success', feature.values_.description, 'Display deleted successfully');\r\n this.registerSingleAction[0] = \"DELETE DISPLAY\";\r\n this.registerSingleAction[1] = feature;\r\n this.updateEvent();\r\n } else {\r\n this.toast('success', feature.values_.description, 'Dot deleted successfully');\r\n this.isLocated(deleted)\r\n // Registro l'evento di DELETE in un vettore e chiamo la funzione update\r\n this.registerSingleAction[0] = \"DELETE\";\r\n this.registerSingleAction[1] = feature;\r\n this.updateEvent();\r\n }\r\n \r\n }\r\n \r\n //Function to store events in array\r\n updateEvent() {\r\n if(this.registerSingleAction[0] === 'MOVE' && this.registerAllActions.length > 0) {\r\n for (let i = 0; i 0 && this.registerAllActions[i][0] !== 'ADD' && this.registerAllActions[i][1].values_.description == this.registerSingleAction[1].values_.description) {\r\n this.registerAllActions[i] = this.registerSingleAction;\r\n this.registerSingleAction = [];\r\n } else if (this.registerSingleAction.length > 0 && this.registerAllActions[i][0] == 'ADD' && this.registerAllActions[i][1].values_.description == this.registerSingleAction[1].values_.description) {\r\n this.registerSingleAction = [];\r\n }\r\n } if(this.registerSingleAction.length > 0) {\r\n this.registerAllActions.push(this.registerSingleAction);\r\n this.registerSingleAction = [];\r\n }\r\n } else {\r\n this.registerAllActions.push(this.registerSingleAction);\r\n this.registerSingleAction = [];\r\n }\r\n }\r\n \r\n //Undo Single Event\r\n undoEvent() {\r\n this.buttonState();\r\n this.tool = \"none\";\r\n // Memorizzo e rimuovo l'ultimo evento registrato\r\n var lastAction = this.registerAllActions.pop();\r\n \r\n // In base al tipo di evento, modifico il comportamento dell'undo\r\n if (lastAction[0] == \"DELETE\") {\r\n this.vectorSource.addFeature(lastAction[1]);\r\n } else if (lastAction[0] == \"ADD\" || lastAction[0] == \"ADD DISPLAY\" || lastAction[0] == \"REPOSITION\") {\r\n this.deleteFromFeature(lastAction[1])\r\n } else if(lastAction[0] == \"MOVE\") {\r\n var geom = lastAction[1].getGeometry();\r\n for (let i=0; i= 0; i--) {\r\n var lastAction = this.registerAllActions.pop();\r\n if (lastAction[0] == \"DELETE\") {\r\n this.vectorSource.addFeature(lastAction[1]);\r\n this.vectorLayer.setStyle(this.styleObject);\r\n } else if (lastAction[0] == \"ADD\" || lastAction[0] == \"ADD DISPLAY\" || lastAction[0] == \"REPOSITION\") {\r\n this.deleteFromFeature(lastAction[1])\r\n } else if (lastAction[0] == \"MOVE\") {\r\n var geom = lastAction[1].getGeometry();\r\n for (let i=0; i x.name == remID)),\r\n );\r\n this.vectorSourceDisplay.removeFeature(feature);\r\n } else {\r\n this.info.dot_coordinate.splice(\r\n this.info.dot_coordinate.indexOf(this.info.dot_coordinate.find((x) => x.name == remID)),\r\n );\r\n this.vectorSource.removeFeature(feature);\r\n }\r\n \r\n \r\n }\r\n }\r\n \r\n //Function to remove interaction with the map\r\n toolChange(val: string) {\r\n this.tool = val;\r\n if (this.tool !== \"move\") {\r\n this.map.removeInteraction(this.translate);\r\n }\r\n if (this.tool !== \"Polygon\") {\r\n this.map.removeInteraction(this.drawPolygon);\r\n }\r\n }\r\n \r\n //Function to draw polygon\r\n drawPolygonFeatures() {\r\n this.map.addInteraction(this.drawPolygon);\r\n }\r\n \r\n //Function to select features\r\n dragAndDropFeatures() {\r\n this.map.addInteraction(this.translate);\r\n document.body.style.cursor = \"grab\";\r\n }\r\n \r\n //Escape listener to close tool\r\n @HostListener(\"document:keydown.escape\", [\"$event\"])\r\n handleKeyboardEvent(event: KeyboardEvent) {\r\n console.log(\"Escape pressed\");\r\n this.buttonState();\r\n this.tool = \"none\";\r\n this.selectedFeatures.clear();\r\n }\r\n \r\n //Copy and paste listener based on Ctrl + C and Ctrl + V\r\n @HostListener(\"window:keydown\", [\"$event\"])\r\n onKeyPress(event: KeyboardEvent) {\r\n if ((event.ctrlKey || event.metaKey) && event.key == \"c\") {\r\n console.log(\"CTRL + C\");\r\n \r\n for (let i = 0; i < this.selectedFeatures.getLength(); i++) {\r\n const nameFeature = this.selectedFeatures.item(i)[\"values_\"][\"description\"]\r\n const xCoord = this.selectedFeatures.item(i)[\"values_\"][\"geometry\"][\"flatCoordinates\"][0]\r\n const yCoord = this.selectedFeatures.item(i)[\"values_\"][\"geometry\"][\"flatCoordinates\"][1]\r\n \r\n this.copiedFeature[i] = new Feature({\r\n geometry: new Point([xCoord, yCoord]),\r\n description: nameFeature,\r\n status: \"\",\r\n type: \"\",\r\n });\r\n }\r\n }\r\n this.map.on(\"click\", (event) => {\r\n this.xCoordClick = event.coordinate[0];\r\n this.yCoordClick = event.coordinate[1];\r\n this.selectedFeatures.clear();\r\n console.log(\"MOUSE COORDINATES \", this.xCoordClick, this.yCoordClick)\r\n });\r\n if ((event.ctrlKey || event.metaKey) && event.key == \"v\") {\r\n console.log(\"CTRL + V\");\r\n for (let i = 0; i < this.copiedFeature.length; i++) {\r\n var pint = this.copiedFeature[i].getGeometry();\r\n if(pint instanceof Point){\r\n pint.setCoordinates([this.xCoordClick,this.yCoordClick])\r\n }\r\n this.copiedFeature[i].setGeometry(pint);\r\n this.registerSingleAction[0] = \"ADD\";\r\n this.registerSingleAction[1] = this.copiedFeature[i];\r\n this.updateEvent();\r\n }\r\n this.vectorSource.addFeatures(this.copiedFeature);\r\n this.copiedFeature = [];\r\n this.xCoordClick = 0;\r\n this.yCoordClick = 0;\r\n }\r\n }\r\n \r\n //Function to update the status of the buttons\r\n buttonState() {\r\n document.body.style.cursor = \"default\";\r\n this.map.removeInteraction(this.translate);\r\n this.map.removeInteraction(this.drawPolygon);\r\n }\r\n \r\n //Change the cursor style to add a Dot\r\n addDot() {\r\n document.body.style.cursor = \"crosshair\";\r\n }\r\n \r\n //Change the cursor style to delete a Dot\r\n deleteDot() {\r\n document.body.style.cursor = \"pointer\";\r\n }\r\n \r\n //Change the cursor style to modify a Dot\r\n modifyDot() {\r\n document.body.style.cursor = \"pointer\";\r\n }\r\n \r\n //Function to manage the Save Modal\r\n saveButton() {\r\n this.registerModalActions = this.registerAllActions.slice(0);\r\n document.body.style.cursor = \"default\";\r\n }\r\n \r\n //Function to update the form values\r\n computeAddForm(id, section, info) {\r\n this.addDotForm.controls.parkingIdForm.setValue(id);\r\n this.addDotForm.controls.sectionNameForm.setValue(section);\r\n \r\n const progressiveNum = this.generateDotId(info);\r\n this.addDotForm.controls.lotNumberForm.setValue(progressiveNum);\r\n \r\n this.addDotForm.controls.parkingIdForm.disable();\r\n this.addDotForm.controls.sectionNameForm.disable();\r\n }\r\n \r\n //Function to update the form values when the button is clicked\r\n updateForm() {\r\n this.computeAddForm(this.id, this.section, this.info)\r\n }\r\n\r\n //Function to update the Add Display form values\r\n computeAddDisplayForm(id, section, info) {\r\n this.addDisplayForm.controls.parkingIdDisplayForm.setValue(id);\r\n this.addDisplayForm.controls.sectionNameDisplayForm.setValue(section);\r\n \r\n const progressiveNum = this.generateDisplayNumber(info);\r\n this.addDisplayForm.controls.displayNumberDisplayForm.setValue(progressiveNum);\r\n \r\n this.addDisplayForm.controls.parkingIdDisplayForm.disable();\r\n this.addDisplayForm.controls.sectionNameDisplayForm.disable();\r\n }\r\n \r\n //Function to update the form values when the button is clicked\r\n updateDisplayForm() {\r\n this.computeAddDisplayForm(this.id, this.section, this.info)\r\n }\r\n \r\n //Function to discard a change\r\n discardChanges(item) {\r\n this.registerModalActions.splice(this.registerModalActions.indexOf(item), 1);\r\n }\r\n \r\n //Modal to confirm saves\r\n async saveModification() {\r\n this.newDotModel = [];\r\n let newDotClass = new LotPutModel();\r\n this.updateDotModel = [];\r\n let updateDotClass = new LotPutModel();\r\n let updateDisplayBody = new DisplayPutModel();\r\n for (let i = 0; i < this.registerModalActions.length; i++) {\r\n if (this.registerModalActions[i][0] === 'ADD') {\r\n newDotClass = {\r\n id: this.registerModalActions[i][1].values_.description,\r\n type: \"regular\",\r\n location: {\r\n x: 0,\r\n y: 0,\r\n coordinates: [0 , 0],\r\n type: \"Point\"\r\n },\r\n area: \"-1A\",\r\n authlevel: \"user\",\r\n sensorId: \"\",\r\n configStatus: \"not mapped\",\r\n groups: [\"\"],\r\n booked: false,\r\n x: Math.round(this.registerModalActions[i][1].values_.geometry.flatCoordinates[0]),\r\n y: this.info.y_multiplier - Math.round(this.registerModalActions[i][1].values_.geometry.flatCoordinates[1]),\r\n display: []\r\n }\r\n this.newDotModel.push(newDotClass)\r\n for(let j = 0; jImage uploaded successfully');\r\n this.displayConfirmReplaceImage = true;\r\n } else {\r\n this.confirmationMessageReplaceImage = this.sanitized.bypassSecurityTrustHtml('');\r\n this.displayConfirmReplaceImage = false;\r\n }\r\n }\r\n\r\n onReplaceImageChange(event) {\r\n if(this.radiusLot != this.info.radius_lot || this.radiusArea != this.info.radius_area || this.radiusLotMobile != this.info.radius_lot_mobile || this.clusterDistance != this.info.cluster_distance || this.selectedFile) {\r\n this.displayConfirmReplaceImage = true;\r\n } else {\r\n this.displayConfirmReplaceImage = false;\r\n }\r\n }\r\n \r\n // Map image replacement function\r\n confirmReplaceImage() {\r\n let formData = new FormData();\r\n let image = this.selectedFile;\r\n \r\n var blob = new Blob([image], {type: \"image/jpeg\"});\r\n formData.append('parkingId ', this.info.parking_id)\r\n formData.append('radiusLot', this.radiusLot.toString());\r\n formData.append('radiusArea', this.radiusArea.toString());\r\n formData.append('radiusLotMobile', this.radiusLotMobile.toString());\r\n formData.append('clusterDistance', this.clusterDistance.toString());\r\n if(image) {\r\n formData.append('file', blob);\r\n }\r\n \r\n this.imagesService.updateImage(this.info.id, formData).subscribe(res => {\r\n if(res.ok) {\r\n this.toast('success', this.info.parking_id, 'Image successfully replaced');\r\n } else {\r\n this.toast('error', this.info.parking_id, 'Image not replaced');\r\n }\r\n });\r\n \r\n setTimeout(()=>{this.reloadPage();},4000);\r\n \r\n }\r\n \r\n //Toast function\r\n toast(type: string, id: string, message: string) {\r\n \r\n switch (type) {\r\n case 'success':\r\n this.toastrService.success(id, message, {\r\n positionClass: 'toast-bottom-right',\r\n progressBar: true,\r\n closeButton: true,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n case 'warning':\r\n this.toastrService.warning(id, message, {\r\n positionClass: 'toast-bottom-right',\r\n progressBar: true,\r\n closeButton: true,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n case 'error':\r\n this.toastrService.error(id, message, {\r\n positionClass: 'toast-bottom-right',\r\n progressBar: true,\r\n closeButton: true,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n case 'info':\r\n this.toastrService.info(id, message, {\r\n positionClass: 'toast-bottom-center',\r\n progressBar: false,\r\n closeButton: false,\r\n tapToDismiss: true,\r\n timeOut: 4000\r\n });\r\n break;\r\n \r\n default:\r\n break;\r\n }\r\n }\r\n \r\n addItem(newItem: string, dot) {\r\n let index = this.info.dot_coordinate.findIndex(\r\n (element) => element.name === dot.name\r\n );\r\n if (index !== -1) {\r\n this.info.dot_coordinate[index].name = newItem;\r\n }\r\n }\r\n\r\n addItemDisplay(newItem: string, display) {\r\n let index = this.displays.findIndex(\r\n (element) => element.name === display.name\r\n );\r\n if (index !== -1) {\r\n this.displays[index].name = newItem;\r\n }\r\n }\r\n \r\n styleObjectDisplay = (display) => {\r\n \r\n var displayColor = '#BFC0C2';\r\n var displayStrokeColor = '#000000';\r\n var strokeWidth = 6;\r\n var colorText = \"#FFFFFF\";\r\n var colorTextStroke = \"#000000\";\r\n var nLotsLabel = \"\";\r\n var fontSize = (this.map.getView().getZoom()*13).toString();\r\n var font = \"\";\r\n \r\n switch (display.get(\"status\")) {\r\n case \"ok\": {\r\n displayColor = '#70BF54';\r\n nLotsLabel = display.get(\"value\");\r\n font = fontSize + \"px sans-serif\";\r\n break;\r\n }\r\n case \"alert\": {\r\n displayColor = 'rgb(252,175,23)';\r\n nLotsLabel = '!';\r\n colorText = \"#000000\";\r\n colorTextStroke = \"#FF0000\";\r\n font = fontSize + \"px sans-serif\";\r\n break;\r\n }\r\n default: {\r\n displayColor = '#BFC0C2';\r\n break;\r\n }\r\n }\r\n \r\n //Text fill style\r\n var textFill = new Fill({\r\n color: colorText\r\n });\r\n \r\n //Text stroke style\r\n var textStroke = new Stroke({\r\n color: colorTextStroke,\r\n width: 1,\r\n });\r\n \r\n //Number of free parking lot\r\n var textParkingFree = new Text({\r\n font: font,\r\n text: nLotsLabel.toString(),\r\n fill: textFill,\r\n //stroke: textStroke,\r\n });\r\n \r\n var iconStyleDisplay = new Style({\r\n image: new RegularShape({\r\n fill: new Fill({\r\n color: displayColor,\r\n }),\r\n stroke: new Stroke({\r\n color: displayStrokeColor,\r\n width: strokeWidth,\r\n }),\r\n radius: this.map.getView().getZoom() * (20 / Math.SQRT2),\r\n radius2: this.map.getView().getZoom() * 20,\r\n points: 4,\r\n angle: 0,\r\n scale: [1, 0.5],\r\n }),\r\n text: textParkingFree,\r\n });\r\n return iconStyleDisplay;\r\n }\r\n \r\n //Features Styles\r\n styleObject = (dot) => {\r\n if (dot.getGeometry() instanceof Polygon) {\r\n var iconStyle = new Style({\r\n stroke: new Stroke({\r\n color: \"black\",\r\n width: 2,\r\n }),\r\n fill: new Fill({\r\n color: \"rgba(112, 191, 84, 0.7)\",\r\n }),\r\n });\r\n return iconStyle;\r\n }\r\n \r\n var lotColor = \"#BFC0C2\";\r\n var lotStrokeColor = \"#BFC0C2\";\r\n var strokeWidth = 2;\r\n switch (dot.get(\"status\")) {\r\n case \"free\": {\r\n lotColor = \"#70BF54\";\r\n break;\r\n }\r\n case \"busy\": {\r\n lotColor = \"#E11F26\";\r\n break;\r\n }\r\n case \"alert\": {\r\n lotColor = \"#FCAF17\";\r\n break;\r\n }\r\n default: {\r\n lotColor = \"#BFC0C2\";\r\n break;\r\n }\r\n }\r\n lotStrokeColor = \"black\";\r\n \r\n var lotTypeLabel = \"\";\r\n switch (dot.get(\"type\")) {\r\n case \"regular\": {\r\n lotTypeLabel = \"\";\r\n break;\r\n }\r\n case \"management\": {\r\n lotTypeLabel = \"M\";\r\n break;\r\n }\r\n case \"guest\": {\r\n lotTypeLabel = \"G\";\r\n break;\r\n }\r\n case \"handicap\": {\r\n lotTypeLabel = \"H\";\r\n break;\r\n }\r\n case \"e-vehicle\": {\r\n lotTypeLabel = \"e\";\r\n break;\r\n }\r\n case \"short-term\": {\r\n lotTypeLabel = \"s-t\";\r\n break;\r\n }\r\n default: {\r\n lotTypeLabel = \"\";\r\n break;\r\n }\r\n }\r\n \r\n //Text fill style\r\n var textFill = new Fill({\r\n color: \"#fff\",\r\n });\r\n \r\n //Text stroke style\r\n var textStroke = new Stroke({\r\n color: \"rgba(0, 0, 0, 0.6)\",\r\n width: 3,\r\n });\r\n \r\n var textParkingFree = new Text({\r\n font: \"20\" + \"px sans-serif\",\r\n text: lotTypeLabel,\r\n fill: textFill,\r\n stroke: textStroke,\r\n });\r\n \r\n var iconStyle = new Style({\r\n image: new Circle({\r\n radius: this.pointFeatureRadius,\r\n fill: new Fill({\r\n color: lotColor,\r\n }),\r\n stroke: new Stroke({\r\n color: lotStrokeColor,\r\n width: strokeWidth,\r\n }),\r\n }),\r\n text: textParkingFree,\r\n });\r\n return iconStyle;\r\n };\r\n \r\n //Manage Parking Spaces Group: enable functions in the \"Edit Selected\" menu\r\n displaygroups() {\r\n this.displaybutton = false;\r\n this.displayselector = true;\r\n }\r\n \r\n //Manage dot repositioning\r\n reposition() {\r\n let defaultValue = this.repositionForm.controls.dotNameRepositionForm.value\r\n this.isLocated(defaultValue)\r\n }\r\n \r\n //Manage dot move\r\n selectDotToMove() {\r\n let selected = this.repositionForm.controls.dotNameRepositionForm.value\r\n for (let i =0; i {\r\n event.features.getArray().forEach(feat => {\r\n this.registerSingleAction[0] = \"MOVE\";\r\n this.registerSingleAction[1] = feat;\r\n this.updateEvent(); \r\n this.toast('success', (feat as any).values_.description ,'Dot moved successfully')\r\n });\r\n });\r\n \r\n }\r\n \r\n search(text: string) {\r\n if (text === 'error') {\r\n return throwError('failed');\r\n }\r\n \r\n this.filteredDotList = this.repositionDot.filter(value => value.includes(text));\r\n return of(this.filteredDotList);\r\n }\r\n \r\n selectValue(value) {\r\n this.repositionForm.controls.dotNameRepositionForm.setValue(value)\r\n }\r\n \r\n //Function to delete the selected dots\r\n deleteAllDot() {\r\n for (let i = 0; i= 0) {\r\n this.selectedListType.splice(index, 1);\r\n }\r\n \r\n this.selectedStatesType = {}\r\n for (let i = 0; i < this.selectedListType.length; i++) {\r\n this.selectedStatesType[this.selectedListType[i]] = true;\r\n }\r\n this.updateStatesType(this.selectedStatesType)\r\n }\r\n \r\n //Patch to update the type of selected Parking Spaces\r\n async changeType() {\r\n let body = this.typeNameForm.value\r\n \r\n for(let i = 0; i {\r\n this.toast('success',this.selectedListType[i], 'Parking Space type updated successfully')\r\n },\r\n (error) => {\r\n this.toast('error',this.selectedListType[i], 'Parking Space type not updated')\r\n })\r\n }\r\n \r\n this.selectedFeatures.clear();\r\n this.buttonState();\r\n this.reloadPage();\r\n }\r\n \r\n //Function to refresh the page after updates\r\n reloadPage() {\r\n let parkingId = this.route.snapshot.params.id;\r\n let section = this.route.snapshot.queryParams.section;\r\n let currentRoute = \"/parking/\" + parkingId;\r\n \r\n this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => {\r\n this.router.navigate([currentRoute], { queryParams: { view: 'edit', section: section }, queryParamsHandling: 'merge' }); // navigate to same route\r\n });\r\n }\r\n \r\n statusTStyle(value) {\r\n let res={color:\"black\"};\r\n res.color=this.t.find(value).toString();\r\n return res;\r\n }\r\n \r\n addNewItem(value: any) {\r\n this.newItemEvent.emit(value);\r\n }\r\n \r\n addNewItemDisplay(value: any) {\r\n this.newItemEventDisplay.emit(value);\r\n }\r\n \r\n}","import { OnInit, Component, QueryList, ViewChildren, Input, Output, EventEmitter } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { timer, Subscription } from 'rxjs';\r\n\r\nimport { environment } from 'src/environments/environment';\r\n\r\nimport { Collection, Feature, View } from 'ol';\r\nimport Geometry from 'ol/geom/Geometry';\r\nimport Point from 'ol/geom/Point';\r\nimport VectorLayer from 'ol/layer/Vector';\r\nimport Projection from 'ol/proj/Projection';\r\nimport VectorSource from 'ol/source/Vector';\r\nimport { Cluster } from \"ol/source\";\r\nimport { Circle, Fill, RegularShape, Stroke, Style, Text } from 'ol/style';\r\nimport ImageLayer from \"ol/layer/Image\";\r\nimport Static from \"ol/source/ImageStatic\";\r\nimport { getCenter } from \"ol/extent\";\r\nimport Map from 'ol/Map';\r\nimport * as olExtent from \"ol/extent\";\r\nimport ZoomToExtent from 'ol/control/ZoomToExtent';\r\n\r\nimport { ImageInfo } from 'src/app/_shared/models/image';\r\nimport { DisplayGetModel } from 'src/app/_shared/models/display';\r\n\r\nimport { AuthenticationService } from 'src/app/_services/authentication.service';\r\nimport { ParkingService } from 'src/app/_services/parking.service';\r\nimport { TypeService } from 'src/app/_services/type.service';\r\nimport { ImagesService } from 'src/app/_services/images.service';\r\nimport { DisplaysService } from 'src/app/_services/displays.service';\r\nimport { StyleService } from 'src/app/_services/style.service';\r\n\r\nimport { NgbPopover } from '@ng-bootstrap/ng-bootstrap/popover/popover';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\nimport { RbSwitchChange } from '@inst-iot/bosch-angular-ui-components/atoms/form-fields/form-switch/form-switch.component';\r\n\r\nconst lot_type = \"lot\";\r\n\r\n@Component({\r\n selector: 'app-map-layer',\r\n templateUrl: './map-layer.component.html',\r\n styleUrls: ['./map-layer.component.scss']\r\n})\r\n\r\nexport class MapLayerComponent implements OnInit {\r\n @ViewChildren('popUpInfo') ngbPopoverInfo!: QueryList;\r\n @ViewChildren('popUpDisplayInfo') ngbPopoverDisplayInfo!: QueryList;\r\n @Input() parkingdrawer: MatSidenav;\r\n @Output() newItemEvent = new EventEmitter();\r\n \r\n map: Map;\r\n id: string;\r\n subs: Subscription;\r\n parsubs: Subscription;\r\n viewsubs: Subscription;\r\n section: string = \"\";\r\n view: string;\r\n info: ImageInfo;\r\n url: string;\r\n lots: any;\r\n areas: any;\r\n extent: any;\r\n features: any;\r\n vectorSource: VectorSource;\r\n vectorLayer: VectorLayer;\r\n selectedFeatures: Collection>;\r\n pointFeatureRadius: number = 12;\r\n originalFeatureRadius: number;\r\n cluster_distance: number = 20;\r\n radiusScaleOnZoom = 0.43;// to adjusting\r\n retriveImages: string;\r\n getImages: string;\r\n parkingId: string;\r\n images: any;\r\n parkImagesId: string;\r\n getUrl: string;\r\n mapLoaded = false;\r\n extentHeight: number;\r\n extentWidth: number;\r\n projection: Projection;\r\n \r\n //Display Variables\r\n displaySubscription: Subscription;\r\n displays: DisplayGetModel[] = [];\r\n displaysSub: DisplayGetModel[] = [];\r\n displaysFeatures: any;\r\n vectorSourceDisplay: VectorSource;\r\n vectorLayerDisplay: VectorLayer;\r\n showDisplay: boolean = true;\r\n \r\n constructor(\r\n public http: HttpClient,\r\n private park: ParkingService,\r\n public auth: AuthenticationService,\r\n public types: TypeService,\r\n private route: ActivatedRoute,\r\n public imagesService: ImagesService, // Injecting the Service\r\n public displayService: DisplaysService,\r\n private style: StyleService\r\n ) {\r\n this.features = [];\r\n this.displaysFeatures = [];\r\n }\r\n \r\n ngOnDestroy() {\r\n console.log('unsuscribe polling');\r\n \r\n if (this.subs) {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n if (this.displaySubscription) {\r\n this.displaySubscription.unsubscribe();\r\n }\r\n\r\n this.parsubs.unsubscribe();\r\n \r\n if (this.viewsubs) {\r\n this.viewsubs.unsubscribe();\r\n }\r\n }\r\n \r\n async ngOnInit() {\r\n console.log(\"load map layer\");\r\n this.id = this.route.snapshot.params.id;\r\n this.parsubs = this.route.queryParams.subscribe((par: any) => {\r\n this.view = par.view;\r\n this.section = par.section;\r\n this.parkImagesId = this.id + '-' + this.section;\r\n });\r\n \r\n //Setup a Vector Source\r\n this.vectorSource = new VectorSource({\r\n features: [],\r\n });\r\n \r\n //Setup a Vector Layer\r\n this.vectorLayer = new VectorLayer({\r\n source: new Cluster({\r\n distance: this.cluster_distance,\r\n source: this.vectorSource,\r\n }),\r\n style: this.styleObject,\r\n });\r\n \r\n //Setup a Vector Source for Display\r\n this.vectorSourceDisplay = new VectorSource({\r\n features: [],\r\n })\r\n \r\n //Setup a Vector Layer for Display\r\n this.vectorLayerDisplay = new VectorLayer({\r\n source: this.vectorSourceDisplay,\r\n style: this.styleObjectDisplay,\r\n })\r\n \r\n await this.imagesService.retriveImagesInfo(this.parkImagesId).then(info => {\r\n this.info = info as ImageInfo;\r\n /*\r\n * insert Feature into openlayer map\r\n */\r\n this.extentHeight = this.info.y_multiplier;\r\n this.extentWidth = this.info.x_multiplier;\r\n this.pointFeatureRadius = this.info.radius_lot ? this.info.radius_lot : this.pointFeatureRadius;\r\n this.originalFeatureRadius = this.pointFeatureRadius;\r\n this.cluster_distance = this.info.cluster_distance ? this.info.cluster_distance : this.cluster_distance;\r\n this.extent = [0, 0, this.extentWidth, this.extentHeight];\r\n this.projection = new Projection({\r\n code: \"xkcd-image\",\r\n units: \"pixels\",\r\n extent: this.extent,\r\n });\r\n this.projection.setWorldExtent(this.extent);\r\n \r\n this.info.dot_coordinate.forEach((lot_info, index) => {\r\n if (lot_info.type === lot_type) {\r\n const pos = [lot_info.x, (this.extentHeight - lot_info.y)];\r\n const singleFeature = new Feature({\r\n geometry: new Point(pos),\r\n description: lot_info.name,\r\n status: \"\",\r\n type: \"regular\",\r\n });\r\n this.features.push(singleFeature);\r\n }\r\n });\r\n this.vectorSource.addFeatures(this.features);\r\n });\r\n \r\n var sourceStaticImage = new Static({\r\n imageLoadFunction: (function (image, src) {\r\n this.imagesService.retriveImages(src)\r\n .subscribe(data => {\r\n let reader = new FileReader();\r\n reader.addEventListener(\"loadend\", () => {\r\n image.getImage().src = reader.result;\r\n }, false);\r\n if (data) {\r\n reader.readAsDataURL(data);\r\n }\r\n }, error => {\r\n console.log(error);\r\n });\r\n }).bind(this),\r\n url: this.parkImagesId,\r\n projection: this.projection,\r\n imageExtent: this.extent\r\n })\r\n \r\n this.map = new Map({\r\n layers: [\r\n new ImageLayer({\r\n source: sourceStaticImage\r\n }),\r\n ],\r\n target: \"map-layer\",\r\n view: new View({\r\n projection: this.projection,\r\n center: getCenter(this.extent),\r\n maxZoom: 6,\r\n zoom: 1,\r\n extent: [-(0.2*this.extentWidth), -(0.2*this.extentHeight), this.extentWidth+(0.2*this.extentWidth), this.extentHeight+(0.2*this.extentHeight)],\r\n showFullExtent: true\r\n })\r\n });\r\n \r\n // Function to compute dynamically the height of the map\r\n this.style.computeHeight(25);\r\n this.map.updateSize();\r\n \r\n // Zoom Control Button\r\n var zoom = document.createElement(\"span\");\r\n zoom.innerHTML = '';\r\n var zoomControl = new ZoomToExtent({\r\n extent: [0, 0, this.extentWidth, this.extentHeight],\r\n label: zoom,\r\n });\r\n \r\n this.map.addControl(zoomControl);\r\n \r\n \r\n /*\r\n * Poll every 3 seconds to get lot infos\r\n */\r\n this.subs = timer(0, 3000).subscribe(() => {\r\n console.log('polling lots and areas info');\r\n this.park.retriveLotsInfo(this.id).subscribe((lots: any) => {\r\n this.lots = lots;\r\n this.lots.forEach(singleLot => {\r\n var singleFeature = this.features.find(feat => feat.get(\"description\") === singleLot.id);\r\n if (singleFeature) {\r\n var index = this.features.indexOf(singleFeature);\r\n this.features[index].set(\"status\", singleLot.status);\r\n this.features[index].set(\"type\", singleLot.type);\r\n //singleFeature.set(\"status\", singleLot.lot.status);\r\n }\r\n });\r\n this.vectorLayer.setStyle(this.styleObject);\r\n });\r\n });\r\n \r\n if(this.info.display_coordinate.length>0) {\r\n /*\r\n * Insert Display Feature into openlayer map\r\n */\r\n this.displays = [];\r\n this.displays = this.info.display_coordinate;\r\n \r\n this.displays.forEach((display_info, index) => {\r\n console.log('polling displays info');\r\n const pos = [display_info.x, (this.extentHeight - display_info.y)]\r\n const singleFeature = new Feature({\r\n geometry: new Point(pos),\r\n description: display_info.name,\r\n status: display_info.status,\r\n value: display_info.value,\r\n featureType: 'display',\r\n })\r\n this.displaysFeatures.push(singleFeature);\r\n })\r\n this.vectorSourceDisplay.addFeatures(this.displaysFeatures);\r\n }\r\n \r\n if(this.displays.length > 0) {\r\n this.displaySubscription = timer(0, 3000).subscribe(() => {\r\n this.displayService.retrieveDisplayByParkingId(this.id).subscribe((displays: any) => {\r\n this.displaysSub = displays;\r\n this.displaysSub.forEach(singleDisplay => {\r\n var singleFeature = this.features.find(feat => feat.get(\"description\") === singleDisplay.name);\r\n if (singleFeature) {\r\n var index = this.features.indexOf(singleFeature);\r\n this.features[index].set(\"status\", singleDisplay.status);\r\n this.features[index].set(\"value\", singleDisplay.value);\r\n }\r\n });\r\n this.vectorLayerDisplay.setStyle(this.styleObjectDisplay);\r\n },\r\n err => {\r\n this.displaySubscription.unsubscribe();\r\n });\r\n })\r\n }\r\n \r\n /*\r\n zoomCluster function to zoom on Cluster click\r\n */\r\n var zoomCluster = function (feature, map) {\r\n var features = feature.get(\"features\");\r\n if (features.length > 1) {\r\n var extent = olExtent.createEmpty();\r\n features.forEach(function (feature) {\r\n olExtent.extend(extent, feature.getGeometry().getExtent());\r\n });\r\n var zoom = map.getView().getZoom();\r\n map.getView().fit(extent, map.getSize());\r\n map.getView().setZoom(zoom + 2);\r\n return true;\r\n } else {\r\n return false\r\n }\r\n };\r\n \r\n this.map.getView().on('change:resolution', (event) => {\r\n this.pointFeatureRadius = this.map.getView().getZoom() * this.originalFeatureRadius * this.radiusScaleOnZoom;\r\n this.vectorLayer.setStyle(this.styleObject);\r\n this.vectorLayerDisplay.setStyle(this.styleObjectDisplay);\r\n });\r\n \r\n this.map.getView().fit(sourceStaticImage.getImageExtent());\r\n \r\n this.viewsubs = this.route.queryParams.subscribe((par: any) => {\r\n this.view = par.view;\r\n \r\n if (this.view == 'map') {\r\n this.map.once(\"rendercomplete\", (event) => {\r\n this.mapLoaded = true;\r\n this.map.addLayer(this.vectorLayer);\r\n this.map.addLayer(this.vectorLayerDisplay);\r\n });\r\n \r\n /*\r\n on map click:\r\n - do not do anything if is a empty point\r\n - zoom on cluster\r\n - display popup if is a feature point\r\n */\r\n this.map.on(\"click\", (event) => {\r\n var feature = this.map.forEachFeatureAtPixel(event.pixel, function (feature) {\r\n return feature;\r\n });\r\n if (feature) {\r\n if((feature as any).values_.featureType == 'display') {\r\n var display_name = (feature as any).values_.description;\r\n var popupComponentDisplay = document.getElementById(display_name);\r\n \r\n popupComponentDisplay.style.setProperty('display', 'block');\r\n popupComponentDisplay.style.setProperty('position', 'absolute');\r\n var pointerEventDisplay = event.originalEvent;\r\n \r\n var pixelXYDisplay = this.map.getPixelFromCoordinate((feature as any).values_.geometry.flatCoordinates);\r\n \r\n if (pointerEventDisplay) {\r\n // popupComponent.style.setProperty('top', pointerEvent.clientY.toString() + \"px\");\r\n // popupComponent.style.setProperty('left', pointerEvent.clientX.toString() + \"px\");\r\n popupComponentDisplay.style.setProperty('top', (pixelXYDisplay[1]).toString() + \"px\");\r\n popupComponentDisplay.style.setProperty('left', pixelXYDisplay[0].toString() + \"px\");\r\n }\r\n \r\n var popOverElementsDisplay = [];\r\n popOverElementsDisplay = this.ngbPopoverDisplayInfo.toArray();\r\n var popOverComponentDisplay = popOverElementsDisplay.find(x => x._elementRef.nativeElement.id == display_name);\r\n popOverComponentDisplay.open();\r\n \r\n } else {\r\n if (!zoomCluster(feature, this.map)) {\r\n var lot_name = feature.get(\"features\")[0].get(\"description\");\r\n var popupComponent = document.getElementById(lot_name);\r\n \r\n popupComponent.style.setProperty('display', 'block');\r\n popupComponent.style.setProperty('position', 'absolute');\r\n var pointerEvent = event.originalEvent;\r\n \r\n var pixelXY = this.map.getPixelFromCoordinate(feature.get(\"features\")[0].getGeometry().getCoordinates());\r\n \r\n if (pointerEvent) {\r\n // popupComponent.style.setProperty('top', pointerEvent.clientY.toString() + \"px\");\r\n // popupComponent.style.setProperty('left', pointerEvent.clientX.toString() + \"px\");\r\n popupComponent.style.setProperty('top', (pixelXY[1] - this.pointFeatureRadius).toString() + \"px\");\r\n popupComponent.style.setProperty('left', pixelXY[0].toString() + \"px\");\r\n }\r\n \r\n var popOverElements = [];\r\n popOverElements = this.ngbPopoverInfo.toArray();\r\n var popOverComponent = popOverElements.find(x => x._elementRef.nativeElement.id == lot_name);\r\n popOverComponent.open();\r\n }\r\n }\r\n \r\n }\r\n });\r\n }\r\n })\r\n \r\n }\r\n \r\n styleObjectDisplay = (display) => {\r\n \r\n var displayColor = '#BFC0C2';\r\n var displayStrokeColor = '#000000';\r\n var strokeWidth = 6;\r\n var colorText = \"#FFFFFF\";\r\n var colorTextStroke = \"#000000\";\r\n var nLotsLabel = \"\";\r\n var fontSize = (this.map.getView().getZoom()*13).toString()\r\n var font = \"\";\r\n \r\n switch (display.get(\"status\")) {\r\n case \"ok\": {\r\n displayColor = '#70BF54';\r\n nLotsLabel = display.get(\"value\");\r\n font = fontSize + \"px sans-serif\";\r\n break;\r\n }\r\n case \"alert\": {\r\n displayColor = 'rgb(252,175,23)';\r\n nLotsLabel = '!';\r\n colorText = \"#000000\";\r\n colorTextStroke = \"#FF0000\";\r\n font = fontSize + \"px sans-serif\";\r\n break;\r\n }\r\n default: {\r\n displayColor = '#BFC0C2';\r\n break;\r\n }\r\n }\r\n \r\n //Text fill style\r\n var textFill = new Fill({\r\n color: colorText\r\n });\r\n \r\n //Text stroke style\r\n var textStroke = new Stroke({\r\n color: colorTextStroke,\r\n width: 4,\r\n });\r\n \r\n //Number of free parking lot\r\n var textParkingFree = new Text({\r\n font: font,\r\n text: nLotsLabel.toString(),\r\n fill: textFill,\r\n //stroke: textStroke,\r\n });\r\n \r\n var iconStyleDisplay = new Style({\r\n image: new RegularShape({\r\n fill: new Fill({\r\n color: displayColor,\r\n }),\r\n stroke: new Stroke({\r\n color: displayStrokeColor,\r\n width: strokeWidth,\r\n }),\r\n radius: this.map.getView().getZoom() * (20 / Math.SQRT2),\r\n radius2: this.map.getView().getZoom() * 20,\r\n points: 4,\r\n angle: 0,\r\n scale: [1, 0.5],\r\n }),\r\n text: textParkingFree,\r\n });\r\n return iconStyleDisplay;\r\n }\r\n \r\n styleObject = (dot) => {\r\n \r\n var nFreeLots = 0;\r\n var nNotStatusLots = 0;\r\n var nAlertStatusLots = 0;\r\n var nBusyLots = 0;\r\n var nLotsLabel = \"\";\r\n var lotColor = '#BFC0C2';\r\n var lotStrokeColor = '#BFC0C2';\r\n var strokeWidth = 2;\r\n var colorText = \"#fff\";\r\n var colorTextStroke = \"rgba(0, 0, 0, 0.6)\";\r\n \r\n if (dot.get(\"features\").length == 1) {\r\n switch (dot.get(\"features\")[0].get(\"status\")) {\r\n case \"free\": {\r\n lotColor = '#70BF54';\r\n break;\r\n }\r\n case \"busy\": {\r\n lotColor = '#E11F26';\r\n break;\r\n }\r\n case \"alert\": {\r\n lotColor = 'rgb(252,175,23)';\r\n nLotsLabel = '!';\r\n colorText = \"rgb(0, 0, 0)\";\r\n colorTextStroke = \"rgb(255, 0, 0)\";\r\n break;\r\n }\r\n default: {\r\n lotColor = '#BFC0C2';\r\n break;\r\n }\r\n }\r\n lotStrokeColor = 'black';\r\n \r\n if (dot.get(\"features\")[0].get(\"status\") != \"alert\") {\r\n switch (dot.get(\"features\")[0].get(\"type\")) {\r\n case \"regular\": {\r\n nLotsLabel = '';\r\n break;\r\n }\r\n case \"management\": {\r\n nLotsLabel = 'M';\r\n break;\r\n }\r\n case \"guest\": {\r\n nLotsLabel = 'G';\r\n break;\r\n }\r\n case \"handicap\": {\r\n nLotsLabel = 'H';\r\n break;\r\n }\r\n \r\n case \"e-vehicle\": {\r\n nLotsLabel = 'e';\r\n break;\r\n }\r\n case \"short-term\": {\r\n nLotsLabel = 's-t';\r\n break;\r\n }\r\n default: {\r\n nLotsLabel = '';\r\n break;\r\n }\r\n }\r\n }\r\n } else if (dot.get(\"features\").length > 1) {\r\n console.log(dot.get(\"features\"));\r\n for (var i = 0; i < dot.get(\"features\").length; i++) {\r\n if (dot.get(\"features\")[i].get(\"status\") === 'free') {\r\n nFreeLots++;\r\n } else if (dot.get(\"features\")[i].get(\"status\") === '') {\r\n nNotStatusLots++;\r\n } else if (dot.get(\"features\")[i].get(\"status\") === 'alert') {\r\n nAlertStatusLots++;\r\n } else if (dot.get(\"features\")[i].get(\"status\") === 'busy') {\r\n nBusyLots++;\r\n }\r\n }\r\n strokeWidth = 2;\r\n lotStrokeColor = 'black';\r\n if (nFreeLots > 0) {\r\n lotColor = '#70BF54';\r\n nLotsLabel = nFreeLots.toString();\r\n } else if (nNotStatusLots > 0) {\r\n lotColor = '#BFC0C2';\r\n nLotsLabel = nNotStatusLots.toString();\r\n } else if (nAlertStatusLots > 0) {\r\n lotColor = 'rgb(252,175,23)';\r\n nLotsLabel = nAlertStatusLots.toString();\r\n } else if (nBusyLots > 0) {\r\n lotColor = '#E11F26';\r\n nLotsLabel = nBusyLots.toString();\r\n }\r\n }\r\n \r\n //Text fill style\r\n var textFill = new Fill({\r\n color: colorText\r\n });\r\n \r\n //Text stroke style\r\n var textStroke = new Stroke({\r\n color: colorTextStroke,\r\n width: 4,\r\n });\r\n \r\n //Number of free parking lot\r\n var textParkingFree = new Text({\r\n font: \"20\" + \"px sans-serif\",\r\n text: nLotsLabel,\r\n fill: textFill,\r\n stroke: textStroke,\r\n });\r\n \r\n var iconStyle = new Style({\r\n image: new Circle({\r\n radius: this.pointFeatureRadius,\r\n fill: new Fill({\r\n color: lotColor,\r\n }),\r\n stroke: new Stroke({\r\n color: lotStrokeColor,\r\n width: strokeWidth,\r\n }),\r\n }),\r\n text: textParkingFree,\r\n });\r\n return iconStyle;\r\n };\r\n \r\n generateRandomString(length = 6) {\r\n var randomChars = 'abcdef0123456789';\r\n var result = '';\r\n for (var i = 0; i < length; i++) {\r\n result += randomChars.charAt(Math.floor(Math.random() * randomChars.length));\r\n }\r\n return result;\r\n };\r\n \r\n generateRandomLastUpdate(sY, sM, sD, eY, eM, eD, startHour, endHour): string {\r\n var start: any;\r\n var end: any;\r\n start = new Date(sY, sM, sD);\r\n end = new Date(eY, eM, eD);\r\n \r\n var date = new Date(+start + Math.random() * (end - start));\r\n var hour = startHour + Math.random() * (endHour - startHour) | 0;\r\n date.setHours(hour);\r\n return date.toUTCString();\r\n };\r\n \r\n generateRandomNumberMaxMin(max, min) {\r\n return (Math.trunc((Math.random() * (max - min) + 1))).toString();\r\n };\r\n \r\n generateRandomNumberMaxMin_toNumber(max, min) {\r\n return (Math.trunc((Math.random() * (max - min) + 1)));\r\n };\r\n \r\n addItem(newItem: any) {\r\n this.selectedFeatures = newItem;\r\n this.addNewItem(newItem);\r\n }\r\n \r\n addNewItem(value: any) {\r\n this.newItemEvent.emit(value);\r\n }\r\n \r\n hideDisplay($event: RbSwitchChange) {\r\n let enableDisplay = $event.checked;\r\n let features = this.vectorSourceDisplay.getFeatures();\r\n if(!enableDisplay) {\r\n //Hide display\r\n for (let i = 0; i {\r\n this.section = par.section;\r\n this.parkImagesId = this.id + '-' + this.section;\r\n });\r\n \r\n await this.imagesService.retriveImagesInfo(this.parkImagesId).then(info => {\r\n this.imagesInfo = info as any;\r\n this.coordinates = this.imagesInfo.dot_coordinate.filter(x => x.type === \"lot\");\r\n this.coordinates = this.coordinates.filter(x => x.name == this.lotid)\r\n this.x = this.coordinates[0].x;\r\n this.y = this.coordinates[0].y;\r\n });\r\n \r\n var extentHeight = this.imagesInfo.y_multiplier;\r\n this.center = [this.x, (extentHeight - this.y)];\r\n \r\n if(!this.vectorSource.isEmpty()) {\r\n this.features = [];\r\n this.vectorSource.clear();\r\n const pos = [this.x, (extentHeight - this.y)];\r\n const singleFeature = new Feature({\r\n geometry: new Point(pos),\r\n });\r\n this.features.push(singleFeature);\r\n this.vectorSource.addFeatures(this.features);\r\n \r\n //Set Map Center Dynamically\r\n this.map.getView().setCenter(this.center);\r\n } \r\n }\r\n \r\n async ngOnInit() {\r\n this.id = this.route.snapshot.params.id;\r\n this.parsubs = this.route.queryParams.subscribe((par:any) => {\r\n this.section = par.section;\r\n this.parkImagesId = this.id + '-' + this.section;\r\n });\r\n \r\n await this.imagesService.retriveImagesInfo(this.parkImagesId).then(info => {\r\n this.imagesInfo = info as any;\r\n this.coordinates = this.imagesInfo.dot_coordinate.filter(x => x.type === \"lot\");\r\n this.coordinates = this.coordinates.filter(x => x.name == this.lotid)\r\n this.x = this.coordinates[0].x;\r\n this.y = this.coordinates[0].y;\r\n });\r\n \r\n var extentHeight = this.imagesInfo.y_multiplier;\r\n var extentWidth = this.imagesInfo.x_multiplier;\r\n this.extent = [0, 0, extentWidth, extentHeight];\r\n var projection = new Projection({\r\n code: \"xkcd-image\",\r\n units: \"pixels\",\r\n extent: this.extent,\r\n });\r\n \r\n //Setup a Vector Source\r\n this.vectorSource = new VectorSource({\r\n features: [],\r\n });\r\n \r\n //Setup a Vector Layer\r\n this.vectorLayer = new VectorLayer({\r\n source: new Cluster({\r\n distance: 50,\r\n source: this.vectorSource,\r\n }),\r\n style: this.styleObject,\r\n });\r\n \r\n var sourceStaticImage = new Static({\r\n imageLoadFunction: (function (image, src) {\r\n this.imagesService.retriveImages(src)\r\n .subscribe(data => {\r\n let reader = new FileReader();\r\n reader.addEventListener(\"loadend\", () => {\r\n image.getImage().src = reader.result;\r\n }, false);\r\n if (data) {\r\n reader.readAsDataURL(data);\r\n }\r\n }, error => {\r\n console.log(error);\r\n });\r\n }).bind(this),\r\n url: this.parkImagesId,\r\n projection: projection,\r\n imageExtent: this.extent\r\n })\r\n \r\n this.map = new Map({\r\n layers: [\r\n new ImageLayer({\r\n source: sourceStaticImage\r\n }),\r\n ],\r\n target: \"map-layer\",\r\n view: new View({\r\n projection: projection,\r\n center: [this.x, (extentHeight - this.y)],\r\n maxZoom: 6,\r\n zoom: 2,\r\n extent: [-(0.1*extentWidth), -(0.1*extentHeight), extentWidth+(0.1*extentWidth), extentHeight+(0.1*extentHeight)],\r\n showFullExtent: true\r\n })\r\n });\r\n \r\n // Function to compute dynamically the height of the map\r\n this.style.computeHeightList();\r\n this.map.updateSize();\r\n \r\n // Zoom Control Button\r\n var zoom = document.createElement(\"span\");\r\n zoom.innerHTML = '';\r\n var zoomControl = new ZoomToExtent({\r\n extent: [0, 0, extentWidth, extentHeight],\r\n label: zoom,\r\n });\r\n \r\n this.map.addControl(zoomControl);\r\n this.map.once(\"rendercomplete\", (event) => {\r\n this.mapLoaded = true;\r\n this.map.addLayer(this.vectorLayer);\r\n });\r\n \r\n this.features = [];\r\n \r\n const pos = [this.x, (extentHeight - this.y)];\r\n const singleFeature = new Feature({\r\n geometry: new Point(pos),\r\n });\r\n this.features.push(singleFeature);\r\n this.vectorSource.addFeatures(this.features);\r\n \r\n }\r\n \r\n styleObject = (dot) => {\r\n if(this.status == \"free\") {\r\n var lotColor = '#70BF54';\r\n } else if (this.status == \"busy\") {\r\n var lotColor = '#E11F26';\r\n } else if (this.status == \"alert\") {\r\n var lotColor = '#FCAF17';\r\n } else {\r\n var lotColor = '#BFC0C2';\r\n }\r\n var lotStrokeColor = '#000000';\r\n var strokeWidth = 2;\r\n \r\n var iconStyle = new Style({\r\n text: new Text({\r\n text: \"\\ue1c3\",\r\n scale: 2.5,\r\n textBaseline: 'bottom',\r\n font: \"400 18px 'Bosch-Icon'\",\r\n fill: new Fill({ \r\n color: lotColor, \r\n }),\r\n stroke: new Stroke({ \r\n color: lotStrokeColor,\r\n width: strokeWidth, \r\n })\r\n })\r\n });\r\n return iconStyle;\r\n };\r\n \r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { AuthGuardGuard as AuthGuard } from '../authentication/_guards/auth-guard.guard'\r\nimport { ParkingComponent } from './parking/parking.component';\r\nimport { ParkingMgmtComponent } from './parking-mgmt/parking-mgmt.component';\r\n\r\nconst PARKINGMGMTROUTES: Routes = [\r\n \r\n {\r\n path: '', component: ParkingMgmtComponent, canActivate: [AuthGuard],\r\n children: [\r\n { path: 'parking/:id', component: ParkingComponent, canActivate: [AuthGuard],data: {title: 'Parking'}},\r\n ]\r\n },\r\n\r\n];\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n RouterModule.forChild(PARKINGMGMTROUTES)\r\n ],\r\n exports:[RouterModule]\r\n})\r\nexport class ParkingMgmtRoutingModule { }","import { NO_ERRORS_SCHEMA, CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { ParkingMgmtRoutingModule } from './parking-mgmt-routing.module';\r\n\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { RbUiComponentsModule, FormFieldsModule, BreadcrumbsModule, ModalModule, TabPanelModule } from '@inst-iot/bosch-angular-ui-components';\r\nimport { MaterialModule } from '../_shared/modules/material.module';\r\n\r\nimport { ToastrModule, ToastContainerModule } from 'ngx-toastr';\r\n\r\nimport { ParkingMgmtComponent } from './parking-mgmt/parking-mgmt.component';\r\nimport { DisplayComponent } from './display/display.component';\r\nimport { DisplaysListComponent } from './displays-list/displays-list.component';\r\nimport { EditdisplayComponent } from './editdisplay/editdisplay.component';\r\nimport { EditgroupsComponent } from './editgroups/editgroups.component';\r\nimport { EditlotComponent } from './editlot/editlot.component';\r\nimport { EventHistoryComponent } from './event-history/event-history.component';\r\nimport { FloorInfoComponent } from './floor-info/floor-info.component';\r\nimport { HeatmapMapLayerComponent } from './heatmap-map-layer/heatmap-map-layer.component';\r\nimport { LotComponent } from './lot/lot.component';\r\nimport { LotChartsComponent } from './lot-charts/lot-charts.component';\r\nimport { MapDisplayComponent } from './map-display/map-display.component';\r\nimport { MapEditComponent } from './map-edit/map-edit.component';\r\nimport { MapLayerComponent } from './map-layer/map-layer.component';\r\nimport { MapLotComponent } from './map-lot/map-lot.component';\r\nimport { ParkingComponent } from './parking/parking.component';\r\nimport { SectionInfoComponent } from './section-info/section-info.component';\r\nimport { SensorStatusComponent } from './sensor-status/sensor-status.component';\r\nimport { UploadSensorsComponent } from './upload-sensors/upload-sensors.component';\r\n\r\nimport { AnalyticsComponent } from '../_shared/components/analytics-mgmt/analytics/analytics.component';\r\nimport { AnalyticsDailyComponent } from '../_shared/components/analytics-mgmt/analytics-daily/analytics-daily.component';\r\nimport { AnalyticsDurationsComponent } from '../_shared/components/analytics-mgmt/analytics-durations/analytics-durations.component';\r\nimport { AnalyticsWeeklyComponent } from '../_shared/components/analytics-mgmt/analytics-weekly/analytics-weekly.component';\r\nimport { AnalyticsDaysRangeComponent } from '../_shared/components/analytics-mgmt/analytics-days-range/analytics-days-range.component';\r\n\r\nimport { CalendarModule, DateAdapter } from 'angular-calendar';\r\nimport { adapterFactory } from 'angular-calendar/date-adapters/date-fns';\r\n\r\n@NgModule({\r\n declarations: [\r\n ParkingMgmtComponent,\r\n DisplayComponent,\r\n DisplaysListComponent,\r\n EditdisplayComponent,\r\n EditgroupsComponent,\r\n EditlotComponent,\r\n EventHistoryComponent,\r\n FloorInfoComponent,\r\n HeatmapMapLayerComponent,\r\n LotComponent,\r\n LotChartsComponent,\r\n MapDisplayComponent,\r\n MapLayerComponent,\r\n MapEditComponent,\r\n MapLotComponent,\r\n ParkingComponent,\r\n SectionInfoComponent,\r\n SensorStatusComponent,\r\n UploadSensorsComponent,\r\n AnalyticsComponent,\r\n AnalyticsDailyComponent,\r\n AnalyticsDurationsComponent,\r\n AnalyticsWeeklyComponent,\r\n AnalyticsDaysRangeComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ParkingMgmtRoutingModule,\r\n NgbModule,\r\n RbUiComponentsModule,\r\n FormFieldsModule,\r\n ModalModule,\r\n TabPanelModule,\r\n MaterialModule,\r\n ToastrModule.forRoot(),\r\n ToastContainerModule,\r\n CalendarModule.forRoot({\r\n provide: DateAdapter,\r\n useFactory: adapterFactory,\r\n }),\r\n ],\r\n schemas: [\r\n CUSTOM_ELEMENTS_SCHEMA,\r\n NO_ERRORS_SCHEMA\r\n ],\r\n})\r\nexport class ParkingMgmtModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-parking-mgmt',\r\n templateUrl: './parking-mgmt.component.html',\r\n styleUrls: ['./parking-mgmt.component.scss']\r\n})\r\nexport class ParkingMgmtComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { Component, HostListener, OnInit, AfterViewInit, ViewChild } from '@angular/core';\r\nimport { ActivatedRoute, NavigationStart, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport 'ol/ol.css';\r\nimport { Collection, Feature } from 'ol';\r\nimport Geometry from 'ol/geom/Geometry';\r\n\r\nimport { Parking } from 'src/app/_shared/models/parking';\r\nimport { DisplayGetModel } from 'src/app/_shared/models/display';\r\n\r\nimport { AuthenticationService } from 'src/app/_services/authentication.service';\r\nimport { ParkingService } from 'src/app/_services/parking.service';\r\nimport { DisplaysService } from 'src/app/_services/displays.service';\r\nimport { UserService } from 'src/app/_services/user.service';\r\nimport { StyleService } from 'src/app/_services/style.service';\r\n\r\n@Component({\r\n selector: 'app-parking',\r\n templateUrl: './parking.component.html',\r\n styleUrls: ['./parking.component.scss']\r\n})\r\n\r\nexport class ParkingComponent implements OnInit, AfterViewInit {\r\n @ViewChild('parkingdrawer', {static: false}) parkingdrawer: any;\r\n isExpanded: boolean;\r\n \r\n id: string;\r\n parking: Parking;\r\n sections: any[];\r\n areas: any[];\r\n view: string;\r\n sec: any;\r\n params: any;\r\n userRole: any;\r\n parkingSubscription: Subscription;\r\n allDisplays: string[] = [];\r\n \r\n //Variables to enable group management functions\r\n displaybutton: boolean = true;\r\n displayselector: boolean = false;\r\n \r\n \r\n selectedFeatures: Collection>;\r\n \r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private style: StyleService,\r\n private park: ParkingService,\r\n public displayService: DisplaysService,\r\n public userService: UserService,\r\n public auth: AuthenticationService) {\r\n this.parking = new Parking();\r\n }\r\n \r\n ngOnDestroy() {\r\n this.parkingSubscription.unsubscribe();\r\n }\r\n \r\n ngAfterViewInit() {\r\n if(window.innerWidth < 1024) {\r\n this.parkingdrawer.mode = 'over';\r\n this.parkingdrawer.disableClose = false;\r\n this.parkingdrawer.opened = false;\r\n this.isExpanded = true;\r\n } else {\r\n this.parkingdrawer.mode = 'side';\r\n this.parkingdrawer.disableClose = true;\r\n this.parkingdrawer.opened = true;\r\n this.isExpanded = false;\r\n }\r\n }\r\n \r\n public async ngOnInit() {\r\n this.parkingSubscription = this.park.currentParkingId.subscribe(parkId => this.id = parkId);\r\n this.id = this.route.snapshot.params.id;\r\n this.park.getParkingId(this.id);\r\n \r\n await this.userService.userCanEditByParkingID(this.id).then(\r\n (data) => {\r\n this.userRole = data['role'];\r\n },\r\n () => {\r\n this.userRole = null;\r\n }\r\n )\r\n \r\n await this.park.retriveParking(this.id);\r\n this.park.parking.subscribe(datapark => {\r\n this.parking = datapark;\r\n this.sections = this.parking.section;\r\n this.sections = this.sections.sort((a, b) => a.name - b.name);\r\n });\r\n \r\n this.style.computeMinHeight();\r\n \r\n this.route.queryParams.subscribe(par => {\r\n this.params = par;\r\n /* if (this.params.section == null && this.params.view !== 'floors' && this.params.view !== 'analytics' && this.params.view !== 'sensor-status') {\r\n this.router.navigate([], { queryParams: { section: this.sections[0].name }, queryParamsHandling: 'merge' });\r\n }\r\n if (this.params.view == null) {\r\n this.router.navigate([], { queryParams: { view: \"map\" }, queryParamsHandling: 'merge' });\r\n } */\r\n this.view = this.params.view;\r\n if(this.params.section == undefined) {\r\n this.sec = this.sections[0].name\r\n } else {\r\n this.sec = this.params.section;\r\n }\r\n setTimeout(()=>{this.style.computeMinHeight()},500);\r\n });\r\n \r\n this.router.events.subscribe((event: NavigationStart) => {\r\n if (event.navigationTrigger === 'popstate') {\r\n window.location.reload();\r\n }\r\n });\r\n\r\n this.parking.section.forEach((value)=>{\r\n value.display_id.forEach((displayId)=>{\r\n this.allDisplays.push(displayId);\r\n })\r\n })\r\n \r\n }\r\n \r\n show(): any {\r\n this.route.queryParams.subscribe(par => {\r\n return par;\r\n });\r\n }\r\n \r\n go(name) {\r\n const currentRoute = \"/parking/\" + this.parking.id;\r\n \r\n this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => {\r\n this.router.navigate([currentRoute], { queryParams: { view: 'list', section: name }, queryParamsHandling: 'merge'}); // navigate to same route\r\n });\r\n }\r\n \r\n goDisplay(name) {\r\n const currentRoute = \"/parking/\" + this.parking.id;\r\n \r\n this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => {\r\n this.router.navigate([currentRoute], { queryParams: { view: 'display-list', section: name }, queryParamsHandling: 'merge'}); // navigate to same route\r\n });\r\n }\r\n \r\n reloadMap(name) {\r\n const currentRoute = \"/parking/\" + this.parking.id;\r\n \r\n this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => {\r\n this.router.navigate([currentRoute], { queryParams: { view: 'map', section: name }}); // navigate to same route\r\n });\r\n }\r\n \r\n reloadHeatmap(name) {\r\n const currentRoute = \"/parking/\" + this.parking.id;\r\n \r\n this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => {\r\n this.router.navigate([currentRoute], { queryParams: { view: 'heatmap', section: name }, queryParamsHandling: 'merge'}); // navigate to same route\r\n });\r\n }\r\n \r\n loadEdit(name) {\r\n const currentRoute = \"/parking/\" + this.parking.id;\r\n \r\n this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => {\r\n this.router.navigate([currentRoute], { queryParams: { view: 'edit', section: name }, queryParamsHandling: 'merge'}); // navigate to same route\r\n });\r\n }\r\n \r\n @HostListener('window:resize', ['$event'])\r\n onResize(event?) {\r\n if(window.innerWidth < 1024) {\r\n this.parkingdrawer.mode = 'over';\r\n this.parkingdrawer.disableClose = false;\r\n this.parkingdrawer.opened = false;\r\n this.isExpanded = true;\r\n } else {\r\n this.parkingdrawer.mode = 'side';\r\n this.parkingdrawer.disableClose = true;\r\n this.parkingdrawer.opened = true;\r\n this.isExpanded = false;\r\n }\r\n }\r\n \r\n //Manage Parking Space Groups: enable functions in the sidenav\r\n displaygroupsmenu() {\r\n this.displaybutton = true;\r\n this.displayselector = false;\r\n }\r\n \r\n addItem(newItem: any) {\r\n this.selectedFeatures = newItem;\r\n }\r\n}","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Subscription, timer } from 'rxjs';\r\n\r\nimport { ImageInfo } from 'src/app/_shared/models/image';\r\n\r\nimport { ParkingService } from 'src/app/_services/parking.service';\r\nimport { ImagesService } from 'src/app/_services/images.service';\r\n\r\n@Component({\r\n selector: 'app-section-info',\r\n templateUrl: './section-info.component.html',\r\n styleUrls: ['./section-info.component.scss']\r\n})\r\nexport class SectionInfoComponent implements OnInit {\r\n \r\n id: any;\r\n parsubs: any;\r\n subs: Subscription;\r\n section: any;\r\n lots: any;\r\n info: ImageInfo;\r\n parkSpaces: any = [];\r\n list: any;\r\n parkspaces: any = [];\r\n parkinfo: any;\r\n displaymap: boolean = true;\r\n parkSpaceY: any;\r\n display: boolean = false;\r\n parkImagesId: string;\r\n @Input() parking_id: string\r\n @Input() sectionName: any;\r\n \r\n currentItemsToShow: any;\r\n pageSize: number = 36;\r\n initialParking: any;\r\n constructor(\r\n private park: ParkingService,\r\n public imagesService: ImagesService,\r\n private route: ActivatedRoute,\r\n public router: Router,\r\n ) {}\r\n \r\n ngOnDestroy() {\r\n console.log('unsuscribe polling');\r\n this.subs.unsubscribe();\r\n }\r\n \r\n async ngOnInit() {\r\n this.section = this.route.snapshot.queryParams.section;\r\n \r\n //Retrieve list of lots by parking_id and section\r\n await this.park.retriveAllInfo(this.parking_id).then(list => {\r\n this.list = list;\r\n this.parkspaces = this.list.section.filter(x => x.name == this.section);\r\n });\r\n \r\n //Retrieve list of lots by current section\r\n await this.park.retriveLotsInfo(this.parking_id).toPromise().then(info => {\r\n this.parkinfo = info as any;\r\n for (let i = 0; i < this.parkinfo.length; i++) {\r\n for ( let j = 0; j < this.parkspaces[0].lots.length; j++)\r\n {\r\n if(this.parkinfo[i].id == this.parkspaces[0].lots[j]) {\r\n this.parkSpaces.push(this.parkinfo[i]);\r\n }\r\n }\r\n }\r\n \r\n for(let i=0; i {\r\n console.log('polling lots and areas info');\r\n let sub3 = this.park.retriveLotsInfo(this.parking_id).subscribe((lots: any) => {\r\n this.lots = lots;\r\n });\r\n this.subs.add(sub3);\r\n });\r\n this.subs.add(sub2);\r\n });\r\n \r\n for(let j=0; j{\r\n this.parkSpaceY = this.parkSpaces.filter(x => x.id == this.initialParking)\r\n this.viewLotInfo(this.parkSpaceY[0]);\r\n }, 1000);\r\n } else {\r\n this.router.navigate([], { queryParams: { lot: this.parkSpaces[0].id }, queryParamsHandling: 'merge' });\r\n this.parkSpaceY = this.parkSpaces[0]\r\n this.viewLotInfo(this.parkSpaceY);\r\n }\r\n \r\n this.parkImagesId = this.parking_id + \"-\" + this.section;\r\n await this.imagesService.retriveImagesExists(this.parkImagesId)\r\n .then(\r\n (data) => {\r\n },\r\n (err) => {\r\n this.displaymap = false\r\n }\r\n ); \r\n }\r\n \r\n /* generateRandomNumberMaxMin_toNumber(max, min) {\r\n return (Math.trunc((Math.random() * (max - min) + 1)));\r\n }; */\r\n \r\n styleObject(parkSpace) {\r\n let res;\r\n res = { cursor: \"pointer\", border: \"1px solid black\", margin: \"5px 5px 0 0\", };\r\n res.backgroundColor = '#BFC0C2';\r\n \r\n if (this.lots !== undefined) {\r\n /* if (parkSpace.type === \"lot\") { */\r\n const lot = this.lots.filter(function (l) {\r\n return (l.id == parkSpace.id);\r\n });\r\n if (lot.length !== 0) {\r\n switch (lot[0].status) {\r\n case \"free\": {\r\n res.backgroundColor = '#70BF54';\r\n break;\r\n }\r\n case \"busy\": {\r\n res.backgroundColor = '#E11F26';\r\n break;\r\n } \r\n case \"alert\": {\r\n // res.backgroundColor='#FCAF17';\r\n res.animation = \"colorChange 1s infinite\";\r\n break;\r\n }\r\n default: {\r\n res.backgroundColor = '#BFC0C2';\r\n break;\r\n }\r\n }\r\n }\r\n /* } */\r\n return res;\r\n }\r\n }\r\n \r\n viewLotInfo(parkSpaceX) {\r\n this.display = true;\r\n this.parkSpaceY = parkSpaceX;\r\n }\r\n \r\n onPageChange($event) {\r\n this.currentItemsToShow = this.parkSpaces.slice($event.pageIndex*$event.pageSize, $event.pageIndex*$event.pageSize + $event.pageSize);\r\n }\r\n \r\n}","import { Component, Input, OnInit, ViewChild } from \"@angular/core\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { LiveAnnouncer } from \"@angular/cdk/a11y\";\r\n\r\nimport { Sensor } from \"src/app/_shared/models/sensor\";\r\nimport { LotGetModel } from \"src/app/_shared/models/lot\";\r\nimport { LotSensors } from \"src/app/_shared/models/lot-sensors\";\r\n\r\nimport { AuthenticationService } from \"src/app/_services/authentication.service\";\r\nimport { ParkingService } from \"src/app/_services/parking.service\";\r\nimport { SensorService } from \"src/app/_services/sensor.service\";\r\nimport { TypeService } from \"src/app/_services/type.service\";\r\nimport { LotService } from \"src/app/_services/lot.service\";\r\n\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort, Sort } from '@angular/material/sort';\r\n\r\nimport * as XLSX from 'xlsx';\r\n\r\n@Component({\r\n selector: \"app-sensor-status\",\r\n templateUrl: \"./sensor-status.component.html\",\r\n styleUrls: [\"./sensor-status.component.scss\"],\r\n})\r\nexport class SensorStatusComponent implements OnInit {\r\n \r\n @Input() parkingId: string;\r\n @Input() parkingName: string;\r\n features: any[];\r\n id: any;\r\n lots: any;\r\n display = false;\r\n LotsSensorsDataSource: any;\r\n status: string[];\r\n tags: string[];\r\n data: string;\r\n sensor: string;\r\n lotsSensors: LotSensors[];\r\n maxItemPaginator: Number = 100;\r\n isAdmin: boolean;\r\n displayedColumns: string[] = ['id', 'status', 'type', 'authlevel',\r\n 'timestamp','installation_timestamp', 'sensor_id', 'tags', 'firmware', 'rssi',\r\n 'battery_level'];\r\n dataSource = new MatTableDataSource();\r\n \r\n @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n lot: string;\r\n Lots: LotGetModel[];\r\n sensorsInfo: any;\r\n lotsInfo: any;\r\n \r\n constructor(\r\n public http: HttpClient,\r\n private parkingService: ParkingService,\r\n public auth: AuthenticationService,\r\n public types: TypeService,\r\n public sensorService: SensorService, // Injecting the Services\r\n public lotService: LotService,\r\n private _liveAnnouncer: LiveAnnouncer\r\n ) {\r\n this.features = [];\r\n }\r\n \r\n ngOnDestroy() {\r\n console.log(\"unsuscribe polling\");\r\n }\r\n \r\n async ngOnInit() {\r\n \r\n await this.parkingService.retriveLotsInfo(this.parkingId).subscribe((lots: any) => {\r\n this.lotsSensors = lots;\r\n this.lotsSensors = this.lotsSensors.filter(lot => lot.sensor_id !== '');\r\n if(lots.length < 100) {\r\n this.maxItemPaginator = lots.length;\r\n }\r\n });\r\n \r\n await this.sensorService.retriveSensorInfo(this.parkingId)\r\n .then((data: any) => {\r\n console.log(data);\r\n for (let i = 0; i < data.length; i++) {\r\n let index = this.lotsSensors.findIndex(\r\n (sensorElement) => sensorElement.sensor_id === data[i].id\r\n );\r\n if (index === -1) {\r\n // Handle sensor not assigned to any lot\r\n data[i].sensor_id = data[i].id;\r\n delete data[i].id;\r\n let lotNoSensor = data[i];\r\n this.lotsSensors.push(lotNoSensor);\r\n } else {\r\n this.lotsSensors[index].tags = data[i].tags;\r\n this.lotsSensors[index].firmware = data[i].firmware;\r\n this.lotsSensors[index].rssi = data[i].rssi;\r\n this.lotsSensors[index].battery_level = data[i].battery_level;\r\n }\r\n }\r\n for (let i=0; i {\r\n console.log('Result', result);\r\n this.csvRecords = result;\r\n },\r\n error: (error: NgxCSVParserError): void => {\r\n console.log('Error', error);\r\n }\r\n });\r\n \r\n }\r\n \r\n upload() {\r\n for(let i=0;i{\r\n console.log(res);\r\n if (res.ok) {\r\n console.log(\"Sensors successfully uploaded to the database\")\r\n this.confirmationMessage = this.sanitized.bypassSecurityTrustHtml('
Sensors successfully uploaded to the database
');\r\n } else {\r\n console.log(\"Upload Failed: Server replied with status message \"+ res.statusText)\r\n this.confirmationMessage = this.sanitized.bypassSecurityTrustHtml('
Upload to database failed: Server replied with status message '+ res.statusText + '. Check the dev_eui field is not empty.
');\r\n }\r\n });\r\n } else throw new Error('Upload Failed');\r\n }\r\n \r\n uploadOnEverynet() {\r\n let headers = new HttpHeaders();\r\n headers.append('Content-Type','application/json');\r\n let body = this.sensorsArray;\r\n if(body) {\r\n this.http.post(environment.apiUri + \"sensors/uploadOnEverynet\", body, { headers: headers, observe: 'response' })\r\n .subscribe(res =>{\r\n console.log(res);\r\n if (res.ok) {\r\n console.log(\"Sensors successfully uploaded to the Everynet\")\r\n this.confirmationMessageEverynet = this.sanitized.bypassSecurityTrustHtml('
Sensors successfully uploaded to the Everynet
');\r\n } else {\r\n console.log(\"Upload Failed: Server replied with status message \"+ res.statusText)\r\n this.confirmationMessageEverynet = this.sanitized.bypassSecurityTrustHtml('
Upload to Everynet Failed: Server replied with status message '+ res.statusText + '
');\r\n }\r\n });\r\n } else throw new Error('Upload Failed');\r\n }\r\n \r\n reset() {\r\n this.csvUploaded = false;\r\n }\r\n}","export const environment = {\r\n production: false,\r\n appUri:\"https://smart-parking-app-d.bosch.tech/\",\r\n apiUri:\"https://smart-parking-app-d.bosch.tech/api/\",\r\n\r\n ciamIssuer: 'https://stage.singlekey-id.com/auth',\r\n ciamClientId: 'BFA546D2-D3B6-446C-95DE-E9B70D5A5637',\r\n ciamScope: 'openid email profile',\r\n ciamClientSecret: 'vt-nKZgrQiy-LuoT000DDaz11xRqepL7JROtuz28',\r\n ciamAccountPage:\"https://stage.singlekey-id.com/myprofile/\",\r\n ciamChangeEmailUri:\"https://qa.identity-myprofile.bosch.tech/ui/web/changeemail\",\r\n ciamDeregistrationUri:\"https://stage.singlekey-id.com/auth/api/v1/UserDeletion\",\r\n ciamRegistrationUri:\"https://qa.identity-myprofile.bosch.tech/ui/web/registration\",\r\n ciamChangePassword:\"https://qa.identity-myprofile.bosch.tech/ui/web/forgotpassword\",\r\n skidStyleId: {\"style_id\": \"c_bsch_sp\"},\r\n\r\n azureIssuer: 'https://login.microsoftonline.com/0ae51e19-07c8-4e4b-bb6d-648ee58410f4/v2.0',\r\n azureClientId: '90018714-a67c-4581-bdff-14874c77b261',\r\n azureScope: 'openid email profile api://90018714-a67c-4581-bdff-14874c77b261/api.user.read',\r\n azureSecretCode: '6nM8Q~7.AkRGuzYcrmrXNzwp9l2x2OQM7yupIbVY',\r\n azureLoginParam: \"?response_type=code&scope=openid email profile api://90018714-a67c-4581-bdff-14874c77b261/api.user.read&client_id=90018714-a67c-4581-bdff-14874c77b261&code_challenge_method=S256&redirect_uri=https://smart-parking-app-d.bosch.tech\",\r\n\r\n redirectUri: 'https://smart-parking-app-d.bosch.tech/home',\r\n //redirectUri: 'http://localhost:4200/home',\r\n responseType: 'code',\r\n postLogoutRedirectUri: 'https://smart-parking-app-d.bosch.tech/login',\r\n\r\n};\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n"],"names":["Injectable","Router","BehaviorSubject","Subject","jwt_decode","UserService","JwksValidationHandler","OAuthService","OAuthStorage","authConfigAAD","authConfigSKID","boschMailPattern","AuthenticationService","constructor","userService","authStorage","oauthService","router","JSON","parse","sessionStorage","getItem","homeComponent","asObservable","user","callLoginOrRegister","next","configureAuthentication","issuer","configure","setStorage","tokenValidationHandler","loadDiscoveryDocument","authenticationFlow","setAuthConfiguration","loadDiscoveryDocumentAndTryLogin","then","hasValidAccessToken","initCodeFlow","mail","catch","err","console","log","localStorage","navigate","pattern","RegExp","test","setItem","doLogin","status","getUserOrRegister","href","window","open","removeItem","getToken","token","id_token","access_token","expires_at","token_type","refresh_token","retrieveUser","data","stringify","error","registerUser","decodedToken","userName","addNewUser","getUser","value","logout","logOut","removeToken","isAuthenticated","isAdmin","checkIsAdmin","isOwner","checkIsOwner","generateStateParameter","state","generateRandomString","generateNonceParameter","nonce","length","randomChars","result","i","charAt","Math","floor","random","providedIn","Component","Input","ActivatedRoute","debounceTime","distinctUntilChanged","AnalyticsService","Chart","DateTime","require","AnalyticsDailyComponent","analytics","route","minDate","Date","maxDate","maxCheckDate","yesterday","dailyDataOccupancyObj","dayOccupancyRate","mapLoaded","showError","groupList","parkingList","dayOccupancyRateTime","ngOnInit","_this","_asyncToGenerator","createChart","setFullYear","myGroup","get","getFullYear","getMonth","getDate","dataComputation","valueChanges","pipe","subscribe","change","date","endDate","selected","ctxDaily","document","getElementById","dailyChartOccupancy","type","labels","datasets","label","backgroundColor","borderColor","options","responsive","maintainAspectRatio","scales","x","ticks","autoSkip","y","title","display","text","min","max","stepSize","plugins","legend","position","genericDate","_this2","computeChart","startDayDate","fromISO","toISOString","setZone","plus","days","toUTC","startOf","toISO","endDayDate","parkings","undefined","push","id","lotsGroups","name","parkingId","snapshot","params","getDailyOccupancy","body","indexOf","groupId","getDailyOccupancyGroup","offset","fromJSDate","occupanciesObj","occupancies","reduce","r","a","start","hours","toObject","hour","occupanciesArray","Object","keys","map","index","dayTotalOccupancy","j","occupancy_rate","each_element","Number","toFixed","hourRange","timeEnd","timeStart","computeTimeRange","update","newlabel","newdataset","__decorate","selector","template","__NG_CLI_RESOURCE__0","AnalyticsDaysRangeComponent","daysrangeDataOccupancyObj","daysrangeOccupancyRate","daysrangeDayRange","daysrangeDataOccupancyTimeObj","daysrangeChartOccupancy","resize","offsetWidth","offsetHeight","ctxDaysRange","animation","startDaysRangeDate","endDaysRangeDate","getWeeklyOccupancy","getWeeklyOccupancyGroup","toFormat","newdatasetdaysrange","newdatasetsdaysrange","day","occupancyRate","AnalyticsDurationsComponent","dataset","database","count1","count2","count3","count4","count5","count6","dailyDataDurationsObj","dailyChartDurations","stacked","getDailyDuration","durations","getDailyDurationGroup","minutes","AnalyticsWeeklyComponent","weeklyDataOccupancyObj","weekOccupancyRate","weekDayRange","weeklyDataOccupancyTimeObj","weeklyChartOccupancy","ctxWeekly","startWeekDate","minus","endWeekDate","newdatasetweek","newdatasetsweek","ViewChild","UntypedFormControl","UntypedFormGroup","ParkingService","LotsGroupsService","jsPDF","AnalyticsComponent","parkingService","groupsService","minute","setDate","minCheckDate","retrieveGroupsUser","group","retriveParkingsInfo","paramsId","displayselect","displayDownload","setValue","offsetNameShort","offsetNameLong","offsetName","checkDay","ngAfterViewInit","selectTime","childHourly","childDaily","childWeekly","download","startDate","today","dd","mm","yyyy","hourlyOccupancy","dailyOccupancy","weeklyOccupancy","dailyDurations","hourlyOccupancyImage","toDataURL","dailyOccupancyImage","weeklyOccupancyImage","dailyDurationsImage","pdf","pdfWidth","internal","pageSize","getWidth","pdfHeight","getHeight","margin","imgPropsHourly","getImageProperties","pdfHeightHourly","height","width","imgPropsDaily","pdfHeightDaily","imgPropsWeekly","pdfHeightWeekly","imgPropsDurations","pdfHeightDurations","setFontSize","addImage","toDateString","addPage","save","setPreviousDay","actualDay","previousDay","toJSDate","actualEndDay","previousEndDay","setNextDay","nextDay","nextEndDay","ts","setAttribute","removeAttribute","args","static","HttpClient","Location","environment","LayoutComponent","auth","loc","http","username","iss","client","groups","resourceMgmt","timestamp","lastResourceAccessed","responseStatus","badRequests","accepted","ngOnDestroy","parkingSubscription","unsubscribe","currentParkingId","parkId","userCanEditByParkingID","userRole","queryParams","par","view","userCanEdit","apiUri","getElementsByClassName","innerHTML","backOnClick","back","onClickLogout","sectionParam","section","ParkingDropdownComponent","displayList","setTimeout","go","currentRoute","path","location","pathname","sec","forEach","display_id","navigateByUrl","skipLocationChange","queryParamsHandling","AppComponent","Pipe","HttpHeaders","SecurePipe","transform","src","headers","imageBlob","responseType","toPromise","reader","FileReader","Promise","resolve","reject","onloadend","readAsDataURL","ModalService","StyleService","LoginComponent","style","modalService","showClose","escClose","backdropClose","queryParamMap","modalContent","computeLoginHeight","updateStatesMail","states","displayLogin","modelChangeFn","displayConfirm","confirmTerms","updateTerms","onClickRegister","includes","azureLoginUri","azureLoginParam","ciamRegistrationUri","emit","onClickLogin","ImagesService","BranchComponent","park","imagesService","parkImagesId","retriveParking","parking","retriveImagesExists","imageExists","Output","EventEmitter","Parking","TypeService","ToastrService","EditParkComponent","t","toastrService","newSectionModel","lots","retriveParkingSub","putParking","bodyUpdate","address","coordinates","updateParking","toast","reloadPage","confirmAddSection","sectionName","updateStatesRemoveSection","list","filter","key","confirmDeleteSection","element","splice","closePopover","closePop","message","success","positionClass","progressBar","closeButton","tapToDismiss","timeOut","warning","info","ViewChildren","HostListener","UntypedFormBuilder","Map","View","VectorLayer","OSM","olProj","TileLayer","Feature","Point","VectorSource","Circle","Fill","Style","Text","Stroke","Zoom","Draw","Translate","Graticule","Polygon","ModalDirective","pointFeatureRadius","EditstreetmapComponent","form","types","tool","userCanEditStreetmap","displayEditStreetmap","registerAllActions","registerSingleAction","registerModalActions","parkingIdForm","parkingNameForm","parkingAddressForm","parkingLocationXForm","parkingLocationYForm","parkingSectionNameForm","displayConfirmAdd","addParkingForm","ovLevel","center","features","translate","drawPolygon","source","vectorSource","maxLocationX","apply","o","minLocationX","maxLocationY","minLocationY","pos","singleFeature","geometry","fromLonLat","description","park_id","set","n_lot_free","vectorLayer","styleFunction","mapwidth","maxPixelX","clientWidth","minPixelX","pixelDiff","longDiff","getMinZoom","scaleFactor","ceil","LOG2E","computedZoom","target","layers","strokeStyle","color","showLabels","wrapX","targetSize","controls","className","overlays","zoom","isNaN","isFinite","computeHeight","updateSize","changes","checkEmpty","on","event","feature","forEachFeatureAtPixel","pixel","featGeometry","getGeometry","popOverElements","ngbPopoverInfo","toArray","popOverComponent","find","content","elementRef","nativeElement","previousSibling","buttonState","remID","removeFeature","updateEvent","newParkName","parking_id","cursor","getArray","toLonLat","coordinate","values_","oldLatitude","oldLongitude","newEvent","newLatitude","newLongitude","newPolygonFeature","addFeature","setStyle","confirmAddNewParking","newParkingBody","addNewParking","toolChange","val","removeInteraction","drawPolygonFeatures","addInteraction","dragAndDropFeatures","undoEvent","lastAction","pop","geom","setCoordinates","undoAllEvent","handleKeyboardEvent","modifyDot","deleteDot","saveButton","slice","discardChanges","item","saveModification","deleteParking","bodyModify","eventHandlerFunction","valueEmitted","close","iconStyle","stroke","fill","parkingName","textLabel","font","offsetY","overflow","parkingColor","image","radius","read","timer","ParkingDetComponent","parsubs","retriveParkingDet","getParkingDet","n_lot","_id","statusStyle","res","toString","ElementRef","Cluster","olExtent","ZoomToExtent","StreetmapComponent","parking_info","getParkingId","sections","firstsection","distance","createElement","zoomControl","extent","getView","calculateExtent","addControl","once","feat","zoomCluster","createEmpty","extend","getExtent","fit","getSize","setZoom","getZoom","parkID","popupComponent","setProperty","pointerEvent","originalEvent","pixelXY","getPixelFromCoordinate","getCoordinates","_elementRef","sum","textFill","textStroke","textParkingFree","iconStyle2","DomSanitizer","UploadComponent","sanitized","selectedFile","accessableParkings","parkingSelected","isUserAllowedToUpload","parkingNameAdd","sectionNameAdd","radiusLotAdd","radiusAreaAdd","radiusLotMobileAdd","clusterDistanceAdd","imageId","disableUpload","addParkingImageForm","entries","onFileSelected","addNewImage","formData","FormData","blob","Blob","append","uploadImage","ok","confirmationMessage","bypassSecurityTrustHtml","statusText","Error","HomeComponent","homeComponentCalled$","loginOrRegister","modalNewUsers","trigger","animate","transition","keyframes","DisplaysService","DisplayComponent","displayService","viewmap","isOpen","displaySubscription","ngOnChanges","retrieveDisplay","animations","opacity","DisplaysListComponent","displaymap","allDisplays","displays","displaysList","retrieveDisplayByParkingId","indexStart","lastIndexOf","sectionNameWithDash","lastDash","substr","lotNumber","replace","concat","code","initialDisplay","viewDisplayInfo","displayName","retrieveLotsDisplay","styleObjectDisplay","border","dis","l","parkSpaceX","EditdisplayComponent","lotsList","lotsDisplay","associatedLots","selectedStatesDisplay","updateStatesDisplay","removeParkingSpace","lot","confirmUpdateDisplay","updateBody","url","layout","password","expirationDate","sessionId","pubStatus","loginStatus","mac","btia","updateDisplay","confirmUpdateLots","updateDisplayLots","EditgroupsComponent","createGroupForm","groupNameForm","updateGroupForm","groupNameUpdateForm","groupNameUpdatedForm","deleteGroupForm","groupNameDeleteForm","parkingspaces","checkName","checkEmptyUpdate","checkEmptyDelete","selectedNewGroup","selectedStatesNewGroup","selectedItem","selectedFeatures","updateStatesNewGroup","confirmNewGroup","createGroup","removeNewGroup","displayButtonCreate","setErrors","invalid","updateGroups","idGroupUpdate","selectedStatesUpdateGroup","updateStatesUpdateGroup","confirmUpdateGroup","updateGroup","removeUpdateGroup","displayButtonUpdate","deleteGroup","confirmDeleteGroup","idGroupDelete","displayButtonDelete","LotGetModel","LotService","EditlotComponent","lotService","disabledMultiSelect","newItemEvent","retriveLotById","selectedStatesGroup","initialGroups","updateStatesGroup","putLot","bodyModel","area","authlevel","sensorId","sensor_id","configStatus","config_status","booked","put","statusTStyle","groupUpdate","k","some","e","CalendarView","isSameDay","isSameMonth","colors","busy","primary","secondary","alert","EventHistoryComponent","Week","viewDate","refresh","events","activeDayIsOpen","setMonth","end","getLotDuration","lotId","durationObj","getAlerts","alertObj","dayClicked","setView","closeOpenMonthViewDay","ParkingStatus","FloorInfoComponent","sectionInfo","retriveSection","getSection","changeColor","Projection","Heatmap","HeatmapLayer","ImageLayer","Static","getCenter","lot_type","HeatmapMapLayerComponent","lotAnalytics","fb","styleObject","dot","nFreeLots","nNotStatusLots","nAlertStatusLots","nBusyLots","nLotsLabel","lotColor","lotStrokeColor","strokeWidth","colorText","colorTextStroke","retriveImages","retriveImagesInfo","imagesInfo","extentHeight","y_multiplier","extentWidth","x_multiplier","projection","units","vector","blur","gradient","weight","saturation","sourceStaticImage","imageLoadFunction","addEventListener","getImage","bind","imageExtent","maxZoom","showFullExtent","addLayer","getImageExtent","_ref","dot_coordinate","getLotOccupancy","addFeatures","_x","arguments","generateRandomLastUpdate","sY","sM","sD","eY","eM","eD","startHour","endHour","setHours","toUTCString","generateRandomNumberMaxMin","trunc","generateRandomNumberMaxMin_toNumber","addNow","time","getTime","LotChartsComponent","dayBefore","dayEndBefore","showErrorHourly","showErrorDaily","showErrorWeekly","meridian","hourStep","minuteStep","dateSelected","dayStep","weekStep","daysrangeoccupancies","daysrangeoccupancyRate","LotComponent","selectedType","average_stopover_time_hours","average_stopover_time_minutes","retriveLot","getLot","average_stopover_time","toLocaleString","Vector","RegularShape","MapDisplayComponent","displayColor","displayStrokeColor","textDisplayCode","iconStyleDisplay","SQRT2","radius2","points","angle","scale","isEmpty","clear","setCenter","computeHeightList","of","throwError","DragBox","DragPan","Select","mouseOnly","noModifierKeys","platformModifierKeyOnly","ImageInfo","LotPutModel","DisplayPutModel","MapEditComponent","newItemEventDisplay","pointFeatureOffset","moveActionArray","copiedFeature","sectionNameForm","lotNumberForm","letterNameForm","letterName","parkingIdDisplayForm","sectionNameDisplayForm","letterNameDisplayForm","letterNameDisplay","displayNumberDisplayForm","newDotModel","modalReference","displayEmpty","displayEmptyConfirm","displaybutton","displayselector","dotNameRepositionForm","displayReposition","filteredDotList","typeList","typeNameForm","displayConfirmReplaceImage","radiusLot","radiusArea","radiusLotMobile","clusterDistance","fontSize","lotTypeLabel","addDotForm","addDisplayForm","repositionForm","typeGroupForm","getType","select","removeLayer","vectorLayerDisplay","graticule","vectorSourceDisplay","axisStyle","AxisLayer","setMap","setZIndex","progressiveNum","generateDotId","computeAddForm","computeAddDisplayForm","repoDot","repositionDot","lotID","displayID","ngbPopoverInfoDisplay","deleteEvent","dotName","selectDotToMove","isLocated","newFeature","newLotName","round","checkExistAdd","lastFeature","generateDisplayNumber","newDisplayName","newDisplayFeature","featureType","checkExistDisplayAdd","checkEmptyDisplay","getFeatures","addNewItem","addNewItemDisplay","dragBox","condition","dragPan","forEachFeatureIntersectingExtent","checkExist","checkExistDisplay","searchFunc","search","computeMinHeight","countAdd","countDelete","nameDisplay","alignHorizontally","onlyCoordinate","flatCoordinates","b","avg","alignVertically","distributeHorizontally","sort","compareX","first","last","diff","distributeVertically","compareY","numberId","split","changeMouse","deleted","deleteFromFeature","oldCoords","onKeyPress","ctrlKey","metaKey","getLength","nameFeature","xCoord","yCoord","xCoordClick","yCoordClick","pint","setGeometry","addDot","disable","updateForm","updateDisplayForm","newDotClass","updateDotModel","updateDotClass","updateDisplayBody","newDisplayBody","createDisplay","addNewLot","deleteLot","repositionedLot","lot_coordinate","movedDisplay","deletedDisplay","deleteDisplay","updateLot","deleteADD","replaceImage","radius_lot","radius_area","radius_lot_mobile","cluster_distance","confirmationMessageReplaceImage","onReplaceImageChange","confirmReplaceImage","updateImage","addItem","newItem","findIndex","addItemDisplay","displaygroups","reposition","defaultValue","moveAllDot","translateAll","selectValue","deleteAllDot","eventHandlerFunctionDisplay","selectedStatesType","selectedItemType","updateStatesType","selectedListType","changeType","_this3","updateLotType","MapLayerComponent","radiusScaleOnZoom","displaysSub","showDisplay","displaysFeatures","subs","viewsubs","originalFeatureRadius","setWorldExtent","lot_info","retriveLotsInfo","singleLot","display_coordinate","display_info","singleDisplay","display_name","popupComponentDisplay","pointerEventDisplay","pixelXYDisplay","popOverElementsDisplay","ngbPopoverDisplayInfo","popOverComponentDisplay","lot_name","hideDisplay","$event","enableDisplay","checked","MapLotComponent","textBaseline","lotid","ParkingComponent","innerWidth","parkingdrawer","mode","disableClose","opened","isExpanded","datapark","navigationTrigger","reload","displayId","show","goDisplay","reloadMap","reloadHeatmap","loadEdit","onResize","displaygroupsmenu","SectionInfoComponent","retriveAllInfo","parkspaces","parkinfo","parkSpaces","sub2","sub3","add","currentItemsToShow","initialParking","parkSpaceY","viewLotInfo","parkSpace","onPageChange","pageIndex","LiveAnnouncer","SensorService","MatTableDataSource","MatPaginator","MatSort","XLSX","SensorStatusComponent","sensorService","_liveAnnouncer","maxItemPaginator","displayedColumns","dataSource","lotsSensors","retriveSensorInfo","sensorElement","lotNoSensor","tags","firmware","rssi","battery_level","partner_id","has_access","temperature","datarate","app_eui","app_key","temp_requested","datarate_set","join_timestamp","sum_temperature","sum_battery_level","temperature_measurements","battery_level_measurements","temperature_transaction_count","battery_level_transaction_count","counter_up","LotsSensorsDataSource","paginator","applyFilter","filterValue","trim","toLowerCase","firstPage","exportAsExcel","ws","utils","json_to_sheet","header","w","v","wb","book_new","book_append_sheet","writeFile"],"sourceRoot":"webpack:///","x_google_ignoreList":[]}