{"version":3,"sources":["./src/app/services/fav.service.ts","./src/app/details-view-day-list-tab/details-view-day-list-tab.component.ts","./src/app/details-view-day-list-tab/details-view-day-list-tab.component.html","./src/app/models/generated/Enum/Region.generated.ts","./src/app/weather-hours/weather-hours.component.html","./src/app/weather-hours/weather-hours.component.ts","./src/app/details-view-day-tab/details-view-day-tab.component.ts","./src/app/details-view-day-tab/details-view-day-tab.component.html","./src/environments/environment.ts","./src/app/store/map.actions.ts","./src/app/store/details.actions.ts","./src/app/weather-table/weather-table.component.ts","./src/app/weather-table/weather-table.component.html","./src/app/ng-zorro.module.ts","./src/app/weather-map/weather-map.component.ts","./src/app/weather-map/weather-map.component.html","./src/app/explore/explore.component.ts","./src/app/explore/explore.component.html","./node_modules/moment/locale sync ^\\.\\/.*$","./src/app/app.component.ts","./src/app/app.component.html","./src/app/place-quick-details/place-quick-details.component.ts","./src/app/place-quick-details/place-quick-details.component.html","./src/app/app.module.ts","./src/app/store/map.reducer.ts","./src/app/loader/loader.component.html","./src/app/loader/loader.component.ts","./src/app/models/Constants.ts","./src/app/details-view/details-view.component.ts","./src/app/details-view/details-view.component.html","./src/app/store/details.reducer.ts","./src/app/store/common-filters.reducer.ts","./src/app/services/safe.pipe.ts","./src/app/filters-window/filters-window.component.ts","./src/app/filters-window/filters-window.component.html","./src/app/models/TodayTomorrowEnum.ts","./src/app/services/exploration.service.ts","./src/app/app-routing.module.ts","./src/main.ts","./src/app/store/common-filters.actions.ts","./$_lazy_route_resource lazy namespace object"],"names":[],"mappings":"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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AAC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","file":"main.js","sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { Place } from '../models/generated/Place.generated';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FavService {\r\n\r\n private favsDefault: Place[] = [ {name: \"Riga\", coords: { lat: 56.9496487, long: 24.1051865 }} ]\r\n\r\n public requestingRefresh: ReplaySubject = new ReplaySubject();\r\n\r\n public getFavorites(): Place[] {\r\n var favsJson = localStorage.getItem('favs');\r\n let favs: Place[] | null = favsJson !== null ? JSON.parse(favsJson) : null;\r\n\r\n if (favs === null) {\r\n localStorage.setItem('favs', JSON.stringify(this.favsDefault));\r\n }\r\n\r\n return favs ?? this.favsDefault;\r\n }\r\n\r\n public addFavorite(place: Place): void {\r\n let favs = this.getFavorites();\r\n\r\n favs = favs.concat(place)\r\n\r\n localStorage.setItem('favs', JSON.stringify(favs));\r\n this.requestingRefresh.next(true);\r\n }\r\n\r\n public removeFavorite(place: Place): void {\r\n let favs = this.getFavorites();\r\n\r\n var toRemoveIndex = favs.findIndex(element => element.name === place.name \r\n && element.coords.lat === place.coords.lat && element.coords.long === place.coords.long);\r\n\r\n if (toRemoveIndex != -1) {\r\n favs.splice(toRemoveIndex, 1);\r\n }\r\n\r\n localStorage.setItem('favs', JSON.stringify(favs));\r\n this.requestingRefresh.next(true);\r\n }\r\n\r\n public setAllFavorites(allFavs: Place[]): void {\r\n localStorage.setItem(\"favs\", JSON.stringify(allFavs));\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { WeatherForecastPlaceFullDetail } from '../models/generated/WeatherForecastPlaceFullDetail.generated';\r\n\r\n@Component({\r\n selector: 'details-view-day-list-tab',\r\n templateUrl: './details-view-day-list-tab.component.html',\r\n styleUrls: ['./details-view-day-list-tab.component.css']\r\n})\r\nexport class DetailsViewDayListTabComponent implements OnInit {\r\n\r\n @Input() fullDetails!: WeatherForecastPlaceFullDetail;\r\n \r\n @Output() load15day = new EventEmitter();\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n // Example function call\r\n reloadMoreDay(): void {\r\n // Emit the load15day event\r\n this.load15day.emit();\r\n }\r\n\r\n}\r\n","
\r\n
\r\n {{ i == 0 ? \"Today\" : dayForecast.dateDisplayText }}
\r\n {{ dayForecast.longDescription }}, {{ dayForecast.windSpeed | number: '1.0-0' }} km/h\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{ dayForecast.temperatureDay | number: '1.0-0' }}°
\r\n {{ dayForecast.temperatureMin | number: '1.0-0' }}°\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Wind
\r\n Humidity
\r\n 3\">Ultraviolet
\r\n Sunrise/sunset\r\n
\r\n
\r\n {{ dayForecast.windSpeed | number: '1.0-0' }} km/h {{ dayForecast.windSpeedDirectionDisplayName }}\r\n ({{ dayForecast.windSpeedGust | number: '1.0-0' }} km/h max)
\r\n {{ dayForecast.humidity }}%
\r\n 3\">{{ dayForecast.ultravioletIndex | number: '1.0-0' }} / 11
\r\n {{ dayForecast.sunriseDisplayText }}, {{ dayForecast.sunsetDisplayText }}\r\n
\r\n
\r\n\r\n 0; else nonHourlySummary\">\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n Cloud cover %
\r\n Precipitation chance %\r\n
\r\n
\r\n {{ dayForecast.clouds * 100 | number: '1.0-0' }}%
\r\n {{ dayForecast.chanceOfPrecipitation * 100 | number: '1.0-0' }}% ({{ dayForecast.precipitationMm | number: \"1.0-2\" }} mm)\r\n
\r\n
\r\n\r\n
\r\n
\r\n Day: {{ dayForecast.temperatureDay | number: '1.0-0' }}° (feels {{ dayForecast.feelTemperatureDay | number: '1.0-0' }}°)
\r\n Morning: {{ dayForecast.temperatureMorning | number: '1.0-0' }}° (feels {{ dayForecast.temperatureMorning | number: '1.0-0' }}°)
\r\n Min: {{ dayForecast.temperatureMin | number: '1.0-0' }}°\r\n
\r\n
\r\n Night: {{ dayForecast.temperatureNight | number: '1.0-0' }}° (feels {{ dayForecast.feelTemperatureNight | number: '1.0-0' }}°)
\r\n Evening: {{ dayForecast.temperatureEvening | number: '1.0-0' }}° (feels {{ dayForecast.temperatureEvening | number: '1.0-0' }}°)
\r\n Max: {{ dayForecast.temperatureMax | number: '1.0-0' }}°\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n\r\n \r\n
","// ------------------------------------------------------------------------------\r\n// \r\n// This file was generated by TypeScript Definition Generator v2.2.8.0\r\n// \r\n// ------------------------------------------------------------------------------\r\n/** \r\n * In the future website should work worldwide, for MVP we split in regions\r\n */\r\nexport enum Region {\r\n\tMadeira,\r\n\tLatvia,\r\n\tLaPalma,\r\n}\r\n","
\r\n
\r\n \r\n {{hour.temperature| number: '1.0-0'}}°\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n {{hour.dateTimeDisplayText}}\r\n
\r\n\r\n \r\n
\r\n {{(hour.windSpeed | number: '1.0-0')}} km/h {{ hour.windSpeedDirectionDisplayName }}\r\n roundUp(hour.windSpeed) + 1\">\r\n
\r\n {{( hour.windSpeedGust | number: '1.0-0')}}  max\r\n
\r\n
\r\n \r\n \r\n 0\" class=\"rain\">\r\n
\r\n 0 && hour.rain1h <= 0.8\" class=\"rain\">\r\n \"rain\"\r\n\r\n \r\n\r\n 0.8 && hour.rainVolumeMm && hour.rainVolumeMm > 0\" class=\"rain\">\r\n \"rain\"\r\n \r\n\r\n 0.8 && hour.snowVolumeMm && hour.snowVolumeMm > 0\" class=\"rain\">\r\n \"rain\"\r\n \r\n {{ hour.rain1h * 100 | number: \"1.0-0\" }}%\r\n\r\n 0\">\r\n
{{ hour.rainVolumeMm | number: \"1.0-2\" }}mm\r\n
\r\n\r\n 0) && (hour.snowVolumeMm && hour.snowVolumeMm > 0)\">\r\n
{{ hour.snowVolumeMm | number: \"1.0-2\" }}mm\r\n
\r\n\r\n 0)\"> \r\n
<.01mm\r\n
\r\n\r\n \r\n
\r\n
\r\n
","import { Component, Input, OnInit } from '@angular/core';\r\nimport { WeatherForecastHourGroup } from '../models/generated/WeatherForecastHourGroup.generated';\r\n\r\n@Component({\r\n selector: 'weather-hours',\r\n templateUrl: './weather-hours.component.html',\r\n styleUrls: ['./weather-hours.component.css']\r\n})\r\nexport class WeatherHoursComponent implements OnInit {\r\n @Input() hourGroup!: WeatherForecastHourGroup;\r\n @Input() showWindDirection: boolean = false;\r\n @Input() horizontal: boolean = false;\r\n @Input() compact: boolean = false;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n roundUp(value: number): number {\r\n return Math.ceil(value);\r\n }\r\n\r\n getTemperatureStyling(temperature: number): string {\r\n if (temperature > 27) {\r\n return 'hot;'\r\n }\r\n else if (temperature > 18) {\r\n return 'comfortable';\r\n }\r\n else if (temperature > 14) {\r\n return 'almost-comfortable'\r\n }\r\n else if (temperature >= 10) {\r\n return 'little-cold';\r\n }\r\n else {\r\n return 'cold;'\r\n }\r\n }\r\n}\r\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\r\nimport { WeatherForecastHourGroup } from '../models/generated/WeatherForecastHourGroup.generated';\r\nimport { WeatherForecastPlaceFullDetail } from '../models/generated/WeatherForecastPlaceFullDetail.generated';\r\nimport { TodayTomorrow } from '../models/TodayTomorrowEnum';\r\n\r\n@Component({\r\n selector: 'details-view-day-tab',\r\n templateUrl: './details-view-day-tab.component.html',\r\n styleUrls: ['./details-view-day-tab.component.css']\r\n})\r\nexport class DetailsViewDayTabComponent implements OnInit, OnChanges {\r\n readonly TodayTomorrow = TodayTomorrow;\r\n\r\n @Input() fullDetails!: WeatherForecastPlaceFullDetail;\r\n @Input() day!: TodayTomorrow;\r\n \r\n hourGroup!: WeatherForecastHourGroup;\r\n mainTemperature!: number;\r\n mainIconSrc!: string;\r\n mainFeelTemperature!: number;\r\n mainLongDescription!: string;\r\n sunrise!: string;\r\n sunset!: string;\r\n ultravioletIndex!: number;\r\n humidty!: number;\r\n\r\n constructor() { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.setInternalModel();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.setInternalModel();\r\n }\r\n\r\n setInternalModel() {\r\n if (this.day == TodayTomorrow.Today) {\r\n this.hourGroup = this.fullDetails.today.hourGroup;\r\n this.mainTemperature = this.fullDetails.today.hourGroup.hours[0].temperature;\r\n this.mainIconSrc = this.fullDetails.today.hourGroup.hours[0].iconFullUrl;\r\n this.mainFeelTemperature = this.fullDetails.today.hourGroup.hours[0].feelTemperature;\r\n this.mainLongDescription = this.fullDetails.today.hourGroup.hours[0].longDescription;\r\n this.sunrise = this.fullDetails.today.sunriseDisplayText;\r\n this.sunset = this.fullDetails.today.sunsetDisplayText;\r\n this.humidty = this.fullDetails.today.hourGroup.hours[0].humidity;\r\n this.ultravioletIndex = this.fullDetails.today.hourGroup.hours[0].ultravioletIndex;\r\n }\r\n else {\r\n this.hourGroup = this.fullDetails.tomorrow.hourGroup;\r\n this.mainTemperature = this.fullDetails.forecast8DaysMinimal![1].temperatureDay;\r\n this.mainIconSrc = this.fullDetails.forecast8DaysMinimal![1].iconFullUrl;\r\n this.mainFeelTemperature = this.fullDetails.forecast8DaysMinimal![1].feelTemperatureDay;\r\n this.mainLongDescription = this.fullDetails.forecast8DaysMinimal![1].longDescription;\r\n this.sunrise = this.fullDetails.tomorrow.sunriseDisplayText;\r\n this.sunset = this.fullDetails.tomorrow.sunsetDisplayText;\r\n this.humidty = this.fullDetails.forecast8DaysMinimal![1].humidity;\r\n this.ultravioletIndex = this.fullDetails.forecast8DaysMinimal![1].ultravioletIndex;\r\n }\r\n }\r\n\r\n}\r\n","
\r\n

updated: {{ fullDetails.lastUpdateDisplayText }} {{ fullDetails.placeName.startsWith('📌') ? fullDetails.placeName : ''}}

\r\n

{{ this.day == TodayTomorrow.Today ? \"Today\" : \"Tomorrow\" }} max {{ hourGroup.maxTemperature | number: '1.0-0' }}° · min {{ hourGroup.minTemperature | number: '1.0-0' }}°

\r\n\r\n
\r\n
\r\n {{ mainTemperature | number: '1.0-0' }}°C\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n Feels like {{ mainFeelTemperature | number: '1.0-0' }}°
\r\n
\r\n {{ mainLongDescription }}\r\n
\r\n
\r\n
\r\n
\r\n\r\n 8\">\r\n \r\n\r\n\r\n\r\n
\r\n
\r\n Sunrise: {{ sunrise }}
\r\n Humidity: {{ humidty }} %\r\n
\r\n
\r\n Sunset: {{ sunset }}
\r\n Ultraviolet: {{ ultravioletIndex | number: '1.0-0' }} / 11\r\n
\r\n
\r\n\r\n
\r\n \r\n Google maps\r\n \r\n |\r\n \r\n attractions\r\n \r\n |\r\n \r\n directions\r\n \r\n \r\n
\r\n\r\n\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { PointOfInterest } from '../models/generated/PointOfInterest.generated';\r\n\r\nexport const addPois = createAction(\r\n '[POIS] Add pois',\r\n props<{ pois: PointOfInterest[]; }>()\r\n);\r\n\r\nexport const resetPois = createAction(\r\n '[POIS] Reset pois'\r\n);\r\n\r\nexport const resetAndAddPois = createAction(\r\n '[POIS] Reset and add pois',\r\n props<{ pois: PointOfInterest[]; }>()\r\n);","import { createAction, props } from '@ngrx/store';\r\nimport { Place } from '../models/generated/Place.generated';\r\nimport { WeatherForecastHourGroup } from '../models/generated/WeatherForecastHourGroup.generated';\r\n\r\nexport const openDetails = createAction(\r\n '[POIS] Open details',\r\n props<{ place: Place; switchView: boolean; }>()\r\n);","import { Component, Input, ViewChild, Output, EventEmitter } from '@angular/core';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { NzMarks, NzSliderValue } from 'ng-zorro-antd/slider';\r\nimport { Store } from '@ngrx/store';\r\nimport { CommonFilters } from '../models/Args';\r\nimport { Observable } from 'rxjs';\r\nimport { updateState } from '../store/common-filters.actions';\r\nimport { WeatherForecastHourGroup } from '../models/generated/WeatherForecastHourGroup.generated';\r\nimport { FiltersState } from '../store/common-filters.reducer';\r\nimport { Place } from '../models/generated/Place.generated';\r\nimport { ExplorationService } from '../services/exploration.service';\r\nimport { CustomPlace } from '../models/Constants';\r\n\r\n@Component({\r\n selector: 'weather-table',\r\n templateUrl: './weather-table.component.html',\r\n styleUrls: ['./weather-table.component.css'],\r\n animations: [\r\n trigger('detailExpand', [\r\n state('collapsed', style({ height: '0px', minHeight: '0' })),\r\n state('expanded', style({ height: '*' })),\r\n transition('expanded <=> collapsed', animate('10ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\r\n ]),\r\n ],\r\n})\r\nexport class WeatherTableComponent {\r\n displayedColumns: string[] = ['place', 'avgTemperature', 'avgClouds'];\r\n expandedElement!: WeatherForecastHourGroup | null;\r\n isAllFiltersEnabled: boolean = false;\r\n distanceMin: number = 120;\r\n selectedDay: string = \"today\";\r\n selectedFrom: number = 1100;\r\n selectedTo: number = 2000;\r\n isQuickFilterExpanded: boolean = true;\r\n expandIcon: string = this.isQuickFilterExpanded ? \"up-circle\" : \"down-circle\";\r\n searchValue = '';\r\n originName: string = \"origin\";\r\n visible = false;\r\n\r\n @Input() loading: boolean = false;\r\n @Input() useOpenWeather: boolean = false;\r\n @Input() pageSize: number = 30;\r\n\r\n @Output() expandedElementChanged = new EventEmitter();\r\n\r\n public _forecastGroups: WeatherForecastHourGroup[] = [];\r\n public listOfDisplayData : WeatherForecastHourGroup[] = [];\r\n\r\n tempSortFn = (a: WeatherForecastHourGroup, b: WeatherForecastHourGroup) => a.avgTemperature - b.avgTemperature;\r\n cloudsSortFn = (a: WeatherForecastHourGroup, b: WeatherForecastHourGroup) => a.avgClouds! - b.avgClouds!;\r\n windSortFn = (a: WeatherForecastHourGroup, b: WeatherForecastHourGroup) => a.avgWindSpeed - b.avgWindSpeed;\r\n\r\n commonFilters$: Observable;\r\n\r\n commonFiltersSaved: CommonFilters | null = null;\r\n\r\n get forecastGroups(): WeatherForecastHourGroup[] {\r\n return this._forecastGroups;\r\n }\r\n\r\n @Input()\r\n set forecastGroups(value: WeatherForecastHourGroup[]) {\r\n this._forecastGroups = value;\r\n this.listOfDisplayData = [...this._forecastGroups];\r\n }\r\n\r\n constructor(private explorationService: ExplorationService, private store: Store<{ commonFilters: FiltersState }>) {\r\n this.commonFilters$ = store.select('commonFilters');\r\n\r\n this.commonFilters$.subscribe((state: FiltersState) => {\r\n if (state.commonFilters === null) {\r\n console.log(\"weather table filter null\");\r\n return;\r\n }\r\n else {\r\n if (state.commonFilters.origin?.name === CustomPlace) {\r\n this.originName = \"your location\";\r\n }\r\n else {\r\n this.originName = state.commonFilters.origin?.name ?? \"origin\";\r\n }\r\n\r\n this.commonFiltersSaved = JSON.parse(JSON.stringify(state.commonFilters));\r\n\r\n this.isAllFiltersEnabled = this.commonFiltersSaved!.isAllFiltersEnabled;\r\n this.distanceMin = this.commonFiltersSaved!.distanceMin;\r\n this.selectedDay = this.commonFiltersSaved!.timeRangeFilters.selectedDay;\r\n\r\n if (this.selectedDay === 'today') {\r\n this.selectedFrom = +this.commonFiltersSaved!.timeRangeFilters.selectedFromToday;\r\n this.selectedTo = +this.commonFiltersSaved!.timeRangeFilters.selectedToToday;\r\n }\r\n else if (this.selectedDay === 'tomorrow') {\r\n this.selectedFrom = +this.commonFiltersSaved!.timeRangeFilters.selectedFromTomorrow;\r\n this.selectedTo = +this.commonFiltersSaved!.timeRangeFilters.selectedToTomorrow;\r\n } else {\r\n this.selectedFrom = +this.commonFiltersSaved!.timeRangeFilters.selectedFromAfterTomorrow;\r\n this.selectedTo = +this.commonFiltersSaved!.timeRangeFilters.selectedToAfterTomorrow;\r\n }\r\n }\r\n\r\n });\r\n }\r\n \r\n ngOnInit(): void {\r\n this.listOfDisplayData = [...this._forecastGroups];\r\n }\r\n\r\n public expandedClicked() {\r\n this.isQuickFilterExpanded = !this.isQuickFilterExpanded;\r\n this.expandIcon = this.isQuickFilterExpanded ? \"up-circle\" : \"down-circle\";\r\n }\r\n\r\n applyFilter(event: Event): void {\r\n const filterValue = (event.target as HTMLInputElement).value;\r\n }\r\n\r\n selectedDayChanged(model: string) {\r\n this.selectedDay = model;\r\n\r\n if (!this.isQuickFilterExpanded) {\r\n this.isQuickFilterExpanded = true;\r\n this.expandIcon = \"up-circle\";\r\n }\r\n\r\n this.commonFiltersSaved!.timeRangeFilters.selectedDay = this.selectedDay;\r\n\r\n if (this.selectedDay === 'today') {\r\n this.selectedFrom = this.commonFiltersSaved!.timeRangeFilters.selectedFromToday;\r\n this.selectedTo = this.commonFiltersSaved!.timeRangeFilters.selectedToToday;\r\n } else if (this.selectedDay === 'tomorrow') {\r\n this.selectedFrom = this.commonFiltersSaved!.timeRangeFilters.selectedFromTomorrow;\r\n this.selectedTo = this.commonFiltersSaved!.timeRangeFilters.selectedToTomorrow;\r\n } else {\r\n this.selectedFrom = this.commonFiltersSaved!.timeRangeFilters.selectedFromAfterTomorrow;\r\n this.selectedTo = this.commonFiltersSaved!.timeRangeFilters.selectedToAfterTomorrow;\r\n }\r\n\r\n this.goEmit();\r\n }\r\n\r\n sliderTimeChanged(param: NzSliderValue) {\r\n const model: number[] = param as number[];\r\n this.selectedFrom = model[0];\r\n this.selectedTo = model[1];\r\n\r\n if (this.selectedDay === 'today') {\r\n this.commonFiltersSaved!.timeRangeFilters.selectedFromToday = this.selectedFrom;\r\n this.commonFiltersSaved!.timeRangeFilters.selectedToToday = this.selectedTo;\r\n } else if (this.selectedDay === 'tomorrow') {\r\n this.commonFiltersSaved!.timeRangeFilters.selectedFromTomorrow = this.selectedFrom;\r\n this.commonFiltersSaved!.timeRangeFilters.selectedToTomorrow= this.selectedTo;\r\n } else {\r\n this.commonFiltersSaved!.timeRangeFilters.selectedFromAfterTomorrow = this.selectedFrom;\r\n this.commonFiltersSaved!.timeRangeFilters.selectedToAfterTomorrow = this.selectedTo;\r\n }\r\n\r\n this.goEmit();\r\n }\r\n\r\n goEmit() {\r\n if (this.commonFiltersSaved === null) {\r\n return;\r\n }\r\n\r\n this.commonFiltersSaved!.isAllFiltersEnabled = this.isAllFiltersEnabled;\r\n this.commonFiltersSaved!.distanceMin = this.distanceMin;\r\n this.commonFiltersSaved!.timeRangeFilters.selectedDay = this.selectedDay;\r\n\r\n if (this.selectedDay === 'today') {\r\n this.commonFiltersSaved!.timeRangeFilters.selectedFromToday = this.selectedFrom;\r\n this.commonFiltersSaved!.timeRangeFilters.selectedToToday = this.selectedTo;\r\n } else if (this.selectedDay === 'tomorrow') {\r\n this.commonFiltersSaved!.timeRangeFilters.selectedFromTomorrow = this.selectedFrom;\r\n this.commonFiltersSaved!.timeRangeFilters.selectedToTomorrow = this.selectedTo;\r\n } else {\r\n this.commonFiltersSaved!.timeRangeFilters.selectedFromAfterTomorrow = this.selectedFrom;\r\n this.commonFiltersSaved!.timeRangeFilters.selectedToAfterTomorrow = this.selectedTo;\r\n }\r\n\r\n this.store.dispatch(updateState({\r\n filtersState: { commonFilters: this.commonFiltersSaved }\r\n }));\r\n }\r\n\r\n toggleFiltersEnabled(newValue: boolean) {\r\n this.isAllFiltersEnabled = newValue;\r\n this.goEmit();\r\n }\r\n\r\n formatterTime(value: number): string {\r\n const val = value.toString();\r\n return val.includes(\"000\") ? val.replace(\"000\", \"0:00\") : val.replace(\"00\", \":00\");\r\n }\r\n\r\n formatterDistanceMinutes(value: number): string {\r\n return value.toString() + (value === 180 ? \"+\" : \"\") + \" mins\";\r\n }\r\n\r\n setExpandedElement(element: WeatherForecastHourGroup | null): void {\r\n this.expandedElement = element; // this.expandedElement === element ? null : \r\n this.expandedElementChanged.emit(this.expandedElement);\r\n }\r\n\r\n getTemperatureStyling(temperature: number): string {\r\n if (temperature > 27) {\r\n return 'hot;'\r\n }\r\n else if (temperature > 18) {\r\n return 'comfortable';\r\n }\r\n else if (temperature > 14) {\r\n return 'almost-comfortable'\r\n }\r\n else if (temperature >= 10) {\r\n return 'little-cold';\r\n }\r\n else {\r\n return 'cold;'\r\n }\r\n }\r\n\r\n setCurrentLocationOrigin() {\r\n const that = this;\r\n this.explorationService.setCurrentLocationOrigin(() => {\r\n const newOrigin: Place | null = that.explorationService.getOrigin();\r\n\r\n if (newOrigin != null && newOrigin.name === CustomPlace) {\r\n that.originName = \"your location\"; \r\n }\r\n\r\n this.commonFiltersSaved!.origin = this.explorationService.getOrigin();\r\n\r\n that.goEmit();\r\n });\r\n }\r\n\r\n reset(): void {\r\n this.searchValue = '';\r\n this.search();\r\n }\r\n\r\n search(onKeyUp: boolean = false, event: KeyboardEvent | null = null): void {\r\n if(!onKeyUp || event!.key == \"Enter\") {\r\n this.visible = false;\r\n }\r\n this.listOfDisplayData = this._forecastGroups.filter((item: WeatherForecastHourGroup) => item.place.indexOf(this.searchValue) !== -1);\r\n }\r\n\r\n marksDistanceMinutes: NzMarks = {\r\n 10: {\r\n // style: {\r\n // color: '#05f'\r\n // },\r\n label: '10 min'\r\n },\r\n 30: `30`,\r\n 60: `60 min`,\r\n 90: `90`,\r\n 120: `120 min`,\r\n 180: {\r\n // style: {\r\n // color: '#f50'\r\n // },\r\n label: '180+'\r\n },\r\n };\r\n\r\n marksTime: NzMarks = {\r\n 900: {\r\n // style: {\r\n // color: '#05f'\r\n // },\r\n label: '9:00'\r\n },\r\n 1100: `11:00`,\r\n 1400: `14:00`,\r\n 1700: `17:00`,\r\n 2000: `20:00`,\r\n 2300: {\r\n // style: {\r\n // color: '#f50'\r\n // },\r\n label: '23:00'\r\n },\r\n };\r\n}\r\n","\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n Filter weather \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
Distance from {{ originName }}
\r\n \r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n \r\n Place\r\n 0\" [nzDropdownMenu]=\"menu\">\r\n \r\n \r\n \r\n C°\r\n Cloudy\r\n Wind\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n\r\n \r\n\r\n {{ data.place }}\r\n \r\n \r\n \r\n \r\n {{data.avgTemperature | number: '1.0-0'}}\r\n\r\n \r\n \r\n {{(data.avgClouds! * 100 | number: '1.0-0')}}%\r\n\r\n\r\n \r\n 15\">\r\n \r\n {{data.avgWindSpeed | number: '1.0-0'}}\r\n km/h\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n","\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { NzAffixModule } from 'ng-zorro-antd/affix';\r\nimport { NzAlertModule } from 'ng-zorro-antd/alert';\r\nimport { NzAnchorModule } from 'ng-zorro-antd/anchor';\r\nimport { NzAutocompleteModule } from 'ng-zorro-antd/auto-complete';\r\nimport { NzAvatarModule } from 'ng-zorro-antd/avatar';\r\nimport { NzBackTopModule } from 'ng-zorro-antd/back-top';\r\nimport { NzBadgeModule } from 'ng-zorro-antd/badge';\r\nimport { NzBreadCrumbModule } from 'ng-zorro-antd/breadcrumb';\r\nimport { NzButtonModule } from 'ng-zorro-antd/button';\r\nimport { NzCalendarModule } from 'ng-zorro-antd/calendar';\r\nimport { NzCardModule } from 'ng-zorro-antd/card';\r\nimport { NzCarouselModule } from 'ng-zorro-antd/carousel';\r\nimport { NzCascaderModule } from 'ng-zorro-antd/cascader';\r\nimport { NzCheckboxModule } from 'ng-zorro-antd/checkbox';\r\nimport { NzCollapseModule } from 'ng-zorro-antd/collapse';\r\nimport { NzCommentModule } from 'ng-zorro-antd/comment';\r\nimport { NzNoAnimationModule } from 'ng-zorro-antd/core/no-animation';\r\nimport { NzTransButtonModule } from 'ng-zorro-antd/core/trans-button';\r\nimport { NzWaveModule } from 'ng-zorro-antd/core/wave';\r\nimport { NzDatePickerModule } from 'ng-zorro-antd/date-picker';\r\nimport { NzDescriptionsModule } from 'ng-zorro-antd/descriptions';\r\nimport { NzDividerModule } from 'ng-zorro-antd/divider';\r\nimport { NzDrawerModule } from 'ng-zorro-antd/drawer';\r\nimport { NzDropDownModule } from 'ng-zorro-antd/dropdown';\r\nimport { NzEmptyModule } from 'ng-zorro-antd/empty';\r\nimport { NzFormModule } from 'ng-zorro-antd/form';\r\nimport { NzGridModule } from 'ng-zorro-antd/grid';\r\nimport { NzI18nModule } from 'ng-zorro-antd/i18n';\r\nimport { NzIconModule } from 'ng-zorro-antd/icon';\r\nimport { NzImageModule } from 'ng-zorro-antd/image';\r\nimport { NzInputModule } from 'ng-zorro-antd/input';\r\nimport { NzInputNumberModule } from 'ng-zorro-antd/input-number';\r\nimport { NzLayoutModule } from 'ng-zorro-antd/layout';\r\nimport { NzListModule } from 'ng-zorro-antd/list';\r\nimport { NzMentionModule } from 'ng-zorro-antd/mention';\r\nimport { NzMenuModule } from 'ng-zorro-antd/menu';\r\nimport { NzMessageModule } from 'ng-zorro-antd/message';\r\nimport { NzModalModule } from 'ng-zorro-antd/modal';\r\nimport { NzNotificationModule } from 'ng-zorro-antd/notification';\r\nimport { NzPageHeaderModule } from 'ng-zorro-antd/page-header';\r\nimport { NzPaginationModule } from 'ng-zorro-antd/pagination';\r\nimport { NzPopconfirmModule } from 'ng-zorro-antd/popconfirm';\r\nimport { NzPopoverModule } from 'ng-zorro-antd/popover';\r\nimport { NzProgressModule } from 'ng-zorro-antd/progress';\r\nimport { NzRadioModule } from 'ng-zorro-antd/radio';\r\nimport { NzRateModule } from 'ng-zorro-antd/rate';\r\nimport { NzResultModule } from 'ng-zorro-antd/result';\r\nimport { NzSelectModule } from 'ng-zorro-antd/select';\r\nimport { NzSkeletonModule } from 'ng-zorro-antd/skeleton';\r\nimport { NzSliderModule } from 'ng-zorro-antd/slider';\r\nimport { NzSpinModule } from 'ng-zorro-antd/spin';\r\nimport { NzStatisticModule } from 'ng-zorro-antd/statistic';\r\nimport { NzStepsModule } from 'ng-zorro-antd/steps';\r\nimport { NzSwitchModule } from 'ng-zorro-antd/switch';\r\nimport { NzTableModule } from 'ng-zorro-antd/table';\r\nimport { NzTabsModule } from 'ng-zorro-antd/tabs';\r\nimport { NzTagModule } from 'ng-zorro-antd/tag';\r\nimport { NzTimePickerModule } from 'ng-zorro-antd/time-picker';\r\nimport { NzTimelineModule } from 'ng-zorro-antd/timeline';\r\nimport { NzToolTipModule } from 'ng-zorro-antd/tooltip';\r\nimport { NzTransferModule } from 'ng-zorro-antd/transfer';\r\nimport { NzTreeModule } from 'ng-zorro-antd/tree';\r\nimport { NzTreeViewModule } from 'ng-zorro-antd/tree-view';\r\nimport { NzTreeSelectModule } from 'ng-zorro-antd/tree-select';\r\nimport { NzTypographyModule } from 'ng-zorro-antd/typography';\r\nimport { NzUploadModule } from 'ng-zorro-antd/upload';\r\nimport { NzResizableModule } from 'ng-zorro-antd/resizable';\r\nimport { NzPipesModule } from 'ng-zorro-antd/pipes';\r\n\r\n@NgModule({\r\n exports: [\r\n NzAffixModule,\r\n NzAlertModule,\r\n NzAnchorModule,\r\n NzAutocompleteModule,\r\n NzAvatarModule,\r\n NzBackTopModule,\r\n NzBadgeModule,\r\n NzButtonModule,\r\n NzBreadCrumbModule,\r\n NzCalendarModule,\r\n NzCardModule,\r\n NzCarouselModule,\r\n NzCascaderModule,\r\n NzCheckboxModule,\r\n NzCollapseModule,\r\n NzCommentModule,\r\n NzDatePickerModule,\r\n NzDescriptionsModule,\r\n NzDividerModule,\r\n NzDrawerModule,\r\n NzDropDownModule,\r\n NzEmptyModule,\r\n NzFormModule,\r\n NzGridModule,\r\n NzI18nModule,\r\n NzIconModule,\r\n NzImageModule,\r\n NzInputModule,\r\n NzInputNumberModule,\r\n NzLayoutModule,\r\n NzListModule,\r\n NzMentionModule,\r\n NzMenuModule,\r\n NzMessageModule,\r\n NzModalModule,\r\n NzNoAnimationModule,\r\n NzNotificationModule,\r\n NzPageHeaderModule,\r\n NzPaginationModule,\r\n NzPopconfirmModule,\r\n NzPopoverModule,\r\n NzProgressModule,\r\n NzRadioModule,\r\n NzRateModule,\r\n NzResultModule,\r\n NzSelectModule,\r\n NzSkeletonModule,\r\n NzSliderModule,\r\n NzSpinModule,\r\n NzStatisticModule,\r\n NzStepsModule,\r\n NzSwitchModule,\r\n NzTableModule,\r\n NzTabsModule,\r\n NzTagModule,\r\n NzTimePickerModule,\r\n NzTimelineModule,\r\n NzToolTipModule,\r\n NzTransButtonModule,\r\n NzTransferModule,\r\n NzTreeModule,\r\n NzTreeViewModule,\r\n NzTreeSelectModule,\r\n NzTypographyModule,\r\n NzUploadModule,\r\n NzWaveModule,\r\n NzResizableModule,\r\n NzPipesModule,\r\n ]\r\n})\r\nexport class NgZorroAntdModule {\r\n\r\n}\r\n","import { AfterViewInit, Component, Input, OnChanges, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { MapInfoWindow, MapMarker, GoogleMap } from '@angular/google-maps';\r\nimport { Observable } from 'rxjs';\r\nimport { Store } from '@ngrx/store';\r\nimport { CommonFilters } from '../models/Args';\r\nimport { updateState } from '../store/common-filters.actions';\r\nimport { NzMarks, NzSliderValue } from 'ng-zorro-antd/slider';\r\nimport { ExplorationService } from '../services/exploration.service';\r\nimport { resetAndAddPois } from '../store/map.actions';\r\nimport { openDetails } from '../store/details.actions';\r\nimport { Inject } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { WeatherForecastHourGroup } from '../models/generated/WeatherForecastHourGroup.generated';\r\nimport { PointOfInterest } from '../models/generated/PointOfInterest.generated';\r\nimport { FiltersState } from '../store/common-filters.reducer';\r\nimport { Place } from '../models/generated/Place.generated';\r\nimport { CustomPlace } from '../models/Constants';\r\nimport { Region } from '../models/generated/Enum/Region.generated';\r\n\r\n@Component({\r\n selector: 'weather-map',\r\n templateUrl: './weather-map.component.html',\r\n styleUrls: ['./weather-map.component.css']\r\n})\r\nexport class WeatherMapComponent implements OnChanges, AfterViewInit {\r\n @ViewChild(GoogleMap, { static: false }) map!: GoogleMap;\r\n // @ViewChild('placeInfoWindow', { static: true }) info!: MapInfoWindow;\r\n // @ViewChild('poiInfoWindow', { static: false }) poiInfo!: MapInfoWindow;\r\n\r\n @Input() expandedElement: WeatherForecastHourGroup | null = null;\r\n @Input() forecastGroups: WeatherForecastHourGroup[] = [];\r\n @Input() loading: boolean = false;\r\n @Input() useOpenWeather: boolean = false;\r\n\r\n // Map center\r\n lat: number = 0;\r\n lng: number = 0;\r\n\r\n scaledSizeMedium = new google.maps.Size(35, 35);\r\n scaledSizeBig = new google.maps.Size(45, 45);\r\n markerAnchor = new google.maps.Point(0, 45);\r\n isQuickFilterExpanded: boolean = false;\r\n expandIcon: string = this.isQuickFilterExpanded ? \"up-circle\" : \"down-circle\";\r\n mapShowPois: boolean = true;\r\n savedExpanded: WeatherForecastHourGroup | null = null;\r\n originName: string = \"origin\";\r\n currentZoomLevel: number = 8;\r\n\r\n // Common filters:\r\n commonFilters$: Observable;\r\n isAllFiltersEnabled: boolean = false;\r\n distanceMin: number = 120;\r\n selectedDay: string = \"today\";\r\n selectedFrom: number = 1100;\r\n selectedTo: number = 2000;\r\n initialZoom: number = 8;\r\n\r\n quickDetailsContext: string = \"map\";\r\n\r\n pois$: Observable; // Coming through place detail info\r\n pois: PointOfInterest[] = [];\r\n\r\n iconUrl: string = \"assets/red-circle.png\";\r\n hikingIconUrl: string = \"assets/hiking.png\";\r\n\r\n infoContent: WeatherForecastHourGroup | null = null;\r\n poiInfoContent: PointOfInterest | null = null;\r\n\r\n commonFiltersSaved: CommonFilters | null = null;\r\n\r\n mapOptions: google.maps.MapOptions = {\r\n disableDefaultUI: true,\r\n mapTypeControl: true,\r\n minZoom: 6,\r\n mapTypeControlOptions: {\r\n style: google.maps.MapTypeControlStyle.DROPDOWN_MENU,\r\n },\r\n\r\n };\r\n\r\n constructor(private explorationService: ExplorationService,\r\n @Inject(DOCUMENT) private document: Document,\r\n private store: Store<{ pois: PointOfInterest[], commonFilters: FiltersState }>) {\r\n this.pois$ = store.select('pois');\r\n\r\n this.pois$.subscribe((pois: PointOfInterest[]) => {\r\n this.pois = pois;\r\n });\r\n\r\n this.commonFilters$ = store.select('commonFilters');\r\n\r\n this.commonFilters$.subscribe((state: FiltersState) => {\r\n if (state.commonFilters === null) {\r\n console.log(\"weather map filter null\");\r\n return;\r\n } else {\r\n this.infoContent = null;\r\n this.poiInfoContent = null;\r\n\r\n // Set map center on app load\r\n if (this.lat === 0 && this.lng === 0 && this.explorationService.getDefaultOrigin() !== null) {\r\n // TODO: need to refactor so that this logic uses something like below from server\r\n // const mapCenter = this.explorationService.getDefaultOrigin();\r\n // this.lat = mapCenter!.coords.lat;\r\n // this.lng = mapCenter!.coords.long;\r\n\r\n if (this.explorationService.getRegion() === Region.Latvia) {\r\n this.initialZoom = 6;\r\n this.lat = 56.977373;\r\n this.lng = 24.464719;\r\n }\r\n else if (this.explorationService.getRegion() === Region.Madeira) {\r\n this.initialZoom = 10;\r\n this.lat = 32.757588;\r\n this.lng = -17.003117;\r\n }\r\n // else if (this.explorationService.getRegion() === Region.LaPalma) {\r\n // this.initialZoom = 10;\r\n // this.lat = 28.651498;\r\n // this.lng = -17.860630;\r\n // }\r\n else if (this.explorationService.getRegion() === Region.LaPalma) { // El hierro\r\n this.initialZoom = 11;\r\n this.lat = 27.734289; // 27.734289, -18.010665\r\n this.lng = -18.010665;\r\n }\r\n else {\r\n console.error(\"Region not defined in front end map componenet - unknown center and zoom\")\r\n }\r\n }\r\n\r\n if (state.commonFilters.origin?.name === CustomPlace) {\r\n this.originName = \"your location\";\r\n }\r\n else {\r\n this.originName = state.commonFilters.origin?.name ?? \"origin\";\r\n }\r\n\r\n this.commonFiltersSaved = JSON.parse(JSON.stringify(state.commonFilters));\r\n\r\n this.isAllFiltersEnabled = this.commonFiltersSaved!.isAllFiltersEnabled;\r\n this.distanceMin = this.commonFiltersSaved!.distanceMin;\r\n this.selectedDay = this.commonFiltersSaved!.timeRangeFilters.selectedDay;\r\n\r\n if (this.selectedDay === 'today') {\r\n this.selectedFrom = +this.commonFiltersSaved!.timeRangeFilters.selectedFromToday;\r\n this.selectedTo = +this.commonFiltersSaved!.timeRangeFilters.selectedToToday;\r\n }\r\n else if (this.selectedDay === 'tomorrow') {\r\n this.selectedFrom = +this.commonFiltersSaved!.timeRangeFilters.selectedFromTomorrow;\r\n this.selectedTo = +this.commonFiltersSaved!.timeRangeFilters.selectedToTomorrow;\r\n } else {\r\n this.selectedFrom = +this.commonFiltersSaved!.timeRangeFilters.selectedFromAfterTomorrow;\r\n this.selectedTo = +this.commonFiltersSaved!.timeRangeFilters.selectedToAfterTomorrow;\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes[\"expandedElement\"] !== undefined && changes[\"expandedElement\"].currentValue != this.savedExpanded) {\r\n this.savedExpanded = changes[\"expandedElement\"].currentValue;\r\n if (this.savedExpanded) {\r\n this.openInfoWindow(this.savedExpanded!);\r\n }\r\n }\r\n }\r\n\r\n mapShowPoisAtThisLevel() {\r\n let minZoomLevel = 11;\r\n\r\n if (this.explorationService.getRegion() === Region.Latvia) {\r\n minZoomLevel = 9;\r\n }\r\n else if (this.explorationService.getRegion() === Region.Madeira) {\r\n minZoomLevel = 11;\r\n }\r\n else if (this.explorationService.getRegion() === Region.LaPalma) {\r\n minZoomLevel = 11;\r\n }\r\n\r\n return this.currentZoomLevel > minZoomLevel;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.maximizeMapContainer();\r\n }\r\n\r\n maximizeMapContainer() {\r\n return;\r\n\r\n // // We need to resize div which is internal to external component\r\n // const mapContainer = this.document.querySelector(\".map-container\");\r\n\r\n // if (mapContainer) {\r\n // mapContainer.style.height = \"calc(100vh - 4rem - 100px)\"; \r\n // }\r\n }\r\n\r\n minimizeMapContainer() {\r\n return;\r\n\r\n // // We need to resize div which is internal to external component\r\n // const mapContainer = this.document.querySelector(\".map-container\");\r\n\r\n // if (mapContainer) {\r\n // mapContainer.style.height = \"calc(100vh - 4rem - 205px)\"; \r\n // }\r\n }\r\n\r\n public expandedClicked() {\r\n this.isQuickFilterExpanded = !this.isQuickFilterExpanded;\r\n this.expandIcon = this.isQuickFilterExpanded ? \"up-circle\" : \"down-circle\";\r\n }\r\n\r\n formatterTime(value: number): string {\r\n const val = value.toString();\r\n return val.includes(\"000\") ? val.replace(\"000\", \"0:00\") : val.replace(\"00\", \":00\");\r\n }\r\n\r\n selectedDayChanged(model: string) {\r\n this.selectedDay = model;\r\n\r\n // if (!this.isQuickFilterExpanded) {\r\n // this.isQuickFilterExpanded = true;\r\n // this.expandIcon = \"up-circle\";\r\n // }\r\n\r\n this.commonFiltersSaved!.timeRangeFilters.selectedDay = this.selectedDay;\r\n\r\n if (this.selectedDay === 'today') {\r\n this.selectedFrom = this.commonFiltersSaved!.timeRangeFilters.selectedFromToday;\r\n this.selectedTo = this.commonFiltersSaved!.timeRangeFilters.selectedToToday;\r\n } else if (this.selectedDay === 'tomorrow') {\r\n this.selectedFrom = this.commonFiltersSaved!.timeRangeFilters.selectedFromTomorrow;\r\n this.selectedTo = this.commonFiltersSaved!.timeRangeFilters.selectedToTomorrow;\r\n } else {\r\n this.selectedFrom = this.commonFiltersSaved!.timeRangeFilters.selectedFromAfterTomorrow;\r\n this.selectedTo = this.commonFiltersSaved!.timeRangeFilters.selectedToAfterTomorrow;\r\n }\r\n\r\n this.goEmit();\r\n }\r\n\r\n sliderTimeChanged(param: NzSliderValue) {\r\n const model: number[] = param as number[];\r\n this.selectedFrom = model[0];\r\n this.selectedTo = model[1];\r\n\r\n if (this.selectedDay === 'today') {\r\n this.commonFiltersSaved!.timeRangeFilters.selectedFromToday = this.selectedFrom;\r\n this.commonFiltersSaved!.timeRangeFilters.selectedToToday = this.selectedTo;\r\n } else if (this.selectedDay === 'tomorrow') {\r\n this.commonFiltersSaved!.timeRangeFilters.selectedFromTomorrow = this.selectedFrom;\r\n this.commonFiltersSaved!.timeRangeFilters.selectedToTomorrow= this.selectedTo;\r\n } else {\r\n this.commonFiltersSaved!.timeRangeFilters.selectedFromAfterTomorrow = this.selectedFrom;\r\n this.commonFiltersSaved!.timeRangeFilters.selectedToAfterTomorrow = this.selectedTo;\r\n }\r\n\r\n this.goEmit();\r\n }\r\n\r\n goEmit() {\r\n if (this.commonFiltersSaved === null) {\r\n return;\r\n }\r\n\r\n this.infoContent = null;\r\n this.poiInfoContent = null;\r\n\r\n this.commonFiltersSaved!.isAllFiltersEnabled = this.isAllFiltersEnabled;\r\n this.commonFiltersSaved!.distanceMin = this.distanceMin;\r\n this.commonFiltersSaved!.timeRangeFilters.selectedDay = this.selectedDay;\r\n\r\n if (this.selectedDay === 'today') {\r\n this.commonFiltersSaved!.timeRangeFilters.selectedFromToday = this.selectedFrom;\r\n this.commonFiltersSaved!.timeRangeFilters.selectedToToday = this.selectedTo;\r\n } else if (this.selectedDay === 'tomorrow') {\r\n this.commonFiltersSaved!.timeRangeFilters.selectedFromTomorrow = this.selectedFrom;\r\n this.commonFiltersSaved!.timeRangeFilters.selectedToTomorrow = this.selectedTo;\r\n } else {\r\n this.commonFiltersSaved!.timeRangeFilters.selectedFromAfterTomorrow = this.selectedFrom;\r\n this.commonFiltersSaved!.timeRangeFilters.selectedToAfterTomorrow = this.selectedTo;\r\n }\r\n\r\n this.store.dispatch(updateState({\r\n filtersState: { commonFilters: this.commonFiltersSaved }\r\n }));\r\n }\r\n\r\n toggleFiltersEnabled(newValue: boolean) {\r\n this.isAllFiltersEnabled = newValue;\r\n this.goEmit();\r\n }\r\n\r\n mapClick() {\r\n this.infoContent = null;\r\n this.poiInfoContent = null;\r\n this.pois = [];\r\n this.expandedElement = null;\r\n\r\n this.maximizeMapContainer();\r\n }\r\n\r\n openInfoWindow(selected: WeatherForecastHourGroup) {\r\n this.minimizeMapContainer();\r\n\r\n this.poiInfoContent = null;\r\n this.infoContent = selected;\r\n this.expandedElement = selected;\r\n //this.info.open(marker);\r\n\r\n this.pois = [];\r\n\r\n this.explorationService.getPoiForPlace(selected.place, this.explorationService.getRegion() === Region.Latvia ? 30 : 7).subscribe(poiList => {\r\n this.store.dispatch(resetAndAddPois({\r\n pois: poiList\r\n }));\r\n }, error => {\r\n console.error(\"poi loading failed\");\r\n });\r\n }\r\n\r\n openInfoWindowForPoi(marker: MapMarker, poi: PointOfInterest) {\r\n this.minimizeMapContainer();\r\n\r\n this.infoContent = null;\r\n this.poiInfoContent = poi;\r\n //this.poiInfo.open(marker);\r\n }\r\n\r\n poiLinkClicked(poi: PointOfInterest) {\r\n window.open(poi.link, \"_blank\");\r\n }\r\n\r\n openDetails(group: WeatherForecastHourGroup) {\r\n this.store.dispatch(openDetails({\r\n place: {\r\n coords: group.coords!,\r\n name: group.place,\r\n },\r\n switchView: true\r\n }));\r\n }\r\n\r\n zoomChanged() {\r\n this.currentZoomLevel = this.map.getZoom();\r\n }\r\n\r\n showHours(group: WeatherForecastHourGroup) {\r\n if (this.quickDetailsContext === 'map') {\r\n this.quickDetailsContext = \"map-hours\";\r\n } else {\r\n this.quickDetailsContext = \"map\";\r\n }\r\n }\r\n\r\n getZIndexForMarker(markerAssignedForecastGroup: WeatherForecastHourGroup | null) {\r\n if (markerAssignedForecastGroup) {\r\n return this.expandedElement != null && this.expandedElement.place === markerAssignedForecastGroup.place ? 999 : \r\n (markerAssignedForecastGroup.isFav ? 100 : 1);\r\n }\r\n\r\n return 1;\r\n }\r\n\r\n getSizeForMarker(markerAssignedForecastGroup: WeatherForecastHourGroup | null) {\r\n if (markerAssignedForecastGroup) {\r\n return this.expandedElement != null && this.expandedElement.place === markerAssignedForecastGroup.place ? this.scaledSizeBig : this.scaledSizeMedium;\r\n }\r\n\r\n return this.scaledSizeMedium;\r\n }\r\n\r\n getIconForMarker(markerAssignedForecastGroup: WeatherForecastHourGroup | null) {\r\n if (markerAssignedForecastGroup) {\r\n return this.expandedElement != null && this.expandedElement.place === markerAssignedForecastGroup.place ?\r\n markerAssignedForecastGroup!.iconFullUrl.replace('weather-icons-transparent', 'weather-icons-focused') : \r\n (markerAssignedForecastGroup.isFav ? \r\n markerAssignedForecastGroup!.iconFullUrl.replace('weather-icons-transparent', 'weather-icons-favs') : markerAssignedForecastGroup!.iconFullUrl.replace('weather-icons-transparent', 'weather-icons-bordered'));\r\n }\r\n\r\n return this.iconUrl;\r\n }\r\n\r\n getIconForPoi(poi: PointOfInterest) : google.maps.Icon {\r\n return {\r\n url: this.hikingIconUrl,\r\n scaledSize: new google.maps.Size(22, 22),\r\n };\r\n }\r\n\r\n formatterDistanceMinutes(value: number): string {\r\n return value.toString() + (value === 180 ? \"+\" : \"\") + \" mins\";\r\n }\r\n\r\n setCurrentLocationOrigin() {\r\n const that = this;\r\n this.explorationService.setCurrentLocationOrigin(() => {\r\n const newOrigin: Place | null = that.explorationService.getOrigin();\r\n\r\n if (newOrigin != null && newOrigin.name === CustomPlace) {\r\n that.originName = \"your location\"; \r\n }\r\n\r\n this.commonFiltersSaved!.origin = this.explorationService.getOrigin();\r\n\r\n that.goEmit();\r\n });\r\n }\r\n\r\n reload() {\r\n location.reload();\r\n }\r\n\r\n marksDistanceMinutes: NzMarks = {\r\n 10: {\r\n // style: {\r\n // color: '#05f'\r\n // },\r\n label: '10 min'\r\n },\r\n 30: `30`,\r\n 60: `60 min`,\r\n 90: `90`,\r\n 120: `120 min`,\r\n 180: {\r\n // style: {\r\n // color: '#f50'\r\n // },\r\n label: '180+'\r\n },\r\n };\r\n\r\n marksTime: NzMarks = {\r\n 900: {\r\n // style: {\r\n // color: '#05f'\r\n // },\r\n label: '9:00'\r\n },\r\n 1100: `11:00`,\r\n 1400: `14:00`,\r\n 1700: `17:00`,\r\n 2000: `20:00`,\r\n 2300: {\r\n // style: {\r\n // color: '#f50'\r\n // },\r\n label: '23:00'\r\n },\r\n };\r\n}\r\n","\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n Filter weather \r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n
Distance from {{ originName}}
\r\n \r\n\r\n
\r\n Show points of interest for selected place\r\n \r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n

{{poiInfoContent.name}}

\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n

{{infoContent.place}}

\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { ExplorationService } from '../services/exploration.service';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { GoArgs } from '../models/Args';\r\nimport * as moment from 'moment';\r\nimport { FavService } from '../services/fav.service';\r\nimport { DetailsState } from '../store/details.reducer';\r\nimport { Store } from '@ngrx/store';\r\nimport { Observable } from 'rxjs';\r\nimport { WeatherForecastHourGroup } from '../models/generated/WeatherForecastHourGroup.generated';\r\nimport { openDetails } from '../store/details.actions';\r\nimport { NzNotificationService } from 'ng-zorro-antd/notification';\r\nimport { Subscription } from 'rxjs';\r\n\r\n// Used for window.goExploreNowRegion = 'Madeira'; in region specific index.html\r\ndeclare var window: any;\r\n\r\nexport enum OpenView {\r\n Filter = \"filter\",\r\n List = \"list\",\r\n Map = \"map\",\r\n Details = \"details\",\r\n}\r\n\r\n@Component({\r\n selector: 'explore',\r\n templateUrl: './explore.component.html',\r\n styleUrls: ['./explore.component.css'],\r\n})\r\nexport class ExploreComponent implements OnInit {\r\n loading: boolean = true;\r\n loadingFailed: boolean = false;\r\n pageSize: number = 30; // passed to weather-table\r\n useOpenWeather: boolean = false; // set by call from lower component, and passed down into subcomponents\r\n\r\n private subscription: Subscription = new Subscription();\r\n\r\n expandedElement!: WeatherForecastHourGroup | null; // set by weather-table\r\n forecastGroups: WeatherForecastHourGroup[] = []; // retrieved from api and passed to table and map\r\n\r\n public OpenViewEnum = OpenView;\r\n activeWindow: OpenView = OpenView.List;\r\n\r\n detailsState$: Observable;\r\n\r\n constructor(private favService: FavService,\r\n private explorationService: ExplorationService,\r\n private store: Store<{ details: DetailsState }>,\r\n private notification: NzNotificationService) {\r\n\r\n this.detailsState$ = store.select('details');\r\n\r\n this.detailsState$.subscribe((details: DetailsState) => {\r\n if (details.switchView) {\r\n this.navDetails();\r\n }\r\n });\r\n }\r\n\r\n async ngOnInit(): Promise {\r\n const isiPhone = /iPhone/i.test(navigator.userAgent);\r\n const isMac = /Mac/i.test(navigator.userAgent);\r\n const isiPad = /iPad/i.test(navigator.userAgent);\r\n\r\n let appName: string;\r\n if (window.goExploreNowRegion && window.goExploreNowRegion === 'Latvia')\r\n {\r\n appName = 'lv.edza.kursaule.twa';\r\n }\r\n else {\r\n appName = 'lv.edza.madeira.twa';\r\n }\r\n\r\n if (\r\n !isiPhone && !isMac && !isiPad &&\r\n //this.explorationService.isMobileScreenWidth() &&\r\n !this.explorationService.isStandalone() &&\r\n !(await this.explorationService.isRelatedAppInstalled(appName))\r\n ) {\r\n setTimeout(\r\n () => {\r\n const closeCount = Number(localStorage.getItem('notificationCloseCount')) || 0;\r\n if (closeCount >= 3) {\r\n console.log('Notification has been closed 3 times, will not display again');\r\n return;\r\n }\r\n\r\n let instance;\r\n if (window.goExploreNowRegion === 'Latvia') {\r\n instance = this.notification.info(\r\n 'Free app (no ads)',\r\n 'Kur saule! in
Google Play Store',\r\n { nzDuration: 0, nzPauseOnHover: true }\r\n );\r\n }\r\n else if (window.goExploreNowRegion === 'Lapalma') {\r\n // do nothin, no banner\r\n return;\r\n }\r\n else { // Default\r\n instance = this.notification.info(\r\n 'Free app (no ads)',\r\n 'Madeira Weather Plus in
Google Play Store',\r\n { nzDuration: 0, nzPauseOnHover: true }\r\n );\r\n }\r\n\r\n this.subscription.add(\r\n instance.onClose.subscribe(() => {\r\n console.log('The notification box has been closed');\r\n\r\n const newCloseCount = (Number(localStorage.getItem('notificationCloseCount')) || 0) + 1;\r\n localStorage.setItem('notificationCloseCount', newCloseCount.toString());\r\n })\r\n );\r\n }, 3500);\r\n }\r\n }\r\n\r\n onExpandedElementChanged(expandedElement: WeatherForecastHourGroup | null): void {\r\n this.expandedElement = expandedElement;\r\n }\r\n\r\n go(args: GoArgs): void {\r\n this.loadingFailed = false;\r\n this.loading = true;\r\n this.expandedElement = null;\r\n\r\n let { dateFrom, dateTo }: { dateFrom: moment.Moment; dateTo: moment.Moment; } = this.calculateSelectedDates(args);\r\n\r\n this.pageSize = 30;\r\n\r\n this.explorationService.getForecastGroups({\r\n origin: args.origin,\r\n distance: args.distanceMin,\r\n dateFrom: dateFrom.format(\"YYYY-MM-DD HH:mm:ss\"),\r\n dateTo: dateTo.format(\"YYYY-MM-DD HH:mm:ss\"),\r\n minAvgTemperature: args.minTemperature,\r\n maxAvgTemperature: args.maxTemperature,\r\n minAvgClouds: args.maxClouds / 100,\r\n maxWind: args.maxWind,\r\n favs: args.favs,\r\n maxRain: args.maxRain / 100,\r\n isAllFiltersEnabled: args.isAllFiltersEnabled,\r\n isTemperatureFilterEnabled: args.isTemperatureFilterEnabled,\r\n isCloudsFilterEnabled: args.isCloudsFilterEnabled,\r\n isWindFilterEnabled: args.isWindFilterEnabled,\r\n isRainFilterEnabled: args.isRainFilterEnabled,\r\n }).subscribe(regionForecast => {\r\n const groups = regionForecast.providerWeatherForecast![0].places;\r\n this.processForecastGroupsSuccess(groups);\r\n }, error => {\r\n this.processForecastGroupError(error);\r\n })\r\n }\r\n\r\n private processForecastGroupsSuccess(groups: WeatherForecastHourGroup[]): void {\r\n this.forecastGroups = groups;\r\n this.loading = false;\r\n console.log(groups);\r\n }\r\n\r\n private processForecastGroupError(error: any): void {\r\n this.loadingFailed = true;\r\n console.log(error);\r\n }\r\n\r\n private calculateSelectedDates(args: GoArgs) {\r\n let dateFrom: moment.Moment, dateTo: moment.Moment;\r\n\r\n if (args.selectedDay == \"today\") {\r\n dateFrom = moment();\r\n dateTo = moment();\r\n }\r\n else if (args.selectedDay == \"tomorrow\") {\r\n dateFrom = moment().add(1, 'days');\r\n dateTo = moment().add(1, 'days');\r\n }\r\n else if (args.selectedDay == \"after-tomorrow\") {\r\n dateFrom = moment().add(2, 'days');\r\n dateTo = moment().add(2, 'days');\r\n }\r\n\r\n // replace :00 with \"\", add those hours to from and to\r\n dateFrom = dateFrom!.clone().startOf('day').add(args.selectedFrom.replace(\":00\", \"\"), \"hours\");\r\n dateTo = dateTo!.clone().startOf('day').add(args.selectedTo.replace(\":00\", \"\"), \"hours\");\r\n return { dateFrom, dateTo };\r\n }\r\n\r\n navFilter() {\r\n this.activeWindow = OpenView.Filter;\r\n }\r\n\r\n navMap() {\r\n this.activeWindow = OpenView.Map;\r\n }\r\n\r\n navList() {\r\n this.activeWindow = OpenView.List;\r\n }\r\n\r\n navDetails() {\r\n this.activeWindow = OpenView.Details;\r\n }\r\n\r\n reload() {\r\n location.reload();\r\n }\r\n}\r\n","\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n
","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn-bd\": \"loYQ\",\n\t\"./bn-bd.js\": \"loYQ\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-in\": \"7C5Q\",\n\t\"./en-in.js\": \"7C5Q\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./en-sg\": \"t+mt\",\n\t\"./en-sg.js\": \"t+mt\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-mx\": \"tbfe\",\n\t\"./es-mx.js\": \"tbfe\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fil\": \"1ppg\",\n\t\"./fil.js\": \"1ppg\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-deva\": \"qvJo\",\n\t\"./gom-deva.js\": \"qvJo\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./oc-lnc\": \"Fnuy\",\n\t\"./oc-lnc.js\": \"Fnuy\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tk\": \"Wv91\",\n\t\"./tk.js\": \"Wv91\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-mo\": \"OmwH\",\n\t\"./zh-mo.js\": \"OmwH\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","import { Component } from '@angular/core';\r\nimport { SwUpdate } from '@angular/service-worker';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.css']\r\n})\r\nexport class AppComponent {\r\n title = 'go-explore-now';\r\n\r\n updateChecked = false;\r\n updateAvailable = false;\r\n \r\n // In your template, use this value to show a loading indicator while we are\r\n // waiting for updates. (You can also use it to hide the rest of the UI if\r\n // you want to prevent the old version from being used.)\r\n get waitingForUpdates() {\r\n return !this.updateChecked || this.updateAvailable;\r\n }\r\n\r\n constructor(private updates: SwUpdate) {}\r\n\r\n async ngOnInit() {\r\n this.updates.available.subscribe(() => {\r\n // Keep the loading indicator active while we reload the page\r\n this.updateAvailable = true;\r\n window.location.reload();\r\n });\r\n if (this.updates.isEnabled) {\r\n // This promise will return when the update check is completed,\r\n // and if an update is available, it will also wait for the update\r\n // to be downloaded (at which point it calls our callback above and\r\n // we just need to reload the page to apply it).\r\n await this.updates.checkForUpdate();\r\n } else {\r\n console.log('Service worker updates are disabled.');\r\n }\r\n // The update check is done (or service workers are disabled), now\r\n // we can take the loading indicator down (unless we need to apply an\r\n // update, but in that case, we have already set this.updateAvailable\r\n // to true by this point, which keeps the loading indicator active).\r\n this.updateChecked = true;\r\n }\r\n}\r\n","","import { Component, Input } from '@angular/core';\r\nimport { ExplorationService } from '../services/exploration.service';\r\nimport { Store } from '@ngrx/store';\r\nimport { NzButtonSize } from 'ng-zorro-antd/button';\r\nimport { openDetails } from '../store/details.actions';\r\nimport { WeatherForecastHourGroup } from '../models/generated/WeatherForecastHourGroup.generated';\r\n\r\n@Component({\r\n selector: 'place-quick-details',\r\n templateUrl: './place-quick-details.component.html',\r\n styleUrls: ['./place-quick-details.component.css']\r\n})\r\nexport class PlaceQuickDetailsComponent {\r\n @Input() element!: WeatherForecastHourGroup;\r\n @Input() context!: string; // TODO: convert to enum: list | map\r\n @Input() isExpanded: boolean = false;\r\n\r\n loading = false;\r\n loadingFailed = false;\r\n size: NzButtonSize = 'large';\r\n showWebcamInList = false; // save as global in store observable\r\n showWebcamInMap = false; // save as global in store observable\r\n\r\n constructor(\r\n private explorationService: ExplorationService,\r\n private store: Store) {\r\n // empty\r\n }\r\n\r\n openDetails(place: WeatherForecastHourGroup) {\r\n this.store.dispatch(openDetails({\r\n place: {\r\n coords: place.coords!,\r\n name: place.place\r\n },\r\n switchView: true\r\n }));\r\n }\r\n\r\n getTemperatureStyling(temperature: number): string {\r\n if (temperature > 27) {\r\n return 'hot;'\r\n }\r\n else if (temperature > 18) {\r\n return 'comfortable';\r\n }\r\n else if (temperature > 14) {\r\n return 'almost-comfortable'\r\n }\r\n else if (temperature >= 10) {\r\n return 'little-cold';\r\n }\r\n else {\r\n return 'cold;'\r\n }\r\n }\r\n}\r\n","
\r\n \r\n\r\n\r\n
\r\n
Driving distance: {{element.drivingDurationDisplayText}}
\r\n \r\n Google maps\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n {{element.avgTemperature | number: '1.0-0'}} °C
\r\n
\r\n \r\n Clouds: {{(element.avgClouds! * 100 | number: '1.0-0')}}% \r\n \r\n 15\">\r\n \r\n Wind: {{element.avgWindSpeed | number: '1.0-0'}}\r\n km/h\r\n\r\n \r\n \r\n
\r\n {{element.hours[0].dateTimeDisplayText}} - {{ element.hours[element.hours.length - 1].dateTimeDisplayText }}, driving distance {{ element.drivingDurationDisplayText }}\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n
","import { Injectable, NgModule } from '@angular/core';\r\nimport { BrowserModule} from '@angular/platform-browser'; // HammerModule\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { AppComponent } from './app.component';\r\nimport { ExploreComponent } from './explore/explore.component';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { ServiceWorkerModule } from '@angular/service-worker';\r\nimport { environment } from '../environments/environment';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { SafePipe } from './services/safe.pipe';\r\nimport { WeatherMapComponent } from './weather-map/weather-map.component';\r\nimport { PlaceQuickDetailsComponent } from './place-quick-details/place-quick-details.component';\r\nimport { FiltersWindowComponent } from './filters-window/filters-window.component';\r\nimport { WeatherTableComponent } from './weather-table/weather-table.component';\r\nimport { GoogleMapsModule } from '@angular/google-maps';\r\nimport { StoreModule } from '@ngrx/store'\r\nimport { mapReducer } from './store/map.reducer';\r\nimport { detailsReducer } from './store/details.reducer';\r\nimport { NZ_I18N } from 'ng-zorro-antd/i18n';\r\nimport { en_US } from 'ng-zorro-antd/i18n';\r\nimport { registerLocaleData } from '@angular/common';\r\nimport lv from '@angular/common/locales/lv';\r\nimport { NzSliderModule } from \"ng-zorro-antd/slider\";\r\nimport { NzDropDownModule } from 'ng-zorro-antd/dropdown';\r\nimport { NZ_ICONS } from 'ng-zorro-antd/icon';\r\nimport { IconDefinition } from '@ant-design/icons-angular';\r\nimport * as AllIcons from '@ant-design/icons-angular/icons';\r\nimport { NzIconModule } from 'ng-zorro-antd/icon';\r\nimport { NzButtonModule } from 'ng-zorro-antd/button';\r\nimport { NzInputModule } from 'ng-zorro-antd/input';\r\nimport { NzDividerModule } from 'ng-zorro-antd/divider';\r\nimport { NzSwitchModule } from 'ng-zorro-antd/switch';\r\nimport { NzRadioModule } from 'ng-zorro-antd/radio';\r\nimport { NzSelectModule } from 'ng-zorro-antd/select';\r\nimport { NzTableModule } from 'ng-zorro-antd/table';\r\nimport { NgZorroAntdModule } from './ng-zorro.module';\r\nimport { commonFiltersReducer } from './store/common-filters.reducer';\r\nimport { StoreDevtoolsModule } from '@ngrx/store-devtools';\r\nimport { DetailsViewComponent } from './details-view/details-view.component';\r\nimport { NzTabsModule } from 'ng-zorro-antd/tabs';\r\nimport { LoaderComponent } from './loader/loader.component';\r\nimport { WeatherHoursComponent } from './weather-hours/weather-hours.component';\r\nimport { DetailsViewDayTabComponent } from './details-view-day-tab/details-view-day-tab.component';\r\nimport { DetailsViewDayListTabComponent } from './details-view-day-list-tab/details-view-day-list-tab.component';\r\nimport { HammerGestureConfig, HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';\r\nimport { NzNotificationModule } from 'ng-zorro-antd/notification';\r\n\r\nconst antDesignIcons = AllIcons as {\r\n [key: string]: IconDefinition;\r\n};\r\nconst icons: IconDefinition[] = Object.keys(antDesignIcons).map(key => antDesignIcons[key])\r\n\r\nregisterLocaleData(lv);\r\n\r\nexport class MyHammerConfig extends HammerGestureConfig {\r\n overrides = {\r\n 'swipe': {\r\n // override default settings\r\n velocity: 0.4,\r\n threshold: 20\r\n }\r\n }\r\n}\r\n\r\nimport { NzConfig, NZ_CONFIG } from 'ng-zorro-antd/core/config';\r\n\r\nconst ngZorroConfig: NzConfig = {\r\n notification: { nzBottom: 80, nzPlacement: 'bottomLeft' }\r\n};\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n ExploreComponent,\r\n SafePipe,\r\n WeatherMapComponent,\r\n PlaceQuickDetailsComponent,\r\n FiltersWindowComponent,\r\n WeatherTableComponent,\r\n DetailsViewComponent,\r\n LoaderComponent,\r\n WeatherHoursComponent,\r\n DetailsViewDayTabComponent,\r\n DetailsViewDayListTabComponent,\r\n ],\r\n imports: [\r\n //HammerModule,\r\n BrowserModule,\r\n AppRoutingModule,\r\n BrowserAnimationsModule,\r\n HttpClientModule,\r\n ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production }),\r\n FormsModule,\r\n GoogleMapsModule,\r\n NzSliderModule,\r\n NzDropDownModule,\r\n NzIconModule,\r\n NzButtonModule,\r\n NzDividerModule,\r\n NzInputModule,\r\n NzSwitchModule,\r\n NzRadioModule,\r\n NzSelectModule,\r\n NzTableModule,\r\n NgZorroAntdModule,\r\n NzTabsModule,\r\n NzNotificationModule,\r\n StoreModule.forRoot({ pois: mapReducer, commonFilters: commonFiltersReducer, details: detailsReducer }),\r\n !environment.production ? StoreDevtoolsModule.instrument() : [],\r\n ],\r\n providers: [CookieService, { provide: NZ_I18N, useValue: en_US }, { provide: NZ_ICONS, useValue: icons },\r\n { provide: NZ_CONFIG, useValue: ngZorroConfig }\r\n// ,{\r\n// provide: HAMMER_GESTURE_CONFIG,\r\n// useClass: MyHammerConfig\r\n// }\r\n],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","import { Action, createReducer, on } from '@ngrx/store';\r\nimport { PointOfInterest } from '../models/generated/PointOfInterest.generated';\r\nimport { addPois, resetPois, resetAndAddPois } from './map.actions';\r\n\r\nexport const pois: PointOfInterest[] = [];\r\n\r\nconst _mapReducer = createReducer(\r\n pois,\r\n on(addPois, (state: PointOfInterest[], { pois }): PointOfInterest[] => state.concat(pois)),\r\n on(resetPois, (): PointOfInterest[] => []),\r\n on(resetAndAddPois, (state: PointOfInterest[], { pois }): PointOfInterest[] => pois)\r\n);\r\n\r\nexport function mapReducer(state: PointOfInterest[] | undefined, action: Action) {\r\n return _mapReducer(state, action);\r\n}","
\r\n \"loading\"\r\n
\r\n \"loading

\r\n \r\n
\r\n
","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.css']\r\n})\r\nexport class LoaderComponent implements OnInit {\r\n\r\n @Input() loading: boolean = true;\r\n @Input() loadingFailed: boolean = false;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n reload() {\r\n location.reload();\r\n }\r\n}\r\n","export const CustomPlace: string = \"[CUSTOM]\"\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ExplorationService } from '../services/exploration.service';\r\nimport { DetailsState } from '../store/details.reducer';\r\nimport { Store } from '@ngrx/store';\r\nimport { WeatherForecastPlaceFullDetail } from '../models/generated/WeatherForecastPlaceFullDetail.generated';\r\nimport { TodayTomorrow } from '../models/TodayTomorrowEnum';\r\nimport { FavService } from '../services/fav.service';\r\n// import { PointOfInterest } from '../models/generated/PointOfInterest.generated';\r\n// import { resetAndAddPois } from '../store/map.actions';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, of, Subject } from 'rxjs';\r\nimport { catchError, debounceTime, map, switchMap } from 'rxjs/operators';\r\nimport { Place } from '../models/generated/Place.generated';\r\n\r\ninterface SearchArgs {\r\n searchTerm: string;\r\n favs: Place[];\r\n}\r\n\r\n@Component({\r\n selector: 'details-view',\r\n templateUrl: './details-view.component.html',\r\n styleUrls: ['./details-view.component.css']\r\n})\r\nexport class DetailsViewComponent implements OnInit {\r\n readonly TodayTomorrow = TodayTomorrow;\r\n\r\n // poiDistanceKm = 30;\r\n \r\n detailsState$: Observable;\r\n\r\n // Object from backend api:\r\n fullDetails: WeatherForecastPlaceFullDetail | null = null;\r\n\r\n loading: boolean = true;\r\n loadingFailed: boolean = false;\r\n isSearchLoading: boolean = false;\r\n \r\n selectedPlace: Place | null = null;\r\n optionList: Place[] = [];\r\n searchChange$ = new Subject();\r\n currentTabIndex: number = 0;\r\n\r\n constructor(private explorationService: ExplorationService,\r\n private favService: FavService,\r\n private store: Store<{ details: DetailsState }>) {\r\n this.detailsState$ = store.select('details');\r\n\r\n this.detailsState$.subscribe((details: DetailsState) => {\r\n this.loading = true;\r\n this.selectedPlace = details.place;\r\n\r\n if (this.selectedPlace !== null) {\r\n this.optionList = [this.selectedPlace];\r\n\r\n this.loadSelectedPlace();\r\n }\r\n });\r\n }\r\n\r\n swipeRight() {\r\n // disabled, bugs, non priority\r\n // console.log('test')\r\n // const numTabs: number = this.fullDetails && this.fullDetails.pointsOfInterest ? 4 : 3;\r\n // this.currentTabIndex = (this.currentTabIndex + 1) % numTabs;\r\n }\r\n\r\n swipeLeft() {\r\n // disabled, bugs, non priority\r\n // const numTabs: number = this.fullDetails && this.fullDetails.pointsOfInterest ? 4 : 3;\r\n // this.currentTabIndex = (this.currentTabIndex - 1) < 0 ? numTabs - 1 : (this.currentTabIndex - 1);\r\n }\r\n\r\n loadSelectedPlace(ignoreCache: boolean = false) {\r\n this.loading = true;\r\n\r\n if (this.selectedPlace === null)\r\n {\r\n console.log(\"Selected place null\");\r\n return;\r\n }\r\n\r\n this.explorationService.getPlaceDetails(this.selectedPlace, ignoreCache).subscribe(details => {\r\n console.log(\"Full details model:\");\r\n console.log(details);\r\n this.fullDetails = details;\r\n\r\n this.loading = false;\r\n }, error => {\r\n this.loadingFailed = true;\r\n console.error(\"place loading failed\");\r\n });\r\n }\r\n\r\n get favs(): Place[] {\r\n return this.favService.getFavorites();\r\n }\r\n\r\n isFav(): boolean {\r\n return this.selectedPlace !== null && this.favs.map(fav => fav.name.split(',')[0]).includes(this.selectedPlace.name.split(',')[0]);\r\n }\r\n\r\n toggleFav() {\r\n if (!this.selectedPlace) {\r\n return;\r\n }\r\n\r\n if (this.isFav()) {\r\n this.favService.removeFavorite(this.selectedPlace);\r\n }\r\n else {\r\n this.favService.addFavorite(this.selectedPlace);\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n const getResults = (args: SearchArgs): Observable =>\r\n this.explorationService.getPlaceSearchResults(args.searchTerm, args.favs)\r\n .pipe(\r\n catchError(() => of({ results: [] })),\r\n map((res: any) => res)\r\n );\r\n\r\n const optionList$: Observable = this.searchChange$\r\n .asObservable()\r\n .pipe(debounceTime(500))\r\n .pipe(switchMap(getResults));\r\n\r\n optionList$.subscribe(data => {\r\n this.optionList = data;\r\n this.isSearchLoading = false;\r\n });\r\n }\r\n\r\n onSearch(value: string): void {\r\n this.isSearchLoading = true;\r\n this.searchChange$.next( { searchTerm: value, favs: this.favs });\r\n }\r\n\r\n // findPois(): void {\r\n // this.loading = true;\r\n // this.explorationService.getPoiForPlace(this.fullDetails!.placeName, this.poiDistanceKm).subscribe(poiList => {\r\n // // Send pois to map, reset first\r\n // this.store.dispatch(resetAndAddPois({\r\n // pois: poiList\r\n // }));\r\n\r\n // this.loading = false;\r\n // }, error => {\r\n // this.loadingFailed = true;\r\n // });\r\n // }\r\n}\r\n","\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n Loading Data...\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n\r\n \r\n\r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n {{ poi.type }}\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n {{ poi.type }}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
","import { Action, createReducer, on, select } from '@ngrx/store';\r\nimport { Place } from '../models/generated/Place.generated';\r\nimport { openDetails } from './details.actions';\r\n\r\nexport interface DetailsState {\r\n place: Place | null;\r\n switchView: boolean;\r\n}\r\n\r\nexport const details : DetailsState = {\r\n place: null,\r\n switchView: false\r\n}\r\n\r\nconst _detailsReducer = createReducer(\r\n details,\r\n on(openDetails, (state, { place, switchView }) => ({ place: place, switchView: switchView }))\r\n);\r\n\r\nexport function detailsReducer(state: DetailsState | undefined, action: Action) {\r\n return _detailsReducer(state, action);\r\n}","import { Action, createReducer, on } from '@ngrx/store';\r\nimport { updateState } from './common-filters.actions';\r\nimport { CommonFilters, GoArgs } from '../models/Args';\r\nimport * as moment from 'moment';\r\nimport { SuggestedFilters } from '../models/generated/SuggestedFilters.generated';\r\nimport { Observable } from 'rxjs';\r\nimport { Region } from '../models/generated/Enum/Region.generated';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\n\r\nexport interface FiltersState {\r\n commonFilters: CommonFilters | null;\r\n}\r\n\r\nexport const filtersState : FiltersState = {\r\n commonFilters: null,\r\n}\r\n\r\n// function getCommonFiltersInitialModel(): CommonFilters {\r\n\r\n// const savedFilterModel: string | null = localStorage.getItem(\"filterModel\");\r\n\r\n// if (savedFilterModel) {\r\n// const data: GoArgs = JSON.parse(savedFilterModel);\r\n\r\n// return {\r\n// distanceMin: data.distanceMin,\r\n// isAllFiltersEnabled: data.isAllFiltersEnabled,\r\n// selectedDay: data.selectedDay,\r\n// selectedFrom: +data.selectedFrom.replace(':', ''),\r\n// selectedTo: +data.selectedTo.replace(':', '')\r\n// };\r\n// }\r\n// else {\r\n// const format: string = 'HH:mm:ss';\r\n// let beforeTime = moment('00:00:00', format), afterTime = moment('20:00:00', format);\r\n// let selectedDay = moment().isBetween(beforeTime, afterTime) ? \"today\" : \"tomorrow\";\r\n// let selectedFrom, selectedTo;\r\n\r\n// // Then let's set time for tomorrow or for today\r\n// if (selectedDay == \"tomorrow\") {\r\n// selectedFrom = 1100;\r\n// selectedTo = 2000;\r\n// }\r\n// else {\r\n// selectedTo = 2000;\r\n// selectedFrom = +moment().format('HH00');\r\n \r\n// // Check if it's before 11:00, then show from 11:00\r\n// if (moment().isBefore(moment(\"1100\", 'HHmm'))) {\r\n// selectedFrom = 1100;\r\n// }\r\n// }\r\n\r\n// return {\r\n// distanceMin: 120,\r\n// isAllFiltersEnabled: true,\r\n// selectedDay: selectedDay,\r\n// selectedFrom: selectedFrom,\r\n// selectedTo: selectedTo,\r\n// };\r\n// }\r\n// }\r\n\r\nconst _commonFiltersReducer = createReducer(\r\n filtersState,\r\n on(updateState, (existingState: FiltersState, { filtersState }): FiltersState => filtersState),\r\n);\r\n\r\nexport function commonFiltersReducer(state: FiltersState | undefined, action: Action) {\r\n return _commonFiltersReducer(state, action);\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml, SafeStyle, SafeScript, SafeUrl, SafeResourceUrl } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'safe'\r\n})\r\nexport class SafePipe implements PipeTransform {\r\n\r\n constructor(protected sanitizer: DomSanitizer) {}\r\n \r\n public transform(value: any, type: string): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\r\n switch (type) {\r\n\t\t\tcase 'html': return this.sanitizer.bypassSecurityTrustHtml(value);\r\n\t\t\tcase 'style': return this.sanitizer.bypassSecurityTrustStyle(value);\r\n\t\t\tcase 'script': return this.sanitizer.bypassSecurityTrustScript(value);\r\n\t\t\tcase 'url': return this.sanitizer.bypassSecurityTrustUrl(value);\r\n\t\t\tcase 'resourceUrl': return this.sanitizer.bypassSecurityTrustResourceUrl(value);\r\n\t\t\tdefault: throw new Error(`Invalid safe type specified: ${type}`);\r\n\t\t}\r\n }\r\n}","import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { CommonFilters, GoArgs, TimeRangeFilters } from '../models/Args';\r\nimport { FavService } from '../services/fav.service';\r\nimport { NzMarks, NzSliderValue } from 'ng-zorro-antd/slider';\r\nimport { Observable } from 'rxjs';\r\nimport { Store } from '@ngrx/store';\r\nimport { updateState } from '../store/common-filters.actions';\r\nimport { Place } from '../models/generated/Place.generated';\r\nimport { FiltersState } from '../store/common-filters.reducer';\r\nimport { ExplorationService } from '../services/exploration.service';\r\nimport { Moment } from 'moment';\r\nimport { SuggestedFilters } from '../models/generated/SuggestedFilters.generated';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ThrowStmt } from '@angular/compiler';\r\nimport { CustomPlace } from '../models/Constants';\r\nimport { openDetails } from '../store/details.actions';\r\nimport { last } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'filters-window',\r\n templateUrl: './filters-window.component.html',\r\n styleUrls: ['./filters-window.component.css']\r\n})\r\nexport class FiltersWindowComponent implements OnInit {\r\n // * All values temporary to not break model until init load succeeds:\r\n isAutoUpdateEnabled: boolean = true;\r\n lastAutoUpdateIsoDateTimeUtc: string = moment().utc().add(-1, 'day').toISOString();\r\n sunriseIsoDateTime: string = moment(\"9:00\", \"H:mm\").toISOString();\r\n sunsetIsoDateTime: string = moment(\"18:00\", \"H:mm\").toISOString();\r\n\r\n distanceMin: number = 120;\r\n minTemperature: number = 17\r\n maxTemperature: number = 26\r\n maxClouds: number = 60;\r\n maxWind: number = 18;\r\n maxRain: number = 40;\r\n\r\n isAllFiltersEnabled: boolean = false;\r\n isTemperatureFilterEnabled: boolean = true;\r\n isCloudsFilterEnabled: boolean = true;\r\n isWindFilterEnabled: boolean = true;\r\n isRainFilterEnabled: boolean = true;\r\n\r\n selectedDay: string = \"today\";\r\n selectedFrom: number = 900;\r\n selectedTo: number = 1800;\r\n originName: string = \"origin\";\r\n\r\n timeRangeFilters: TimeRangeFilters =\r\n {\r\n selectedDay: 'today',\r\n selectedFromToday: 900,\r\n selectedToToday: 1800,\r\n selectedFromTomorrow: 900,\r\n selectedToTomorrow: 1800,\r\n selectedFromAfterTomorrow: 900,\r\n selectedToAfterTomorrow: 1800,\r\n };\r\n\r\n disableGoAndShowLoading: boolean = false;\r\n loadingFailed: boolean = false;\r\n\r\n @Output() go = new EventEmitter();\r\n\r\n commonFilters$: Observable;\r\n\r\n debouncedGo: (model: CommonFilters) => void;\r\n\r\n constructor(private favService: FavService, private explorationService: ExplorationService, private store: Store<{ commonFilters: FiltersState }>) {\r\n this.debouncedGo = this.debounce((model: CommonFilters) => {\r\n this.store.dispatch(updateState({\r\n filtersState: { commonFilters: model }\r\n }));\r\n\r\n this.saveStateToLocalStorage(model);\r\n this.go.emit(this.buildGoArgsFromCommonFiltersModel(model));\r\n }, 1500);\r\n\r\n this.commonFilters$ = store.select('commonFilters');\r\n }\r\n\r\n buildGoArgsFromCommonFiltersModel(model: CommonFilters): GoArgs {\r\n let goModel: GoArgs;\r\n\r\n let selectedFrom = model.timeRangeFilters.selectedFromToday;\r\n let selectedTo = model.timeRangeFilters.selectedToToday;\r\n\r\n if (model.timeRangeFilters.selectedDay === \"tomorrow\") {\r\n selectedFrom = model.timeRangeFilters.selectedFromTomorrow;\r\n selectedTo = model.timeRangeFilters.selectedToTomorrow;\r\n }\r\n else if (model.timeRangeFilters.selectedDay === \"after-tomorrow\") {\r\n selectedFrom = model.timeRangeFilters.selectedFromAfterTomorrow;\r\n selectedTo = model.timeRangeFilters.selectedToAfterTomorrow;\r\n }\r\n\r\n goModel = {\r\n origin: this.explorationService.getOrigin()!, // should be resolved by now (*crosses fingers*)\r\n distanceMin: model.distanceMin,\r\n favs: this.favService.getFavorites(),\r\n isAllFiltersEnabled: model.isAllFiltersEnabled,\r\n isCloudsFilterEnabled: model.isAllFiltersEnabled ? model.isCloudsFilterEnabled : false,\r\n isRainFilterEnabled: model.isAllFiltersEnabled ? model.isRainFilterEnabled : false,\r\n isTemperatureFilterEnabled: model.isAllFiltersEnabled ? model.isTemperatureFilterEnabled : false,\r\n isWindFilterEnabled: model.isAllFiltersEnabled ? model.isWindFilterEnabled : false,\r\n maxClouds: model.maxClouds,\r\n maxRain: model.maxRain,\r\n maxTemperature: model.maxTemperature,\r\n maxWind: model.maxWind,\r\n minTemperature: model.minTemperature,\r\n selectedDay: model.timeRangeFilters.selectedDay,\r\n selectedFrom: moment(selectedFrom.toString(), 'hmm').format(\"H:mm\"), //+selectedFrom.replace(':', ''),\r\n selectedTo: moment(selectedTo.toString(), 'hmm').format(\"H:mm\"), //+selectedTo.replace(':', ''),\r\n }\r\n\r\n return goModel;\r\n }\r\n\r\n ngOnInit(): void {\r\n // Enabled in handleFiltersOnWebsiteOpen\r\n this.disableGoAndShowLoading = true;\r\n\r\n this.commonFilters$.subscribe((filters: FiltersState) => {\r\n if (filters.commonFilters === null) { // Comes when website opened\r\n this.handleFiltersOnWebsiteOpen();\r\n }\r\n else { // Filter update after website init has been done (from some other componenet or reflected)\r\n this.handleUpdateToFiltersFromOtherComponentAndReflection(JSON.parse(JSON.stringify(filters))!);\r\n }\r\n });\r\n\r\n // Check here if 1 day has passed and update using suggested filters (needed if website is not reloaded every 24h)\r\n // TODO: migrate to service worker approach with periodic bg sync - https://developer.chrome.com/articles/periodic-background-sync/\r\n setTimeout(() => {\r\n this.checkIfWebsiteOpenSinceYesterday();\r\n }, 60 * 60 * 1000); // 1h\r\n\r\n this.favService.requestingRefresh.subscribe(() => {\r\n this.goEmit();\r\n console.log(\"refresh requested\")\r\n });\r\n }\r\n\r\n private checkIfWebsiteOpenSinceYesterday() {\r\n const localStorageState: CommonFilters | null = this.getSavedStateFromLocalStorage();\r\n\r\n if (localStorageState === null) {\r\n return;\r\n } \r\n\r\n let lastExecutionTime = localStorageState.lastAutoUpdateIsoDateTimeUtc;\r\n let lastExecutionDay = moment(lastExecutionTime).utc().date();\r\n let currentDay = moment().utc().date();\r\n let has1dPassedSinceLastAutoUpdate = lastExecutionDay != currentDay;\r\n\r\n // We want to update only if 1d has passed\r\n if (has1dPassedSinceLastAutoUpdate) {\r\n this.handleFiltersOnWebsiteOpen();\r\n }\r\n\r\n // TODO: migrate to service worker approach with periodic bg sync - https://developer.chrome.com/articles/periodic-background-sync/\r\n setTimeout(() => {\r\n this.checkIfWebsiteOpenSinceYesterday();\r\n }, 60 * 60 * 1000); // 1h\r\n }\r\n\r\n private handleFiltersOnWebsiteOpen() {\r\n const localStorageState: CommonFilters | null = this.getSavedStateFromLocalStorage();\r\n\r\n this.explorationService.getSuggestedFilters().subscribe(suggestedFilters => {\r\n // Set region from server\r\n this.resolveRegionAndOrigin(suggestedFilters, localStorageState);\r\n\r\n const commonFiltersModel: CommonFilters = this.getCommonFiltersBasedOnLocalStorageAndSuggested(localStorageState, suggestedFilters);\r\n this.saveStateToLocalStorage(commonFiltersModel);\r\n\r\n this.setFiltersComponentMasterModel(commonFiltersModel);\r\n\r\n this.disableGoAndShowLoading = false;\r\n\r\n this.store.dispatch(updateState({\r\n filtersState: { commonFilters: this.getFiltersComponentMasterModel() }\r\n }));\r\n\r\n // First time, push go\r\n const filterModel = this.getFiltersComponentMasterModel();\r\n this.saveStateToLocalStorage(filterModel);\r\n this.go.emit(this.buildGoArgsFromCommonFiltersModel(filterModel));\r\n }, error => {\r\n this.loadingFailed = true;\r\n console.error(\"suggested filters loading failed:\" + error);\r\n });\r\n }\r\n\r\n private resolveRegionAndOrigin(suggestedFilters: SuggestedFilters, localStorageState: CommonFilters | null) {\r\n this.explorationService.setRegionAndDefaultOrigin(suggestedFilters.region, suggestedFilters.regionDefaultOrigin);\r\n \r\n // Check if custom origin has been saved or not, if not use default\r\n if (localStorageState !== null && localStorageState.origin != null) {\r\n this.explorationService.setOrigin(localStorageState.origin);\r\n } else {\r\n this.explorationService.setOrigin(suggestedFilters.regionDefaultOrigin);\r\n\r\n // if default then prompt user for his location after 1 min timer simulate click on button\r\n const that = this;\r\n setTimeout(() => {\r\n if (that.explorationService.getOrigin()?.name !== CustomPlace) {\r\n that.setCurrentLocationOrigin();\r\n }\r\n }, 60 * 1000);\r\n }\r\n\r\n this.originName = this.explorationService.getOrigin()!.name === CustomPlace ? \"your location\" : this.explorationService.getOrigin()!.name;\r\n\r\n this.store.dispatch(openDetails({\r\n place: {name: this.originName, coords: this.explorationService.getOrigin()!.coords},\r\n switchView: false\r\n }));\r\n }\r\n\r\n private handleUpdateToFiltersFromOtherComponentAndReflection(filters: FiltersState) {\r\n const commonFilters = filters.commonFilters!;\r\n const that = this;\r\n\r\n if (hasIncomingModelChanges(commonFilters)) {\r\n this.distanceMin = commonFilters.distanceMin;\r\n\r\n const newOrigin: Place | null = that.explorationService.getOrigin();\r\n if (newOrigin != null && newOrigin.name === CustomPlace) {\r\n that.originName = \"your location\"; \r\n }\r\n\r\n if (this.isAllFiltersEnabled !== commonFilters.isAllFiltersEnabled) {\r\n this.isAllFiltersEnabled = commonFilters.isAllFiltersEnabled;\r\n }\r\n\r\n this.timeRangeFilters = JSON.parse(JSON.stringify(commonFilters.timeRangeFilters));\r\n this.selectedDay = commonFilters.timeRangeFilters.selectedDay;\r\n if (commonFilters.timeRangeFilters.selectedDay == 'today') {\r\n this.selectedFrom = commonFilters.timeRangeFilters.selectedFromToday;\r\n this.selectedTo = commonFilters.timeRangeFilters.selectedToToday;\r\n }\r\n else if (commonFilters.timeRangeFilters.selectedDay == 'tomorrow') {\r\n this.selectedFrom = commonFilters.timeRangeFilters.selectedFromTomorrow;\r\n this.selectedTo = commonFilters.timeRangeFilters.selectedToTomorrow;\r\n } else {\r\n this.selectedFrom = commonFilters.timeRangeFilters.selectedFromAfterTomorrow;\r\n this.selectedTo = commonFilters.timeRangeFilters.selectedToAfterTomorrow;\r\n }\r\n\r\n const filterModel = this.getFiltersComponentMasterModel();\r\n this.saveStateToLocalStorage(filterModel);\r\n this.go.emit(this.buildGoArgsFromCommonFiltersModel(filterModel));\r\n }\r\n\r\n function hasIncomingModelChanges(filters: CommonFilters): boolean {\r\n let areChanges = that.isAllFiltersEnabled !== filters.isAllFiltersEnabled ||\r\n that.distanceMin !== filters.distanceMin ||\r\n that.timeRangeFilters.selectedDay !== filters.timeRangeFilters.selectedDay;\r\n\r\n areChanges = areChanges ||\r\n that.timeRangeFilters.selectedFromToday !== +filters.timeRangeFilters.selectedFromToday ||\r\n that.timeRangeFilters.selectedToToday !== +filters.timeRangeFilters.selectedToToday ||\r\n that.timeRangeFilters.selectedFromTomorrow !== +filters.timeRangeFilters.selectedFromTomorrow ||\r\n that.timeRangeFilters.selectedToTomorrow !== +filters.timeRangeFilters.selectedToTomorrow ||\r\n that.timeRangeFilters.selectedFromAfterTomorrow !== +filters.timeRangeFilters.selectedFromAfterTomorrow ||\r\n that.timeRangeFilters.selectedToAfterTomorrow !== +filters.timeRangeFilters.selectedToAfterTomorrow;\r\n\r\n areChanges = areChanges ||\r\n (that.originName !== CustomPlace && filters.origin?.name === CustomPlace)\r\n\r\n return areChanges;\r\n }\r\n }\r\n\r\n // * I think this actually should be stored in ngrx.... but it is here for now\r\n private getFiltersComponentMasterModel(): CommonFilters {\r\n return {\r\n origin: this.explorationService.getOrigin(),\r\n timeRangeFilters: this.timeRangeFilters,\r\n distanceMin: this.distanceMin >= 180 ? 360 : this.distanceMin,\r\n minTemperature: this.minTemperature,\r\n maxTemperature: this.maxTemperature,\r\n maxClouds: this.maxClouds,\r\n maxWind: this.maxWind,\r\n maxRain: this.maxRain,\r\n isAllFiltersEnabled: this.isAllFiltersEnabled,\r\n isTemperatureFilterEnabled: this.isTemperatureFilterEnabled,\r\n isCloudsFilterEnabled: this.isCloudsFilterEnabled,\r\n isWindFilterEnabled: this.isWindFilterEnabled,\r\n isRainFilterEnabled: this.isRainFilterEnabled,\r\n isAutoUpdateEnabled: this.isAutoUpdateEnabled,\r\n lastAutoUpdateIsoDateTimeUtc: this.lastAutoUpdateIsoDateTimeUtc,\r\n sunriseIsoDateTime: this.sunriseIsoDateTime,\r\n sunsetIsoDateTime: this.sunsetIsoDateTime,\r\n };\r\n }\r\n \r\n // * MASTER MODEL FOR FILTERS IS PLACED IN THIS COMPONENET AND NOT IN NGRX,\r\n // * NGRX ONLY CONTAINS THE UPDATES PART OF THE MODEL\r\n // * THIS COMPONENET IS THE SOURCE OF TRUTH\r\n setFiltersComponentMasterModel(model: CommonFilters) {\r\n this.isAutoUpdateEnabled = model.isAutoUpdateEnabled;\r\n this.lastAutoUpdateIsoDateTimeUtc = model.lastAutoUpdateIsoDateTimeUtc;\r\n this.sunriseIsoDateTime = model.sunriseIsoDateTime;\r\n this.sunsetIsoDateTime = model.sunsetIsoDateTime;\r\n\r\n this.minTemperature = model.minTemperature;\r\n this.distanceMin = model.distanceMin; \r\n this.maxTemperature = model.maxTemperature;\r\n this.maxClouds = model.maxClouds;\r\n this.maxWind = model.maxWind;\r\n this.maxRain = model.maxRain;\r\n\r\n this.isAllFiltersEnabled = model.isAllFiltersEnabled;\r\n this.isTemperatureFilterEnabled = model.isTemperatureFilterEnabled;\r\n this.isCloudsFilterEnabled = model.isCloudsFilterEnabled;\r\n this.isWindFilterEnabled = model.isWindFilterEnabled;\r\n this.isRainFilterEnabled = model.isRainFilterEnabled;\r\n\r\n this.timeRangeFilters = model.timeRangeFilters;\r\n this.selectedDay = model.timeRangeFilters.selectedDay;\r\n\r\n if (this.timeRangeFilters.selectedDay === 'today') {\r\n this.selectedFrom = this.timeRangeFilters.selectedFromToday;\r\n this.selectedTo = this.timeRangeFilters.selectedToToday;\r\n }\r\n else if (this.timeRangeFilters.selectedDay === 'tomorrow') {\r\n this.selectedFrom = this.timeRangeFilters.selectedFromTomorrow;\r\n this.selectedTo = this.timeRangeFilters.selectedToTomorrow;\r\n } else {\r\n this.selectedFrom = this.timeRangeFilters.selectedFromAfterTomorrow;\r\n this.selectedTo = this.timeRangeFilters.selectedToAfterTomorrow;\r\n }\r\n }\r\n\r\n private getCommonFiltersBasedOnLocalStorageAndSuggested(localStorageState: CommonFilters | null, suggestedFilters: SuggestedFilters) {\r\n // Algorithm:\r\n // I. If no stored state then set ALL as suggested\r\n // 1. Save time of last update\r\n // II. If has stored state and auto update is disabled SET ONLY DAYLIGHT (if it is set more than 1d ago)\r\n // 1. Save time of last update\r\n // III. If has stored state and auto update enabled\r\n // 1. Get time of last update\r\n // 2. If it is more than 1d ago, set all filters\r\n // 3. Save time of last update\r\n \r\n let commonFiltersModel: CommonFilters;\r\n\r\n if (localStorageState === null) {\r\n // Save all as suggested\r\n commonFiltersModel = {\r\n lastAutoUpdateIsoDateTimeUtc: moment().utc().toISOString(),\r\n\r\n // default for first time:\r\n distanceMin: 120,\r\n isAllFiltersEnabled: false,\r\n isAutoUpdateEnabled: true,\r\n\r\n sunriseIsoDateTime: suggestedFilters.sunriseIsoDateTime,\r\n sunsetIsoDateTime: suggestedFilters.sunsetIsoDateTime,\r\n maxClouds: suggestedFilters.maxClouds,\r\n maxRain: suggestedFilters.maxRain,\r\n maxWind: suggestedFilters.maxWind,\r\n maxTemperature: suggestedFilters.maxTemperature,\r\n minTemperature: suggestedFilters.minTemperature,\r\n isTemperatureFilterEnabled: suggestedFilters.isTemperatureFilterEnabled,\r\n isCloudsFilterEnabled: suggestedFilters.isCloudsFilterEnabled,\r\n isRainFilterEnabled: suggestedFilters.isRainFilterEnabled,\r\n isWindFilterEnabled: suggestedFilters.isWindFilterEnabled,\r\n\r\n timeRangeFilters: this.calculateAutoTimeRangeFilters(\r\n suggestedFilters.sunriseIsoDateTime,\r\n suggestedFilters.sunsetIsoDateTime\r\n ),\r\n \r\n origin: this.explorationService.getOrigin()\r\n };\r\n }\r\n else { // local storage state is NOT NULL\r\n // Check if at least 1d has passed since last auto update\r\n let lastExecutionTime = localStorageState.lastAutoUpdateIsoDateTimeUtc;\r\n let lastExecutionDay = moment(lastExecutionTime).utc().date();\r\n let currentDay = moment().utc().date();\r\n let has1dPassedSinceLastAutoUpdate = lastExecutionDay != currentDay;\r\n\r\n commonFiltersModel = localStorageState;\r\n\r\n // We want to update only if 1d has passed\r\n if (has1dPassedSinceLastAutoUpdate) {\r\n if (localStorageState.isAutoUpdateEnabled) {\r\n commonFiltersModel = {\r\n origin: this.explorationService.getOrigin(),\r\n lastAutoUpdateIsoDateTimeUtc: moment().utc().toISOString(),\r\n\r\n // use saved:\r\n distanceMin: localStorageState.distanceMin,\r\n isAllFiltersEnabled: localStorageState.isAllFiltersEnabled,\r\n isAutoUpdateEnabled: localStorageState.isAutoUpdateEnabled,\r\n\r\n sunriseIsoDateTime: suggestedFilters.sunriseIsoDateTime,\r\n sunsetIsoDateTime: suggestedFilters.sunsetIsoDateTime,\r\n maxClouds: suggestedFilters.maxClouds,\r\n maxRain: suggestedFilters.maxRain,\r\n maxWind: suggestedFilters.maxWind,\r\n maxTemperature: suggestedFilters.maxTemperature,\r\n minTemperature: suggestedFilters.minTemperature,\r\n isTemperatureFilterEnabled: suggestedFilters.isTemperatureFilterEnabled,\r\n isCloudsFilterEnabled: suggestedFilters.isCloudsFilterEnabled,\r\n isRainFilterEnabled: suggestedFilters.isRainFilterEnabled,\r\n isWindFilterEnabled: suggestedFilters.isWindFilterEnabled,\r\n\r\n timeRangeFilters: this.calculateAutoTimeRangeFilters(\r\n suggestedFilters.sunriseIsoDateTime,\r\n suggestedFilters.sunsetIsoDateTime\r\n )\r\n };\r\n }\r\n else {\r\n // Still update sunrise/sunset fields (but no other, including dont set from/to)\r\n commonFiltersModel.sunriseIsoDateTime = suggestedFilters.sunriseIsoDateTime;\r\n commonFiltersModel.sunsetIsoDateTime = suggestedFilters.sunsetIsoDateTime;\r\n }\r\n }\r\n }\r\n\r\n return commonFiltersModel;\r\n }\r\n\r\n autoSet() {\r\n // ! warning! This is a workaround to get this auto update working, to remove this need refactor\r\n this.isAutoUpdateEnabled = true;\r\n\r\n const model = this.getSavedStateFromLocalStorage()!;\r\n model.lastAutoUpdateIsoDateTimeUtc = moment().utc().add(-2, 'days').toISOString();\r\n this.saveStateToLocalStorage(model);\r\n\r\n // simulate first open with outdated config and enabled auto update\r\n this.handleFiltersOnWebsiteOpen();\r\n }\r\n\r\n formatter(value: number): string {\r\n let prefix = \"\";\r\n if (value === 35) {\r\n prefix = \">\";\r\n }\r\n else if (value === 0) {\r\n prefix = \"<\";\r\n }\r\n return prefix + `${value} C`;\r\n }\r\n\r\n formatterTime(value: number): string {\r\n const val = value.toString();\r\n return val.includes(\"000\") ? val.replace(\"000\", \"0:00\") : val.replace(\"00\", \":00\");\r\n }\r\n\r\n formatterDistance(value: number): string {\r\n return value.toString() + \"km\";\r\n }\r\n\r\n formatterPercent(value: number): string {\r\n return value.toString() + \"%\";\r\n }\r\n\r\n formatterDistanceMinutes(value: number): string {\r\n return value.toString() + (value === 180 ? \"+\" : \"\") + \" mins\";\r\n }\r\n\r\n formatterWind(value: number): string {\r\n return value.toString() + (value === 42 ? \"+\" : \"\") + \" km/h\";\r\n }\r\n\r\n toggleFiltersEnabled(newValue: boolean) {\r\n if (this.disableGoAndShowLoading) {\r\n return;\r\n }\r\n\r\n this.disableGoAndShowLoading = true;\r\n\r\n // this.isTemperatureFilterEnabled = newValue;\r\n // this.isCloudsFilterEnabled = newValue;\r\n // this.isWindFilterEnabled = newValue;\r\n // this.isRainFilterEnabled = newValue;\r\n this.isAllFiltersEnabled = newValue;\r\n\r\n this.disableGoAndShowLoading = false;\r\n this.goEmit();\r\n }\r\n\r\n sliderTimeChanged(param: NzSliderValue) {\r\n const model: number[] = param as number[];\r\n this.selectedFrom = model[0];\r\n this.selectedTo = model[1];\r\n\r\n // Weird read-only issue most likely related to angular componenet binding\r\n this.timeRangeFilters = JSON.parse(JSON.stringify(this.timeRangeFilters));\r\n\r\n if (this.selectedDay === 'today') {\r\n this.timeRangeFilters.selectedFromToday = this.selectedFrom;\r\n this.timeRangeFilters.selectedToToday = this.selectedTo;\r\n } else if (this.selectedDay === 'tomorrow') {\r\n this.timeRangeFilters.selectedFromTomorrow = this.selectedFrom;\r\n this.timeRangeFilters.selectedToTomorrow= this.selectedTo;\r\n } else {\r\n this.timeRangeFilters.selectedFromAfterTomorrow = this.selectedFrom;\r\n this.timeRangeFilters.selectedToAfterTomorrow = this.selectedTo;\r\n }\r\n\r\n this.goEmit();\r\n }\r\n\r\n sliderTemperatureChanged(param: NzSliderValue) {\r\n const model: number[] = param as number[];\r\n this.minTemperature = model[0];\r\n this.maxTemperature = model[1];\r\n\r\n this.goEmit();\r\n }\r\n\r\n selectedDayChanged(model: string) {\r\n this.selectedDay = model;\r\n\r\n // Weird read-only issue most likely related to angular componenet binding\r\n this.timeRangeFilters = JSON.parse(JSON.stringify(this.timeRangeFilters));\r\n\r\n this.timeRangeFilters.selectedDay = this.selectedDay;\r\n\r\n if (this.selectedDay === 'today') {\r\n this.selectedFrom = this.timeRangeFilters.selectedFromToday;\r\n this.selectedTo = this.timeRangeFilters.selectedToToday;\r\n } else if (this.selectedDay === 'tomorrow') {\r\n this.selectedFrom = this.timeRangeFilters.selectedFromTomorrow;\r\n this.selectedTo = this.timeRangeFilters.selectedToTomorrow;\r\n } else {\r\n this.selectedFrom = this.timeRangeFilters.selectedFromAfterTomorrow;\r\n this.selectedTo = this.timeRangeFilters.selectedToAfterTomorrow;\r\n }\r\n\r\n this.goEmit();\r\n }\r\n\r\n goEmit(): void {\r\n if (this.disableGoAndShowLoading) {\r\n return;\r\n }\r\n\r\n const filterModel = this.getFiltersComponentMasterModel();\r\n this.debouncedGo(filterModel);\r\n }\r\n\r\n debounce = any>(func: F, waitFor: number) => {\r\n let timeout: ReturnType | null = null;\r\n\r\n const debounced = (...args: Parameters) => {\r\n if (timeout !== null) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n timeout = setTimeout(() => func(...args), waitFor);\r\n };\r\n\r\n return debounced as (...args: Parameters) => ReturnType;\r\n };\r\n\r\n // private autoSetUntilSunset(): void {\r\n // const model: TimeRangeFilters = \r\n // this.calculateAutoTimeRangeFilters(this.sunriseIsoDateTime, this.sunsetIsoDateTime);\r\n\r\n // if (this.selectedDay == 'today') {\r\n // this.selectedFrom = model.selectedFromToday\r\n // this.selectedTo = model.selectedToToday\r\n // }\r\n // else { // same for after tomorrow\r\n // this.selectedFrom = model.selectedFromTomorrow\r\n // this.selectedTo = model.selectedToTomorrow\r\n // }\r\n // }\r\n\r\n private calculateAutoTimeRangeFilters(sunriseIsoDateTime: string, sunsetIsoDateTime: string): TimeRangeFilters {\r\n const sunrise: Moment = keepOnlyHourPartOfDateTime(sunriseIsoDateTime);\r\n const sunset: Moment = keepOnlyHourPartOfDateTime(sunsetIsoDateTime).clone().add(1, 'hours');\r\n\r\n const selectedDay = moment().isBetween(sunrise, sunset.clone().add(-1, 'hours')) ? \"today\" : \"tomorrow\";\r\n\r\n // TODO: check if sunrise to sunset is less than 8h, then add 1h to sunset\r\n // TODO: also if sunrise is earlier than 9 probably reduce to 9\r\n const model: TimeRangeFilters = {\r\n selectedDay: selectedDay,\r\n selectedFromToday: +moment().format('HH00'),\r\n selectedToToday: +sunset.clone().add(0, 'hours').format('HH00'),\r\n selectedFromTomorrow: +sunrise.format('HH00'),\r\n selectedToTomorrow: +sunset.clone().add(0, 'hours').format('HH00'),\r\n selectedFromAfterTomorrow: +sunrise.format('HH00'),\r\n selectedToAfterTomorrow: +sunset.clone().add(0, 'hours').format('HH00'),\r\n }\r\n\r\n // check if for today from is after tomorrow\r\n if (moment().isAfter(sunset.clone().add(-1, \"hours\"))) {\r\n const hours3AfterNow = +moment().clone().add(3, 'hours').format('HH00');\r\n if (hours3AfterNow > 2300) {\r\n model.selectedFromToday = 2100;\r\n model.selectedToToday = 2300;\r\n } else {\r\n model.selectedFromToday = +moment().format('HH00');\r\n model.selectedToToday = hours3AfterNow;\r\n }\r\n }\r\n\r\n return model;\r\n\r\n function keepOnlyHourPartOfDateTime(isoDateTime: string): moment.Moment {\r\n return moment(moment(isoDateTime).format('HH00'), 'HH00');\r\n }\r\n }\r\n\r\n private getSavedStateFromLocalStorage(): CommonFilters | null {\r\n const savedFilterModel: string | null = localStorage.getItem(\"filterModel\");\r\n\r\n if (savedFilterModel) {\r\n const data: CommonFilters = JSON.parse(savedFilterModel);\r\n return data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n private saveStateToLocalStorage(filterModel: CommonFilters): void {\r\n localStorage.setItem(\"filterModel\", JSON.stringify(filterModel));\r\n }\r\n\r\n setCurrentLocationOrigin() {\r\n const that = this;\r\n this.explorationService.setCurrentLocationOrigin(() => {\r\n const newOrigin: Place | null = that.explorationService.getOrigin();\r\n\r\n if (newOrigin != null && newOrigin.name === CustomPlace) {\r\n that.originName = \"your location\"; \r\n }\r\n\r\n that.goEmit();\r\n });\r\n }\r\n\r\n marksTemperature: NzMarks = {\r\n 0: {\r\n style: {\r\n color: '#48f'\r\n },\r\n label: '< 0C'\r\n },\r\n 6: `6C`,\r\n 13: `13C`,\r\n 17: `17C`,\r\n 21: `21C`,\r\n 26: `26C`,\r\n 29: `29C`,\r\n 35: {\r\n style: {\r\n color: '#f50'\r\n },\r\n label: '>35'\r\n },\r\n };\r\n\r\n marksTime: NzMarks = {\r\n 900: {\r\n // style: {\r\n // color: '#05f'\r\n // },\r\n label: '9:00'\r\n },\r\n 1100: `11:00`,\r\n 1400: `14:00`,\r\n 1700: `17:00`,\r\n 2000: `20:00`,\r\n 2300: {\r\n // style: {\r\n // color: '#f50'\r\n // },\r\n label: '23:00'\r\n },\r\n };\r\n\r\n marksDistance: NzMarks = {\r\n 0: {\r\n // style: {\r\n // color: '#05f'\r\n // },\r\n label: '0km'\r\n },\r\n 20: `20`,\r\n 40: `40km`,\r\n 70: `70`,\r\n 100: `100km`,\r\n 200: {\r\n // style: {\r\n // color: '#f50'\r\n // },\r\n label: '200+'\r\n },\r\n };\r\n\r\n marksDistanceMinutes: NzMarks = {\r\n 10: {\r\n // style: {\r\n // color: '#05f'\r\n // },\r\n label: '10 mins'\r\n },\r\n 30: `30`,\r\n 60: `60 mins`,\r\n 90: `90`,\r\n 120: `120 mins`,\r\n 180: {\r\n // style: {\r\n // color: '#f50'\r\n // },\r\n label: '180+'\r\n },\r\n };\r\n\r\n marksPercentClouds: NzMarks = {\r\n 0: {\r\n // style: {\r\n // color: '#05f'\r\n // },\r\n label: '0%'\r\n },\r\n 20: `20%`,\r\n 40: `40%`,\r\n 60: `60%`,\r\n 80: `80%`,\r\n 100: {\r\n // style: {\r\n // color: '#f50'\r\n // },\r\n label: '100%'\r\n },\r\n };\r\n\r\n marksPercentRain: NzMarks = {\r\n 0: {\r\n // style: {\r\n // color: '#05f'\r\n // },\r\n label: '0%'\r\n },\r\n 20: `20%`,\r\n 40: `40%`,\r\n 60: `60%`,\r\n 80: `80%`,\r\n 100: {\r\n // style: {\r\n // color: '#f50'\r\n // },\r\n label: '100%'\r\n },\r\n };\r\n\r\n marksWind: NzMarks = {\r\n 0: {\r\n // style: {\r\n // color: '#05f'\r\n // },\r\n label: '0 km/h'\r\n },\r\n 6: `6`,\r\n 12: `12 km/h`,\r\n 18: `18`,\r\n 24: `24 km/h`,\r\n 30: {\r\n // style: {\r\n // color: '#f50'\r\n // },\r\n label: '30'\r\n },\r\n 42: {\r\n // style: {\r\n // color: '#f50'\r\n // },\r\n label: '42+'\r\n },\r\n };\r\n}\r\n","\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n Distance from {{ originName }}\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n
\r\n Enable all filters\r\n \r\n
\r\n\r\n
\r\n Temperature\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n Max cloud cover (0-100%)\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \"sunny\"\r\n
\r\n
\r\n \"cloud\r\n
\r\n
\r\n \"cloudy\"\r\n
\r\n
\r\n \r\n\r\n
\r\n Max wind (km/h) \"wind\"\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n Max chance of rain/snow (0-100%) \"rain\"\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n
\r\n \r\n \r\n\r\n \r\n
\r\n\r\n
\r\n Auto set every day\r\n \r\n
\r\n\r\n
\r\n\r\n
","export enum TodayTomorrow {\r\n\tToday,\r\n\tTomorrow,\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { GetForecastGroupsArgs } from '../models/Args';\r\nimport { Observable, of } from 'rxjs';\r\nimport { isDevMode } from '@angular/core';\r\nimport { HttpParams } from '@angular/common/http';\r\nimport { RegionForecast } from '../models/generated/RegionForecast.generated';\r\nimport { PointOfInterest } from '../models/generated/PointOfInterest.generated';\r\nimport { Coords } from '../models/generated/Coords.generated';\r\nimport { WeatherForecastPlaceFullDetail } from '../models/generated/WeatherForecastPlaceFullDetail.generated';\r\nimport { Place } from '../models/generated/Place.generated';\r\nimport { Region } from '../models/generated/Enum/Region.generated';\r\nimport { SuggestedFilters } from '../models/generated/SuggestedFilters.generated';\r\nimport { PlaceQuickDetailsComponent } from '../place-quick-details/place-quick-details.component';\r\nimport { CustomPlace } from '../models/Constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExplorationService {\r\n apiHost = \"\";\r\n\r\n private region: Region = Region.Madeira; // default, will be set from server using host\r\n private origin: Place | null = null; // default, will be set from server using host\r\n private defaultOrigin: Place | null = null; // recieved from server, used for map center\r\n\r\n getRegion() : Region {\r\n return this.region;\r\n }\r\n\r\n getDefaultOrigin() : Place | null {\r\n return this.defaultOrigin;\r\n }\r\n\r\n getOrigin() : Place | null {\r\n return this.origin;\r\n }\r\n\r\n setRegionAndDefaultOrigin(region: Region, defaultOrigin: Place) {\r\n this.region = region;\r\n this.defaultOrigin = defaultOrigin;\r\n }\r\n\r\n setOrigin(place: Place) {\r\n this.origin = place;\r\n }\r\n\r\n setCurrentLocationOrigin(callbackSuccess: Function) {\r\n const that = this;\r\n navigator.geolocation.getCurrentPosition((geo: GeolocationPosition) => {\r\n that.setOrigin({\r\n name: CustomPlace,\r\n coords: {\r\n lat: geo.coords.latitude,\r\n long: geo.coords.longitude,\r\n }\r\n });\r\n\r\n callbackSuccess();\r\n });\r\n }\r\n\r\n constructor(private http: HttpClient) {\r\n if (window.location.href.includes('localhost')) {\r\n this.apiHost = \"http://localhost:50598\";\r\n }\r\n }\r\n\r\n getForecastGroups(args: GetForecastGroupsArgs): Observable {\r\n let params = new HttpParams().set(\"distance\", args.distance.toString())\r\n .set(\"region\", this.getRegion().toString())\r\n .set(\"originName\", args.origin.name.toString())\r\n .set(\"originLat\", args.origin.coords.lat.toString())\r\n .set(\"originLong\", args.origin.coords.long.toString())\r\n .set(\"minAvgTemperature\", args.minAvgTemperature.toString())\r\n .set(\"maxAvgTemperature\", args.maxAvgTemperature.toString())\r\n .set(\"minAvgClouds\", args.minAvgClouds.toString())\r\n .set(\"dateFrom\", args.dateFrom)\r\n .set(\"dateTo\", args.dateTo)\r\n .set(\"maxWind\", args.maxWind.toString())\r\n .set(\"maxRain\", args.maxRain.toString())\r\n .set(\"favs\", args.favs.map(fav => fav.name).reduce((prev, curr) => prev + \", \" + curr, \"\"))\r\n .set(\"isAllFiltersEnabled\", args.isAllFiltersEnabled.toString())\r\n .set(\"isTemperatureFilterEnabled\", args.isTemperatureFilterEnabled.toString())\r\n .set(\"isCloudsFilterEnabled\", args.isCloudsFilterEnabled.toString())\r\n .set(\"isWindFilterEnabled\", args.isWindFilterEnabled.toString())\r\n .set(\"isRainFilterEnabled\", args.isRainFilterEnabled.toString())\r\n\r\n return this.http.get(this.apiHost + \"/weather-forecasts\", { params: params });\r\n }\r\n\r\n getPoiForPlace(placeName: string, distance: number): Observable {\r\n // Need to add a cache here\r\n let params = new HttpParams().set(\"place\", placeName)\r\n .set(\"distance\", distance.toString())\r\n .set(\"region\", this.region.toString())\r\n\r\n return this.http.get(this.apiHost + \"/point-of-interest\", { params: params });\r\n }\r\n\r\n getPlaceDetails(place: Place, ignoreCache: boolean): Observable {\r\n // cant modify place.coords as it is read only though ngrx\r\n let currentCoords;\r\n if (place.name === \"your location\") {\r\n currentCoords = this.getOrigin()!.coords;\r\n }\r\n else {\r\n currentCoords = place.coords;\r\n }\r\n\r\n let params = new HttpParams().set(\"placeName\", place.name)\r\n .set(\"lat\", currentCoords.lat.toString())\r\n .set(\"long\", currentCoords.long.toString())\r\n .set(\"ignoreCache\", ignoreCache.toString())\r\n .set(\"region\", this.region.toString())\r\n\r\n return this.http.get(this.apiHost + \"/place-details\", { params: params });\r\n }\r\n\r\n getPlaceSearchResults(placeName: string, favs: Place[]): Observable {\r\n if (placeName === \"\") {\r\n return of(favs);\r\n }\r\n\r\n let params = new HttpParams().set(\"placeName\", placeName)\r\n .set(\"region\", this.region.toString());\r\n\r\n return this.http.post(this.apiHost + \"/place-search-results\", favs, { params: params });\r\n }\r\n\r\n getSuggestedFilters(): Observable {\r\n return this.http.get(this.apiHost + \"/suggested-filters\");\r\n }\r\n\r\n isStandalone(): boolean {\r\n // Check if running in standalone mode on other platforms (e.g., Android)\r\n if (window.matchMedia('(display-mode: standalone)').matches) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n isMobileScreenWidth(maxMobileWidth: number = 950): boolean {\r\n return window.innerWidth <= maxMobileWidth;\r\n }\r\n\r\n async isRelatedAppInstalled(relatedAppId: string): Promise {\r\n if ('getInstalledRelatedApps' in window.navigator) {\r\n try {\r\n const relatedApps = await (window.navigator as any).getInstalledRelatedApps();\r\n return relatedApps.some((app: any) => app.id === relatedAppId);\r\n } catch (error) {\r\n console.error('Error checking for related apps:', error);\r\n return false;\r\n }\r\n }\r\n \r\n return false;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n// import { DetailsPageComponent } from './pages/details-page/details-page.component';\r\n// import { FilterPageComponent } from './pages/filter-page/filter-page.component';\r\n// import { ListPageComponent } from './pages/list-page/list-page.component';\r\n// import { MapPageComponent } from './pages/map-page/map-page.component';\r\n\r\nconst routes: Routes = [\r\n // { path: 'filter', component: FilterPageComponent },\r\n // { path: 'list', component: ListPageComponent },\r\n // { path: 'map', component: MapPageComponent },\r\n // { path: 'details', component: DetailsPageComponent },\r\n // { path: '', redirectTo: '/filter', pathMatch: 'full' },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\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","import { createAction, props } from '@ngrx/store';\r\nimport { CommonFilters } from '../models/Args';\r\nimport { FiltersState } from './common-filters.reducer';\r\n\r\nexport const updateState = createAction(\r\n '[COMMON FILTERS] Update state',\r\n props<{ filtersState: FiltersState; }>()\r\n);\r\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"zn8P\";"],"sourceRoot":"webpack:///"}