{"version":3,"file":"main.6c9fa01102262db7.js","mappings":"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A;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,GAAG;AACH;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;;;;;;;;;AC9OA;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/app.service.ts","./src/app/breakdowninfo/breakdowninfo.adapter.ts","./src/app/breakdowninfo/breakdowninfo.module.ts","./src/app/breakdowninfo/breakdowninfo.page.ts","./src/app/breakdowninfo/breakdowninfo.page.html","./src/app/breakdowninfo/breakdowninfo.service.ts","./src/app/core/components/number-picker/number-picker.component.ts","./src/app/core/components/number-picker/number-picker.component.html","./src/app/core/core.module.ts","./src/app/core/domain/season.enum.ts","./src/app/core/general-button/general-button.component.ts","./src/app/core/general-button/general-button.component.html","./src/app/core/guards/pending-changes.guard.ts","./src/app/core/language-selector/language-selector.component.html","./src/app/core/language-selector/language-selector.component.ts","./src/app/core/leaflet-helper/curve-coords.ts","./src/app/core/leaflet-helper/icon-helper.ts","./src/app/core/livedata/converter.ts","./src/app/core/livedata/livedatabase.service.ts","./src/app/core/livedata/outdated-data-helper.ts","./src/app/core/navigator/navigator.service.ts","./src/app/core/unsubscriber/unsubscriber.ts","./src/app/core/user-message/user-message-color.ts","./src/app/core/user-message/user-message-icon.ts","./src/app/core/user-message/user-message.model.ts","./src/app/core/user-message/user-message.service.ts","./src/app/core/utils/clickable-url.pipe.ts","./src/app/core/utils/confirmation-dialog.service.ts","./src/app/core/utils/meter-kilometer.pipe.ts","./src/app/core/utils/screen-size.service.ts","./src/app/error/error.module.ts","./src/app/error/error.page.ts","./src/app/error/error.page.html","./src/app/maps/domain/livedata/meteodata.adapter.ts","./src/app/maps/domain/livedata/meteodata.service.ts","./src/app/maps/domain/livedata/status.adapter.ts","./src/app/maps/domain/livedata/status.enum.ts","./src/app/maps/domain/livedata/status.service.ts","./src/app/maps/domain/livedata/substatus.enum.ts","./src/app/maps/domain/map-routes.ts","./src/app/maps/domain/masterdata/coords.model.ts","./src/app/maps/domain/masterdata/custom-icon.adapter.ts","./src/app/maps/domain/masterdata/custom-icon.model.ts","./src/app/maps/domain/masterdata/custom-path.adapter.ts","./src/app/maps/domain/masterdata/custom-path.model.ts","./src/app/maps/domain/masterdata/gastro.adapter.ts","./src/app/maps/domain/masterdata/gastro.model.ts","./src/app/maps/domain/masterdata/layername.enum.ts","./src/app/maps/domain/masterdata/lift.adapter.ts","./src/app/maps/domain/masterdata/lift.model.ts","./src/app/maps/domain/masterdata/masterdata.adapter.ts","./src/app/maps/domain/masterdata/masterdata.service.ts","./src/app/maps/domain/masterdata/place.adapter.ts","./src/app/maps/domain/masterdata/place.model.ts","./src/app/maps/domain/masterdata/poi.adapter.ts","./src/app/maps/domain/masterdata/poi.model.ts","./src/app/maps/domain/masterdata/sismap-asset-category.enum.ts","./src/app/maps/domain/masterdata/slope.adapter.ts","./src/app/maps/domain/masterdata/slope.model.ts","./src/app/maps/domain/masterdata/trail.adapter.ts","./src/app/maps/domain/masterdata/trail.model.ts","./src/app/maps/domain/masterdata/webcam.adapter.ts","./src/app/maps/domain/masterdata/webcam.model.ts","./src/app/maps/domain/masterdata/wind.adapter.ts","./src/app/maps/domain/masterdata/wind.model.ts","./src/app/maps/map/asset-sidepane/asset-sidepane-content/asset-sidepane-content.component.ts","./src/app/maps/map/asset-sidepane/asset-sidepane-content/asset-sidepane-content.component.html","./src/app/maps/map/asset-sidepane/asset-sidepane.component.ts","./src/app/maps/map/asset-sidepane/asset-sidepane.component.html","./src/app/maps/map/enter-viewport-notifier.directive.ts","./src/app/maps/map/hover.service.ts","./src/app/maps/map/icon-service.ts","./src/app/maps/map/layer-selector/layer-selector-item/layer-selector-item.component.ts","./src/app/maps/map/layer-selector/layer-selector-item/layer-selector-item.component.html","./src/app/maps/map/layer-selector/layer-selector.component.ts","./src/app/maps/map/layer-selector/layer-selector.component.html","./src/app/maps/map/layer-selector/layer.service.ts","./src/app/maps/map/map-element-layer/map-element-container.component.ts","./src/app/maps/map/map-element-layer/map-element-container.component.html","./src/app/maps/map/map-element-layer/map-element-curve/map-element-curve.component.ts","./src/app/maps/map/map-element-layer/map-element-icon/map-element-icon.component.ts","./src/app/maps/map/map-state.service.ts","./src/app/maps/map/map.component.ts","./src/app/maps/map/map.component.html","./src/app/maps/map/map.module.ts","./src/app/maps/map/sidepane/add-asset-tab/add-asset-tab.component.ts","./src/app/maps/map/sidepane/add-asset-tab/add-asset-tab.component.html","./src/app/maps/map/sidepane/add-asset-tab/asset-list/asset-list-item/asset-list-item.component.ts","./src/app/maps/map/sidepane/add-asset-tab/asset-list/asset-list-item/asset-list-item.component.html","./src/app/maps/map/sidepane/add-asset-tab/asset-list/asset-list.component.ts","./src/app/maps/map/sidepane/add-asset-tab/asset-list/asset-list.component.html","./src/app/maps/map/sidepane/add-asset-tab/autocomplete-selector/autocomplete-selector.component.ts","./src/app/maps/map/sidepane/add-asset-tab/autocomplete-selector/autocomplete-selector.component.html","./src/app/maps/map/sidepane/add-asset-tab/tenant.service.ts","./src/app/maps/map/sidepane/asset-editor-tab/asset-editor-tab.component.ts","./src/app/maps/map/sidepane/asset-editor-tab/asset-editor-tab.component.html","./src/app/maps/map/sidepane/asset-editor-tab/asset-editor.service.ts","./src/app/maps/map/sidepane/sidepane.component.ts","./src/app/maps/map/sidepane/sidepane.component.html","./src/app/maps/map/style/map-style.service.ts","./src/app/maps/map/style/styles/andermatt.style.ts","./src/app/maps/map/style/styles/map-style.base.ts","./src/app/maps/map/style/styles/sisag.style.ts","./src/app/maps/map/webcam-modal/webcam-modal.component.ts","./src/app/maps/map/webcam-modal/webcam-modal.component.html","./src/app/maps/map/wind-display-calculator.service.ts","./src/app/maps/map/wind-icon.service.ts","./src/app/maps/map/zoom.model.ts","./src/app/maps/map/zoom.service.ts","./src/app/maps/pipes/hours-minutes.pipe.ts","./src/app/maps/sismap/sismap.module.ts","./src/app/maps/sismap/sismap.page.ts","./src/app/maps/sismap/sismap.page.html","./src/app/maps/windmonitor/windmonitor.module.ts","./src/app/maps/windmonitor/windmonitor.page.ts","./src/app/maps/windmonitor/windmonitor.page.html","./src/app/operating-info/domain/operating-info-entry.adapter.ts","./src/app/operating-info/domain/operating-info-tenant.adapter.ts","./src/app/operating-info/domain/operating-info-text.adapter.ts","./src/app/operating-info/domain/operating-info.adapter.ts","./src/app/operating-info/domain/operting-info-link.adapter.ts","./src/app/operating-info/operating-info-item/operating-info-item.component.ts","./src/app/operating-info/operating-info-item/operating-info-item.component.html","./src/app/operating-info/operating-info.module.ts","./src/app/operating-info/operating-info.page.ts","./src/app/operating-info/operating-info.page.html","./src/app/operating-info/operating-info.service.ts","./src/app/quickstart/quickstart.page.ts","./src/app/siscontrol/siscontrol.page.ts","./src/app/webreport/domain/sismedia-asset-category.enum.ts","./src/app/webreport/domain/sismedia-asset-status.enum.ts","./src/app/webreport/domain/sismedia-item.adapter.ts","./src/app/webreport/domain/sismedia-item.model.ts","./src/app/webreport/domain/sismedia-setting.adapter.ts","./src/app/webreport/domain/webreport-infotext-item.adapter.ts","./src/app/webreport/domain/webreport-meteo-info-item.adapter.ts","./src/app/webreport/domain/webreport-mobile-asset-category.enum.ts","./src/app/webreport/domain/webreport.adapter.ts","./src/app/webreport/sismedia-item/sismedia-item.component.ts","./src/app/webreport/sismedia-item/sismedia-item.component.html","./src/app/webreport/webreport-meteo-desktop/webreport-meteo-desktop.component.ts","./src/app/webreport/webreport-meteo-desktop/webreport-meteo-desktop.component.html","./src/app/webreport/webreport-meteo-mobile/webreport-meteo-mobile-item/webreport-meteo-mobile-item.component.ts","./src/app/webreport/webreport-meteo-mobile/webreport-meteo-mobile-item/webreport-meteo-mobile-item.component.html","./src/app/webreport/webreport-meteo-mobile/webreport-meteo-mobile.component.ts","./src/app/webreport/webreport-meteo-mobile/webreport-meteo-mobile.component.html","./src/app/webreport/webreport-mobile/webreport-mobile-category.component.ts","./src/app/webreport/webreport-mobile/webreport-mobile-category.component.html","./src/app/webreport/webreport-mobile/webreport-mobile-tenant/webreport-mobile-tenant.component.html","./src/app/webreport/webreport-mobile/webreport-mobile-tenant/webreport-mobile-tenant.component.ts","./src/app/webreport/webreport.module.ts","./src/app/webreport/webreport.page.ts","./src/app/webreport/webreport.page.html","./src/app/webreport/webreport.service.ts","./src/environments/environment.dev.ts","./src/main.ts","./node_modules/@ionic/core/dist/esm/ lazy ^\\.\\/.*\\.entry\\.js$ include: \\.entry\\.js$ exclude: \\.system\\.entry\\.js$ namespace object","./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { BreakdownInfoPageModule } from 'src/app/breakdowninfo/breakdowninfo.module';\r\nimport { ErrorPageModule } from 'src/app/error/error.module';\r\nimport { SisMapPageModule } from 'src/app/maps/sismap/sismap.module';\r\nimport { WindmonitorModule } from 'src/app/maps/windmonitor/windmonitor.module';\r\nimport { OperatingInfoPageModule } from 'src/app/operating-info/operating-info.module';\r\nimport { QuickstartPage } from 'src/app/quickstart/quickstart.page';\r\nimport { SiscontrolPage } from 'src/app/siscontrol/siscontrol.page';\r\nimport { WebReportModule } from 'src/app/webreport/webreport.module';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: SiscontrolPage,\r\n pathMatch: 'full',\r\n },\r\n {\r\n path: ':sisId/sismap/:alias/:season',\r\n loadChildren: () => SisMapPageModule,\r\n },\r\n {\r\n path: ':sisId/windmonitor/:alias/:season',\r\n loadChildren: () => WindmonitorModule,\r\n },\r\n {\r\n path: 'quickstart',\r\n component: QuickstartPage,\r\n },\r\n {\r\n path: 'breakdowninfo/:breakdownInfoGuid',\r\n loadChildren: () => BreakdownInfoPageModule,\r\n },\r\n {\r\n path: 'report/:urlName',\r\n loadChildren: () => WebReportModule,\r\n },\r\n {\r\n path: 'operatinginfo/:operatinginfoUrl',\r\n loadChildren: () => OperatingInfoPageModule,\r\n },\r\n {\r\n path: '**',\r\n loadChildren: () => ErrorPageModule,\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes, { useHash: false })],\r\n exports: [RouterModule],\r\n})\r\nexport class AppRoutingModule {}\r\n","import { Location } from '@angular/common';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Platform } from '@ionic/angular';\r\nimport { SplashScreen } from '@ionic-native/splash-screen/ngx';\r\nimport { StatusBar } from '@ionic-native/status-bar/ngx';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { NgcCookieConsentService } from 'ngx-cookieconsent';\r\nimport { filter, take, takeUntil } from 'rxjs/operators';\r\nimport { AppService } from 'src/app/app.service';\r\nimport { NavigatorService } from 'src/app/core/navigator/navigator.service';\r\nimport { Unsubscriber } from 'src/app/core/unsubscriber/unsubscriber';\r\n\r\n@Component({\r\n selector: 'sis-root',\r\n templateUrl: 'app.component.html',\r\n styleUrls: ['app.component.scss'],\r\n})\r\nexport class AppComponent extends Unsubscriber implements OnInit {\r\n backgroundColor = 'white';\r\n\r\n readonly routesWithoutCookieBanner = ['/sismap/', '/slideshow/', '/windmonitor/', '/report/'];\r\n\r\n constructor(\r\n private platform: Platform,\r\n private splashScreen: SplashScreen,\r\n private statusBar: StatusBar,\r\n private translateService: TranslateService,\r\n private appService: AppService,\r\n private ccService: NgcCookieConsentService,\r\n private navigatorService: NavigatorService,\r\n private location: Location,\r\n private activatedRoute: ActivatedRoute\r\n ) {\r\n super();\r\n this.initializeApp();\r\n\r\n this.ccService.popupClose$.pipe(take(1)).subscribe(() => {\r\n localStorage.setItem('cookieAccepted', 'true');\r\n });\r\n\r\n this.translateService.onLangChange\r\n .pipe(takeUntil(this.onDestroy$), takeUntil(this.ccService.popupClose$))\r\n .subscribe(() => {\r\n this.setupCookieBanner();\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n const browserLanguage = this.translateService.getBrowserLang();\r\n this.translateService.setDefaultLang(browserLanguage.match(/de|en|fr|it/) ? browserLanguage : 'en');\r\n this.setupCookieBanner();\r\n this.activatedRoute.queryParams\r\n .pipe(\r\n takeUntil(this.onDestroy$),\r\n filter((queryParams) => 'language' in queryParams)\r\n )\r\n .subscribe((queryParams) => {\r\n this.setLanguage(queryParams['language']);\r\n });\r\n this.appService.backgroundColor$\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((backgroundColor) => (this.backgroundColor = backgroundColor));\r\n }\r\n\r\n private setLanguage(language?: 'de' | 'en' | 'fr' | 'it'): void {\r\n // the lang to use, if the lang isn't available, it will use the current loader to get them\r\n const selectedLanguage = language ?? this.translateService.getBrowserLang();\r\n // Calling this method multiple times in quick succession can cause a race condition where one call overtakes the other\r\n this.translateService.use(selectedLanguage.match(/de|en|fr|it/) ? selectedLanguage : 'en');\r\n }\r\n\r\n private setupCookieBanner(): void {\r\n const path = this.location.path();\r\n\r\n try {\r\n this.ccService?.destroy();\r\n } catch {}\r\n\r\n if (this.routesWithoutCookieBanner.some((r) => path.includes(r))) {\r\n return;\r\n }\r\n\r\n if (localStorage.getItem('cookieAccepted') !== 'true') {\r\n const cookieTextTranslationString = 'general.phrase.cookies';\r\n const cookieUnderstoodTranslationString = 'general.term.understood';\r\n\r\n const cookieConfig = this.ccService.getConfig();\r\n\r\n this.translateService\r\n .get([cookieTextTranslationString, cookieUnderstoodTranslationString])\r\n .pipe(take(1))\r\n .subscribe((translations) => {\r\n cookieConfig.content.message = translations[cookieTextTranslationString];\r\n cookieConfig.content.dismiss = translations[cookieUnderstoodTranslationString];\r\n cookieConfig.cookie.domain = this.navigatorService.baseUrl;\r\n\r\n this.ccService.init(cookieConfig);\r\n });\r\n }\r\n }\r\n\r\n private initializeApp(): void {\r\n this.platform.ready().then((readySource) => {\r\n if (readySource === 'cordova') {\r\n this.statusBar.styleDefault();\r\n this.splashScreen.hide();\r\n }\r\n });\r\n }\r\n}\r\n","\r\n \r\n \r\n \r\n\r\n","import { HttpBackend, HttpClient, HttpClientModule } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { RouteReuseStrategy } from '@angular/router';\r\nimport { IonicModule, IonicRouteStrategy } from '@ionic/angular';\r\nimport { SplashScreen } from '@ionic-native/splash-screen/ngx';\r\nimport { StatusBar } from '@ionic-native/status-bar/ngx';\r\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\nimport { NgcCookieConsentConfig, NgcCookieConsentModule } from 'ngx-cookieconsent';\r\nimport { AppComponent } from 'src/app/app.component';\r\nimport { AppRoutingModule } from 'src/app/app-routing.module';\r\nimport { CoreModule } from 'src/app/core/core.module';\r\nimport { NavigatorService } from 'src/app/core/navigator/navigator.service';\r\n\r\ndeclare const VERSION: string;\r\n\r\nconst cookieConfig: NgcCookieConsentConfig = {\r\n cookie: {\r\n domain: 'www.siscontrol.ch',\r\n },\r\n palette: {\r\n popup: {\r\n background: '#6b6b6b',\r\n },\r\n button: {\r\n background: '#0fafa9',\r\n },\r\n },\r\n theme: 'edgeless',\r\n position: 'bottom',\r\n type: 'info',\r\n showLink: false,\r\n content: {},\r\n};\r\n\r\nexport function translateHttpLoaderFactory(httpBackend: HttpBackend): TranslateHttpLoader {\r\n return new TranslateHttpLoader(new HttpClient(httpBackend), './assets/translations/', `.json?version=${VERSION}`);\r\n}\r\n\r\n@NgModule({\r\n declarations: [AppComponent],\r\n imports: [\r\n BrowserModule,\r\n IonicModule.forRoot(),\r\n AppRoutingModule,\r\n HttpClientModule,\r\n TranslateModule.forRoot({\r\n loader: {\r\n provide: TranslateLoader,\r\n useFactory: translateHttpLoaderFactory,\r\n deps: [HttpBackend],\r\n },\r\n }),\r\n CoreModule,\r\n BrowserAnimationsModule,\r\n NgcCookieConsentModule.forRoot(cookieConfig),\r\n ],\r\n providers: [\r\n StatusBar,\r\n SplashScreen,\r\n {\r\n provide: RouteReuseStrategy,\r\n useClass: IonicRouteStrategy,\r\n },\r\n NavigatorService,\r\n ],\r\n bootstrap: [AppComponent],\r\n})\r\nexport class AppModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { filter, map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppService {\r\n readonly backgroundColor$ = this.activatedRoute.queryParams.pipe(\r\n map(params => params['background']),\r\n filter(b => b != null),\r\n map(b => '#' + b)\r\n );\r\n\r\n constructor(private activatedRoute: ActivatedRoute) {}\r\n}\r\n","import { BreakdownInfo } from 'src/app/breakdowninfo/breakdowninfo.model';\r\n\r\nexport class BreakdownInfoAdapter {\r\n static adapt(item: any): BreakdownInfo {\r\n if (!item) {\r\n return null;\r\n }\r\n\r\n return {\r\n titleDe: item.titleDe,\r\n titleEn: item.titleEn,\r\n titleFr: item.titleFr,\r\n titleIt: item.titleIt,\r\n textDe: item.textDe,\r\n textEn: item.textEn,\r\n textFr: item.textFr,\r\n textIt: item.textIt,\r\n name: item.name,\r\n iconName: item.iconName,\r\n color: item.color,\r\n logoFilename: item.logoFilename,\r\n websiteUrl: item.website,\r\n telNumber: item.telNumber,\r\n };\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { BreakdownInfoAdapter } from 'src/app/breakdowninfo/breakdowninfo.adapter';\r\nimport { BreakdownInfoPage } from 'src/app/breakdowninfo/breakdowninfo.page';\r\nimport { BreakdownInfoService } from 'src/app/breakdowninfo/breakdowninfo.service';\r\nimport { CoreModule } from 'src/app/core/core.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n IonicModule,\r\n RouterModule.forChild([\r\n {\r\n path: '',\r\n component: BreakdownInfoPage\r\n }\r\n ]),\r\n CoreModule,\r\n TranslateModule\r\n ],\r\n declarations: [BreakdownInfoPage],\r\n providers: [BreakdownInfoService, BreakdownInfoAdapter]\r\n})\r\nexport class BreakdownInfoPageModule {}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { switchMap, takeUntil } from 'rxjs/operators';\r\nimport { BreakdownInfo } from 'src/app/breakdowninfo/breakdowninfo.model';\r\nimport { BreakdownInfoService } from 'src/app/breakdowninfo/breakdowninfo.service';\r\nimport { Unsubscriber } from 'src/app/core/unsubscriber/unsubscriber';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Component({\r\n selector: 'sis-breakdowninfo',\r\n templateUrl: 'breakdowninfo.page.html',\r\n styleUrls: ['breakdowninfo.page.scss'],\r\n})\r\nexport class BreakdownInfoPage extends Unsubscriber implements OnInit {\r\n private static readonly BreakdownInfoGuid = 'breakdownInfoGuid';\r\n\r\n private readonly updateInterval = 60_000;\r\n\r\n title: string;\r\n text: string;\r\n logoUrl: string;\r\n breakdownInfoIconUrl: string;\r\n homepage: string;\r\n breakdownInfo: BreakdownInfo;\r\n\r\n constructor(\r\n private translateService: TranslateService,\r\n private breakdownInfoService: BreakdownInfoService,\r\n private activatedRoute: ActivatedRoute\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.activatedRoute.params\r\n .pipe(\r\n switchMap((params) =>\r\n this.breakdownInfoService.periodicallyRequestBreakdownInfoData(\r\n this.updateInterval,\r\n params[BreakdownInfoPage.BreakdownInfoGuid]\r\n )\r\n ),\r\n takeUntil(this.onDestroy$)\r\n )\r\n .subscribe((data: BreakdownInfo) => {\r\n if (!data) {\r\n return;\r\n }\r\n\r\n this.breakdownInfo = data;\r\n this.setLogoUrl(this.breakdownInfo.logoFilename);\r\n this.setbreakdownInfoIconUrl(this.breakdownInfo.iconName);\r\n this.setTextAndTitle(\r\n this.translateService.currentLang ?? this.translateService.defaultLang,\r\n this.breakdownInfo\r\n );\r\n this.setWebsite(this.breakdownInfo.websiteUrl);\r\n });\r\n }\r\n\r\n private setLogoUrl(logoFilename: string): void {\r\n this.logoUrl = `${environment.baseUrlPublicAssets}/logo/${logoFilename}`;\r\n }\r\n\r\n private setbreakdownInfoIconUrl(breakdownInfoIconFilename: string): void {\r\n this.breakdownInfoIconUrl = `${environment.baseUrlPublicAssets}/breakdowninfo/${breakdownInfoIconFilename}`;\r\n }\r\n\r\n private setWebsite(homepageUrl: string): void {\r\n this.homepage = homepageUrl.replace(/^https?:\\/\\//, '');\r\n }\r\n\r\n private setTextAndTitle(languageKey: string, breakdownInfo: BreakdownInfo): void {\r\n if (!breakdownInfo) {\r\n return;\r\n }\r\n switch (languageKey) {\r\n case 'de':\r\n this.title = breakdownInfo.titleDe;\r\n this.text = breakdownInfo.textDe;\r\n break;\r\n case 'en':\r\n this.title = breakdownInfo.titleEn;\r\n this.text = breakdownInfo.textEn;\r\n break;\r\n case 'fr':\r\n this.title = breakdownInfo.titleFr;\r\n this.text = breakdownInfo.textFr;\r\n break;\r\n case 'it':\r\n this.title = breakdownInfo.titleIt;\r\n this.text = breakdownInfo.textIt;\r\n break;\r\n default:\r\n break;\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 breakdownInfo.cablewayServices\r\n \r\n \r\n \r\n\r\n \r\n \r\n {{ this.breakdownInfo.name }}\r\n \r\n \r\n\r\n \r\n \r\n {{ this.title }}\r\n \r\n \r\n\r\n \r\n \r\n {{ this.text }}\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n breakdownInfo.information\r\n {{ this.homepage }}\r\n Tel. {{ this.breakdownInfo.telNumber }}\r\n \r\n \r\n \r\n\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { EMPTY, Observable, timer } from 'rxjs';\r\nimport { catchError, map, switchMap, tap } from 'rxjs/operators';\r\nimport { BreakdownInfoAdapter } from 'src/app/breakdowninfo/breakdowninfo.adapter';\r\nimport { BreakdownInfo } from 'src/app/breakdowninfo/breakdowninfo.model';\r\nimport { NavigatorService } from 'src/app/core/navigator/navigator.service';\r\nimport { Unsubscriber } from 'src/app/core/unsubscriber/unsubscriber';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BreakdownInfoService extends Unsubscriber {\r\n static readonly urlPath = '/api/breakdowninfo/';\r\n\r\n constructor(private http: HttpClient, private navigator: NavigatorService) {\r\n super();\r\n }\r\n\r\n periodicallyRequestBreakdownInfoData(period: number, breakdownInfoGuid: string): Observable {\r\n if (!breakdownInfoGuid || breakdownInfoGuid.length === 0) {\r\n this.navigator.navigateToErrorPage();\r\n return;\r\n }\r\n\r\n return timer(0, period).pipe(\r\n switchMap(() =>\r\n this.http\r\n .get(\r\n `${environment.baseUrlApi}${BreakdownInfoService.urlPath}${breakdownInfoGuid}?${Math.floor(\r\n Math.random() * 10000\r\n ).toString()}`\r\n )\r\n .pipe(\r\n catchError(() => {\r\n this.navigator.navigateToErrorPage();\r\n return EMPTY;\r\n })\r\n )\r\n ),\r\n map((data: any) => BreakdownInfoAdapter.adapt(data)),\r\n tap((breakdownInfo) => {\r\n if (!breakdownInfo) {\r\n this.navigator.navigateToErrorPage();\r\n }\r\n })\r\n );\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sis-number-picker',\r\n templateUrl: './number-picker.component.html',\r\n styleUrls: ['./number-picker.component.scss'],\r\n})\r\nexport class NumberPickerComponent implements OnInit {\r\n @Output() value = new EventEmitter();\r\n\r\n @Input() stepSize = 1;\r\n @Input() initialValue = 0;\r\n @Input() minimumValue = 0;\r\n @Input() maximumValue = 999;\r\n @Input() unit = '';\r\n @Input() color = 'transparent';\r\n @Input() floatRight = false;\r\n\r\n displayedValue: number;\r\n fontSize = '24pt';\r\n\r\n ngOnInit(): void {\r\n this.setDisplayedValue(this.initialValue);\r\n this.emit();\r\n }\r\n\r\n increment(): void {\r\n const newValue = Math.min(this.displayedValue + this.stepSize, this.maximumValue);\r\n this.setDisplayedValue(newValue);\r\n this.emit();\r\n }\r\n\r\n decrement(): void {\r\n const newValue = Math.max(this.displayedValue - this.stepSize, this.minimumValue);\r\n this.setDisplayedValue(newValue);\r\n this.emit();\r\n }\r\n\r\n private setDisplayedValue(value: number): void {\r\n const length = `${value}${this.unit}`.length;\r\n\r\n this.fontSize = `${32 - 4 * Math.max(length, 2)}pt`;\r\n\r\n this.displayedValue = value;\r\n }\r\n\r\n private emit(): void {\r\n this.value.emit(this.displayedValue);\r\n }\r\n}\r\n","\r\n \r\n -\r\n {{ this.displayedValue }}{{ this.unit }}\r\n +\r\n \r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { NumberPickerComponent } from 'src/app/core/components/number-picker/number-picker.component';\r\nimport { GeneralButtonComponent } from 'src/app/core/general-button/general-button.component';\r\nimport { LanguageSelector } from 'src/app/core/language-selector/language-selector.component';\r\nimport { ClickableUrlPipe } from 'src/app/core/utils/clickable-url.pipe';\r\nimport { MetersToKilometersPipe } from 'src/app/core/utils/meter-kilometer.pipe';\r\n\r\n@NgModule({\r\n declarations: [\r\n LanguageSelector,\r\n NumberPickerComponent,\r\n GeneralButtonComponent,\r\n ClickableUrlPipe,\r\n MetersToKilometersPipe,\r\n ],\r\n exports: [LanguageSelector, NumberPickerComponent, GeneralButtonComponent, ClickableUrlPipe, MetersToKilometersPipe],\r\n imports: [CommonModule, FormsModule, IonicModule, TranslateModule],\r\n})\r\nexport class CoreModule {}\r\n","export enum Season {\r\n SummerAndWinter = 0,\r\n Summer = 1,\r\n Winter = 2\r\n}\r\n","import { Component, EventEmitter, Input, OnChanges, Output } from '@angular/core';\r\n\r\nenum ButtonType {\r\n Primary = 'Primary',\r\n Secondary = 'Secondary',\r\n Medium = 'Medium',\r\n Red = 'Red',\r\n}\r\n\r\nenum ButtonAlign {\r\n Left = 'Left',\r\n Right = 'Right',\r\n}\r\n\r\n@Component({\r\n selector: 'sis-general-button',\r\n templateUrl: './general-button.component.html',\r\n styleUrls: ['./general-button.component.scss'],\r\n})\r\nexport class GeneralButtonComponent implements OnChanges {\r\n @Input() text: string;\r\n @Input() expand: string;\r\n @Input() disabled: boolean;\r\n @Input() btnAlign: string;\r\n @Input() btnType: string;\r\n @Input() showSpinner: boolean;\r\n @Input() width: string;\r\n @Input() icon: string;\r\n\r\n @Output() sisClick = new EventEmitter();\r\n\r\n buttonType: string;\r\n buttonAlign: string;\r\n\r\n ngOnChanges(): void {\r\n switch (this.btnType) {\r\n case ButtonType.Primary:\r\n this.buttonType = 'sis-primary-btn';\r\n break;\r\n case ButtonType.Secondary:\r\n this.buttonType = 'sis-secondary-btn';\r\n break;\r\n case ButtonType.Red:\r\n this.buttonType = 'sis-red-btn';\r\n break;\r\n }\r\n\r\n switch (this.btnAlign) {\r\n case ButtonAlign.Left:\r\n this.buttonAlign = 'sis-align-btn-left';\r\n break;\r\n case ButtonAlign.Right:\r\n this.buttonAlign = 'sis-align-btn-right';\r\n break;\r\n }\r\n }\r\n\r\n onClick(): void {\r\n if (!this.disabled) {\r\n this.sisClick.emit();\r\n }\r\n }\r\n}\r\n","\r\n {{ text | translate }}\r\n \r\n \r\n \r\n \r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { CanDeactivate } from '@angular/router';\r\nimport { from, isObservable, Observable, of } from 'rxjs';\r\nimport { switchMap } from 'rxjs/operators';\r\nimport { ConfirmationDialogService } from 'src/app/core/utils/confirmation-dialog.service';\r\n\r\nexport interface ComponentCanDeactivate {\r\n canDeactivate: () => boolean | Observable;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PendingChangesGuard implements CanDeactivate {\r\n constructor(private confirmationDialogService: ConfirmationDialogService) {}\r\n\r\n canDeactivate(component: ComponentCanDeactivate): Observable {\r\n // if there are no pending changes, just allow deactivation; else confirm first\r\n if (!component) {\r\n return of(true);\r\n }\r\n\r\n const canDeactivate = component.canDeactivate();\r\n\r\n if (isObservable(canDeactivate)) {\r\n return canDeactivate.pipe(switchMap((cD) => this.getCanDeactivateObservable(cD)));\r\n }\r\n\r\n return this.getCanDeactivateObservable(canDeactivate);\r\n }\r\n\r\n private getCanDeactivateObservable(cD: boolean): Observable {\r\n return cD\r\n ? of(true)\r\n : // NOTE: this warning message will only be shown when navigating elsewhere within your angular app;\r\n // when navigating away from your angular app, the browser will show a generic warning message\r\n // see http://stackoverflow.com/a/42207299/7307355\r\n from(this.confirmationDialogService.presentAlert('general.phrase.unsavedChanges', 'OK'));\r\n }\r\n}\r\n","\r\n \r\n \r\n {{\r\n l.fullName\r\n }}\r\n \r\n \r\n\r\n","import { Component } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Language } from 'src/app/core/language-selector/language.model';\r\n\r\n@Component({\r\n selector: 'sis-language-selector',\r\n templateUrl: 'language-selector.component.html',\r\n styleUrls: ['language-selector.component.scss'],\r\n})\r\nexport class LanguageSelector {\r\n readonly languages: Language[] = [\r\n { name: 'DE', fullName: 'Deutsch', key: 'de' },\r\n { name: 'FR', fullName: 'Français', key: 'fr' },\r\n { name: 'IT', fullName: 'Italiano', key: 'it' },\r\n { name: 'EN', fullName: 'English', key: 'en' },\r\n ];\r\n\r\n get selectedLanguage(): Language {\r\n const current = this.translate.currentLang ?? this.translate.defaultLang;\r\n const key = Array.isArray(current) ? current[0] : current;\r\n\r\n return this.languages.find((l) => l.key === key);\r\n }\r\n\r\n constructor(private translate: TranslateService) {}\r\n\r\n changeLanguage(language: Language): void {\r\n this.translate.use(language.key);\r\n }\r\n\r\n compare(l1: Language, l2: Language): boolean {\r\n return l1.key === l2.key;\r\n }\r\n}\r\n","import { CurveLatLngExpression, CurvePathData, CurveSVGCommand } from '@elfalem/leaflet-curve';\r\nexport const curveParams: CurveSVGCommand[] = ['M', 'L', 'H', 'V', 'C', 'S', 'Q', 'T', 'Z']; // should be the same as CurveSVGCommand\r\n\r\nconst isNumeric = (num: unknown): boolean =>\r\n (typeof num === 'number' || (typeof num === 'string' && num.trim() !== '')) && !isNaN(num as number);\r\n\r\nexport function parseCurveCoords(svgCoords: string | undefined): CurvePathData | null {\r\n if (!svgCoords || svgCoords === '') {\r\n return null;\r\n }\r\n\r\n const coords: Array = [];\r\n\r\n let cs = svgCoords;\r\n curveParams.forEach((letter) => {\r\n cs = cs.replace(new RegExp(letter, 'g'), ` ${letter} `);\r\n });\r\n cs = cs.replace(/[ ]{2,}/g, ' ').trim();\r\n\r\n const parts = cs.split(' ');\r\n\r\n for (const part of parts) {\r\n if (part.length === 1 && !isNumeric(part)) {\r\n if (curveParams.includes(`${part[0]}` as CurveSVGCommand)) {\r\n coords.push(`${part[0]}` as CurveSVGCommand);\r\n } else {\r\n // Invalid character\r\n return null;\r\n }\r\n } else {\r\n const ns = part.split(',');\r\n if (ns.length > 2 || ns.length === 0) {\r\n // Can only have one or two values\r\n return null;\r\n }\r\n if (!isNumeric(ns[0])) {\r\n // Must be number\r\n return null;\r\n }\r\n if (ns.length === 1 || ns[1] === '') {\r\n coords.push([Number(ns[0])]);\r\n } else {\r\n if (!isNumeric(ns[1])) {\r\n // Must be number\r\n return null;\r\n }\r\n coords.push([Number(ns[0]), Number(ns[1])]);\r\n }\r\n }\r\n }\r\n return coords;\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { firstValueFrom, Observable } from 'rxjs';\r\nimport { map, shareReplay } from 'rxjs/operators';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IconHelper {\r\n private readonly iconMap = new Map>();\r\n\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n async getIcon(blobPath: string): Promise {\r\n if (blobPath === null) {\r\n return '';\r\n }\r\n\r\n if (!this.iconMap.has(blobPath)) {\r\n const url = `${environment.baseUrlPublicAssets}/${blobPath.toLowerCase()}`;\r\n this.iconMap.set(\r\n blobPath,\r\n this.httpClient.get(url, { responseType: 'text' }).pipe(\r\n map((svg) => this.makeBackgroundVisible(svg)),\r\n shareReplay(1)\r\n )\r\n );\r\n }\r\n\r\n return firstValueFrom(this.iconMap.get(blobPath));\r\n }\r\n\r\n private makeBackgroundVisible(svg: string): string {\r\n const backgroundTags = svg.match(/<[rect|circle][\\s\\S]*?id=\"background\"[\\s\\S]*?\\/>/g);\r\n\r\n if (backgroundTags) {\r\n const backgroundTag = backgroundTags[0];\r\n\r\n const newBackgroundTag = backgroundTag.replace(/opacity=\"[\\d\\.]\"/g, 'opacity=\"1\"');\r\n\r\n return svg.replace(backgroundTag, newBackgroundTag);\r\n }\r\n\r\n return svg;\r\n }\r\n}\r\n","export class Converter {\r\n static toNumberOrUndefined(value: any): number | undefined {\r\n return isNaN(Number(value)) ? undefined : Number(value);\r\n }\r\n\r\n static toBoolean(input: string): boolean {\r\n try {\r\n return Boolean(JSON.parse(input));\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n static toDateOrUndefined(value: any): Date | undefined {\r\n if (value == null) {\r\n return undefined;\r\n }\r\n\r\n const date = new Date(value);\r\n\r\n if (isNaN(date.getTime())) {\r\n return undefined;\r\n }\r\n\r\n return date;\r\n }\r\n\r\n static firstLetterUppercase(word: string): string {\r\n return word.charAt(0).toUpperCase() + word.slice(1);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { BehaviorSubject, EMPTY, Observable, of, timer } from 'rxjs';\r\nimport {\r\n catchError,\r\n distinctUntilKeyChanged,\r\n exhaustMap,\r\n map,\r\n shareReplay,\r\n switchMap,\r\n takeUntil,\r\n} from 'rxjs/operators';\r\nimport { LiveDataServiceOptions } from 'src/app/core/livedata/livedata-service-options.model';\r\nimport { environment } from 'src/environments/environment';\r\n\r\nexport abstract class LivedataServiceBase {\r\n private liveDataEnabled$ = new BehaviorSubject({\r\n enabled: false,\r\n updateInterval: 0,\r\n });\r\n\r\n protected liveData$ = this.liveDataEnabled$.pipe(\r\n distinctUntilKeyChanged('enabled'),\r\n distinctUntilKeyChanged('urlParams'),\r\n switchMap((options) => {\r\n if (options.enabled) {\r\n return this.publishLiveDataRepeatedly(options.updateInterval, options.urlParams);\r\n } else {\r\n return of([]);\r\n }\r\n }),\r\n shareReplay(1)\r\n );\r\n\r\n constructor(private http: HttpClient, private endpointUri: string, private adapt: (item: any) => S[]) {}\r\n\r\n startLiveData(options: LiveDataServiceOptions): void {\r\n this.liveDataEnabled$.next(options);\r\n }\r\n\r\n private publishLiveDataRepeatedly(updateInterval: number, urlParams?: string[]): Observable {\r\n return timer(0, 1000).pipe(\r\n exhaustMap(() =>\r\n this.requestSasToken(urlParams).pipe(\r\n map((sasToken) => {\r\n let expiryDuration: number;\r\n if (!sasToken) {\r\n expiryDuration = 0;\r\n } else {\r\n const expiryParam = new URLSearchParams(sasToken).get('se');\r\n const expiryDate = new Date(expiryParam).valueOf();\r\n expiryDuration = expiryDate - Date.now() - 10000;\r\n }\r\n\r\n return { sasToken, expiryDuration };\r\n }),\r\n switchMap((data) => {\r\n const killTimer = timer(data.expiryDuration);\r\n\r\n return this.getLiveDataRepeatedly(data.sasToken, updateInterval).pipe(takeUntil(killTimer));\r\n })\r\n )\r\n )\r\n );\r\n }\r\n\r\n private requestSasToken(urlParams?: string[]): Observable {\r\n const urlAppend = urlParams ? `/${urlParams.join('/')}` : '';\r\n const url = `${environment.baseUrlApi}/${this.endpointUri}${urlAppend}`;\r\n return this.http.get(url).pipe(\r\n catchError(() => EMPTY),\r\n map((sas) => sas.toString())\r\n );\r\n }\r\n\r\n private getLiveDataRepeatedly(sasToken: string, updateInterval: number): Observable {\r\n if (!sasToken || updateInterval == null) {\r\n return of([]);\r\n }\r\n\r\n return timer(0, updateInterval).pipe(\r\n switchMap(() => this.http.get(sasToken).pipe(catchError(() => EMPTY))),\r\n map((data: any) => (data == null ? [] : this.adapt(data.value)))\r\n );\r\n }\r\n}\r\n","export class OutdatedDataHelper {\r\n static isOutdated(timestamp: Date, timeoutMs: number): boolean {\r\n if (timestamp == null) {\r\n return true;\r\n }\r\n\r\n const timeNowMs: number = new Date().getTime();\r\n const timestampMs: number = new Date(timestamp).getTime();\r\n\r\n return timeNowMs - timestampMs > timeoutMs;\r\n }\r\n\r\n static dateIsToday(timestamp: Date): boolean {\r\n if (timestamp == null) {\r\n return false;\r\n }\r\n\r\n const now = new Date();\r\n const isToday =\r\n timestamp.getFullYear() === now.getFullYear() &&\r\n timestamp.getMonth() === now.getMonth() &&\r\n timestamp.getDate() === now.getDate();\r\n\r\n return isToday;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class NavigatorService {\r\n constructor(private router: Router) {}\r\n\r\n get baseUrl(): string {\r\n let baseUrl = window.location.origin;\r\n\r\n if (baseUrl.includes('://localhost')) {\r\n baseUrl = 'http://localhost:5005';\r\n }\r\n\r\n return baseUrl;\r\n }\r\n\r\n redirectToCockpit(): void {\r\n window.location.href = environment.cockpitUrl;\r\n }\r\n\r\n navigateToErrorPage(): void {\r\n this.router.navigate(['error']);\r\n }\r\n}\r\n","import { Directive, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n/**\r\n * Unsubscribe from any Observable using takeUntil and this.destroy$\r\n * someObservable.pipe( // lettable operators in rxjs ^5.5.0\r\n * ...\r\n * takeUntil(destroy$)\r\n * )\r\n * .subscribe(....\r\n **/\r\n\r\n@Directive()\r\nexport class Unsubscriber implements OnDestroy {\r\n onDestroy$: Subject = new Subject();\r\n\r\n ngOnDestroy(): void {\r\n // Unsubscribe from whatever used takeUntil(destroy$)\r\n this.onDestroy$.next();\r\n // Now let's also unsubscribe from the subject itself:\r\n this.onDestroy$.unsubscribe();\r\n }\r\n}\r\n","export enum UserMessageColor {\r\n blue = 'primary',\r\n orange = 'warning',\r\n green = 'success',\r\n red = 'danger',\r\n white = 'light',\r\n}\r\n","export enum UserMessageIcon {\r\n success = 'checkmark-circle-outline',\r\n failed = 'close-circle-outline',\r\n info = 'information-circle-outline',\r\n waiting = 'hourglass-outline',\r\n reload = 'reload-outline'\r\n}\r\n","import { UserMessageColor } from 'src/app/core/user-message/user-message-color';\r\nimport { UserMessageIcon } from 'src/app/core/user-message/user-message-icon';\r\nimport { WritablePart } from 'src/app/core/utils/type-helper';\r\n\r\nexport class UserMessage {\r\n readonly timestamp: number;\r\n readonly messageParts: string[];\r\n\r\n message: string | string[];\r\n icon: UserMessageIcon;\r\n durationMs: number;\r\n position: 'top' | 'middle' | 'bottom';\r\n color: UserMessageColor;\r\n showCloseButton: boolean;\r\n\r\n constructor(init?: Partial>) {\r\n Object.assign(this, init);\r\n this.timestamp = Date.now();\r\n\r\n if (Array.isArray(this.message)) {\r\n this.messageParts = this.message;\r\n } else {\r\n this.messageParts = [this.message];\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ToastController } from '@ionic/angular';\r\nimport { ToastButton } from '@ionic/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { UserMessage } from 'src/app/core/user-message/user-message.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UserMessageService {\r\n static readonly toastCssClass = 'sis-global-toast';\r\n\r\n private readonly minTimeBetweenSameMessageMs = 5000;\r\n private readonly messageOutdatedAfterMs = 20000;\r\n\r\n private userMessages: UserMessage[] = [];\r\n private toastActive: boolean;\r\n private messageTimeMap: Map;\r\n\r\n constructor(private toastController: ToastController, private translateService: TranslateService) {\r\n this.messageTimeMap = new Map();\r\n }\r\n\r\n async createToast(userMessage: UserMessage): Promise {\r\n const toastButtons: Array = [];\r\n const translatedMessage = await this.getTranslatedString(userMessage.messageParts);\r\n if (userMessage.showCloseButton) {\r\n toastButtons.push({ side: 'end', icon: 'close' });\r\n }\r\n if (userMessage.icon) {\r\n toastButtons.push({ side: 'start', icon: userMessage.icon });\r\n }\r\n return this.toastController.create({\r\n message: translatedMessage,\r\n duration: userMessage.durationMs,\r\n position: userMessage.position,\r\n color: userMessage.color,\r\n cssClass: UserMessageService.toastCssClass,\r\n animated: true,\r\n buttons: toastButtons,\r\n });\r\n }\r\n\r\n async presentToast(userMessage: UserMessage): Promise {\r\n if (!document.hasFocus()) {\r\n return;\r\n }\r\n\r\n const now = Date.now();\r\n const lastTimeSent = this.messageTimeMap.get(userMessage.messageParts.join());\r\n if (lastTimeSent && now < lastTimeSent + this.minTimeBetweenSameMessageMs) {\r\n return;\r\n }\r\n\r\n this.userMessages.push(userMessage);\r\n this.presentAllToasts();\r\n }\r\n\r\n async showSingleToast(userMessage: UserMessage): Promise {\r\n const toastButtons: Array = [];\r\n const translatedMessage = await this.getTranslatedString(userMessage.messageParts);\r\n if (userMessage.showCloseButton) {\r\n toastButtons.push({ side: 'end', icon: 'close' });\r\n }\r\n if (userMessage.icon) {\r\n toastButtons.push({ side: 'start', icon: userMessage.icon });\r\n }\r\n return this.toastController.create({\r\n message: translatedMessage,\r\n duration: userMessage.durationMs,\r\n position: userMessage.position,\r\n color: userMessage.color,\r\n cssClass: UserMessageService.toastCssClass,\r\n animated: true,\r\n buttons: toastButtons,\r\n });\r\n }\r\n\r\n private getTranslatedString(translateKeys: string[]): Promise {\r\n return firstValueFrom(\r\n this.translateService.get(translateKeys).pipe(map((translation) => Object.values(translation).join('')))\r\n );\r\n }\r\n\r\n private presentAllToasts(): void {\r\n if (!this.toastActive && this.userMessages.length > 0) {\r\n const userMessage = this.userMessages.shift();\r\n if (!userMessage || userMessage.timestamp + this.messageOutdatedAfterMs < Date.now()) {\r\n this.presentAllToasts();\r\n return;\r\n }\r\n\r\n const now = Date.now();\r\n const lastTimeSent = this.messageTimeMap.get(userMessage.messageParts.join(''));\r\n if (lastTimeSent && now < lastTimeSent + this.minTimeBetweenSameMessageMs) {\r\n this.presentAllToasts();\r\n return;\r\n }\r\n\r\n this.messageTimeMap.set(userMessage.messageParts.join(''), Date.now());\r\n\r\n this.toastActive = true;\r\n this.showSingleToast(userMessage).then((toast) => {\r\n toast.onDidDismiss().then(() => {\r\n this.toastActive = false;\r\n this.presentAllToasts();\r\n });\r\n toast.present();\r\n });\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'clickableUrl',\r\n})\r\nexport class ClickableUrlPipe implements PipeTransform {\r\n transform(value: string): string {\r\n if (!value) {\r\n return value;\r\n }\r\n\r\n let result = value;\r\n\r\n // Regular Expression to match URLs\r\n const urlRegex =\r\n /(\\b((([A-Za-z]{3,9}:(?:\\/\\/)?)(?:[-;:&=\\+\\$,\\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\\+\\$,\\w]+@)[A-Za-z0-9.-]+)((?:\\/[\\+~%\\/.\\w-_]*)?\\??(?:[-\\+=&;%@.\\w_]*)#?(?:[\\w]*))?))/gi;\r\n result = result.replace(urlRegex, '$1');\r\n\r\n return this.addHttpsToUrls(result);\r\n }\r\n\r\n private addHttpsToUrls(text: string): string {\r\n const pattern = /href\\s*=\\s*(\"[^\"]*\"|'[^']*'|[^'\"\\s>]+)/g;\r\n\r\n const urls = text.match(pattern);\r\n\r\n urls?.forEach((url) => {\r\n const urlWithoutQuotes = url.replace(/^(href\\s*=\\s*['\"])|['\"]$/g, '');\r\n if (\r\n !/^https?:\\/\\//i.test(urlWithoutQuotes) &&\r\n !/^ftp:\\/\\//i.test(urlWithoutQuotes) &&\r\n !/^file:\\/\\//i.test(urlWithoutQuotes)\r\n ) {\r\n text = text.replace(url, 'href=\"https://' + urlWithoutQuotes + '\"');\r\n }\r\n });\r\n\r\n return text;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AlertController } from '@ionic/angular';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { firstValueFrom } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ConfirmationDialogService {\r\n constructor(private translateService: TranslateService, private alertCtrl: AlertController) {}\r\n\r\n presentAlert(confirmationText: string, confirmationButton: string): Promise {\r\n return new Promise(async (resolve) => {\r\n this.alertCtrl\r\n .create({\r\n header: await this.getTranslatedString(confirmationText),\r\n buttons: [\r\n {\r\n text: await this.getTranslatedString(confirmationButton),\r\n handler: (): void => {\r\n resolve(true);\r\n },\r\n },\r\n {\r\n text: await this.getTranslatedString('general.term.cancel'),\r\n role: 'cancel',\r\n },\r\n ],\r\n cssClass: 'sis-ion-alert',\r\n backdropDismiss: false,\r\n })\r\n .then((alert) => {\r\n alert.present();\r\n });\r\n });\r\n }\r\n\r\n private getTranslatedString(translateKey: string): Promise {\r\n return firstValueFrom(this.translateService.get(translateKey));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'metersToKilometers',\r\n})\r\nexport class MetersToKilometersPipe implements PipeTransform {\r\n transform(meters: number): string {\r\n return this.convertMetersToKilometers(meters);\r\n }\r\n\r\n convertMetersToKilometers(meters: number): string {\r\n const kilometers = meters / 1000;\r\n const roundedKilometers = Math.round(kilometers * 10) / 10; // Rundet auf eine Dezimalstelle\r\n return `${roundedKilometers} km`;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Platform } from '@ionic/angular';\r\nimport { distinctUntilChanged, fromEvent, map, shareReplay, startWith } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ScreenSizeService {\r\n private readonly bigScreenThreshold = 992; // ionic lg\r\n\r\n private readonly screenMode$ = fromEvent(window, 'resize').pipe(\r\n startWith(null),\r\n map(() => {\r\n const bigScreenMode = this.platform.width() > this.bigScreenThreshold;\r\n const landscapeMode = this.platform.isLandscape() && !bigScreenMode;\r\n\r\n return { bigScreenMode, landscapeMode };\r\n }),\r\n shareReplay(1)\r\n );\r\n\r\n readonly bigScreenMode$ = this.screenMode$.pipe(\r\n map(({ bigScreenMode }) => bigScreenMode),\r\n distinctUntilChanged(),\r\n shareReplay(1)\r\n );\r\n\r\n readonly landscapeMode$ = this.screenMode$.pipe(\r\n map(({ landscapeMode }) => landscapeMode),\r\n distinctUntilChanged(),\r\n shareReplay(1)\r\n );\r\n\r\n constructor(private platform: Platform) {}\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CoreModule } from 'src/app/core/core.module';\r\nimport { ErrorPage } from 'src/app/error/error.page';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n IonicModule,\r\n RouterModule.forChild([\r\n {\r\n path: '',\r\n component: ErrorPage\r\n }\r\n ]),\r\n CoreModule,\r\n TranslateModule\r\n ],\r\n declarations: [ErrorPage]\r\n})\r\nexport class ErrorPageModule {}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sis-error',\r\n templateUrl: './error.page.html',\r\n styleUrls: ['./error.page.scss']\r\n})\r\nexport class ErrorPage {}\r\n","\r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n error.title\r\n \r\n \r\n \r\n \r\n \r\n \r\n error.text\r\n \r\n \r\n \r\n\r\n","import { Converter } from 'src/app/core/livedata/converter';\r\nimport { OutdatedDataHelper } from 'src/app/core/livedata/outdated-data-helper';\r\nimport { MeteoData } from 'src/app/maps/domain/livedata/meteodata.model';\r\n\r\nexport class MeteoDataAdapter {\r\n static adapt(item: any): MeteoData[] {\r\n const livedata: MeteoData[] = [];\r\n\r\n item.forEach((e: any) => {\r\n livedata.push({\r\n meteoDeviceSisId: e.MeteoDeviceSisId,\r\n deviceTimestamp: e.DeviceTimestamp,\r\n gatewayTimestamp: e.GatewayTimestamp,\r\n windDirectionDegreeAxis: Converter.toNumberOrUndefined(e.WindDirectionDegreeAxis),\r\n windDirectionDegreeNorth: Converter.toNumberOrUndefined(e.WindDirectionDegreeNorth),\r\n windSpeedKmh: Converter.toNumberOrUndefined(e.WindSpeedKmh),\r\n temperatureCelsius: Converter.toNumberOrUndefined(e.TemperatureCelsius),\r\n outdated: OutdatedDataHelper.isOutdated(e.DeviceTimestamp, 60000),\r\n });\r\n });\r\n\r\n return livedata;\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { LivedataServiceBase } from 'src/app/core/livedata/livedatabase.service';\r\nimport { MeteoDataAdapter } from 'src/app/maps/domain/livedata/meteodata.adapter';\r\nimport { MeteoData } from 'src/app/maps/domain/livedata/meteodata.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MeteoDataService extends LivedataServiceBase {\r\n meteoData$: Observable = this.liveData$;\r\n\r\n constructor(http: HttpClient) {\r\n super(http, 'api/livedata/windmonitor', MeteoDataAdapter.adapt);\r\n }\r\n}\r\n","import { AssetStatus } from 'src/app/maps/domain/livedata/status.enum';\r\nimport { Status } from 'src/app/maps/domain/livedata/status.model';\r\nimport { AssetSubStatus } from 'src/app/maps/domain/livedata/substatus.enum';\r\n\r\nexport class StatusAdapter {\r\n static adapt(item: any[]): Status[] {\r\n if (!item?.length) {\r\n return [];\r\n }\r\n\r\n return item.map((e) => ({\r\n assetGuid: e.RowKey,\r\n assetStatus: e.Status ?? AssetStatus.NoStatus,\r\n assetSubStatus: e.SubStatus ?? AssetSubStatus.Disabled,\r\n }));\r\n }\r\n}\r\n","export enum AssetStatus {\r\n NoStatus = null,\r\n Disabled = 0,\r\n Closed = 1,\r\n Open = 2,\r\n Preparation = 3,\r\n Free = 7,\r\n Full = 8,\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { LivedataServiceBase } from 'src/app/core/livedata/livedatabase.service';\r\nimport { StatusAdapter } from 'src/app/maps/domain/livedata/status.adapter';\r\nimport { AssetStatus } from 'src/app/maps/domain/livedata/status.enum';\r\nimport { Status } from 'src/app/maps/domain/livedata/status.model';\r\nimport { AssetSubStatus } from 'src/app/maps/domain/livedata/substatus.enum';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class StatusService extends LivedataServiceBase {\r\n readonly status$ = this.liveData$;\r\n\r\n constructor(http: HttpClient) {\r\n super(http, 'api/sismap/assetstatus', StatusAdapter.adapt);\r\n }\r\n\r\n findStatus(guid: string, statusArray: Status[]): AssetStatus {\r\n return statusArray.find((status) => status.assetGuid === guid)?.assetStatus;\r\n }\r\n\r\n findSubStatus(guid: string, statusArray: Status[]): AssetSubStatus {\r\n return statusArray.find((subStatus) => subStatus.assetGuid === guid)?.assetSubStatus;\r\n }\r\n}\r\n","export enum AssetSubStatus {\r\n Disabled = null,\r\n NoSubStatus = 0,\r\n Revision = 101,\r\n Storm = 102,\r\n Malfunction = 103,\r\n Circulation = 201,\r\n Convoy = 202,\r\n}\r\n","export class MapRoutes {\r\n static readonly SisId = 'sisId';\r\n static readonly Alias = 'alias';\r\n static readonly Season = 'season';\r\n}\r\n","export class Coords {\r\n static readonly empty = new Coords(0, 0);\r\n\r\n constructor(public x: number, public y: number) {}\r\n}\r\n","import { CustomIcon } from 'src/app/maps/domain/masterdata/custom-icon.model';\r\nimport { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\n\r\nexport class CustomIconAdapter {\r\n static adapt(item: any): CustomIcon {\r\n if (!item) {\r\n return CustomIcon.empty;\r\n }\r\n\r\n let positions: MapPosition[] = [];\r\n if (item.iconPosition && item.iconPosition !== '') {\r\n let iconPositions: MapPosition[] | MapPosition = JSON.parse(item.iconPosition);\r\n if (!Array.isArray(iconPositions)) {\r\n iconPositions = [iconPositions];\r\n }\r\n positions = iconPositions;\r\n }\r\n\r\n return new CustomIcon({\r\n guid: item.guid,\r\n url: item.url,\r\n name: item.title,\r\n season: item.season,\r\n iconPositions: positions,\r\n iconSvgBlobName: item.svgName,\r\n iconHeight: item.height,\r\n iconWidth: item.width,\r\n disallowHighlight: item.title == null,\r\n disallowPopUp: item.title == null,\r\n });\r\n }\r\n\r\n static adaptForApi(customIcon: CustomIcon): any {\r\n return {\r\n guid: customIcon.guid,\r\n assetCategory: customIcon.category,\r\n svgName: customIcon.iconSvgBlobName,\r\n title: customIcon.name,\r\n url: customIcon.url,\r\n height: customIcon.iconHeight,\r\n width: customIcon.iconWidth,\r\n iconPosition: JSON.stringify(customIcon.iconPositions),\r\n };\r\n }\r\n}\r\n","import { Season } from 'src/app/core/domain/season.enum';\r\nimport { WritablePart } from 'src/app/core/utils/type-helper';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\nimport { SisMapAssetCategory } from 'src/app/maps/domain/masterdata/sismap-asset-category.enum';\r\n\r\nexport class CustomIcon implements MapElement {\r\n static readonly defaultColor: string = 'white';\r\n static readonly empty: CustomIcon = new CustomIcon({ guid: null });\r\n\r\n readonly category = SisMapAssetCategory.CustomIcon;\r\n\r\n guid: string;\r\n season: Season;\r\n name: string;\r\n type: string;\r\n disallowHighlight: boolean;\r\n disallowPopUp: boolean;\r\n iconPositions: MapPosition[];\r\n iconWidth: number;\r\n iconHeight: number;\r\n iconSvgBlobName?: string;\r\n paneName = 'customIcon';\r\n\r\n url: string;\r\n\r\n constructor(init?: Partial>) {\r\n Object.assign(this, init);\r\n }\r\n}\r\n","import { CustomPath } from 'src/app/maps/domain/masterdata/custom-path.model';\r\n\r\nexport class CustomPathAdapter {\r\n static adapt(item: any): CustomPath {\r\n if (!item) {\r\n return CustomPath.empty;\r\n }\r\n\r\n return new CustomPath({\r\n guid: item.guid,\r\n season: item.season,\r\n path: item.path,\r\n type: item.type,\r\n name: item.description ?? '',\r\n pathColor: item.color,\r\n pathDashArray: item.dashArray,\r\n pathWeight: item.weight,\r\n iconSvgBlobName: 'customPath',\r\n disallowHighlight: true,\r\n disallowPopUp: true,\r\n iconPositions: [],\r\n });\r\n }\r\n\r\n static adaptForApi(customPath: CustomPath): any {\r\n return {\r\n guid: customPath.guid,\r\n assetCategory: customPath.category,\r\n path: customPath.path,\r\n type: customPath.type,\r\n name: customPath.name,\r\n color: customPath.pathColor,\r\n dashArray: customPath.pathDashArray,\r\n weight: customPath.pathWeight,\r\n };\r\n }\r\n}\r\n","import { Season } from 'src/app/core/domain/season.enum';\r\nimport { WritablePart } from 'src/app/core/utils/type-helper';\r\nimport { AssetStatus } from 'src/app/maps/domain/livedata/status.enum';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\nimport { SisMapAssetCategory } from 'src/app/maps/domain/masterdata/sismap-asset-category.enum';\r\n\r\nexport class CustomPath implements MapElement {\r\n static readonly defaultColor: string = 'black';\r\n static readonly defaultWeight: number = 2;\r\n static readonly empty: CustomPath = new CustomPath({ guid: null });\r\n\r\n readonly category = SisMapAssetCategory.CustomPath;\r\n\r\n guid: string;\r\n season: Season;\r\n name: string;\r\n type: string;\r\n path?: string;\r\n pathDashArray?: string;\r\n pathWeight?: number;\r\n pathColor?: string;\r\n paneName = 'customPath';\r\n status?: AssetStatus = AssetStatus.NoStatus;\r\n\r\n defaultPathColor: string;\r\n defaultPathWeight: number;\r\n\r\n disallowHighlight: boolean;\r\n disallowPopUp: boolean;\r\n iconPositions: MapPosition[];\r\n iconWidth: number;\r\n iconHeight: number;\r\n iconSvgBlobName?: string;\r\n\r\n url: string;\r\n\r\n constructor(init?: Partial>) {\r\n Object.assign(this, init);\r\n\r\n this.defaultPathColor = CustomPath.defaultColor;\r\n this.defaultPathWeight = CustomPath.defaultWeight;\r\n }\r\n}\r\n","import { AssetStatus } from 'src/app/maps/domain/livedata/status.enum';\r\nimport { Gastro } from 'src/app/maps/domain/masterdata/gastro.model';\r\nimport { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\n\r\nexport class GastroAdapter {\r\n static adapt(item: any): Gastro {\r\n if (!item) {\r\n return Gastro.empty;\r\n }\r\n\r\n const defaultIconSize = item.defaultIconSize ? item.defaultIconSize : Gastro.defaultIconSize;\r\n\r\n let positions: MapPosition[] = [];\r\n if (item.iconPosition && item.iconPosition !== '') {\r\n let iconPositions: MapPosition[] | MapPosition = JSON.parse(item.iconPosition);\r\n if (!Array.isArray(iconPositions)) {\r\n iconPositions = [iconPositions];\r\n }\r\n positions = iconPositions;\r\n }\r\n\r\n return new Gastro({\r\n guid: item.guid,\r\n name: item.name,\r\n nameEn: item.nameEn,\r\n season: item.season,\r\n status: item.status != null ? item.status : AssetStatus.NoStatus,\r\n type: item.type,\r\n contact: item.contact,\r\n location: item.location,\r\n phone: item.phone,\r\n email: item.email,\r\n website: item.website,\r\n info: item.info,\r\n operatingHoursEnabled: item.operatingHoursEnabled,\r\n operatingHours: item.operatingHoursEnabled ? item.operatingHours : [],\r\n iconImageName: item.type,\r\n iconPositions: positions,\r\n iconWidth: defaultIconSize[0],\r\n iconHeight: defaultIconSize[1],\r\n });\r\n }\r\n\r\n static adaptForApi(gastro: Gastro): any {\r\n return {\r\n guid: gastro.guid,\r\n assetCategory: gastro.category,\r\n iconPosition: JSON.stringify(gastro.iconPositions),\r\n };\r\n }\r\n}\r\n","import { PointExpression } from 'leaflet';\r\nimport { Season } from 'src/app/core/domain/season.enum';\r\nimport { WritablePart } from 'src/app/core/utils/type-helper';\r\nimport { AssetStatus } from 'src/app/maps/domain/livedata/status.enum';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\nimport { OperatingHours } from 'src/app/maps/domain/masterdata/operating-hours.model';\r\nimport { SisMapAssetCategory } from 'src/app/maps/domain/masterdata/sismap-asset-category.enum';\r\n\r\nexport class Gastro implements MapElement {\r\n static readonly defaultColor: string = 'white';\r\n static readonly defaultIconSize: PointExpression = [18, 18];\r\n\r\n static readonly empty: Gastro = new Gastro({ guid: null, status: AssetStatus.Disabled });\r\n\r\n readonly category = SisMapAssetCategory.Gastro;\r\n\r\n guid: string;\r\n name: string;\r\n nameEn: string;\r\n season: Season;\r\n status: AssetStatus;\r\n type: string;\r\n contact?: string;\r\n location?: string;\r\n phone?: string;\r\n email?: string;\r\n website?: string;\r\n info?: string;\r\n iconPositions: MapPosition[];\r\n iconWidth: number;\r\n iconHeight: number;\r\n iconImageName?: string;\r\n paneName = 'gastro';\r\n operatingHoursEnabled: boolean;\r\n operatingHours: OperatingHours[];\r\n\r\n constructor(init?: Partial>) {\r\n Object.assign(this, init);\r\n }\r\n}\r\n","export enum LayerName {\r\n Gastro,\r\n Lift,\r\n Slope,\r\n Trail,\r\n Poi,\r\n Place,\r\n CustomIcon,\r\n CustomPath,\r\n Webcam,\r\n Wind,\r\n}\r\n","import { AssetStatus } from 'src/app/maps/domain/livedata/status.enum';\r\nimport { Lift } from 'src/app/maps/domain/masterdata/lift.model';\r\nimport { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\n\r\nexport class LiftAdapter {\r\n static adapt(item: any): Lift {\r\n if (!item) {\r\n return Lift.empty;\r\n }\r\n\r\n const defaultColor = item.defaultColor ? item.defaultColor : Lift.defaultColor;\r\n const weight = item.weight ? Number(item.weight) : null;\r\n const defaultIconSize = item.defaultIconSize ? item.defaultIconSize : Lift.defaultIconSize;\r\n\r\n let positions: MapPosition[] = [];\r\n if (item.iconPosition && item.iconPosition !== '') {\r\n let iconPositions: MapPosition[] | MapPosition = JSON.parse(item.iconPosition);\r\n if (!Array.isArray(iconPositions)) {\r\n iconPositions = [iconPositions];\r\n }\r\n positions = iconPositions;\r\n }\r\n\r\n return new Lift({\r\n guid: item.guid,\r\n name: item.name,\r\n nameEn: item.nameEn,\r\n label: item.label,\r\n info: item.info,\r\n firstRide: item.firstRide?.replace(/(\\d{2}:\\d{2}):\\d{2}/gi, '$1'),\r\n lastRide: item.lastRide?.replace(/(\\d{2}:\\d{2}):\\d{2}/gi, '$1'),\r\n throughput: item.throughput,\r\n travelTime: item.travelTime,\r\n website: item.website,\r\n type: item.type,\r\n season: item.season,\r\n status: item.status != null ? item.status : AssetStatus.NoStatus,\r\n subStatus: item.subStatus,\r\n path: item.path,\r\n pathDashArray: item.dashArray,\r\n pathWeight: weight,\r\n pathColor: item.color,\r\n pathBackgroundColor: item.backgroundColor,\r\n defaultPathColor: defaultColor,\r\n defaultPathWeight: Lift.defaultWeight,\r\n iconPositions: positions,\r\n iconWidth: defaultIconSize[0],\r\n iconHeight: defaultIconSize[1],\r\n iconImageName: item.type,\r\n });\r\n }\r\n\r\n static adaptForApi(lift: Lift): any {\r\n const path = lift.path || null;\r\n const color = lift.pathColor === Lift.defaultColor ? null : lift.pathColor || null;\r\n const backgroundColor = lift.pathBackgroundColor || null;\r\n const weight = lift.pathWeight === Lift.defaultWeight ? null : lift.pathWeight || null;\r\n const dashArray = lift.pathDashArray || null;\r\n\r\n return {\r\n guid: lift.guid,\r\n assetCategory: lift.category,\r\n path,\r\n iconPosition: JSON.stringify(lift.iconPositions),\r\n color,\r\n backgroundColor,\r\n dashArray,\r\n weight,\r\n };\r\n }\r\n}\r\n","import { PointExpression } from 'leaflet';\r\nimport { Season } from 'src/app/core/domain/season.enum';\r\nimport { WritablePart } from 'src/app/core/utils/type-helper';\r\nimport { AssetStatus } from 'src/app/maps/domain/livedata/status.enum';\r\nimport { AssetSubStatus } from 'src/app/maps/domain/livedata/substatus.enum';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\nimport { SisMapAssetCategory } from 'src/app/maps/domain/masterdata/sismap-asset-category.enum';\r\n\r\nexport class Lift implements MapElement {\r\n static readonly defaultColor: string = 'black';\r\n static readonly defaultIconSize: PointExpression = [22, 22];\r\n static readonly defaultWeight = 5;\r\n static readonly empty: Lift = new Lift({ guid: null, status: AssetStatus.Disabled });\r\n\r\n readonly category = SisMapAssetCategory.Lift;\r\n\r\n guid: string;\r\n name: string;\r\n nameEn: string;\r\n type: string;\r\n label: string;\r\n info?: string;\r\n firstRide?: string;\r\n lastRide?: string;\r\n throughput?: number;\r\n travelTime?: number;\r\n website?: string;\r\n season: Season;\r\n status: AssetStatus;\r\n subStatus?: AssetSubStatus;\r\n path?: string;\r\n pathDashArray?: string;\r\n pathWeight?: number;\r\n pathColor?: string;\r\n pathBackgroundColor?: string;\r\n paneName = 'lift';\r\n\r\n defaultPathColor: string;\r\n defaultPathWeight: number;\r\n\r\n iconPositions: MapPosition[];\r\n iconWidth: number;\r\n iconHeight: number;\r\n iconImageName?: string;\r\n\r\n constructor(init?: Partial>) {\r\n Object.assign(this, init);\r\n }\r\n}\r\n","import { CustomIconAdapter } from 'src/app/maps/domain/masterdata/custom-icon.adapter';\r\nimport { CustomIcon } from 'src/app/maps/domain/masterdata/custom-icon.model';\r\nimport { CustomPathAdapter } from 'src/app/maps/domain/masterdata/custom-path.adapter';\r\nimport { CustomPath } from 'src/app/maps/domain/masterdata/custom-path.model';\r\nimport { GastroAdapter } from 'src/app/maps/domain/masterdata/gastro.adapter';\r\nimport { Gastro } from 'src/app/maps/domain/masterdata/gastro.model';\r\nimport { LiftAdapter } from 'src/app/maps/domain/masterdata/lift.adapter';\r\nimport { Lift } from 'src/app/maps/domain/masterdata/lift.model';\r\nimport { MasterData } from 'src/app/maps/domain/masterdata/masterdata.model';\r\nimport { PlaceAdapter } from 'src/app/maps/domain/masterdata/place.adapter';\r\nimport { Place } from 'src/app/maps/domain/masterdata/place.model';\r\nimport { POIAdapter } from 'src/app/maps/domain/masterdata/poi.adapter';\r\nimport { POI } from 'src/app/maps/domain/masterdata/poi.model';\r\nimport { SignPost } from 'src/app/maps/domain/masterdata/sign-post.model';\r\nimport { SlopeAdapter } from 'src/app/maps/domain/masterdata/slope.adapter';\r\nimport { Slope } from 'src/app/maps/domain/masterdata/slope.model';\r\nimport { TrailAdapter } from 'src/app/maps/domain/masterdata/trail.adapter';\r\nimport { Trail } from 'src/app/maps/domain/masterdata/trail.model';\r\nimport { WebcamAdapter } from 'src/app/maps/domain/masterdata/webcam.adapter';\r\nimport { Webcam } from 'src/app/maps/domain/masterdata/webcam.model';\r\nimport { WindAdapter } from 'src/app/maps/domain/masterdata/wind.adapter';\r\nimport { Wind } from 'src/app/maps/domain/masterdata/wind.model';\r\nimport { v4 as v4guid } from 'uuid';\r\n\r\nexport class MasterDataAdapter {\r\n static adapt(item: any): MasterData {\r\n if (!item) {\r\n return {\r\n tenantGuid: v4guid(),\r\n alias: '',\r\n name: '',\r\n panoMapFilename: '',\r\n logoFilename: '',\r\n showIconZoomThreshold: 1.0,\r\n showIconZoomThresholdMobile: 1.0,\r\n iconZoomFactor: 1.0,\r\n season: 0,\r\n areaUrlName: '',\r\n sisId: '',\r\n oppositeMapExist: false,\r\n lifts: [],\r\n slopes: [],\r\n trails: [],\r\n pois: [],\r\n places: [],\r\n customIcons: [],\r\n customPaths: [],\r\n gastros: [],\r\n webcams: [],\r\n winds: [],\r\n style: undefined,\r\n labelInTooltip: false,\r\n signPosts: [],\r\n };\r\n }\r\n\r\n const lifts: Lift[] = MasterDataAdapter.createList(item.lifts, LiftAdapter.adapt).sort(\r\n (a, b) => a.status - b.status\r\n );\r\n\r\n lifts.forEach((lift) => {\r\n lift.name = MasterDataAdapter.getDisplayName(lift);\r\n });\r\n\r\n const slopes: Slope[] = MasterDataAdapter.createList(item.slopes, SlopeAdapter.adapt).sort(\r\n (a, b) => a.status - b.status\r\n );\r\n\r\n slopes.forEach((slope) => {\r\n slope.name = MasterDataAdapter.getDisplayName(slope);\r\n });\r\n\r\n if (item.style === 'andermatt') {\r\n slopes\r\n .filter((slope) => slope.type?.toLowerCase() === 'rennpiste')\r\n .forEach((slope) => {\r\n slope.iconUseStatus = false;\r\n slope.iconWidth = Slope.defaultIconSize[0];\r\n slope.iconHeight = Slope.defaultIconSize[1];\r\n });\r\n }\r\n\r\n const trails: Trail[] = MasterDataAdapter.createList(item.trails, TrailAdapter.adapt).sort(\r\n (a, b) => a.status - b.status\r\n );\r\n\r\n trails.forEach((trail) => {\r\n trail.name = MasterDataAdapter.getDisplayName(trail);\r\n });\r\n\r\n const pois: POI[] = MasterDataAdapter.createList(item.pois, POIAdapter.adapt).sort(\r\n (a, b) => a.status - b.status\r\n );\r\n\r\n pois.forEach((poi) => {\r\n poi.name = MasterDataAdapter.getDisplayName(poi);\r\n });\r\n\r\n const places: Place[] = MasterDataAdapter.createList(item.places, PlaceAdapter.adapt);\r\n\r\n if (item.style === 'andermatt') {\r\n places.forEach((place) => {\r\n // eslint-disable-next-line @typescript-eslint/quotes\r\n place.fontFamily = \"'Neue Haas Grotesk Disp W04 65Md'\";\r\n place.padding = '4px 6px 2px 6px';\r\n });\r\n }\r\n\r\n const customIcons: CustomIcon[] = MasterDataAdapter.createList(\r\n item.customIcons,\r\n CustomIconAdapter.adapt\r\n );\r\n\r\n const customPaths: CustomPath[] = MasterDataAdapter.createList(\r\n item.customPaths,\r\n CustomPathAdapter.adapt\r\n );\r\n\r\n const gastros: Gastro[] = MasterDataAdapter.createList(item.gastros, GastroAdapter.adapt);\r\n\r\n gastros.forEach((gastro) => {\r\n gastro.name = MasterDataAdapter.getDisplayName(gastro);\r\n });\r\n\r\n const webcams: Webcam[] = MasterDataAdapter.createList(item.webcams, WebcamAdapter.adapt);\r\n\r\n const winds: Wind[] = MasterDataAdapter.createList(item.windIcons, WindAdapter.adapt);\r\n\r\n const signPosts: SignPost[] = MasterDataAdapter.createList(item.signPosts, (s: any) => ({\r\n url: s.url.replace(/\\/+$/, ''),\r\n name: s.name,\r\n displayOrder: s.displayOrder,\r\n })).sort((a, b) => a.displayOrder - b.displayOrder);\r\n\r\n return {\r\n tenantGuid: item.tenantGuid,\r\n alias: item.alias,\r\n name: item.name,\r\n panoMapFilename: item.panoMapFilename,\r\n logoFilename: item.logoFilename,\r\n mapGuid: item.mapGuid,\r\n showIconZoomThreshold: item.showIconZoomThreshold,\r\n showIconZoomThresholdMobile: item.showIconZoomThresholdMobile,\r\n iconZoomFactor: item.iconZoomFactor,\r\n season: item.season,\r\n areaUrlName: item.areaUrlName,\r\n sisId: item.sisId,\r\n oppositeMapExist: item.oppositeMapExist,\r\n lifts,\r\n slopes,\r\n trails,\r\n pois,\r\n places,\r\n customIcons,\r\n customPaths,\r\n gastros,\r\n webcams,\r\n winds,\r\n style: item.style ?? 'sisag',\r\n labelInTooltip: item.labelInTooltip,\r\n signPosts,\r\n };\r\n }\r\n\r\n private static createList(item: any[], adapt: (a: any) => T): T[] {\r\n return item?.map((e) => adapt(e)) ?? [];\r\n }\r\n\r\n private static getDisplayName(element: { name: string; nameEn?: string }): string {\r\n const language = new URLSearchParams(window.location.search).get('language') || navigator.language;\r\n return (language.startsWith('en') && element.nameEn) ? element.nameEn : element.name;\r\n }\r\n\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { firstValueFrom, Observable, ReplaySubject } from 'rxjs';\r\nimport { map, take } from 'rxjs/operators';\r\nimport { CustomIcon } from 'src/app/maps/domain/masterdata/custom-icon.model';\r\nimport { CustomPath } from 'src/app/maps/domain/masterdata/custom-path.model';\r\nimport { Gastro } from 'src/app/maps/domain/masterdata/gastro.model';\r\nimport { LayerName } from 'src/app/maps/domain/masterdata/layername.enum';\r\nimport { Lift } from 'src/app/maps/domain/masterdata/lift.model';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { MasterDataAdapter } from 'src/app/maps/domain/masterdata/masterdata.adapter';\r\nimport { MasterData } from 'src/app/maps/domain/masterdata/masterdata.model';\r\nimport { Place } from 'src/app/maps/domain/masterdata/place.model';\r\nimport { POI } from 'src/app/maps/domain/masterdata/poi.model';\r\nimport { Slope } from 'src/app/maps/domain/masterdata/slope.model';\r\nimport { Trail } from 'src/app/maps/domain/masterdata/trail.model';\r\nimport { Webcam } from 'src/app/maps/domain/masterdata/webcam.model';\r\nimport { Wind } from 'src/app/maps/domain/masterdata/wind.model';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MasterDataService {\r\n private static readonly masterDataRequestUrl = '/api/sismap/masterdata/';\r\n\r\n private readonly masterData$ = new ReplaySubject(1);\r\n\r\n readonly masterData = this.masterData$.asObservable();\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n requestMasterData(sisId: string, alias: string, season: string, layers: LayerName[]): void {\r\n if (!layers || layers.length === 0) {\r\n this.masterData$.next(null);\r\n } else {\r\n const layersUrlString = layers.map((layerName) => LayerName[layerName]).join(',');\r\n\r\n this.http\r\n .get(\r\n `${\r\n environment.baseUrlApi + MasterDataService.masterDataRequestUrl + sisId\r\n }/${alias}/${season}/${layersUrlString}?${Math.floor(Math.random() * 1000).toString()}`\r\n )\r\n .pipe(\r\n map((data: any) => MasterDataAdapter.adapt(data)),\r\n take(1)\r\n )\r\n .subscribe((data) => this.masterData$.next(data));\r\n }\r\n }\r\n\r\n async addMapElement(element: MapElement): Promise {\r\n const masterData = await firstValueFrom(this.masterData);\r\n if (element instanceof Lift) {\r\n masterData.lifts.push(element);\r\n } else if (element instanceof CustomIcon) {\r\n masterData.customIcons.push(element);\r\n } else if (element instanceof CustomPath) {\r\n masterData.customPaths.push(element);\r\n } else if (element instanceof Gastro) {\r\n masterData.gastros.push(element);\r\n } else if (element instanceof Place) {\r\n masterData.places.push(element);\r\n } else if (element instanceof POI) {\r\n masterData.pois.push(element);\r\n } else if (element instanceof Slope) {\r\n masterData.slopes.push(element);\r\n } else if (element instanceof Trail) {\r\n masterData.trails.push(element);\r\n } else if (element instanceof Webcam) {\r\n masterData.webcams.push(element);\r\n } else if (element instanceof Wind) {\r\n masterData.winds.push(element);\r\n } else {\r\n console.error('MasterData: Trying to add unknown map element type', element);\r\n return;\r\n }\r\n\r\n this.masterData$.next(masterData);\r\n }\r\n\r\n async removeMapElement(element: MapElement): Promise {\r\n const masterData = await firstValueFrom(this.masterData);\r\n let elementList: MapElement[];\r\n if (element instanceof Lift) {\r\n elementList = masterData.lifts;\r\n } else if (element instanceof CustomIcon) {\r\n elementList = masterData.customIcons;\r\n } else if (element instanceof CustomPath) {\r\n elementList = masterData.customPaths;\r\n } else if (element instanceof Gastro) {\r\n elementList = masterData.gastros;\r\n } else if (element instanceof Place) {\r\n elementList = masterData.places;\r\n } else if (element instanceof POI) {\r\n elementList = masterData.pois;\r\n } else if (element instanceof Slope) {\r\n elementList = masterData.slopes;\r\n } else if (element instanceof Trail) {\r\n elementList = masterData.trails;\r\n } else if (element instanceof Webcam) {\r\n elementList = masterData.webcams;\r\n } else if (element instanceof Wind) {\r\n elementList = masterData.winds;\r\n } else {\r\n console.error('MasterData: Trying to delete unknown map element type', element);\r\n return;\r\n }\r\n\r\n const index = elementList.findIndex((e) => e.guid === element.guid);\r\n if (index > -1) {\r\n elementList.splice(index, 1);\r\n }\r\n\r\n this.masterData$.next(masterData);\r\n }\r\n\r\n updateMapElementPosition(\r\n layer: LayerName | string,\r\n elementguid: string,\r\n position: string,\r\n editToken: string\r\n ): Observable {\r\n const layerName = typeof layer === 'string' ? layer : LayerName[layer];\r\n return this.http\r\n .post(\r\n `${\r\n environment.baseUrlApi + MasterDataService.masterDataRequestUrl\r\n }map-by-edittoken/${layerName}/${elementguid}/position`,\r\n {\r\n position,\r\n editToken,\r\n }\r\n )\r\n .pipe(map(() => {}));\r\n }\r\n}\r\n","import { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\nimport { Place } from 'src/app/maps/domain/masterdata/place.model';\r\n\r\nexport class PlaceAdapter {\r\n static adapt(item: any): Place {\r\n if (!item) {\r\n return Place.empty;\r\n }\r\n\r\n let positions: MapPosition[] = [];\r\n if (item.textPosition && item.textPosition !== '') {\r\n let iconPositions: MapPosition[] | MapPosition = JSON.parse(item.textPosition);\r\n if (!Array.isArray(iconPositions)) {\r\n iconPositions = [iconPositions];\r\n }\r\n positions = iconPositions;\r\n }\r\n\r\n return new Place({\r\n guid: item.guid,\r\n name: item.name,\r\n altitude: item.altitude,\r\n backgroundColor: item.color,\r\n textColor: item.fontColor,\r\n fontSize: item.fontSize,\r\n border: item.border,\r\n borderRadius: item.borderRadius,\r\n iconPositions: positions,\r\n textOutline: item.textOutline,\r\n });\r\n }\r\n\r\n static adaptForApi(place: Place): any {\r\n const color = place.backgroundColor || null;\r\n const fontColor = place.textColor === Place.defaultTextColor || !place.textColor ? null : place.textColor;\r\n const altitude = place.altitude || null;\r\n const fontSize = place.fontSize === Place.defaultFontSize || !place.fontSize ? null : place.fontSize;\r\n const border = place.border === Place.defaultBorder || !place.border ? null : place.border;\r\n const borderRadius =\r\n place.borderRadius === Place.defaultBorderRadius || !place.borderRadius ? null : place.borderRadius;\r\n const textOutline = place.textOutline || null;\r\n\r\n return {\r\n guid: place.guid,\r\n assetCategory: place.category,\r\n textPosition: JSON.stringify(place.iconPositions),\r\n color,\r\n fontColor,\r\n name: place.name,\r\n altitude,\r\n fontSize,\r\n border,\r\n borderRadius,\r\n textOutline,\r\n };\r\n }\r\n}\r\n","import { WritablePart } from 'src/app/core/utils/type-helper';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\nimport { SisMapAssetCategory } from 'src/app/maps/domain/masterdata/sismap-asset-category.enum';\r\n\r\nexport class Place implements MapElement {\r\n static readonly defaultFontSize = 10;\r\n static readonly defaultFontFamily = 'Helvetica, Arial, sans-serif';\r\n static readonly defaultBorderRadius = null;\r\n static readonly defaultTextColor = '#000000';\r\n static readonly defaultBorder = null;\r\n static readonly defaultBackgroundColor = null;\r\n static readonly defaultTextOutline = null;\r\n static readonly defaultPadding = '2px 6px 2px 6px';\r\n static readonly empty: Place = new Place({ guid: null });\r\n\r\n readonly category = SisMapAssetCategory.Place;\r\n\r\n guid: string;\r\n name: string;\r\n type: string;\r\n fontFamily: string;\r\n disallowPopUp = true;\r\n disallowHighlight = true;\r\n iconAlwaysOnTop = true;\r\n iconPositions: MapPosition[];\r\n iconDisableBaseZoom = true;\r\n iconWidth = null;\r\n iconHeight = null;\r\n padding: string;\r\n paneName = 'place';\r\n\r\n get iconHtml(): string {\r\n const content =\r\n this.altitude && this.altitude !== ''\r\n ? this.name + '' + this.altitude + ''\r\n : this.name;\r\n const backgroundColor = this.backgroundColor ?? Place.defaultBackgroundColor;\r\n const textColor = this.textColor ?? Place.defaultTextColor;\r\n const fontSize = this.fontSize ?? Place.defaultFontSize;\r\n const fontFamily = this.fontFamily ?? Place.defaultFontFamily;\r\n const border = this.border ?? Place.defaultBorder;\r\n const borderRadius = this.borderRadius ?? Place.defaultBorderRadius;\r\n const padding = this.padding ?? Place.defaultPadding;\r\n\r\n // -webkit-text-stroke is supported by all browsers we support and allows to draw an outline of a text. However the outline is drawn\r\n // after the browser has drawn the fill, so it looks ugly. In Firefox and Safari you can use 'paint-order: stroke fill;' to fix this behavior\r\n // but chrome only supports this property on svg text elements, not on normal HTML text. So in order to draw an outline we have to\r\n // resort to a hack and draw the outline explicitly behind the text. This, however, causes Firefox to behave weird with text positioning with\r\n // some fonts but this can be mitigated by also applying a text-stroke to the front text but with transparent color.\r\n const textOutline = this.textOutline != null ? `-webkit-text-stroke: ${this.textOutline};` : '';\r\n\r\n return `\r\n ${content}\r\n ${content}\r\n `;\r\n }\r\n\r\n altitude: string | null;\r\n backgroundColor: string | null;\r\n textColor: string | null;\r\n fontSize: number | null;\r\n border: string | null;\r\n borderRadius: number | null;\r\n textOutline: string | null;\r\n\r\n constructor(init?: WritablePart | { guid: null }) {\r\n Object.assign(this, init);\r\n }\r\n}\r\n","import { AssetStatus } from 'src/app/maps/domain/livedata/status.enum';\r\nimport { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\nimport { POI } from 'src/app/maps/domain/masterdata/poi.model';\r\n\r\nexport class POIAdapter {\r\n static adapt(item: any): POI {\r\n if (!item) {\r\n return POI.empty;\r\n }\r\n\r\n const defaultIconSize = item.defaultIconSize ? item.defaultIconSize : POI.defaultIconSize;\r\n const weight = item.weight ? Number(item.weight) : null;\r\n\r\n let positions: MapPosition[] = [];\r\n if (item.iconPosition && item.iconPosition !== '') {\r\n let iconPositions: MapPosition[] | MapPosition = JSON.parse(item.iconPosition);\r\n if (!Array.isArray(iconPositions)) {\r\n iconPositions = [iconPositions];\r\n }\r\n positions = iconPositions;\r\n }\r\n\r\n return new POI({\r\n guid: item.guid,\r\n name: item.name,\r\n nameEn: item.nameEn,\r\n type: item.type,\r\n info: item.info,\r\n website: item.website,\r\n season: item.season,\r\n status: item.status != null ? item.status : AssetStatus.NoStatus,\r\n path: item.path,\r\n pathDashArray: item.dashArray,\r\n pathColor: item.color,\r\n pathWeight: weight,\r\n defaultPathColor: POI.defaultColor,\r\n defaultPathWeight: POI.defaultWeight,\r\n iconPositions: positions,\r\n iconImageName: item.type,\r\n iconWidth: defaultIconSize[0],\r\n iconHeight: defaultIconSize[1],\r\n });\r\n }\r\n\r\n static adaptForApi(poi: POI): any {\r\n const path = poi.path || null;\r\n const color = poi.pathColor === POI.defaultColor ? null : poi.pathColor || null;\r\n const weight = poi.pathWeight === POI.defaultWeight ? null : poi.pathWeight || null;\r\n const dashArray = poi.pathDashArray || null;\r\n\r\n return {\r\n guid: poi.guid,\r\n assetCategory: poi.category,\r\n path,\r\n iconPosition: JSON.stringify(poi.iconPositions),\r\n color,\r\n dashArray,\r\n weight,\r\n };\r\n }\r\n}\r\n","import { PointExpression } from 'leaflet';\r\nimport { Season } from 'src/app/core/domain/season.enum';\r\nimport { WritablePart } from 'src/app/core/utils/type-helper';\r\nimport { AssetStatus } from 'src/app/maps/domain/livedata/status.enum';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\nimport { SisMapAssetCategory } from 'src/app/maps/domain/masterdata/sismap-asset-category.enum';\r\n\r\nexport class POI implements MapElement {\r\n static readonly defaultColor: string = 'white';\r\n static readonly defaultIconSize: PointExpression = [18, 18];\r\n static readonly defaultWeight = 2;\r\n static readonly empty: POI = new POI({ guid: null, status: AssetStatus.Disabled });\r\n\r\n readonly category = SisMapAssetCategory.Poi;\r\n\r\n guid: string;\r\n name: string;\r\n nameEn: string;\r\n type: string;\r\n info?: string;\r\n website?: string;\r\n season: Season;\r\n status: AssetStatus;\r\n path?: string;\r\n pathDashArray?: string;\r\n pathWeight?: number;\r\n pathColor?: string;\r\n paneName = 'poi';\r\n\r\n defaultPathColor: string;\r\n defaultPathWeight: number;\r\n\r\n iconPositions: MapPosition[];\r\n iconWidth: number;\r\n iconHeight: number;\r\n iconImageName?: string;\r\n\r\n constructor(init?: Partial>) {\r\n Object.assign(this, init);\r\n }\r\n}\r\n","export enum SisMapAssetCategory {\r\n Lift = 1,\r\n Slope = 2,\r\n Trail = 3,\r\n Gastro = 4,\r\n Poi = 5,\r\n Place = 6,\r\n CustomIcon = 100,\r\n Webcam = 101,\r\n Wind = 102,\r\n CustomPath = 103,\r\n}\r\n","import { PointExpression } from 'leaflet';\r\nimport { AssetStatus } from 'src/app/maps/domain/livedata/status.enum';\r\nimport { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\nimport { Slope } from 'src/app/maps/domain/masterdata/slope.model';\r\n\r\nexport class SlopeAdapter {\r\n static adapt(item: any): Slope {\r\n if (!item) {\r\n return Slope.empty;\r\n }\r\n\r\n const defaultColor = item.defaultColor ? item.defaultColor : Slope.defaultColor;\r\n const weight = item.weight ? Number(item.weight) : null;\r\n const defaultIconSize: PointExpression = item.defaultIconSize ? item.defaultIconSize : Slope.defaultIconSize;\r\n const isPiste = item.type?.toLowerCase().includes('piste');\r\n const iconSize = isPiste ? Slope.defaultStatusIconSize : defaultIconSize;\r\n\r\n let positions: MapPosition[] = [];\r\n if (item.iconPosition && item.iconPosition !== '') {\r\n let iconPositions: MapPosition[] | MapPosition = JSON.parse(item.iconPosition);\r\n if (!Array.isArray(iconPositions)) {\r\n iconPositions = [iconPositions];\r\n }\r\n positions = iconPositions;\r\n }\r\n\r\n return new Slope({\r\n guid: item.guid,\r\n name: item.name,\r\n nameEn: item.nameEn,\r\n label: item.label,\r\n info: item.info,\r\n website: item.website,\r\n description: item.description,\r\n lengthMeter: Number(item.lengthMeter),\r\n type: item.type,\r\n season: item.season,\r\n path: item.path,\r\n pathDashArray: item.dashArray,\r\n pathWeight: weight,\r\n pathColor: item.color,\r\n defaultPathColor: defaultColor,\r\n defaultPathWeight: Slope.defaultWeight,\r\n status: item.status != null ? item.status : AssetStatus.NoStatus,\r\n iconImageName: item.type,\r\n iconUseStatus: isPiste,\r\n iconWidth: iconSize[0],\r\n iconHeight: iconSize[1],\r\n iconPositions: positions,\r\n });\r\n }\r\n\r\n static adaptForApi(slope: Slope): any {\r\n const path = slope.path || null;\r\n const color = slope.pathColor === Slope.defaultColor ? null : slope.pathColor || null;\r\n const weight = slope.pathWeight === Slope.defaultWeight ? null : slope.pathWeight || null;\r\n const dashArray = slope.pathDashArray || null;\r\n\r\n return {\r\n guid: slope.guid,\r\n assetCategory: slope.category,\r\n path,\r\n iconPosition: JSON.stringify(slope.iconPositions),\r\n color,\r\n dashArray,\r\n weight,\r\n };\r\n }\r\n}\r\n","import { PointExpression } from 'leaflet';\r\nimport { Season } from 'src/app/core/domain/season.enum';\r\nimport { WritablePart } from 'src/app/core/utils/type-helper';\r\nimport { AssetStatus } from 'src/app/maps/domain/livedata/status.enum';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\nimport { SisMapAssetCategory } from 'src/app/maps/domain/masterdata/sismap-asset-category.enum';\r\n\r\nexport class Slope implements MapElement {\r\n static readonly defaultColor: string = 'black';\r\n static readonly defaultWeight: number = 2;\r\n static readonly defaultIconSize: PointExpression = [18, 18];\r\n static readonly defaultStatusIconSize: PointExpression = [15, 15];\r\n\r\n static readonly empty: Slope = new Slope({ guid: null, status: AssetStatus.Closed });\r\n\r\n readonly category = SisMapAssetCategory.Slope;\r\n readonly isPiste: boolean;\r\n\r\n guid: string;\r\n name: string;\r\n nameEn: string;\r\n type: string;\r\n info?: string;\r\n website?: string;\r\n season: Season;\r\n label: string;\r\n status: AssetStatus;\r\n path?: string;\r\n pathDashArray?: string;\r\n pathWeight?: number;\r\n pathColor?: string;\r\n paneName = 'slope';\r\n\r\n defaultPathColor: string;\r\n defaultPathWeight: number;\r\n\r\n iconPositions: MapPosition[];\r\n iconWidth: number;\r\n iconHeight: number;\r\n iconImageName?: string;\r\n iconUseStatus?: boolean;\r\n\r\n description: string;\r\n lengthMeter: number;\r\n\r\n constructor(init?: Partial>) {\r\n Object.assign(this, init);\r\n this.isPiste = this.type?.toLowerCase().includes('piste');\r\n }\r\n}\r\n","import { AssetStatus } from 'src/app/maps/domain/livedata/status.enum';\r\nimport { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\nimport { Trail } from 'src/app/maps/domain/masterdata/trail.model';\r\n\r\nexport class TrailAdapter {\r\n static adapt(item: any): Trail {\r\n if (!item) {\r\n return Trail.empty;\r\n }\r\n\r\n const defaultColor = item.defaultColor ? item.defaultColor : Trail.defaultColor;\r\n const weight = item.weight ? Number(item.weight) : null;\r\n const defaultIconSize = item.defaultIconSize ? item.defaultIconSize : Trail.defaultIconSize;\r\n\r\n let positions: MapPosition[] = [];\r\n if (item.iconPosition && item.iconPosition !== '') {\r\n let iconPositions: MapPosition[] | MapPosition = JSON.parse(item.iconPosition);\r\n if (!Array.isArray(iconPositions)) {\r\n iconPositions = [iconPositions];\r\n }\r\n positions = iconPositions;\r\n }\r\n\r\n return new Trail({\r\n guid: item.guid,\r\n name: item.name,\r\n nameEn: item.nameEn,\r\n label: item.label,\r\n info: item.info,\r\n duration: item.duration,\r\n elevation: item.elevation,\r\n website: item.website,\r\n description: item.description,\r\n lengthMeter: Number(item.lengthMeter),\r\n type: item.type,\r\n season: item.season,\r\n path: item.path,\r\n pathDashArray: item.dashArray,\r\n pathWeight: weight,\r\n pathColor: item.color,\r\n defaultPathColor: defaultColor,\r\n defaultPathWeight: Trail.defaultWeight,\r\n status: item.status != null ? item.status : AssetStatus.NoStatus,\r\n iconPositions: positions,\r\n iconImageName: item.type,\r\n iconWidth: defaultIconSize[0],\r\n iconHeight: defaultIconSize[1],\r\n });\r\n }\r\n\r\n static adaptForApi(trail: Trail): any {\r\n const path = trail.path || null;\r\n const color = trail.pathColor === Trail.defaultColor ? null : trail.pathColor || null;\r\n const weight = trail.pathWeight === Trail.defaultWeight ? null : trail.pathWeight || null;\r\n const dashArray = trail.pathDashArray || null;\r\n\r\n return {\r\n guid: trail.guid,\r\n assetCategory: trail.category,\r\n path,\r\n iconPosition: JSON.stringify(trail.iconPositions),\r\n color,\r\n dashArray,\r\n weight,\r\n };\r\n }\r\n}\r\n","import { PointExpression } from 'leaflet';\r\nimport { Season } from 'src/app/core/domain/season.enum';\r\nimport { WritablePart } from 'src/app/core/utils/type-helper';\r\nimport { AssetStatus } from 'src/app/maps/domain/livedata/status.enum';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\nimport { SisMapAssetCategory } from 'src/app/maps/domain/masterdata/sismap-asset-category.enum';\r\n\r\nexport class Trail implements MapElement {\r\n static readonly defaultColor: string = 'black';\r\n static readonly defaultWeight: number = 2;\r\n static readonly defaultIconSize: PointExpression = [18, 18];\r\n static readonly empty: Trail = new Trail({ guid: null, status: AssetStatus.Closed });\r\n\r\n readonly category = SisMapAssetCategory.Trail;\r\n\r\n guid: string;\r\n name: string;\r\n nameEn: string;\r\n type: string;\r\n info?: string;\r\n duration?: number;\r\n elevation?: number;\r\n website?: string;\r\n season: Season;\r\n label: string;\r\n status: AssetStatus;\r\n path?: string;\r\n pathDashArray?: string;\r\n pathWeight?: number;\r\n pathColor?: string;\r\n paneName = 'trail';\r\n\r\n defaultPathColor: string;\r\n defaultPathWeight: number;\r\n\r\n iconPositions: MapPosition[];\r\n iconWidth: number;\r\n iconHeight: number;\r\n iconImageName?: string;\r\n\r\n description: string;\r\n lengthMeter: number;\r\n\r\n constructor(init?: Partial>) {\r\n Object.assign(this, init);\r\n }\r\n}\r\n","import { Season } from 'src/app/core/domain/season.enum';\r\nimport { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\nimport { Webcam } from 'src/app/maps/domain/masterdata/webcam.model';\r\n\r\nexport class WebcamAdapter {\r\n static adapt(item: any): Webcam {\r\n if (!item) {\r\n return Webcam.empty;\r\n }\r\n\r\n const defaultIconSize = item.defaultIconSize ? item.defaultIconSize : Webcam.defaultIconSize;\r\n\r\n let positions: MapPosition[] = [];\r\n if (item.iconPosition && item.iconPosition !== '') {\r\n let iconPositions: MapPosition[] | MapPosition = JSON.parse(item.iconPosition);\r\n if (!Array.isArray(iconPositions)) {\r\n iconPositions = [iconPositions];\r\n }\r\n positions = iconPositions;\r\n }\r\n\r\n return new Webcam({\r\n guid: item.guid,\r\n name: item.title,\r\n url: item.url,\r\n type: item.displayType,\r\n season: Season.SummerAndWinter,\r\n iconPositions: positions,\r\n iconWidth: defaultIconSize[0],\r\n iconHeight: defaultIconSize[1],\r\n aspectRatio: item.aspectRatio,\r\n });\r\n }\r\n\r\n static adaptForApi(webcam: Webcam): any {\r\n return {\r\n guid: webcam.guid,\r\n assetCategory: webcam.category,\r\n title: webcam.name,\r\n url: webcam.url,\r\n displayType: webcam.type,\r\n iconPosition: JSON.stringify(webcam.iconPositions),\r\n aspectRatio: webcam.aspectRatio,\r\n };\r\n }\r\n}\r\n","import { PointExpression } from 'leaflet';\r\nimport { Season } from 'src/app/core/domain/season.enum';\r\nimport { WritablePart } from 'src/app/core/utils/type-helper';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\nimport { SisMapAssetCategory } from 'src/app/maps/domain/masterdata/sismap-asset-category.enum';\r\n\r\nexport class Webcam implements MapElement {\r\n static readonly page: string = 'page';\r\n static readonly iframe: string = 'iframe';\r\n static readonly external: string = 'external';\r\n\r\n static readonly ratio_16_9: string = '16:9';\r\n static readonly ratio_4_3: string = '4:3';\r\n static readonly ratio_3_2: string = '3:2';\r\n static readonly ratio_other: string = 'other';\r\n\r\n static readonly defaultIconSize: PointExpression = [18, 18];\r\n static readonly empty: Webcam = new Webcam({ guid: null });\r\n\r\n static readonly types = [Webcam.page, Webcam.iframe, Webcam.external] as const;\r\n static readonly aspectRatios = [Webcam.ratio_16_9, Webcam.ratio_4_3, Webcam.ratio_3_2, Webcam.ratio_other] as const;\r\n\r\n readonly category = SisMapAssetCategory.Webcam;\r\n\r\n guid: string;\r\n name: string;\r\n season: Season;\r\n type: (typeof Webcam.types)[number];\r\n iconPositions: MapPosition[];\r\n iconWidth: number;\r\n iconHeight: number;\r\n iconImageName = 'webcam';\r\n paneName = 'webcam';\r\n url: string;\r\n aspectRatio: (typeof Webcam.aspectRatios)[number];\r\n\r\n constructor(init?: Partial>) {\r\n Object.assign(this, init);\r\n }\r\n}\r\n","import { Season } from 'src/app/core/domain/season.enum';\r\nimport { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\nimport { Wind } from 'src/app/maps/domain/masterdata/wind.model';\r\n\r\nexport class WindAdapter {\r\n static adapt(item: any): Wind {\r\n if (!item) {\r\n return Wind.empty;\r\n }\r\n\r\n const defaultIconSize = item.defaultIconSize ? item.defaultIconSize : Wind.defaultIconSize;\r\n\r\n let positions: MapPosition[] = [];\r\n if (item.iconPosition && item.iconPosition !== '') {\r\n let iconPositions: MapPosition[] | MapPosition = JSON.parse(item.iconPosition);\r\n if (!Array.isArray(iconPositions)) {\r\n iconPositions = [iconPositions];\r\n }\r\n positions = iconPositions;\r\n }\r\n\r\n return new Wind({\r\n guid: item.guid,\r\n name: item.alias,\r\n meteoStationSisId: item.meteoStationSisId,\r\n type: item.type,\r\n season: Season.SummerAndWinter,\r\n directionOffsetPanoMap: item.directionOffsetPanoMap,\r\n directionOffsetNorth: item.directionOffsetNorth,\r\n iconPositions: positions,\r\n iconWidth: defaultIconSize[0],\r\n iconHeight: defaultIconSize[1],\r\n iconUseMeteoData: true,\r\n });\r\n }\r\n\r\n static adaptForApi(wind: Wind): any {\r\n return {\r\n guid: wind.guid,\r\n assetCategory: wind.category,\r\n iconPosition: JSON.stringify(wind.iconPositions),\r\n alias: wind.name,\r\n // directionOffsetPanoMap: wind.directionOffsetPanoMap,\r\n // directionOffsetNorth: wind.directionOffsetNorth,\r\n };\r\n }\r\n}\r\n","import { PointExpression } from 'leaflet';\r\nimport { Season } from 'src/app/core/domain/season.enum';\r\nimport { WritablePart } from 'src/app/core/utils/type-helper';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\nimport { SisMapAssetCategory } from 'src/app/maps/domain/masterdata/sismap-asset-category.enum';\r\n\r\nexport class Wind implements MapElement {\r\n static readonly defaultIconSize: PointExpression = [60, 60];\r\n static readonly empty: Wind = new Wind({ guid: null });\r\n\r\n readonly category = SisMapAssetCategory.Wind;\r\n\r\n guid: string;\r\n name: string;\r\n season: Season;\r\n type: string;\r\n paneName = 'wind';\r\n\r\n iconPositions: MapPosition[];\r\n iconWidth: number;\r\n iconHeight: number;\r\n iconUseMeteoData?: boolean;\r\n\r\n meteoStationSisId: string;\r\n directionOffsetPanoMap: number;\r\n directionOffsetNorth: number;\r\n\r\n windSpeedKmh: number | null;\r\n windDirectionDegreeAxis: number | null;\r\n windDirectionDegreeNorth: number | null;\r\n\r\n constructor(init?: Partial>) {\r\n Object.assign(this, init);\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { from, map, of, switchMap } from 'rxjs';\r\nimport { Gastro } from 'src/app/maps/domain/masterdata/gastro.model';\r\nimport { OperatingHours } from 'src/app/maps/domain/masterdata/operating-hours.model';\r\nimport { IconService } from 'src/app/maps/map/icon-service';\r\nimport { MapStateService } from 'src/app/maps/map/map-state.service';\r\nimport { MapStyleService } from 'src/app/maps/map/style/map-style.service';\r\n\r\n@Component({\r\n selector: 'sis-asset-sidepane-content',\r\n templateUrl: './asset-sidepane-content.component.html',\r\n styleUrls: ['./asset-sidepane-content.component.scss'],\r\n})\r\nexport class AssetSidepaneContentComponent {\r\n readonly element$ = this.mapStateService.selectedElement$.pipe(map(({ element }) => element));\r\n\r\n readonly className$ = from(this.mapStyleService.getStyleName()).pipe(map((name) => `sis-menu-${name}`));\r\n\r\n readonly assetTypeIcon$ = this.element$.pipe(\r\n switchMap((element) => {\r\n if (element?.iconImageName) {\r\n return from(this.iconService.getAssetTypeIconHtml(element)).pipe(\r\n map((iconString) => this.sanitizer.bypassSecurityTrustHtml(iconString))\r\n );\r\n }\r\n return of(null);\r\n })\r\n );\r\n\r\n readonly operatingHours$ = this.element$.pipe(\r\n map((element) => (element ? this.createOperatingHours((element as Gastro).operatingHours) : []))\r\n );\r\n\r\n constructor(\r\n private mapStyleService: MapStyleService,\r\n private mapStateService: MapStateService,\r\n private iconService: IconService,\r\n private sanitizer: DomSanitizer,\r\n private translateService: TranslateService\r\n ) {}\r\n\r\n private createOperatingHours(operatingHours: OperatingHours[]): string[][] {\r\n operatingHours.sort((a, b) => a.weekday - b.weekday);\r\n\r\n const now = new Date();\r\n let dayNow = now.getDay();\r\n if (dayNow === 0) {\r\n dayNow = 7;\r\n }\r\n\r\n const weekDates = this.getWeekDates();\r\n const weekdays = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'];\r\n\r\n return operatingHours.map((o) => {\r\n let dayName = weekdays[o.weekday - 1];\r\n switch (o.weekday) {\r\n case dayNow:\r\n dayName = this.translateService.instant(`general.term.today`);\r\n break;\r\n case dayNow + 1:\r\n dayName = this.translateService.instant(`general.term.tomorrow`);\r\n break;\r\n default:\r\n dayName = this.translateService.instant(`general.term.weekday.${o.weekday}`);\r\n break;\r\n }\r\n\r\n dayName += ', ' + weekDates[o.weekday - 1];\r\n\r\n let timeString: string;\r\n switch (o.status) {\r\n case 0:\r\n timeString = this.translateService.instant('operatinghours.term.closed');\r\n break;\r\n case 1:\r\n timeString = `${o.from1} - ${o.until1} / ${o.from2} - ${o.until2}`;\r\n break;\r\n case 2:\r\n timeString = `${o.from1} - ${o.until2}`;\r\n break;\r\n }\r\n\r\n if (o.weekday === dayNow) {\r\n dayName = `${dayName}`;\r\n timeString = `${timeString}`;\r\n }\r\n\r\n return [dayName, timeString];\r\n });\r\n }\r\n\r\n private getWeekDates(): string[] {\r\n const todayDayOfWeek = new Date().getDay();\r\n\r\n const dayOffset = todayDayOfWeek === 0 ? -6 : 1 - todayDayOfWeek;\r\n\r\n const monday = new Date();\r\n monday.setDate(monday.getDate() + dayOffset);\r\n\r\n const weekDates: string[] = [];\r\n for (let i = 0; i < 7; i++) {\r\n const currentDay = new Date(monday);\r\n currentDay.setDate(monday.getDate() + i);\r\n const dateString = currentDay.getDate() + '.' + (currentDay.getMonth() + 1) + '.';\r\n weekDates.push(dateString);\r\n }\r\n\r\n return weekDates;\r\n }\r\n}\r\n","\r\n \r\n \r\n \r\n \r\n \r\n {{ element.label }} - \r\n {{ element.name }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n webreport.term.open\r\n general.term.circulation\r\n general.term.convoy\r\n \r\n \r\n webreport.term.closed\r\n general.term.revision\r\n general.term.storm\r\n general.term.malfunction\r\n \r\n \r\n webreport.term.preparation\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n general.term.information\r\n \r\n \r\n ') | clickableUrl\">\r\n \r\n \r\n\r\n \r\n \r\n general.term.details\r\n \r\n \r\n \r\n {{ ('general.term.length' | translate) + ': ' }}\r\n \r\n \r\n {{ element.lengthMeter + ' m' }}\r\n \r\n \r\n \r\n \r\n {{ ('general.term.firstRide' | translate) + ': ' }}\r\n \r\n \r\n {{ element.firstRide }}\r\n \r\n \r\n \r\n \r\n {{ ('general.term.lastRide' | translate) + ': ' }}\r\n \r\n \r\n {{ element.lastRide }}\r\n \r\n \r\n \r\n \r\n {{ ('general.term.throughput' | translate) + ': ' }}\r\n \r\n \r\n {{ element.throughput + ' Pers./Hr.' }}\r\n \r\n \r\n \r\n \r\n {{ ('general.term.travelTime' | translate) + ': ' }}\r\n \r\n \r\n {{ element.travelTime + ' Min.' }}\r\n \r\n \r\n \r\n \r\n {{ ('general.term.hikeDuration' | translate) + ': ' }}\r\n \r\n \r\n {{ element.duration | hoursMinutes }}\r\n \r\n \r\n \r\n \r\n {{ ('general.term.elevation' | translate) + ': ' }}\r\n \r\n \r\n {{ element.elevation + ' m' }}\r\n \r\n \r\n \r\n\r\n \r\n \r\n general.term.contact\r\n \r\n \r\n \r\n {{ element.contact }}\r\n \r\n \r\n \r\n \r\n {{ element.location }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ element.phone }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ element.email }}\r\n \r\n \r\n \r\n\r\n \r\n \r\n general.term.website\r\n \r\n \r\n \r\n {{ element.website }}\r\n \r\n \r\n \r\n\r\n \r\n \r\n general.term.operatingHours\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { MenuController, ModalController } from '@ionic/angular';\r\nimport { takeUntil } from 'rxjs';\r\nimport { Unsubscriber } from 'src/app/core/unsubscriber/unsubscriber';\r\nimport { Gastro } from 'src/app/maps/domain/masterdata/gastro.model';\r\nimport { Lift } from 'src/app/maps/domain/masterdata/lift.model';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { POI } from 'src/app/maps/domain/masterdata/poi.model';\r\nimport { Slope } from 'src/app/maps/domain/masterdata/slope.model';\r\nimport { Trail } from 'src/app/maps/domain/masterdata/trail.model';\r\nimport { AssetSidepaneContentComponent } from 'src/app/maps/map/asset-sidepane/asset-sidepane-content/asset-sidepane-content.component';\r\nimport { HoverService } from 'src/app/maps/map/hover.service';\r\nimport { MapStateService } from 'src/app/maps/map/map-state.service';\r\n\r\n@Component({\r\n selector: 'sis-asset-sidepane',\r\n templateUrl: './asset-sidepane.component.html',\r\n styleUrls: ['./asset-sidepane.component.scss'],\r\n})\r\nexport class AssetSidepaneComponent extends Unsubscriber implements OnInit {\r\n @Input() editMode: boolean;\r\n @Input() bigScreenMode: boolean;\r\n\r\n showSpinner = true;\r\n element: MapElement;\r\n\r\n constructor(\r\n private mapStateService: MapStateService,\r\n private hoverService: HoverService,\r\n private modalCtrl: ModalController,\r\n private menuCtrl: MenuController\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.mapStateService.elementClicked$.pipe(takeUntil(this.onDestroy$)).subscribe(async ({ element }) => {\r\n if (element == null) {\r\n return;\r\n }\r\n this.element = element;\r\n const categories = [Lift, Slope, Trail, POI, Gastro];\r\n if (!this.editMode && categories.some((category) => element instanceof category)) {\r\n this.showSpinner = false;\r\n if (this.bigScreenMode) {\r\n await this.menuCtrl.open('asset-sidepane-menu');\r\n } else {\r\n await this.createBottomSheetModal(element);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private async createBottomSheetModal(element: MapElement): Promise {\r\n const initialBreakpoint = element instanceof Gastro ? 0.8 : 0.5;\r\n const modal = await this.modalCtrl.create({\r\n component: AssetSidepaneContentComponent,\r\n breakpoints: [0, 0.3, 0.5, 0.8, 0.9999],\r\n initialBreakpoint,\r\n handle: true,\r\n cssClass: 'sis-sismap-bottom-sheet-div',\r\n mode: 'ios',\r\n showBackdrop: false,\r\n });\r\n modal.present();\r\n modal.onWillDismiss().then(() => {\r\n this.mapStateService.clickElement(null, null);\r\n this.hoverService.hover({ guid: element.guid, hover: false, iconHovered: false });\r\n });\r\n }\r\n\r\n resetMenu(): void {\r\n this.showSpinner = true;\r\n this.mapStateService.clickElement(null, null);\r\n this.hoverService.hover({ guid: this.element.guid, hover: false, iconHovered: false });\r\n }\r\n}\r\n","\r\n \r\n \r\n\r\n","import { AfterViewInit, Directive, ElementRef, EventEmitter, Host, OnDestroy, Output } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sisEnterViewportNotifier]',\r\n})\r\nexport class EnterTheViewportNotifierDirective implements AfterViewInit, OnDestroy {\r\n @Output() visibilityChange: EventEmitter = new EventEmitter();\r\n\r\n private observer: IntersectionObserver;\r\n\r\n constructor(@Host() private _elementRef: ElementRef) {}\r\n\r\n ngAfterViewInit(): void {\r\n const options = {\r\n root: null,\r\n rootMargin: '0px',\r\n threshold: 0.0,\r\n };\r\n\r\n this.observer = new IntersectionObserver(this.callback, options);\r\n\r\n this.observer.observe(this._elementRef.nativeElement);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.observer.disconnect();\r\n }\r\n\r\n private callback = (entries: IntersectionObserverEntry[], _: IntersectionObserver): void => {\r\n entries.forEach((entry) => {\r\n this.visibilityChange.emit(entry.isIntersecting);\r\n });\r\n };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { HoverData } from 'src/app/maps/map/hover.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class HoverService {\r\n private onHover$ = new Subject();\r\n\r\n hoverDisabled = false;\r\n\r\n get onHover(): Observable {\r\n return this.onHover$.pipe(filter(() => !this.hoverDisabled));\r\n }\r\n\r\n hover(hoverData: HoverData): void {\r\n if (!this.hoverDisabled) {\r\n this.onHover$.next(hoverData);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { DivIcon, divIcon, DomUtil, latLng, Marker, marker, PointExpression } from 'leaflet';\r\nimport { IconHelper } from 'src/app/core/leaflet-helper/icon-helper';\r\nimport { AssetStatus } from 'src/app/maps/domain/livedata/status.enum';\r\nimport { Lift } from 'src/app/maps/domain/masterdata/lift.model';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\nimport { SisMapAssetCategory } from 'src/app/maps/domain/masterdata/sismap-asset-category.enum';\r\nimport { MapStyleService } from 'src/app/maps/map/style/map-style.service';\r\nimport { WindIconService } from 'src/app/maps/map/wind-icon.service';\r\nimport { SisZoom } from 'src/app/maps/map/zoom.model';\r\n\r\nMarker.include({\r\n scale: undefined as number | undefined,\r\n setScale(scale: number) {\r\n this.scale = scale;\r\n this.update();\r\n },\r\n _setPos(pos) {\r\n if (this._icon) {\r\n // Need to call setPosition so the internal map gets updated\r\n DomUtil.setPosition(this._icon, pos);\r\n if (this._icon.classList.contains('marker-size-undefined')) {\r\n this._icon.style.transform = `translate(-50%,-50%) translate(${pos.x}px,${pos.y}px)${\r\n this.scale ? ` scale(${this.scale})` : ''\r\n }`;\r\n } else {\r\n // use translate instead of translate3d so svgs are not blurry on chrome\r\n this._icon.style.transform = `translate(${pos.x}px,${pos.y}px)${this.scale ? ` scale(${this.scale})` : ''}`;\r\n }\r\n }\r\n\r\n if (this._shadow) {\r\n // Need to call setPosition so the internal map gets updated\r\n DomUtil.setPosition(this._shadow, pos);\r\n if (this._shadow.classList.contains('marker-size-undefined')) {\r\n this._shadow.style.transform = `translate(-50%,-50%) translate(${pos.x}px,${pos.y}px)${\r\n this.scale ? ` scale(${this.scale})` : ''\r\n }`;\r\n } else {\r\n this._icon.style.transform = `translate(${pos.x}px,${pos.y}px)${this.scale ? ` scale(${this.scale})` : ''}`;\r\n }\r\n }\r\n\r\n this._zIndex = pos.y + this.options.zIndexOffset;\r\n\r\n this._resetZIndex();\r\n },\r\n});\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IconService {\r\n private readonly customIconBlobPath = 'sismap/custom-icons/';\r\n\r\n private readonly errorIcon =\r\n '?';\r\n\r\n constructor(\r\n private iconHelper: IconHelper,\r\n private windIconService: WindIconService,\r\n private styleService: MapStyleService\r\n ) {}\r\n\r\n async getIcon(iconName: string | AssetStatus): Promise {\r\n if (typeof iconName === 'number') {\r\n switch (iconName) {\r\n case AssetStatus.Closed:\r\n iconName = 'closed';\r\n break;\r\n case AssetStatus.Disabled:\r\n iconName = 'disabled';\r\n break;\r\n case AssetStatus.Preparation:\r\n iconName = 'preparation';\r\n break;\r\n case AssetStatus.Open:\r\n iconName = 'open';\r\n break;\r\n default:\r\n iconName = iconName.toString();\r\n }\r\n }\r\n\r\n return this.styleService.getIconSvg(iconName);\r\n }\r\n\r\n async getMarker(position: MapPosition, element: MapElement): Promise {\r\n const icon = await this.createIconElement(element);\r\n return marker(latLng(position.x, position.y), { icon, zIndexOffset: element.iconAlwaysOnTop ? 1000 : undefined });\r\n }\r\n\r\n async getIconHtml(element: MapElement): Promise {\r\n let html = this.errorIcon;\r\n try {\r\n if (element.iconUseStatus && element.status != null && element.status !== AssetStatus.NoStatus) {\r\n html = await this.getIcon(element.status);\r\n } else if (element.iconImageName != null) {\r\n html = await this.getIcon(element.iconImageName);\r\n } else if (element.iconSvgBlobName != null) {\r\n html = await this.iconHelper.getIcon(this.customIconBlobPath + element.iconSvgBlobName + '.svg');\r\n } else if (element.iconHtml != null) {\r\n html = element.iconHtml;\r\n } else if (element.iconUseMeteoData === true) {\r\n html = await this.windIconService.getIconHTML(element);\r\n }\r\n } catch (e) {}\r\n return html;\r\n }\r\n\r\n async getAssetTypeIconHtml(element: MapElement): Promise {\r\n let html = this.errorIcon;\r\n try {\r\n if (element.iconImageName != null) {\r\n if (element.status != null) {\r\n const colors =\r\n element instanceof Lift\r\n ? await this.styleService.getLiftColor(element.status, element, true)\r\n : await this.styleService.getColor(element.status);\r\n const sidepaneIcon = await this.getIcon(element.iconImageName);\r\n html = await this.styleService.setSidepaneIconColor(sidepaneIcon, colors.statusColor, colors.textColor);\r\n } else {\r\n html = await this.getIcon(element.iconImageName);\r\n }\r\n }\r\n } catch (e) {}\r\n return html;\r\n }\r\n\r\n async createIconElement(element: MapElement): Promise {\r\n const html = await this.getIconHtml(element);\r\n\r\n const iconHeight = element.iconHeight !== undefined ? element.iconHeight : 20;\r\n const iconWidth = element.iconWidth !== undefined ? element.iconWidth : 20;\r\n\r\n const iconSize: PointExpression | undefined =\r\n iconHeight === null || iconWidth === null ? undefined : [iconWidth, iconHeight];\r\n\r\n const icon = divIcon({\r\n html,\r\n iconSize,\r\n popupAnchor: [0, -7],\r\n className: `data-test-${SisMapAssetCategory[element.category].toLowerCase()} ${\r\n iconSize === undefined ? 'marker-size-undefined' : ''\r\n }`,\r\n });\r\n return icon;\r\n }\r\n\r\n scaleIcon(m: Marker, zoom: SisZoom, element: MapElement, highlight = false, hideOnScaling = true): void {\r\n const hideIcons = hideOnScaling && !zoom.showIcons;\r\n\r\n if (hideIcons) {\r\n m.setOpacity(0);\r\n } else {\r\n m.setOpacity(1);\r\n const scaling =\r\n (highlight ? zoom.iconZoom * 1.25 : zoom.iconZoom) * (element.iconDisableBaseZoom ? 1 : zoom.baseIconZoom);\r\n (m as Marker & { setScale(scale: number): void }).setScale(scaling);\r\n }\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { from, map, Observable } from 'rxjs';\r\nimport { LayerSelectorItem } from 'src/app/maps/map/layer-selector/layer-selector-item/layer-selector-item.model';\r\nimport { MapStyleService } from 'src/app/maps/map/style/map-style.service';\r\n\r\n@Component({\r\n selector: 'sis-layer-selector-item',\r\n templateUrl: './layer-selector-item.component.html',\r\n styleUrls: ['./layer-selector-item.component.scss'],\r\n})\r\nexport class LayerSelectorItemComponent implements OnInit, OnChanges {\r\n @Input() layerSelector: LayerSelectorItem;\r\n @Input() active: boolean;\r\n @Output() clicked = new EventEmitter();\r\n\r\n iconUrl$: Promise;\r\n iconClass$: Observable;\r\n tooltipTranslationString: string;\r\n dataTestKey: string;\r\n\r\n constructor(private mapStyleService: MapStyleService) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['active']) {\r\n this.iconUrl$ = this.mapStyleService.getLayerIconSvgUrl(this.layerSelector.imageName, this.active);\r\n this.iconClass$ = from(this.mapStyleService.getStyleName()).pipe(map((name) => `sis-icon-${name}`));\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.tooltipTranslationString = `map.layerselector.term.${this.layerSelector.category.name}`;\r\n this.dataTestKey = `sis-layer-selector-item-${this.layerSelector.category.name}`;\r\n }\r\n\r\n onClick($event): void {\r\n $event.stopPropagation();\r\n this.clicked.emit();\r\n }\r\n}\r\n","\r\n","import { HttpParams } from '@angular/common/http';\r\nimport { AfterViewInit, Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { ActivatedRoute, Params } from '@angular/router';\r\nimport { IonFab } from '@ionic/angular';\r\nimport { combineLatest, from } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Season } from 'src/app/core/domain/season.enum';\r\nimport { NavigatorService } from 'src/app/core/navigator/navigator.service';\r\nimport { Unsubscriber } from 'src/app/core/unsubscriber/unsubscriber';\r\nimport { MapRoutes } from 'src/app/maps/domain/map-routes';\r\nimport { MasterDataService } from 'src/app/maps/domain/masterdata/masterdata.service';\r\nimport { SignPost } from 'src/app/maps/domain/masterdata/sign-post.model';\r\nimport { LayerService } from 'src/app/maps/map/layer-selector/layer.service';\r\nimport { LayerSelectorItem } from 'src/app/maps/map/layer-selector/layer-selector-item/layer-selector-item.model';\r\nimport { MapStyleService } from 'src/app/maps/map/style/map-style.service';\r\nimport pixelWidth from 'string-pixel-width';\r\n\r\n@Component({\r\n selector: 'sis-layer-selector',\r\n templateUrl: './layer-selector.component.html',\r\n styleUrls: ['./layer-selector.component.scss'],\r\n})\r\nexport class LayerSelectorComponent extends Unsubscriber implements OnInit, AfterViewInit {\r\n private urlParams: Params;\r\n\r\n layerSelectors: LayerSelectorItem[] = [];\r\n activeSeason: Season;\r\n\r\n layerSelectorActiveClass: string;\r\n layerSelectorInactiveClass: string;\r\n menuButtonClass: string;\r\n fabButtonClass: string;\r\n signPostOptionClass: string;\r\n styleName: string;\r\n winterIconSvgUrl$: Promise;\r\n summerIconSvgUrl$: Promise;\r\n hasSignPosts: boolean;\r\n signPosts: SignPost[];\r\n signPostButtonWidth: string;\r\n\r\n readonly signPostImageUrl$ = from(this.mapStyleService.getSignPostUrl());\r\n\r\n @ViewChild('layerFab') layerFab: IonFab;\r\n @Input() openLayerSelector: boolean;\r\n @Input() season: Season;\r\n @Input() areaUrlName: string;\r\n @Input() sisId: string;\r\n @Input() oppositeMapExist: boolean;\r\n @Input() hideLayerSelector: boolean;\r\n @Input() hideSeasonFilter: boolean;\r\n @Input() hideSignPosts: boolean;\r\n\r\n constructor(\r\n private layerService: LayerService,\r\n private activatedRoute: ActivatedRoute,\r\n private navigatorService: NavigatorService,\r\n private mapStyleService: MapStyleService,\r\n private masterDataService: MasterDataService\r\n ) {\r\n super();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.layerService.existingLayerSelectors$.pipe(takeUntil(this.onDestroy$)).subscribe(() => {\r\n if (this.layerFab == null) {\r\n return;\r\n }\r\n const fabActivated = this.layerFab.activated;\r\n\r\n this.layerFab.activated = false;\r\n\r\n setTimeout(() => {\r\n this.layerFab.activated = fabActivated;\r\n });\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n combineLatest([this.layerService.existingLayerSelectors$, this.layerService.hideQueryParams$])\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe(([existingLayerSelectors, hiddenLayers]) => {\r\n existingLayerSelectors.forEach((layerSelector) => {\r\n layerSelector.showLayers = !hiddenLayers.includes(layerSelector.category.name);\r\n });\r\n\r\n this.layerSelectors = existingLayerSelectors.sort((a, b) => a.order - b.order);\r\n });\r\n\r\n this.activatedRoute.queryParams.pipe(takeUntil(this.onDestroy$)).subscribe((queryParams) => {\r\n this.urlParams = queryParams;\r\n const routeSeason = Number(queryParams[MapRoutes.Season]);\r\n if (this.season !== Season.SummerAndWinter && routeSeason !== undefined) {\r\n // Reset query argument\r\n this.layerService.selectSeason(undefined);\r\n this.setActivatedSeason(this.season);\r\n } else {\r\n if (routeSeason && !(routeSeason in Season)) {\r\n this.navigatorService.navigateToErrorPage();\r\n return;\r\n }\r\n\r\n if (!routeSeason) {\r\n this.selectSeason(Season.Summer);\r\n }\r\n this.setActivatedSeason(routeSeason);\r\n }\r\n });\r\n\r\n this.mapStyleService.getStyleName().then((name) => {\r\n this.layerSelectorActiveClass = `sis-layer-selector-active-${name}`;\r\n this.layerSelectorInactiveClass = `sis-layer-selector-inactive-${name}`;\r\n this.menuButtonClass = `sis-menu-button-${name}`;\r\n this.fabButtonClass = `sis-fab-button-${name}`;\r\n this.signPostOptionClass = `sis-sign-post-option-button-${name}`;\r\n this.styleName = name;\r\n });\r\n\r\n this.masterDataService.masterData.pipe(takeUntil(this.onDestroy$)).subscribe((masterData) => {\r\n this.signPosts = masterData.signPosts;\r\n this.hasSignPosts = masterData.signPosts?.length > 0;\r\n this.signPostButtonWidth =\r\n Math.max(...(masterData.signPosts?.map((s) => pixelWidth(s.name, { font: 'arial', size: 16 })) ?? [0])) +\r\n 50 +\r\n 'px';\r\n });\r\n }\r\n\r\n setActivatedSeason(seasonParam: Season): void {\r\n if (this.season === 0) {\r\n this.activeSeason = seasonParam;\r\n this.winterIconSvgUrl$ = this.mapStyleService.getSeasonIconSvgUrl('winter', this.activeSeason === Season.Winter);\r\n this.summerIconSvgUrl$ = this.mapStyleService.getSeasonIconSvgUrl('summer', this.activeSeason === Season.Summer);\r\n } else {\r\n this.activeSeason = this.season;\r\n }\r\n }\r\n\r\n stopPropagation($event: Event): void {\r\n $event.stopPropagation();\r\n }\r\n\r\n onClick(layerSelector: LayerSelectorItem): void {\r\n if (layerSelector.showLayers) {\r\n this.layerService.addFilters(layerSelector.category);\r\n } else {\r\n this.layerService.removeFilters(layerSelector.category);\r\n }\r\n }\r\n\r\n selectSeason(season: Season): void {\r\n if (this.season === 0) {\r\n this.layerService.selectSeason(season);\r\n } else {\r\n const urlParams = new HttpParams({ fromObject: this.urlParams }).toString();\r\n const url = this.sisId + '/sismap/' + this.areaUrlName + '/' + season + '?' + urlParams;\r\n this.changeUrl(url);\r\n }\r\n }\r\n\r\n signPostClicked(signPost: SignPost): void {\r\n const urlParams = new HttpParams({ fromObject: this.urlParams }).toString();\r\n const url = `${signPost.url}?${urlParams}`;\r\n this.changeUrl(url);\r\n }\r\n\r\n private changeUrl(url: string): void {\r\n window.location.href = url;\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 \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {{ signPost.name }}\r\n \r\n \r\n \r\n \r\n\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { combineLatest, firstValueFrom, Observable } from 'rxjs';\r\nimport { distinctUntilChanged, map, shareReplay, switchMap } from 'rxjs/operators';\r\nimport { Season } from 'src/app/core/domain/season.enum';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { MasterDataService } from 'src/app/maps/domain/masterdata/masterdata.service';\r\nimport { SisMapAssetCategory } from 'src/app/maps/domain/masterdata/sismap-asset-category.enum';\r\nimport { Webcam } from 'src/app/maps/domain/masterdata/webcam.model';\r\nimport {\r\n Category,\r\n LayerSelectorItem,\r\n} from 'src/app/maps/map/layer-selector/layer-selector-item/layer-selector-item.model';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n// Interfaces expected from the API\r\ninterface CategoryApiCategory {\r\n category: string;\r\n types: string[];\r\n}\r\ninterface CategoryApiResponse {\r\n assetCategory: SisMapAssetCategory;\r\n categories: CategoryApiCategory[];\r\n}\r\n\r\nconst categoryUrl = `${environment.baseUrlApi}/api/sismap/types`;\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LayerService {\r\n private readonly layerOrderConfig: { [key: string]: { order: number; imageName: string } } = {\r\n lift: { order: 0, imageName: 'anlagen' },\r\n ski: { order: 1, imageName: 'pisten' },\r\n crosscountry: { order: 2, imageName: 'langlauf' },\r\n sledging: { order: 3, imageName: 'schlitteln' },\r\n snowpark: { order: 4, imageName: 'snowpark' },\r\n hiking: { order: 5, imageName: 'wandern' },\r\n themedtrail: { order: 6, imageName: 'themenweg' },\r\n snowshoe: { order: 7, imageName: 'schneeschuh' },\r\n bike: { order: 8, imageName: 'bike' },\r\n gastro: { order: 9, imageName: 'gastro' },\r\n poi: { order: 10, imageName: 'poi' },\r\n webcam: { order: 11, imageName: 'webcam' },\r\n };\r\n\r\n readonly availableCategories$: Observable = this.http.get(categoryUrl, { responseType: 'json' }).pipe(\r\n map((response: CategoryApiResponse[]) => {\r\n let result: Category[] = [];\r\n response.forEach(\r\n (d) =>\r\n (result = result.concat(\r\n d.categories.map((c) => ({\r\n category: d.assetCategory,\r\n name: c.category.toLocaleLowerCase(),\r\n types: c.types.map((t) => t.toLocaleLowerCase()),\r\n showInLayerSelector: true,\r\n }))\r\n ))\r\n );\r\n\r\n // Webcam, Place, CustomIcon, CustomPath are not returned from the api\r\n return result.concat([\r\n { category: SisMapAssetCategory.Webcam, name: 'webcam', types: [...Webcam.types], showInLayerSelector: true },\r\n { category: SisMapAssetCategory.Place, name: 'place', types: [], showInLayerSelector: false },\r\n { category: SisMapAssetCategory.CustomIcon, name: 'customicon', types: [], showInLayerSelector: false },\r\n {\r\n category: SisMapAssetCategory.CustomPath,\r\n name: 'custompath',\r\n types: ['wandern', 'schneeschuh', 'bike'],\r\n showInLayerSelector: false,\r\n },\r\n ]);\r\n }),\r\n shareReplay(1)\r\n );\r\n\r\n readonly hideQueryParams$: Observable = this.activatedRoute.queryParams.pipe(\r\n map(\r\n (params) =>\r\n (params && (params['hide'] as string)?.split(',').map((f: string) => f.toLowerCase().trim()))?.filter(\r\n (f) => f !== ''\r\n ) ?? []\r\n ),\r\n distinctUntilChanged(),\r\n shareReplay(1)\r\n );\r\n\r\n readonly season$ = combineLatest([this.masterdataService.masterData, this.activatedRoute.queryParams]).pipe(\r\n map(\r\n ([masterData, queryParams]) =>\r\n (queryParams && queryParams['season'] && Number.parseInt(queryParams['season'], 10)) || masterData.season\r\n ),\r\n distinctUntilChanged((x, y) => y === undefined || x === y),\r\n shareReplay(1)\r\n );\r\n\r\n readonly existingLayerSelectors$: Observable = this.masterdataService.masterData.pipe(\r\n switchMap((masterData) =>\r\n combineLatest([this.season$, this.availableCategories$, this.hideQueryParams$]).pipe(\r\n map(([season, categories, hideQueryParams]) => {\r\n let allAssets: MapElement[] = [\r\n ...masterData.lifts,\r\n ...masterData.slopes,\r\n ...masterData.trails,\r\n ...masterData.gastros,\r\n ...masterData.pois,\r\n ...masterData.webcams,\r\n ...masterData.customIcons,\r\n ...masterData.customPaths,\r\n ];\r\n\r\n if (season) {\r\n allAssets = allAssets.filter(\r\n (asset) =>\r\n asset.season === undefined || asset.season === season || asset.season === Season.SummerAndWinter\r\n );\r\n }\r\n\r\n const res: LayerSelectorItem[] = categories\r\n .filter(\r\n (c) =>\r\n c.showInLayerSelector &&\r\n !hideQueryParams.includes(c.category.toString()) &&\r\n allAssets.some(\r\n (asset) => c.category === asset.category && c.types.includes(asset.type?.toLocaleLowerCase())\r\n )\r\n )\r\n .map((c, i) => ({\r\n category: c,\r\n showLayers: true,\r\n order: this.layerOrderConfig[c.name]?.order ?? Object.keys(this.layerOrderConfig).length + i,\r\n imageName: this.layerOrderConfig[c.name]?.imageName ?? c.name,\r\n }));\r\n return res;\r\n })\r\n )\r\n ),\r\n distinctUntilChanged((a, b) => a.length === b.length && a.every((i) => b.some((j) => i.imageName === j.imageName))),\r\n shareReplay(1)\r\n );\r\n\r\n readonly shownAssetGuids$ = this.masterdataService.masterData.pipe(\r\n switchMap((masterData) =>\r\n combineLatest([this.hideQueryParams$, this.season$, this.availableCategories$]).pipe(\r\n map(([hideQueryParams, season, availableCategories]) => {\r\n const hiddenCategories = availableCategories.filter((c) => hideQueryParams.includes(c.name));\r\n return this.filterAssets(masterData.slopes, hiddenCategories, season, hideQueryParams)\r\n .concat(this.filterAssets(masterData.lifts, hiddenCategories, season, hideQueryParams))\r\n .concat(this.filterAssets(masterData.trails, hiddenCategories, season, hideQueryParams))\r\n .concat(this.filterAssets(masterData.gastros, hiddenCategories, season, hideQueryParams))\r\n .concat(this.filterAssets(masterData.pois, hiddenCategories, season, hideQueryParams))\r\n .concat(this.filterAssets(masterData.webcams, hiddenCategories, season, hideQueryParams))\r\n .concat(this.filterAssets(masterData.winds, hiddenCategories, season, hideQueryParams))\r\n .concat(this.filterAssets(masterData.places, hiddenCategories, season, hideQueryParams))\r\n .concat(this.filterAssets(masterData.customIcons, hiddenCategories, season, hideQueryParams))\r\n .concat(this.filterAssets(masterData.customPaths, hiddenCategories, season, hideQueryParams))\r\n .map((a) => a.guid);\r\n })\r\n )\r\n ),\r\n shareReplay(1)\r\n );\r\n\r\n constructor(\r\n private activatedRoute: ActivatedRoute,\r\n private masterdataService: MasterDataService,\r\n private router: Router,\r\n private http: HttpClient\r\n ) {}\r\n\r\n async addFilters(filter: Category): Promise {\r\n const hiddenLayers = await firstValueFrom(this.hideQueryParams$);\r\n if (!hiddenLayers.includes(filter.name)) {\r\n this.updateUrlQueryParams([...hiddenLayers, filter.name]);\r\n }\r\n }\r\n\r\n async removeFilters(filter: Category): Promise {\r\n const hiddenLayers = await firstValueFrom(this.hideQueryParams$);\r\n this.updateUrlQueryParams(hiddenLayers.filter((h) => h !== filter.name));\r\n }\r\n\r\n selectSeason(season: Season): void {\r\n this.router.navigate([], {\r\n relativeTo: this.activatedRoute,\r\n queryParams: { season },\r\n queryParamsHandling: 'merge',\r\n });\r\n }\r\n\r\n private updateUrlQueryParams(hiddenLayers: string[]): void {\r\n this.router.navigate([], {\r\n relativeTo: this.activatedRoute,\r\n queryParams: { hide: hiddenLayers.join(',') },\r\n queryParamsHandling: 'merge',\r\n });\r\n }\r\n\r\n private filterAssets(\r\n assets: MapElement[],\r\n hiddenCategories: Category[],\r\n activeSeason: Season,\r\n hideQueryParams: string[]\r\n ): MapElement[] {\r\n if (activeSeason) {\r\n assets = assets.filter(\r\n (a) => a.season == null || a.season === activeSeason || a.season === Season.SummerAndWinter\r\n );\r\n }\r\n\r\n const mapElements = assets.filter(\r\n (asset: MapElement) =>\r\n !(\r\n hiddenCategories.some((hiddenCategory) => hiddenCategory.types.includes(asset.type?.toLocaleLowerCase())) ||\r\n hideQueryParams.includes(asset.type?.toLocaleLowerCase()) ||\r\n hideQueryParams.includes(asset.category.toString())\r\n )\r\n );\r\n\r\n return mapElements;\r\n }\r\n}\r\n","import '@elfalem/leaflet-curve';\r\n\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { SisMapAssetCategory } from 'src/app/maps/domain/masterdata/sismap-asset-category.enum';\r\n\r\n@Component({\r\n selector: 'sis-map-element-container',\r\n templateUrl: './map-element-container.component.html',\r\n})\r\nexport class MapElementContainerComponent implements OnInit {\r\n @Input() layerGroup: L.LayerGroup;\r\n @Input() element: MapElement;\r\n @Input() showStatus: boolean;\r\n @Input() showStatusIcons = true;\r\n @Input() editMode: boolean;\r\n\r\n curveTestClass = 'sis-NONE-curve';\r\n iconTestClass = 'sis-NONE-icon';\r\n\r\n ngOnInit(): void {\r\n this.curveTestClass = `sis-${SisMapAssetCategory[this.element.category].toLowerCase()}-curve`;\r\n this.iconTestClass = `sis-${SisMapAssetCategory[this.element.category].toLowerCase()}-icon`;\r\n }\r\n}\r\n","\r\n \r\n \r\n \r\n \r\n\r\n","import '@elfalem/leaflet-curve';\r\n\r\nimport { ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\r\nimport { Circle, Curve, curve, latLng, LayerGroup, LeafletMouseEvent } from 'leaflet';\r\nimport { filter, firstValueFrom, takeUntil } from 'rxjs';\r\nimport { Season } from 'src/app/core/domain/season.enum';\r\nimport { parseCurveCoords } from 'src/app/core/leaflet-helper/curve-coords';\r\nimport { Unsubscriber } from 'src/app/core/unsubscriber/unsubscriber';\r\nimport { ScreenSizeService } from 'src/app/core/utils/screen-size.service';\r\nimport { AssetStatus } from 'src/app/maps/domain/livedata/status.enum';\r\nimport { Lift } from 'src/app/maps/domain/masterdata/lift.model';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\nimport { MasterDataService } from 'src/app/maps/domain/masterdata/masterdata.service';\r\nimport { SisMapAssetCategory } from 'src/app/maps/domain/masterdata/sismap-asset-category.enum';\r\nimport { HoverService } from 'src/app/maps/map/hover.service';\r\nimport { LayerService } from 'src/app/maps/map/layer-selector/layer.service';\r\nimport { MapStateService } from 'src/app/maps/map/map-state.service';\r\nimport { CurveEndMarkers } from 'src/app/maps/map/style/curve-end-markers.model';\r\nimport { MapStyleService } from 'src/app/maps/map/style/map-style.service';\r\nimport { SisZoom } from 'src/app/maps/map/zoom.model';\r\nimport { ZoomService } from 'src/app/maps/map/zoom.service';\r\n\r\n@Component({\r\n selector: 'sis-map-element-curve',\r\n template: '',\r\n styleUrls: ['./map-element-curve.component.scss'],\r\n})\r\nexport class MapElementCurveComponent extends Unsubscriber implements OnInit {\r\n @Input() element: MapElement;\r\n @Input() layerGroup: LayerGroup;\r\n @Input() showStatus: boolean;\r\n @Input() editMode: boolean;\r\n\r\n private readonly clickable = '-clickable';\r\n private readonly highlight = '-highlight';\r\n\r\n private visibleCurve: Curve;\r\n private highlightCurve: Curve;\r\n private clickableCurve: Curve;\r\n private backgroundCurve: Curve;\r\n private isMarked = false;\r\n private bigScreenMode = false;\r\n\r\n private curveEndMarkers: CurveEndMarkers;\r\n\r\n constructor(\r\n private zoomService: ZoomService,\r\n private hoverService: HoverService,\r\n private layerService: LayerService,\r\n private mapStateService: MapStateService,\r\n private mapStyleService: MapStyleService,\r\n private changeDetector: ChangeDetectorRef,\r\n private masterDataService: MasterDataService,\r\n private screenSizeService: ScreenSizeService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.element?.path) {\r\n this.initCurveLayer();\r\n this.layerService.season$.pipe(takeUntil(this.onDestroy$)).subscribe(() => {\r\n this.updateCurve();\r\n });\r\n this.mapStateService.elementUpdated$\r\n .pipe(\r\n filter((e) => e.guid === this.element.guid),\r\n takeUntil(this.onDestroy$)\r\n )\r\n .subscribe(() => this.updateCurve());\r\n }\r\n\r\n this.mapStateService.selectedElement$.pipe(takeUntil(this.onDestroy$)).subscribe(({ element }) => {\r\n if (element?.guid === this.element.guid) {\r\n this.isMarked = true;\r\n } else if (this.isMarked) {\r\n this.isMarked = false;\r\n }\r\n this.updateCurve();\r\n });\r\n\r\n this.screenSizeService.bigScreenMode$.pipe(takeUntil(this.onDestroy$)).subscribe((bigScreenMode) => {\r\n this.bigScreenMode = bigScreenMode;\r\n });\r\n }\r\n\r\n private async initCurveLayer(): Promise {\r\n const coords = parseCurveCoords(this.element.path) ?? [];\r\n\r\n const color = await this.getPathColor(this.element.status);\r\n const className = `sis-${SisMapAssetCategory[this.element.category].toLowerCase()}-curve`;\r\n const pathWeight = this.element.pathWeight ?? this.element.defaultPathWeight;\r\n const dashArray = this.element.pathDashArray?.split(' ').map((x) => +x);\r\n const lineCap = this.element.pathBackgroundColor ? 'square' : 'round';\r\n\r\n this.visibleCurve = curve(coords, {\r\n interactive: true,\r\n color,\r\n weight: pathWeight,\r\n dashArray,\r\n className,\r\n pane: this.element.paneName,\r\n lineCap,\r\n });\r\n\r\n if (this.element.category === SisMapAssetCategory.Lift) {\r\n this.backgroundCurve = curve(coords, {\r\n color: this.element.pathBackgroundColor,\r\n weight: pathWeight,\r\n opacity: this.element.pathBackgroundColor ? 1 : 0,\r\n className,\r\n pane: this.element.paneName,\r\n lineCap: 'round',\r\n });\r\n }\r\n\r\n this.highlightCurve = curve(coords, {\r\n color,\r\n weight: pathWeight * 2.5,\r\n className: className + this.highlight,\r\n pane: this.element.paneName,\r\n lineCap: 'round',\r\n });\r\n\r\n this.clickableCurve = curve(coords, {\r\n interactive: true,\r\n bubblingMouseEvents: false,\r\n fill: false,\r\n weight: pathWeight * 2.5,\r\n opacity: 0,\r\n className: className + this.clickable,\r\n pane: this.element.paneName,\r\n });\r\n\r\n this.curveEndMarkers = await this.mapStyleService.createCurveEndMarkers(coords, color, this.element);\r\n\r\n this.addEventListeners();\r\n\r\n this.layerService.shownAssetGuids$.pipe(takeUntil(this.onDestroy$)).subscribe((shownAssetGuids) => {\r\n if (shownAssetGuids.includes(this.element.guid)) {\r\n this.showLayer();\r\n } else {\r\n this.hideLayer();\r\n }\r\n });\r\n\r\n this.zoomService.zoomChanged$.pipe(takeUntil(this.onDestroy$)).subscribe((zoom) => {\r\n this.zoom(zoom);\r\n });\r\n\r\n this.hoverService.onHover.pipe(takeUntil(this.onDestroy$)).subscribe((hoverData) => {\r\n if (this.layerGroup.hasLayer(this.visibleCurve)) {\r\n if (hoverData.guid === this.element.guid && hoverData.hover) {\r\n if (!this.element.disallowHighlight) {\r\n this.setStrokeOpacity(this.highlightCurve, 0.5);\r\n this.mapStyleService.setHighlight(this.curveEndMarkers, true);\r\n }\r\n if (!hoverData.iconHovered && !this.element.disallowPopUp && this.bigScreenMode) {\r\n this.createAndShowPopup(hoverData.hoverPosition);\r\n }\r\n } else {\r\n if (!this.isMarked) {\r\n this.setStrokeOpacity(this.highlightCurve, 0);\r\n this.mapStyleService.setHighlight(this.curveEndMarkers, false);\r\n }\r\n\r\n if (this.bigScreenMode) {\r\n this.visibleCurve.closePopup();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n private async createAndShowPopup(position: MapPosition): Promise {\r\n if (this.visibleCurve == null) {\r\n return;\r\n }\r\n\r\n const masterData = await firstValueFrom(this.masterDataService.masterData);\r\n const { popupContent, className } = await this.mapStyleService.createCurvePopupContent(\r\n this.element,\r\n masterData.labelInTooltip\r\n );\r\n\r\n this.visibleCurve.bindPopup(popupContent, {\r\n closeButton: false,\r\n offset: [0, 0],\r\n className: `sis-map-tooltip ${className}`,\r\n autoPan: false,\r\n maxWidth: 1000,\r\n });\r\n this.visibleCurve.openPopup(position != null ? latLng(position.x, position.y) : undefined);\r\n }\r\n\r\n private async updateCurve(): Promise {\r\n if (this.visibleCurve) {\r\n const pathWeight = this.element.pathWeight ?? this.element.defaultPathWeight;\r\n const dashArray = this.element.pathDashArray?.split(' ').map((x) => +x);\r\n const lineCap = this.element.pathBackgroundColor ? 'square' : 'round';\r\n const color = await this.getPathColor(this.element.status);\r\n const coords = parseCurveCoords(this.element.path);\r\n const className = `sis-${SisMapAssetCategory[this.element.category].toLowerCase()}-curve`;\r\n\r\n if (coords == null) {\r\n return;\r\n }\r\n\r\n this.visibleCurve.setPath(coords);\r\n this.visibleCurve.setStyle({\r\n color,\r\n weight: pathWeight,\r\n dashArray,\r\n className,\r\n lineCap,\r\n });\r\n\r\n if (this.element.category === SisMapAssetCategory.Lift) {\r\n this.backgroundCurve.setPath(coords);\r\n this.backgroundCurve.setStyle({\r\n color: this.element.pathBackgroundColor,\r\n weight: pathWeight,\r\n opacity: this.element.pathBackgroundColor ? 1 : 0,\r\n className,\r\n lineCap,\r\n });\r\n }\r\n\r\n this.highlightCurve.setPath(coords);\r\n this.highlightCurve.setStyle({\r\n color,\r\n weight: pathWeight * 2.5,\r\n opacity: (!this.element.disallowHighlight || this.editMode) && this.isMarked ? 0.5 : 0,\r\n className: className + this.highlight,\r\n lineCap: 'round',\r\n });\r\n\r\n this.clickableCurve.setPath(coords);\r\n this.clickableCurve.setStyle({\r\n weight: pathWeight * 2.5,\r\n className: className + this.clickable,\r\n });\r\n\r\n await this.mapStyleService.updateCurveEndMarkers(coords, this.curveEndMarkers, color, this.element);\r\n await this.mapStyleService.setHighlight(\r\n this.curveEndMarkers,\r\n (!this.element.disallowHighlight || this.editMode) && this.isMarked\r\n );\r\n\r\n const zoom = await firstValueFrom(this.zoomService.zoomChanged$);\r\n await this.zoom(zoom);\r\n\r\n if (this.element.status === AssetStatus.Open) {\r\n this.backgroundCurve?.bringToFront();\r\n this.highlightCurve.bringToFront();\r\n this.visibleCurve.bringToFront();\r\n this.clickableCurve.bringToFront();\r\n (this.curveEndMarkers.visible[0] as Circle)?.bringToFront();\r\n (this.curveEndMarkers.visible[1] as Circle)?.bringToFront();\r\n }\r\n\r\n if (\r\n this.element.status === AssetStatus.NoStatus ||\r\n this.element.status === AssetStatus.Closed ||\r\n this.element.status === AssetStatus.Disabled\r\n ) {\r\n this.clickableCurve.bringToBack();\r\n this.visibleCurve.bringToBack();\r\n this.highlightCurve.bringToBack();\r\n this.backgroundCurve?.bringToBack();\r\n (this.curveEndMarkers.visible[0] as Circle)?.bringToBack();\r\n (this.curveEndMarkers.visible[1] as Circle)?.bringToBack();\r\n }\r\n }\r\n }\r\n\r\n private async getPathColor(status: AssetStatus): Promise {\r\n if (this.element instanceof Lift) {\r\n const liftColor = await this.mapStyleService.getLiftColor(\r\n this.showStatus ? this.element.status : AssetStatus.Disabled,\r\n this.element\r\n );\r\n return liftColor.statusColor;\r\n }\r\n\r\n let pathColor: any = this.element.pathColor ?? this.element.defaultPathColor;\r\n const colorArr = pathColor.split(',');\r\n if (colorArr.length > 1) {\r\n pathColor = { summer: colorArr[0], winter: colorArr[1] };\r\n }\r\n\r\n if (typeof pathColor === 'object') {\r\n const season = await firstValueFrom(this.layerService.season$);\r\n switch (season) {\r\n case Season.Summer:\r\n pathColor = pathColor.summer;\r\n break;\r\n case Season.Winter:\r\n pathColor = pathColor.winter;\r\n break;\r\n default:\r\n pathColor = pathColor.summer;\r\n }\r\n }\r\n\r\n return status === AssetStatus.Open || status === AssetStatus.NoStatus || this.isMarked ? pathColor : '#808080cc';\r\n }\r\n\r\n private addEventListeners(): void {\r\n this.clickableCurve.on('click', (event: LeafletMouseEvent) => {\r\n this.hoverService.hover({\r\n guid: this.element.guid,\r\n hover: false,\r\n iconHovered: false,\r\n hoverPosition: { x: event.latlng.lat, y: event.latlng.lng },\r\n });\r\n this.mapStateService.clickElement(this.element, null);\r\n });\r\n\r\n this.clickableCurve.on('mouseover', (event: LeafletMouseEvent) => {\r\n this.hoverService.hover({\r\n guid: this.element.guid,\r\n hover: true,\r\n iconHovered: false,\r\n hoverPosition: { x: event.latlng.lat, y: event.latlng.lng },\r\n });\r\n });\r\n\r\n this.clickableCurve.on('mouseout', () => {\r\n this.hoverService.hover({ guid: this.element.guid, hover: false, iconHovered: false });\r\n });\r\n }\r\n\r\n private async zoom(zoom: SisZoom): Promise {\r\n if (!zoom) {\r\n return;\r\n }\r\n\r\n const scaling = Math.max(zoom.iconZoom, 1);\r\n const pathWeight = this.element.pathWeight ?? this.element.defaultPathWeight;\r\n const width = pathWeight * scaling;\r\n const dashArray = this.element.pathDashArray?.split(' ').map((x) => +x * scaling);\r\n\r\n if (this.curveExists(this.visibleCurve)) {\r\n this.setStrokeWidth(this.visibleCurve, width);\r\n this.setStrokeDashArray(this.visibleCurve, dashArray);\r\n this.displayCurve(this.visibleCurve);\r\n await this.mapStyleService.zoomCurveEndMarkers(this.curveEndMarkers, scaling);\r\n }\r\n if (this.curveExists(this.backgroundCurve)) {\r\n this.setStrokeWidth(this.backgroundCurve, width);\r\n this.displayCurve(this.visibleCurve);\r\n }\r\n if (this.curveExists(this.highlightCurve)) {\r\n this.setStrokeWidth(this.highlightCurve, width + 5 * scaling);\r\n this.displayCurve(this.highlightCurve);\r\n }\r\n if (this.curveExists(this.clickableCurve)) {\r\n this.setStrokeWidth(this.clickableCurve, width + 16);\r\n this.displayCurve(this.clickableCurve);\r\n }\r\n\r\n this.changeDetector.detectChanges();\r\n }\r\n\r\n private curveExists(curveElement: Curve): boolean {\r\n return curveElement && curveElement.getElement() != null;\r\n }\r\n\r\n private setStrokeWidth(curveElement: Curve, width: number): void {\r\n curveElement.getElement().setAttribute('stroke-width', width.toString());\r\n }\r\n\r\n private setStrokeOpacity(curveElement: Curve, opacity: number): void {\r\n curveElement.getElement().setAttribute('stroke-opacity', opacity.toString());\r\n }\r\n\r\n private setStrokeDashArray(curveElement: Curve, dashArray: number[]): void {\r\n curveElement.getElement().setAttribute('stroke-dasharray', dashArray?.join(' '));\r\n }\r\n\r\n private displayCurve(curveElement: any): void {\r\n curveElement.getElement().style.cursor =\r\n this.editMode ||\r\n (!this.hoverService.hoverDisabled && !(this.element.disallowHighlight && this.element.disallowPopUp))\r\n ? 'pointer'\r\n : 'grab';\r\n }\r\n\r\n private showLayer(): void {\r\n if (!this.layerGroup.hasLayer(this.visibleCurve)) {\r\n this.curveEndMarkers.highlight.forEach((o) => this.layerGroup.addLayer(o));\r\n this.curveEndMarkers.visible.forEach((o) => this.layerGroup.addLayer(o));\r\n if (this.backgroundCurve) {\r\n this.layerGroup.addLayer(this.backgroundCurve);\r\n }\r\n this.layerGroup.addLayer(this.visibleCurve);\r\n this.layerGroup.addLayer(this.highlightCurve);\r\n this.layerGroup.addLayer(this.clickableCurve);\r\n this.updateCurve();\r\n }\r\n }\r\n\r\n private hideLayer(): void {\r\n if (this.layerGroup.hasLayer(this.visibleCurve)) {\r\n this.layerGroup.removeLayer(this.highlightCurve);\r\n this.layerGroup.removeLayer(this.visibleCurve);\r\n if (this.backgroundCurve) {\r\n this.layerGroup.removeLayer(this.backgroundCurve);\r\n }\r\n this.layerGroup.removeLayer(this.clickableCurve);\r\n this.curveEndMarkers.highlight.forEach((o) => this.layerGroup.removeLayer(o));\r\n this.curveEndMarkers.visible.forEach((o) => this.layerGroup.removeLayer(o));\r\n }\r\n }\r\n}\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { DomUtil, LatLng, latLng, LayerGroup, Marker } from 'leaflet';\r\nimport { combineLatest, firstValueFrom, merge } from 'rxjs';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\nimport { Unsubscriber } from 'src/app/core/unsubscriber/unsubscriber';\r\nimport { ScreenSizeService } from 'src/app/core/utils/screen-size.service';\r\nimport { Lift } from 'src/app/maps/domain/masterdata/lift.model';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\nimport { MasterDataService } from 'src/app/maps/domain/masterdata/masterdata.service';\r\nimport { HoverService } from 'src/app/maps/map/hover.service';\r\nimport { IconService } from 'src/app/maps/map/icon-service';\r\nimport { LayerService } from 'src/app/maps/map/layer-selector/layer.service';\r\nimport { MapStateService } from 'src/app/maps/map/map-state.service';\r\nimport { AssetEditorService } from 'src/app/maps/map/sidepane/asset-editor-tab/asset-editor.service';\r\nimport { MapStyleService } from 'src/app/maps/map/style/map-style.service';\r\nimport { SisZoom } from 'src/app/maps/map/zoom.model';\r\nimport { ZoomService } from 'src/app/maps/map/zoom.service';\r\n\r\n@Component({\r\n selector: 'sis-map-element-icon',\r\n template: '',\r\n styleUrls: ['./map-element-icon.component.scss'],\r\n})\r\nexport class MapElementIconComponent extends Unsubscriber implements OnInit, OnDestroy {\r\n @Input() element: MapElement;\r\n @Input() layerGroup: LayerGroup;\r\n @Input() positionIndex: number;\r\n @Input() showStatus = true;\r\n @Input() editMode: boolean;\r\n\r\n private marker: Marker;\r\n private showIcon = false;\r\n private isMarked = false;\r\n private hasError = false;\r\n private showFindMarkerAnimation = false;\r\n private bigScreenMode = false;\r\n\r\n constructor(\r\n private iconService: IconService,\r\n private zoomService: ZoomService,\r\n private hoverService: HoverService,\r\n private layerService: LayerService,\r\n private mapStateService: MapStateService,\r\n private mapStyleService: MapStyleService,\r\n private screenSizeService: ScreenSizeService,\r\n private assetEditorService: AssetEditorService,\r\n private masterDataService: MasterDataService\r\n ) {\r\n super();\r\n }\r\n\r\n async ngOnInit(): Promise {\r\n if (this.element && this.element.iconPositions.length > 0) {\r\n const marker = await this.iconService.getMarker(this.element.iconPositions[this.positionIndex], this.element);\r\n\r\n this.setupMarker(marker, this.element.guid);\r\n\r\n this.mapStateService.elementUpdated$\r\n .pipe(\r\n filter((e) => e.guid === this.element.guid),\r\n takeUntil(this.onDestroy$)\r\n )\r\n .subscribe((e) => this.updateIcon(e));\r\n\r\n this.mapStateService.highlightedElement\r\n .pipe(\r\n filter(\r\n ({ element, iconIndex }) =>\r\n element.guid === this.element.guid && (iconIndex === null || iconIndex === this.positionIndex)\r\n ),\r\n takeUntil(this.onDestroy$)\r\n )\r\n .subscribe(() => {\r\n this.showFindMarkerAnimation = true;\r\n this.updateIcon();\r\n });\r\n\r\n combineLatest([\r\n merge(this.mapStateService.selectedElement$, this.mapStateService.elementMoved$),\r\n this.assetEditorService.assetsWithError$,\r\n ])\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe(([selectedOrMovedEvent, errorMap]) => {\r\n const element = selectedOrMovedEvent.element;\r\n const iconIndex = selectedOrMovedEvent.iconIndex;\r\n const showFindMarkerAnimation =\r\n 'showFindMarkerAnimation' in selectedOrMovedEvent && selectedOrMovedEvent.showFindMarkerAnimation != null\r\n ? selectedOrMovedEvent.showFindMarkerAnimation\r\n : false;\r\n this.hasError = errorMap.has(this.element.guid);\r\n\r\n if (\r\n (element?.guid === this.element.guid && (iconIndex === null || iconIndex === this.positionIndex)) ||\r\n this.hasError\r\n ) {\r\n this.markElement(showFindMarkerAnimation);\r\n } else {\r\n this.unmarkElement();\r\n }\r\n });\r\n\r\n this.screenSizeService.bigScreenMode$.pipe(takeUntil(this.onDestroy$)).subscribe((bigScreenMode) => {\r\n this.bigScreenMode = bigScreenMode;\r\n const draggable = bigScreenMode && this.editMode;\r\n this.marker.options.draggable = draggable;\r\n if (draggable) {\r\n this.marker.dragging?.enable();\r\n } else {\r\n this.marker.dragging?.disable();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n super.ngOnDestroy();\r\n this.layerGroup.removeLayer(this.marker);\r\n }\r\n\r\n private async updateIcon(element?: MapElement): Promise {\r\n if (element != null) {\r\n Object.assign(this.element, element);\r\n }\r\n\r\n const icon = await this.iconService.createIconElement(this.element);\r\n this.marker.setIcon(icon);\r\n if (this.element.status != null) {\r\n const colors =\r\n this.element instanceof Lift\r\n ? await this.mapStyleService.getLiftColor(this.element.status, this.element, true)\r\n : await this.mapStyleService.getColor(this.element.status);\r\n await this.mapStyleService.setIconColor(this.marker, colors.statusColor, colors.textColor);\r\n }\r\n\r\n if (this.isMarked && this.marker.getElement() != null && this.editMode) {\r\n DomUtil.addClass(this.marker.getElement(), 'map-element-icon-marked');\r\n if (this.hasError) {\r\n DomUtil.addClass(this.marker.getElement(), 'map-element-icon-error');\r\n }\r\n }\r\n if (this.showFindMarkerAnimation && this.marker.getElement() != null) {\r\n DomUtil.addClass(this.marker.getElement(), 'map-element-icon-find-marker');\r\n this.marker.getElement().addEventListener(\r\n 'animationend',\r\n () => {\r\n DomUtil.removeClass(this.marker.getElement(), 'map-element-icon-find-marker');\r\n },\r\n { once: true }\r\n );\r\n this.showFindMarkerAnimation = false;\r\n }\r\n\r\n await this.mapStyleService.setIconBorder(this.marker);\r\n const pos = this.element.iconPositions[this.positionIndex];\r\n\r\n if (pos == null) {\r\n // Due to asynchronous execution the position index got deleted while\r\n // we were waiting for the icon element. Just return here as component will be\r\n // deleted later by angular\r\n return;\r\n }\r\n\r\n this.marker.setLatLng(latLng(pos.x, pos.y));\r\n\r\n const zoom = await firstValueFrom(this.zoomService.zoomChanged$);\r\n this.zoomIcon(zoom);\r\n }\r\n\r\n private markElement(highlight: boolean): void {\r\n this.isMarked = true;\r\n this.showFindMarkerAnimation = highlight;\r\n this.updateIcon();\r\n }\r\n\r\n private unmarkElement(): void {\r\n if (this.isMarked) {\r\n this.isMarked = false;\r\n this.showFindMarkerAnimation = false;\r\n this.updateIcon();\r\n }\r\n }\r\n\r\n private onMarkerAdded(): void {\r\n this.updateIcon();\r\n }\r\n\r\n private setupMarker(marker: Marker, guid: string, drawBorder: boolean = true): void {\r\n this.marker = marker;\r\n\r\n this.hoverService.onHover.pipe(takeUntil(this.onDestroy$)).subscribe((hoverData) => {\r\n if (!this.bigScreenMode) {\r\n return;\r\n }\r\n\r\n const hovered =\r\n !this.hoverService.hoverDisabled &&\r\n hoverData.guid === guid &&\r\n hoverData.hover &&\r\n (!hoverData.marker || hoverData.marker === this.marker);\r\n\r\n this.highlightMarker(hovered);\r\n\r\n if (hovered && hoverData.iconHovered && !this.element.disallowPopUp && this.showStatus) {\r\n this.createAndShowPopup(this.marker);\r\n } else {\r\n this.marker.closePopup();\r\n }\r\n });\r\n\r\n this.addEventListeners();\r\n\r\n combineLatest([this.layerService.shownAssetGuids$, this.zoomService.zoomChanged$])\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe(([shownAssetGuids, zoom]) => {\r\n if (shownAssetGuids.includes(this.element.guid) && zoom.showIcons) {\r\n this.showLayer();\r\n } else {\r\n this.hideLayer();\r\n }\r\n });\r\n }\r\n\r\n private async createAndShowPopup(marker: Marker): Promise {\r\n if (marker == null) {\r\n return;\r\n }\r\n\r\n const masterData = await firstValueFrom(this.masterDataService.masterData);\r\n const zoom = await firstValueFrom(this.zoomService.zoomChanged$);\r\n const offsetY = (this.element.iconHeight * zoom.iconZoom * 1.25) / 2 - 7;\r\n const { popupContent, className } = await this.mapStyleService.createIconPopupContent(\r\n this.element,\r\n masterData.labelInTooltip\r\n );\r\n\r\n marker.unbindPopup();\r\n marker.bindPopup(popupContent, {\r\n closeButton: false,\r\n offset: [0, -offsetY],\r\n className: `sis-map-tooltip ${className}`,\r\n autoPan: false,\r\n maxWidth: 1000,\r\n });\r\n marker.openPopup();\r\n }\r\n\r\n private async highlightMarker(highlight: boolean): Promise {\r\n if (this.element.disallowHighlight) {\r\n return;\r\n }\r\n const zoom = await firstValueFrom(this.zoomService.zoomChanged$);\r\n this.iconService.scaleIcon(this.marker, zoom, this.element, highlight);\r\n }\r\n\r\n private addEventListeners(): void {\r\n this.marker.on('add', () => {\r\n this.onMarkerAdded();\r\n });\r\n\r\n this.marker.once('add', () => {\r\n if (!this.showIcon || this.hoverService.hoverDisabled) {\r\n this.marker.getElement().style.cursor = 'grab';\r\n }\r\n\r\n this.zoomService.zoomChanged$.pipe(takeUntil(this.onDestroy$)).subscribe((zoom) => {\r\n this.zoomIcon(zoom);\r\n });\r\n\r\n this.marker.on('click', () => {\r\n this.hoverService.hover({ guid: this.element.guid, hover: false, iconHovered: false, marker: this.marker });\r\n this.mapStateService.clickElement(this.element, this.positionIndex);\r\n });\r\n\r\n this.marker.on('mouseover', () => {\r\n this.hoverService.hover({ guid: this.element.guid, hover: true, iconHovered: true, marker: this.marker });\r\n });\r\n\r\n this.marker.on('mouseout', () => {\r\n this.hoverService.hover({ guid: this.element.guid, hover: false, iconHovered: false, marker: this.marker });\r\n });\r\n\r\n this.marker.on('drag', () => {\r\n const markerPos = this.marker.getLatLng();\r\n this.marker.setLatLng(new LatLng(Math.trunc(markerPos.lat), Math.trunc(markerPos.lng)));\r\n });\r\n\r\n this.marker.on('dragend', () => {\r\n const markerPos = this.marker.getLatLng();\r\n this.marker.setLatLng(new LatLng(Math.trunc(markerPos.lat), Math.trunc(markerPos.lng)));\r\n const newPosition: MapPosition = { x: markerPos.lat, y: markerPos.lng };\r\n this.mapStateService.moveMapElement(this.element, this.positionIndex, newPosition);\r\n this.hoverService.hover({ guid: this.element.guid, hover: true, iconHovered: true, marker: this.marker });\r\n });\r\n });\r\n }\r\n\r\n private zoomIcon(zoom: SisZoom): void {\r\n this.iconService.scaleIcon(this.marker, zoom, this.element);\r\n this.showIcon = zoom.showIcons;\r\n const e = this.marker.getElement();\r\n\r\n if (\r\n this.editMode ||\r\n (this.showIcon &&\r\n !this.hoverService.hoverDisabled &&\r\n !(this.element.disallowHighlight && this.element.disallowPopUp))\r\n ) {\r\n if (e) {\r\n e.style.cursor = 'pointer';\r\n }\r\n }\r\n }\r\n\r\n private showLayer(): void {\r\n if (!this.layerGroup.hasLayer(this.marker)) {\r\n this.layerGroup.addLayer(this.marker);\r\n }\r\n }\r\n\r\n private hideLayer(): void {\r\n if (this.layerGroup.hasLayer(this.marker)) {\r\n this.layerGroup.removeLayer(this.marker);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MapStateService {\r\n // element is null when elements get deselected\r\n // iconIndex may be null if no specific icon is selected (for example by clicking on a path)\r\n private readonly _selectedElement$ = new BehaviorSubject<{\r\n element: MapElement | null;\r\n iconIndex: number | null;\r\n showFindMarkerAnimation?: boolean;\r\n }>({\r\n element: null,\r\n iconIndex: null,\r\n });\r\n private readonly _elementUpdated$ = new Subject();\r\n private readonly _elementMoved$ = new Subject<{\r\n element: MapElement;\r\n iconIndex: number | null;\r\n newPosition: MapPosition;\r\n }>();\r\n private readonly _elementClicked$ = new Subject<{ element: MapElement; iconIndex: number | null }>();\r\n private readonly _centeredElement$ = new Subject<{ element: MapElement; iconIndex: number }>();\r\n private readonly _highlightedElement$ = new Subject<{ element: MapElement; iconIndex: number | null }>();\r\n\r\n readonly selectedElement$ = this._selectedElement$.asObservable();\r\n readonly elementUpdated$ = this._elementUpdated$.asObservable();\r\n readonly elementMoved$ = this._elementMoved$.asObservable();\r\n readonly elementClicked$ = this._elementClicked$.asObservable();\r\n readonly centerElement$ = this._centeredElement$.asObservable();\r\n readonly highlightedElement = this._highlightedElement$.asObservable();\r\n\r\n selectElement(element: MapElement | null, iconIndex: number | null, showFindMarkerAnimation?: boolean): void {\r\n this._selectedElement$.next({ element, iconIndex, showFindMarkerAnimation });\r\n }\r\n\r\n updateMapElement(element: MapElement): void {\r\n this._elementUpdated$.next(element);\r\n }\r\n\r\n moveMapElement(element: MapElement, iconIndex: number, newPosition: MapPosition): void {\r\n this._elementMoved$.next({ element, iconIndex, newPosition });\r\n }\r\n\r\n clickElement(element: MapElement, iconIndex: number): void {\r\n this._elementClicked$.next({ element, iconIndex });\r\n }\r\n\r\n centerElementIcon(element: MapElement, iconIndex: number): void {\r\n this._centeredElement$.next({ element, iconIndex });\r\n }\r\n\r\n highlightElement(element: MapElement, iconIndex: number | null): void {\r\n this._highlightedElement$.next({ element, iconIndex });\r\n }\r\n}\r\n","import 'leaflet.fullscreen';\r\n\r\nimport { CdkDragDrop } from '@angular/cdk/drag-drop';\r\nimport { AfterViewInit, Component, ElementRef, Input, NgZone, OnInit, ViewChild } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { ModalController } from '@ionic/angular';\r\nimport {\r\n CRS,\r\n imageOverlay,\r\n LatLng,\r\n LatLngBoundsExpression,\r\n Layer,\r\n LayerGroup,\r\n layerGroup,\r\n LeafletMouseEvent,\r\n Map,\r\n MapOptions,\r\n} from 'leaflet';\r\nimport { firstValueFrom, ReplaySubject, timer } from 'rxjs';\r\nimport { ajax } from 'rxjs/ajax';\r\nimport { delay, take, takeUntil } from 'rxjs/operators';\r\nimport { Unsubscriber } from 'src/app/core/unsubscriber/unsubscriber';\r\nimport { ScreenSizeService } from 'src/app/core/utils/screen-size.service';\r\nimport { CustomIcon } from 'src/app/maps/domain/masterdata/custom-icon.model';\r\nimport { CustomPath } from 'src/app/maps/domain/masterdata/custom-path.model';\r\nimport { Gastro } from 'src/app/maps/domain/masterdata/gastro.model';\r\nimport { Lift } from 'src/app/maps/domain/masterdata/lift.model';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\nimport { MasterData } from 'src/app/maps/domain/masterdata/masterdata.model';\r\nimport { Place } from 'src/app/maps/domain/masterdata/place.model';\r\nimport { POI } from 'src/app/maps/domain/masterdata/poi.model';\r\nimport { Slope } from 'src/app/maps/domain/masterdata/slope.model';\r\nimport { Trail } from 'src/app/maps/domain/masterdata/trail.model';\r\nimport { Webcam } from 'src/app/maps/domain/masterdata/webcam.model';\r\nimport { Wind } from 'src/app/maps/domain/masterdata/wind.model';\r\nimport { HoverService } from 'src/app/maps/map/hover.service';\r\nimport { MapStateService } from 'src/app/maps/map/map-state.service';\r\nimport { AssetEditorService } from 'src/app/maps/map/sidepane/asset-editor-tab/asset-editor.service';\r\nimport { WebcamModalComponent } from 'src/app/maps/map/webcam-modal/webcam-modal.component';\r\nimport { SisZoom } from 'src/app/maps/map/zoom.model';\r\nimport { ZoomService } from 'src/app/maps/map/zoom.service';\r\nimport { environment } from 'src/environments/environment';\r\n\r\ndeclare let L: any;\r\n@Component({\r\n selector: 'sis-map',\r\n templateUrl: './map.component.html',\r\n styleUrls: ['./map.component.scss'],\r\n})\r\nexport class MapComponent extends Unsubscriber implements OnInit, AfterViewInit {\r\n static readonly defaultOpacity: number = 0.9;\r\n static readonly selectedOpacity: number = 0.6;\r\n\r\n private readonly mapReady$ = new ReplaySubject(1);\r\n\r\n private readonly paneNames: string[] = [\r\n 'customPath',\r\n 'slope',\r\n 'trail',\r\n 'poi',\r\n 'lift',\r\n 'gastro',\r\n 'webcam',\r\n 'wind',\r\n 'customIcon',\r\n 'place',\r\n ];\r\n\r\n fullScreenControl: any;\r\n map: Map;\r\n options: MapOptions;\r\n layers: Layer[];\r\n bigScreenMode: boolean;\r\n openSidepane: boolean;\r\n\r\n wasVisibleAtLeastOnce = false;\r\n\r\n lifts: Lift[] = [];\r\n liftLayerGroup: LayerGroup;\r\n slopes: Slope[] = [];\r\n slopeLayerGroup: LayerGroup;\r\n trails: Trail[] = [];\r\n trailLayerGroup: LayerGroup;\r\n places: Place[] = [];\r\n placeLayerGroup: LayerGroup;\r\n customIcons: CustomIcon[] = [];\r\n customIconLayerGroup: LayerGroup;\r\n customPaths: CustomPath[] = [];\r\n customPathLayerGroup: LayerGroup;\r\n pois: POI[] = [];\r\n poiLayerGroup: LayerGroup;\r\n gastros: Gastro[] = [];\r\n gastroLayerGroup: LayerGroup;\r\n webcams: Webcam[] = [];\r\n webcamLayerGroup: LayerGroup;\r\n winds: Wind[] = [];\r\n windLayerGroup: LayerGroup;\r\n\r\n private imageResX: number;\r\n private imageResY: number;\r\n private imageBounds: LatLngBoundsExpression;\r\n private lastContextPosition: MapPosition | null = null;\r\n\r\n @Input() masterData: MasterData;\r\n @Input() hoverDisabled = false;\r\n @Input() showStatus = true;\r\n @Input() showStatusIcons = false;\r\n @Input() backgroundColor = 'white';\r\n @Input() editMode = false;\r\n @Input() enableAssetSidepane = true;\r\n @Input() allowElementSelection = true;\r\n\r\n @ViewChild('leafletContainer') leafletContainer: ElementRef;\r\n\r\n constructor(\r\n private zone: NgZone,\r\n private zoomService: ZoomService,\r\n private screenSizeService: ScreenSizeService,\r\n private hoverService: HoverService,\r\n private activatedRoute: ActivatedRoute,\r\n private mapStateService: MapStateService,\r\n private modalCtrl: ModalController,\r\n private assetEditorService: AssetEditorService\r\n ) {\r\n super();\r\n this.initLeafletConfigureOptions();\r\n this.initLayers();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => this.mapReady$.next());\r\n }\r\n\r\n ngOnInit(): void {\r\n // Show status icons in edit mode\r\n this.showStatusIcons ||= this.editMode;\r\n this.screenSizeService.bigScreenMode$\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((bigScreenMode) => (this.bigScreenMode = bigScreenMode));\r\n\r\n this.hoverService.hoverDisabled = this.hoverDisabled;\r\n\r\n this.mapReady$.pipe(take(1)).subscribe(() => {\r\n if (this.masterData) {\r\n this.lifts = this.masterData.lifts;\r\n this.slopes = this.masterData.slopes;\r\n this.trails = this.masterData.trails;\r\n this.pois = this.masterData.pois;\r\n this.places = this.masterData.places;\r\n this.customIcons = this.masterData.customIcons;\r\n this.customPaths = this.masterData.customPaths;\r\n this.gastros = this.masterData.gastros;\r\n this.webcams = this.masterData.webcams;\r\n this.winds = this.masterData.winds;\r\n\r\n this.setupMap();\r\n }\r\n });\r\n\r\n this.mapStateService.elementClicked$.pipe(takeUntil(this.onDestroy$)).subscribe(({ element, iconIndex }) => {\r\n if (this.allowElementSelection) {\r\n this.mapStateService.selectElement(element, iconIndex);\r\n }\r\n\r\n if (this.editMode) {\r\n return;\r\n }\r\n\r\n if (element instanceof Webcam) {\r\n let width = 1280;\r\n let height = 720;\r\n let cssClass = 'sis-sismap-webcam-modal';\r\n\r\n switch (element.aspectRatio) {\r\n case Webcam.ratio_16_9:\r\n width = 1280;\r\n height = 720;\r\n cssClass = 'sis-sismap-webcam-16-9-modal';\r\n break;\r\n case Webcam.ratio_4_3:\r\n width = 1024;\r\n height = 768;\r\n cssClass = 'sis-sismap-webcam-4-3-modal';\r\n break;\r\n case Webcam.ratio_3_2:\r\n width = 1152;\r\n height = 768;\r\n cssClass = 'sis-sismap-webcam-3-2-modal';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n if (element.type === Webcam.external) {\r\n const windowFeatures = `popup=true,top=100,left=100,width=${width},height=${height}`;\r\n window.open(element.url, 'Webcam', windowFeatures);\r\n } else {\r\n this.modalCtrl\r\n .create({\r\n component: WebcamModalComponent,\r\n cssClass,\r\n componentProps: { webcam: element },\r\n })\r\n .then((modal) => modal.present());\r\n }\r\n } else if (element instanceof CustomIcon && element.url != null) {\r\n window.open(element.url, '_self');\r\n }\r\n });\r\n\r\n this.mapStateService.centerElement$.pipe(takeUntil(this.onDestroy$)).subscribe(({ element, iconIndex }) => {\r\n const coords = element.iconPositions[iconIndex];\r\n if (coords != null) {\r\n this.map.panTo(new LatLng(coords.x, coords.y));\r\n }\r\n });\r\n }\r\n\r\n setMapVisibility($event: boolean): void {\r\n if ($event) {\r\n this.wasVisibleAtLeastOnce = true;\r\n }\r\n }\r\n\r\n onMapReady(map: Map): void {\r\n this.map = map;\r\n }\r\n\r\n onMapFullscreenToggle(): void {\r\n timer(50)\r\n .pipe(take(1))\r\n .subscribe(() =>\r\n this.zone.run(() => {\r\n if (this.shouldMapFitToHeight()) {\r\n this.fitMapToHeight();\r\n } else {\r\n this.fitMapToWidth();\r\n }\r\n })\r\n );\r\n }\r\n\r\n onFitMapToHeight(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.map.fitBounds([\r\n [0, 0],\r\n [this.imageResY, 0],\r\n ]);\r\n }\r\n\r\n fitMapToHeight(): void {\r\n this.zone.run(() => {\r\n const bounds: LatLngBoundsExpression = [\r\n [0, 0],\r\n [this.imageResY, 0],\r\n ];\r\n this.map.setMinZoom(-20);\r\n this.map.fitBounds(bounds);\r\n this.map.setMinZoom(this.map.getBoundsZoom(bounds, false));\r\n });\r\n }\r\n\r\n onFitMapToWidth(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.map.fitBounds([\r\n [0, 0],\r\n [0, this.imageResX],\r\n ]);\r\n }\r\n\r\n fitMapToWidth(): void {\r\n this.zone.run(() => {\r\n const bounds: LatLngBoundsExpression = [\r\n [0, 0],\r\n [0, this.imageResX],\r\n ];\r\n this.map.setMinZoom(-20);\r\n this.map.fitBounds(bounds);\r\n this.map.setMinZoom(this.map.getBoundsZoom(bounds, false));\r\n });\r\n }\r\n\r\n onZoomIn(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.zoomIn();\r\n }\r\n\r\n onZoomOut(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.zoomOut();\r\n }\r\n\r\n onFullscreen(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.fullscreen();\r\n }\r\n\r\n onOpenSidepaneClick(): void {\r\n this.openSidepane = !this.openSidepane;\r\n\r\n if (this.map) {\r\n setTimeout(() => {\r\n this.map.invalidateSize();\r\n }, 50);\r\n }\r\n }\r\n\r\n trackByGuid(_index: number, element: MapElement): string {\r\n return element.guid;\r\n }\r\n\r\n drop(event: CdkDragDrop): void {\r\n const element = event.item.data;\r\n const mapPos = this.map.containerPointToLatLng([event.dropPoint.x, event.dropPoint.y]);\r\n if (this.map.getBounds().contains(mapPos)) {\r\n this.assetEditorService.addAsset(element, { x: mapPos.lat, y: mapPos.lng });\r\n }\r\n }\r\n\r\n setContextPosition(event: LeafletMouseEvent): void {\r\n this.lastContextPosition = { x: event.latlng.lat, y: event.latlng.lng };\r\n }\r\n\r\n addWebcam(): void {\r\n this.assetEditorService.addAsset(new Webcam(), this.lastContextPosition);\r\n }\r\n\r\n addPlace(): void {\r\n this.assetEditorService.addAsset(new Place(), this.lastContextPosition);\r\n }\r\n\r\n addCustomIcon(): void {\r\n this.assetEditorService.addAsset(new CustomIcon(), this.lastContextPosition);\r\n }\r\n\r\n addCustomPath(): void {\r\n this.assetEditorService.addAsset(\r\n new CustomPath({\r\n type: 'wandern',\r\n disallowPopUp: true,\r\n disallowHighlight: true,\r\n iconSvgBlobName: 'customPath',\r\n })\r\n );\r\n }\r\n\r\n private zoomIn(): void {\r\n this.map.setZoom(this.map.getZoom() + 0.2);\r\n }\r\n\r\n private zoomOut(): void {\r\n this.map.setZoom(this.map.getZoom() - 0.2);\r\n }\r\n\r\n private fullscreen(): void {\r\n this.fullScreenControl.toggleFullScreen();\r\n if (this.shouldMapFitToHeight()) {\r\n this.fitMapToHeight();\r\n } else {\r\n this.fitMapToWidth();\r\n }\r\n }\r\n\r\n private async getImageDimension(imageUrl: string): Promise<{ height: number; width: number }> {\r\n return new Promise((resolve) => {\r\n if (imageUrl.split('/').pop() !== '') {\r\n const img = new Image();\r\n img.onload = (event): void => {\r\n const loadedImage: any = event.currentTarget;\r\n resolve({ width: loadedImage.width, height: loadedImage.height });\r\n };\r\n\r\n img.src = imageUrl;\r\n } else {\r\n resolve({ width: 1, height: 1 });\r\n }\r\n });\r\n }\r\n\r\n private initLeafletConfigureOptions(): void {\r\n this.options = {\r\n crs: CRS.Simple,\r\n wheelPxPerZoomLevel: 200,\r\n zoomControl: false,\r\n zoomSnap: 0,\r\n zoomDelta: 0.1,\r\n maxBoundsViscosity: 1,\r\n attributionControl: false,\r\n zoomAnimation: false,\r\n };\r\n }\r\n\r\n private initLayers(): void {\r\n this.slopeLayerGroup = layerGroup([], {\r\n pane: 'slope',\r\n });\r\n this.trailLayerGroup = layerGroup([], {\r\n pane: 'trail',\r\n });\r\n this.poiLayerGroup = layerGroup([], {\r\n pane: 'poi',\r\n });\r\n this.liftLayerGroup = layerGroup([], {\r\n pane: 'lift',\r\n });\r\n this.gastroLayerGroup = layerGroup([], {\r\n pane: 'gastro',\r\n });\r\n this.webcamLayerGroup = layerGroup([], {\r\n pane: 'webcam',\r\n });\r\n this.windLayerGroup = layerGroup([], {\r\n pane: 'wind',\r\n });\r\n this.customIconLayerGroup = layerGroup([], {\r\n pane: 'customIcon',\r\n });\r\n this.customPathLayerGroup = layerGroup([], {\r\n pane: 'customPath',\r\n });\r\n this.placeLayerGroup = layerGroup([], {\r\n pane: 'place',\r\n });\r\n\r\n this.layers = [\r\n this.slopeLayerGroup,\r\n this.trailLayerGroup,\r\n this.poiLayerGroup,\r\n this.liftLayerGroup,\r\n this.gastroLayerGroup,\r\n this.webcamLayerGroup,\r\n this.windLayerGroup,\r\n this.customIconLayerGroup,\r\n this.customPathLayerGroup,\r\n this.placeLayerGroup,\r\n ];\r\n }\r\n\r\n private shouldMapFitToHeight(): boolean {\r\n const params = this.activatedRoute.snapshot.queryParams;\r\n\r\n if (params && params['x']) {\r\n return true;\r\n }\r\n\r\n const leafletMap = document.getElementsByClassName('sis-pano-map') as HTMLCollectionOf;\r\n const screenWidth = leafletMap[0].clientWidth;\r\n const screenHeight = leafletMap[0].clientHeight;\r\n return !this.bigScreenMode || screenHeight - this.imageResY < screenWidth - this.imageResX;\r\n }\r\n\r\n private async setupMap(): Promise {\r\n if (\r\n this.leafletContainer?.nativeElement == null ||\r\n (this.leafletContainer.nativeElement.offsetWidth === 0 && this.leafletContainer.nativeElement.offsetHeight === 0)\r\n ) {\r\n // There is a race condition between ngx-leaflet calling this method and\r\n // the div-element having its width and height set, which causes leaflet\r\n // to try to set NaN to be read when setting as mapbounds, which crashes.\r\n // To solve this issue we wait here until the div container has its dimensions\r\n // set so we can initialize the map safely\r\n setTimeout(() => this.setupMap(), 50);\r\n return;\r\n }\r\n\r\n this.paneNames.forEach((name, i) => {\r\n this.map.createPane(name).style.zIndex = `${500 + i + 1}`;\r\n });\r\n\r\n const panoMapUrl = `${environment.baseUrlPublicAssets}/map/${this.masterData.panoMapFilename}`;\r\n\r\n let imageDimension = await this.getImageDimensionFromMetadata(panoMapUrl);\r\n\r\n if (!imageDimension) {\r\n imageDimension = await this.getImageDimension(panoMapUrl);\r\n\r\n console.error(\r\n `missing image dimension metadata: height: ${imageDimension.height} , width: ${imageDimension.width} . Url: ${panoMapUrl}`\r\n );\r\n }\r\n\r\n this.imageResY = imageDimension.height;\r\n this.imageResX = imageDimension.width;\r\n\r\n this.imageBounds = [\r\n [0, 0],\r\n [this.imageResY, this.imageResX],\r\n ];\r\n\r\n // add the static Panorama Destination Image to the map with the bounds given by the dimension (height and width) of the image.\r\n this.layers.push(imageOverlay(panoMapUrl, this.imageBounds));\r\n\r\n this.map.setMaxBounds(this.imageBounds);\r\n this.fitMapToHeight();\r\n\r\n if (this.editMode) {\r\n this.map.setMaxZoom(this.map.getZoom() + 5);\r\n } else {\r\n this.map.setMaxZoom(this.map.getZoom() + 2);\r\n }\r\n this.map.setMinZoom(this.map.getZoom());\r\n\r\n this.map.on('contextmenu', (e) => this.setContextPosition(e));\r\n\r\n this.addZoomListener();\r\n\r\n this.map.on('click', () => {\r\n this.hoverService.hover({ guid: undefined, hover: false, iconHovered: false });\r\n this.mapStateService.selectElement(null, null);\r\n });\r\n\r\n if (this.shouldMapFitToHeight()) {\r\n this.fitMapToHeight();\r\n } else {\r\n this.fitMapToWidth();\r\n }\r\n\r\n this.map.whenReady(() => {\r\n this.activatedRoute.queryParams.pipe(take(1), delay(200)).subscribe((params) => {\r\n const x: string = params['x'];\r\n if (x) {\r\n const lng = Number.parseInt(x, 10);\r\n const y = Number.parseInt(params['y'], 10);\r\n const lat = !isNaN(y) ? y : this.map.getBounds().getCenter().lat;\r\n const z = Number.parseFloat(params['z']);\r\n const zoom = !isNaN(z) ? this.map.getZoom() + z : this.map.getZoom();\r\n\r\n this.map.setView([lat, lng], zoom, { animate: false });\r\n }\r\n\r\n if (this.editMode) {\r\n this.onOpenSidepaneClick();\r\n }\r\n });\r\n });\r\n }\r\n\r\n private addZoomListener(): void {\r\n const minZoom = this.map.getMinZoom();\r\n const defaultZoom = this.map.getZoom() + Math.abs(minZoom);\r\n\r\n this.map.on('zoom', () => {\r\n this.map.fire('viewreset');\r\n const currentZoom = this.map.getZoom() + Math.abs(minZoom);\r\n const diff = 1 + currentZoom - defaultZoom;\r\n const zoom = this.getMinZoomRatio(0.5, diff);\r\n\r\n this.zoomService.zoom(\r\n new SisZoom(\r\n zoom,\r\n this.bigScreenMode ? this.masterData.showIconZoomThreshold : this.masterData.showIconZoomThresholdMobile,\r\n this.map,\r\n this.masterData.iconZoomFactor\r\n )\r\n );\r\n });\r\n\r\n this.map.fireEvent('zoom');\r\n }\r\n\r\n private getMinZoomRatio(minRatio: number, diff: number): number {\r\n return diff + minRatio * (1 - diff);\r\n }\r\n\r\n private async getImageDimensionFromMetadata(blobUrl: string): Promise<{ height: number; width: number }> {\r\n const response = await firstValueFrom(\r\n ajax({\r\n url: blobUrl + '?comp=metadata',\r\n method: 'HEAD',\r\n })\r\n );\r\n\r\n const height = response.responseHeaders['x-ms-meta-height'];\r\n const width = response.responseHeaders['x-ms-meta-width'];\r\n\r\n if (height && width) {\r\n return { height: Number.parseInt(height, 10), width: Number.parseInt(width, 10) };\r\n }\r\n\r\n return null;\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 Edit Mode\r\n\r\n\r\n\r\n\r\n\r\n \r\n Neue Webcam\r\n Neuer Place\r\n Neues CustomIcon\r\n Neuer CustomPath\r\n \r\n\r\n","import { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { CdkMenuModule } from '@angular/cdk/menu';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { LeafletModule } from '@asymmetrik/ngx-leaflet';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CoreModule } from 'src/app/core/core.module';\r\nimport { StatusAdapter } from 'src/app/maps/domain/livedata/status.adapter';\r\nimport { StatusService } from 'src/app/maps/domain/livedata/status.service';\r\nimport { CustomIconAdapter } from 'src/app/maps/domain/masterdata/custom-icon.adapter';\r\nimport { GastroAdapter } from 'src/app/maps/domain/masterdata/gastro.adapter';\r\nimport { LiftAdapter } from 'src/app/maps/domain/masterdata/lift.adapter';\r\nimport { MasterDataAdapter } from 'src/app/maps/domain/masterdata/masterdata.adapter';\r\nimport { PlaceAdapter } from 'src/app/maps/domain/masterdata/place.adapter';\r\nimport { POIAdapter } from 'src/app/maps/domain/masterdata/poi.adapter';\r\nimport { SlopeAdapter } from 'src/app/maps/domain/masterdata/slope.adapter';\r\nimport { TrailAdapter } from 'src/app/maps/domain/masterdata/trail.adapter';\r\nimport { WebcamAdapter } from 'src/app/maps/domain/masterdata/webcam.adapter';\r\nimport { WindAdapter } from 'src/app/maps/domain/masterdata/wind.adapter';\r\nimport { AssetSidepaneComponent } from 'src/app/maps/map/asset-sidepane/asset-sidepane.component';\r\nimport { AssetSidepaneContentComponent } from 'src/app/maps/map/asset-sidepane/asset-sidepane-content/asset-sidepane-content.component';\r\nimport { EnterTheViewportNotifierDirective } from 'src/app/maps/map/enter-viewport-notifier.directive';\r\nimport { IconService } from 'src/app/maps/map/icon-service';\r\nimport { LayerService } from 'src/app/maps/map/layer-selector/layer.service';\r\nimport { LayerSelectorComponent } from 'src/app/maps/map/layer-selector/layer-selector.component';\r\nimport { LayerSelectorItemComponent } from 'src/app/maps/map/layer-selector/layer-selector-item/layer-selector-item.component';\r\nimport { MapComponent } from 'src/app/maps/map/map.component';\r\nimport { MapElementContainerComponent } from 'src/app/maps/map/map-element-layer/map-element-container.component';\r\nimport { MapElementCurveComponent } from 'src/app/maps/map/map-element-layer/map-element-curve/map-element-curve.component';\r\nimport { MapElementIconComponent } from 'src/app/maps/map/map-element-layer/map-element-icon/map-element-icon.component';\r\nimport { AddAssetTabComponent } from 'src/app/maps/map/sidepane/add-asset-tab/add-asset-tab.component';\r\nimport { AssetListComponent } from 'src/app/maps/map/sidepane/add-asset-tab/asset-list/asset-list.component';\r\nimport { AssetListItemComponent } from 'src/app/maps/map/sidepane/add-asset-tab/asset-list/asset-list-item/asset-list-item.component';\r\nimport { AutocompleteSelectorComponent } from 'src/app/maps/map/sidepane/add-asset-tab/autocomplete-selector/autocomplete-selector.component';\r\nimport { AssetEditorTabComponent } from 'src/app/maps/map/sidepane/asset-editor-tab/asset-editor-tab.component';\r\nimport { SidepaneComponent } from 'src/app/maps/map/sidepane/sidepane.component';\r\nimport { WebcamModalComponent } from 'src/app/maps/map/webcam-modal/webcam-modal.component';\r\nimport { WindDisplayCalculatorService } from 'src/app/maps/map/wind-display-calculator.service';\r\nimport { WindIconService } from 'src/app/maps/map/wind-icon.service';\r\nimport { ZoomService } from 'src/app/maps/map/zoom.service';\r\nimport { HoursMinutesPipe } from 'src/app/maps/pipes/hours-minutes.pipe';\r\n\r\n@NgModule({\r\n declarations: [\r\n AddAssetTabComponent,\r\n AssetEditorTabComponent,\r\n AssetListComponent,\r\n AssetListItemComponent,\r\n AutocompleteSelectorComponent,\r\n EnterTheViewportNotifierDirective,\r\n LayerSelectorComponent,\r\n LayerSelectorItemComponent,\r\n MapComponent,\r\n MapElementContainerComponent,\r\n MapElementCurveComponent,\r\n MapElementIconComponent,\r\n SidepaneComponent,\r\n AssetSidepaneComponent,\r\n AssetSidepaneContentComponent,\r\n WebcamModalComponent,\r\n HoursMinutesPipe,\r\n ],\r\n providers: [\r\n CustomIconAdapter,\r\n GastroAdapter,\r\n IconService,\r\n LayerService,\r\n LiftAdapter,\r\n MasterDataAdapter,\r\n PlaceAdapter,\r\n POIAdapter,\r\n SlopeAdapter,\r\n StatusAdapter,\r\n StatusService,\r\n TrailAdapter,\r\n WebcamAdapter,\r\n WindAdapter,\r\n WindDisplayCalculatorService,\r\n WindIconService,\r\n ZoomService,\r\n ],\r\n exports: [LayerSelectorComponent, MapComponent],\r\n imports: [\r\n CdkMenuModule,\r\n CommonModule,\r\n CoreModule,\r\n DragDropModule,\r\n FormsModule,\r\n IonicModule,\r\n LeafletModule,\r\n MatAutocompleteModule,\r\n MatTooltipModule,\r\n ReactiveFormsModule,\r\n ScrollingModule,\r\n TranslateModule,\r\n MatButtonModule,\r\n ],\r\n})\r\nexport class MapModule {}\r\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\r\nimport { BehaviorSubject, combineLatest, firstValueFrom, map, Observable } from 'rxjs';\r\nimport { Season } from 'src/app/core/domain/season.enum';\r\nimport { Unsubscriber } from 'src/app/core/unsubscriber/unsubscriber';\r\nimport { UserMessage } from 'src/app/core/user-message/user-message.model';\r\nimport { UserMessageService } from 'src/app/core/user-message/user-message.service';\r\nimport { UserMessageColor } from 'src/app/core/user-message/user-message-color';\r\nimport { UserMessageIcon } from 'src/app/core/user-message/user-message-icon';\r\nimport { CustomIcon } from 'src/app/maps/domain/masterdata/custom-icon.model';\r\nimport { CustomPath } from 'src/app/maps/domain/masterdata/custom-path.model';\r\nimport { Gastro } from 'src/app/maps/domain/masterdata/gastro.model';\r\nimport { Lift } from 'src/app/maps/domain/masterdata/lift.model';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { MasterDataService } from 'src/app/maps/domain/masterdata/masterdata.service';\r\nimport { Place } from 'src/app/maps/domain/masterdata/place.model';\r\nimport { POI } from 'src/app/maps/domain/masterdata/poi.model';\r\nimport { Slope } from 'src/app/maps/domain/masterdata/slope.model';\r\nimport { Tenant } from 'src/app/maps/domain/masterdata/tenant.model';\r\nimport { Trail } from 'src/app/maps/domain/masterdata/trail.model';\r\nimport { Webcam } from 'src/app/maps/domain/masterdata/webcam.model';\r\nimport { Wind } from 'src/app/maps/domain/masterdata/wind.model';\r\nimport { LayerService } from 'src/app/maps/map/layer-selector/layer.service';\r\nimport { Category } from 'src/app/maps/map/layer-selector/layer-selector-item/layer-selector-item.model';\r\nimport { MapStateService } from 'src/app/maps/map/map-state.service';\r\nimport { AssetListItem } from 'src/app/maps/map/sidepane/add-asset-tab/asset-list/asset-list-item/asset-list-item.model';\r\nimport { AssetListItemButton } from 'src/app/maps/map/sidepane/add-asset-tab/asset-list/asset-list-item/asset-list-item-button.model';\r\nimport { TenantService } from 'src/app/maps/map/sidepane/add-asset-tab/tenant.service';\r\nimport { AssetEditorService } from 'src/app/maps/map/sidepane/asset-editor-tab/asset-editor.service';\r\n\r\n@Component({\r\n selector: 'sis-sismap-sidepane-add-asset-tab',\r\n templateUrl: './add-asset-tab.component.html',\r\n styleUrls: ['./add-asset-tab.component.scss'],\r\n})\r\nexport class AddAssetTabComponent extends Unsubscriber implements OnInit {\r\n private readonly masterDataElements$: Observable = this.masterDataService.masterData.pipe(\r\n map((masterData) =>\r\n this.sortElementsByName(masterData.lifts)\r\n .concat(this.sortElementsByName(masterData.trails))\r\n .concat(this.sortElementsByName(masterData.slopes))\r\n .concat(this.sortElementsByName(masterData.gastros))\r\n .concat(this.sortElementsByName(masterData.pois))\r\n .concat(this.sortElementsByName(masterData.webcams))\r\n .concat(this.sortElementsByName(masterData.customIcons))\r\n .concat(this.sortElementsByName(masterData.customPaths))\r\n .concat(this.sortElementsByName(masterData.places))\r\n .concat(this.sortElementsByName(masterData.winds))\r\n )\r\n );\r\n\r\n private selectedTenant: Tenant | null = null;\r\n\r\n tenants: Tenant[] = [];\r\n readonly categoryFilter$ = new BehaviorSubject(null);\r\n readonly allTenantAssets$ = new BehaviorSubject([]);\r\n tenantAssetsLoading = false;\r\n readonly tenantAssets$: Observable = combineLatest([\r\n this.allTenantAssets$,\r\n this.layerService.season$,\r\n this.categoryFilter$,\r\n this.masterDataElements$,\r\n ]).pipe(\r\n map(([assets, season, category, mapElements]) =>\r\n assets\r\n .filter(\r\n (el) =>\r\n (el.season === season || el.season === Season.SummerAndWinter || el.season == null) &&\r\n (category == null || category.types.includes(el.type))\r\n )\r\n .sort((a1, a2) => (a1.category === a2.category ? a1.name.localeCompare(a2.name) : a1.category - a2.category))\r\n .map((asset) => ({\r\n element: asset,\r\n disabled: mapElements.some((el) => el.guid === asset.guid),\r\n }))\r\n )\r\n );\r\n\r\n readonly selectedElement$ = this.mapStateService.selectedElement$.pipe(map(({ element }) => element));\r\n\r\n readonly mapElements$: Observable = combineLatest([\r\n this.masterDataElements$,\r\n this.layerService.shownAssetGuids$,\r\n this.layerService.season$,\r\n this.assetEditorService.unsavedAssets$,\r\n this.assetEditorService.removedAssets$,\r\n this.assetEditorService.assetsWithError$,\r\n ]).pipe(\r\n map(([mapElements, shownAssetGuids, season, unsavedElements, removedElements, assetsWithError]) => {\r\n const unsavedElementsOfThisSeason = [...unsavedElements.values()];\r\n const assetsWithErrorOfThisSeason = [...assetsWithError.values()];\r\n const removedElementsOfThisSeason = [...removedElements.values()].filter(\r\n (el) =>\r\n el.element.season === season || el.element.season === Season.SummerAndWinter || el.element.season == null\r\n );\r\n return mapElements\r\n .filter((el) => el.season === season || el.season === Season.SummerAndWinter || el.season == null)\r\n .map((asset) => ({\r\n element: asset,\r\n changed: unsavedElementsOfThisSeason.some((el) => el.guid === asset.guid),\r\n hasError: assetsWithErrorOfThisSeason.some((el) => el.guid === asset.guid),\r\n hidden: !shownAssetGuids.includes(asset.guid),\r\n }))\r\n .concat(removedElementsOfThisSeason.map((deleted) => ({ element: deleted.element, deleted: true })));\r\n })\r\n );\r\n\r\n readonly changedElements$ = this.assetEditorService.unsavedAssets$.pipe(map((e) => [...e.values()]));\r\n\r\n readonly currentElementListButtons: AssetListItemButton[] = [\r\n {\r\n name: 'reset',\r\n icon: 'return-up-back-outline',\r\n tooltip: 'Asset zurücksetzen',\r\n isVisible: (item): boolean => !item?.deleted && item?.changed,\r\n },\r\n {\r\n name: 'restore',\r\n icon: 'return-up-back-outline',\r\n tooltip: 'Asset wiederherstellen',\r\n isVisible: (item): boolean => item?.deleted === true,\r\n },\r\n {\r\n name: 'locate',\r\n icon: 'contract-outline',\r\n tooltip: 'Asset auf der Karte zeigen',\r\n isVisible: (item): boolean => !item?.deleted,\r\n },\r\n {\r\n name: 'edit',\r\n icon: 'create-outline',\r\n tooltip: 'Asset bearbeiten',\r\n isVisible: (item): boolean => !item?.deleted,\r\n },\r\n ];\r\n\r\n readonly newElementListButtons: AssetListItemButton[] = [\r\n {\r\n name: 'add',\r\n icon: 'add-outline',\r\n tooltip: 'Asset hinzufügen',\r\n isVisible: (item): boolean => !item?.disabled,\r\n },\r\n ];\r\n\r\n @Output() changeToEditTab = new EventEmitter();\r\n\r\n constructor(\r\n private tenantService: TenantService,\r\n public layerService: LayerService,\r\n private masterDataService: MasterDataService,\r\n private mapStateService: MapStateService,\r\n private userMessageService: UserMessageService,\r\n private assetEditorService: AssetEditorService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadAvailableTenants();\r\n }\r\n\r\n handleCurrentAssetActionButtonClicked({ item, button }: { item: AssetListItem; button: AssetListItemButton }): void {\r\n const { element } = item;\r\n\r\n switch (button.name) {\r\n case 'restore':\r\n this.assetEditorService.restoreAsset(element);\r\n break;\r\n case 'locate':\r\n this.mapStateService.centerElementIcon(element, 0);\r\n this.mapStateService.highlightElement(element, null);\r\n break;\r\n case 'edit':\r\n this.mapStateService.centerElementIcon(element, 0);\r\n this.mapStateService.selectElement(element, null, true);\r\n this.changeToEditTab.emit();\r\n break;\r\n case 'reset':\r\n const originalAsset = JSON.parse(\r\n JSON.stringify(this.assetEditorService.editedAssetOriginals.get(element.guid))\r\n );\r\n Object.keys(element).forEach((key) => {\r\n element[key] = originalAsset[key];\r\n });\r\n this.mapStateService.updateMapElement(element);\r\n this.assetEditorService.removeUnsavedAsset(element);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n handleNewAssetActionButtonClicked({ item, button }: { item: AssetListItem; button: AssetListItemButton }): void {\r\n if (button.name === 'add') {\r\n const { element } = item;\r\n this.assetEditorService.addAsset(element, { x: 100, y: 100 });\r\n this.mapStateService.centerElementIcon(element, 0);\r\n this.changeToEditTab.emit();\r\n }\r\n }\r\n\r\n itemDraggedToMap(item: MapElement): void {}\r\n\r\n loadAvailableTenants(): void {\r\n this.tenantService.getTenants().subscribe({\r\n next: (tenants) => (this.tenants = tenants),\r\n error: async () => {\r\n console.error('Failed loading tenants');\r\n this.tenants = [];\r\n const userMessage = new UserMessage({\r\n color: UserMessageColor.red,\r\n durationMs: 4000,\r\n icon: UserMessageIcon.failed,\r\n message: 'user.message.tenantLoadingFailed',\r\n position: 'top',\r\n });\r\n\r\n const toast = await this.userMessageService.showSingleToast(userMessage);\r\n await toast.present();\r\n },\r\n });\r\n }\r\n\r\n setSelectedTenant(tenant: Tenant | null): void {\r\n this.selectedTenant = tenant;\r\n this.getAssetsForTenant(tenant);\r\n }\r\n\r\n getAssetsForTenant(tenant: Tenant | null): void {\r\n if (tenant != null) {\r\n this.tenantAssetsLoading = true;\r\n this.tenantService.getAssetForTenant(tenant).subscribe({\r\n next: (elements) => {\r\n this.allTenantAssets$.next(elements);\r\n this.tenantAssetsLoading = false;\r\n },\r\n error: () => {\r\n this.allTenantAssets$.next([]);\r\n this.tenantAssetsLoading = false;\r\n },\r\n });\r\n }\r\n }\r\n\r\n refreshTenantAssets(): void {\r\n this.getAssetsForTenant(this.selectedTenant);\r\n }\r\n\r\n addElement(element: MapElement): void {\r\n element.iconPositions.push({ x: 200, y: 200 });\r\n this.masterDataService.addMapElement(element);\r\n }\r\n\r\n setCategoryFilter(category: Category): void {\r\n this.categoryFilter$.next(category);\r\n }\r\n\r\n selectExistingActiveElement(item: AssetListItem): void {\r\n if (!item.disabled && !item.deleted) {\r\n this.selectMapElement(item.element);\r\n }\r\n }\r\n\r\n async selectDisabledElement(item: AssetListItem): Promise {\r\n if (item.disabled) {\r\n // The element we get here is not the same instance as already in masterData so we get it\r\n const masterData = await firstValueFrom(this.masterDataService.masterData);\r\n let elementList: MapElement[] = [];\r\n if (item.element instanceof Lift) {\r\n elementList = masterData.lifts;\r\n } else if (item.element instanceof CustomIcon) {\r\n elementList = masterData.customIcons;\r\n } else if (item.element instanceof CustomPath) {\r\n elementList = masterData.customPaths;\r\n } else if (item.element instanceof Gastro) {\r\n elementList = masterData.gastros;\r\n } else if (item.element instanceof Place) {\r\n elementList = masterData.places;\r\n } else if (item.element instanceof POI) {\r\n elementList = masterData.pois;\r\n } else if (item.element instanceof Slope) {\r\n elementList = masterData.slopes;\r\n } else if (item.element instanceof Trail) {\r\n elementList = masterData.trails;\r\n } else if (item.element instanceof Webcam) {\r\n elementList = masterData.webcams;\r\n } else if (item.element instanceof Wind) {\r\n elementList = masterData.winds;\r\n }\r\n const element = elementList.find((e) => e.guid === item.element.guid) ?? item.element;\r\n this.selectMapElement(element);\r\n }\r\n }\r\n\r\n compareTenants(a: Tenant, b: Tenant): number {\r\n return a.alias.localeCompare(b.alias);\r\n }\r\n\r\n filterTenants(filterText: string, tenant: Tenant): boolean {\r\n return (\r\n tenant.alias.toLocaleLowerCase().includes(filterText) || tenant.sisId.toLocaleLowerCase().includes(filterText)\r\n );\r\n }\r\n\r\n formatTenants(tenant: Tenant): string {\r\n return `${tenant.alias} (${tenant.sisId})`;\r\n }\r\n\r\n compareCategories(a: Category, b: Category): number {\r\n return a.name.localeCompare(b.name);\r\n }\r\n\r\n filterCategories(filterText: string, category: Category): boolean {\r\n return category.name.toLocaleLowerCase().includes(filterText);\r\n }\r\n\r\n formatCategory(category: Category): string {\r\n // TODO: Maybe translate name so they are easier and more intuitive to find?\r\n return `${category.name}`;\r\n }\r\n\r\n private selectMapElement(element: MapElement): void {\r\n this.mapStateService.centerElementIcon(element, 0);\r\n this.mapStateService.selectElement(element, null, true);\r\n }\r\n\r\n private sortElementsByName(elements: MapElement[]): MapElement[] {\r\n if (elements == null) {\r\n return [];\r\n }\r\n return [...elements].sort((e1, e2) => (e1.name == null ? -1 : e1.name.localeCompare(e2.name)));\r\n }\r\n}\r\n","\r\n \r\n Tenant\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 Kategorie\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Elemente\r\n \r\n \r\n \r\n Elemente auf der Karte\r\n \r\n \r\n \r\n\r\n","import { CdkDragDrop } from '@angular/cdk/drag-drop';\r\nimport { Component, EventEmitter, Input, OnChanges, Output } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { Unsubscriber } from 'src/app/core/unsubscriber/unsubscriber';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { SisMapAssetCategory } from 'src/app/maps/domain/masterdata/sismap-asset-category.enum';\r\nimport { IconService } from 'src/app/maps/map/icon-service';\r\nimport { AssetListItem } from 'src/app/maps/map/sidepane/add-asset-tab/asset-list/asset-list-item/asset-list-item.model';\r\nimport { AssetListItemButton } from 'src/app/maps/map/sidepane/add-asset-tab/asset-list/asset-list-item/asset-list-item-button.model';\r\n\r\n@Component({\r\n selector: 'sis-sismap-sidepane-asset-list-item',\r\n templateUrl: './asset-list-item.component.html',\r\n styleUrls: ['./asset-list-item.component.scss'],\r\n})\r\nexport class AssetListItemComponent extends Unsubscriber implements OnChanges {\r\n @Input() item: AssetListItem;\r\n @Input() selected = false;\r\n @Input() draggable = false;\r\n @Input() actionButtons: AssetListItemButton[] = [];\r\n\r\n @Output() buttonClicked = new EventEmitter();\r\n @Output() itemDraggedToMap = new EventEmitter();\r\n\r\n elementIcon: SafeHtml;\r\n elementName: string;\r\n elementLabel: string;\r\n elementLabelTooltipDisabled = false;\r\n elementTooltip = '';\r\n\r\n constructor(private iconService: IconService, private sanitizer: DomSanitizer) {\r\n super();\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.elementName = this.item.element.name;\r\n this.elementLabel = this.item.element.label;\r\n this.iconService.getIconHtml(this.item.element).then((iconString) => {\r\n this.elementIcon = this.sanitizer.bypassSecurityTrustHtml(iconString);\r\n });\r\n if (this.item.changed) {\r\n this.elementTooltip = 'Dieses Asset wurde geändert';\r\n } else if (this.item.disabled) {\r\n this.elementTooltip = 'Dieses Asset ist bereits auf der Karte';\r\n } else {\r\n this.elementTooltip = SisMapAssetCategory[this.item.element.category];\r\n }\r\n }\r\n\r\n emitButtonAction(event: MouseEvent, button: AssetListItemButton): void {\r\n event.stopPropagation();\r\n this.buttonClicked.emit(button);\r\n }\r\n\r\n updateLabelTooltipDisabled(label: HTMLSpanElement): void {\r\n this.elementLabelTooltipDisabled = label.scrollWidth <= label.clientWidth;\r\n }\r\n\r\n dragEnd(ev: CdkDragDrop): void {\r\n if (ev.container.id === 'mapList') {\r\n // Element got dragged into map\r\n this.itemDraggedToMap.emit(this.item);\r\n }\r\n }\r\n}\r\n","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ elementLabel }}\r\n \r\n \r\n * {{ elementName }} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n","import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\r\nimport { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { IonInput } from '@ionic/angular';\r\nimport { Unsubscriber } from 'src/app/core/unsubscriber/unsubscriber';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { SisMapAssetCategory } from 'src/app/maps/domain/masterdata/sismap-asset-category.enum';\r\nimport { AssetListItem } from 'src/app/maps/map/sidepane/add-asset-tab/asset-list/asset-list-item/asset-list-item.model';\r\nimport { AssetListItemButton } from 'src/app/maps/map/sidepane/add-asset-tab/asset-list/asset-list-item/asset-list-item-button.model';\r\n\r\n@Component({\r\n selector: 'sis-sismap-sidepane-asset-list',\r\n templateUrl: './asset-list.component.html',\r\n styleUrls: ['./asset-list.component.scss'],\r\n})\r\nexport class AssetListComponent extends Unsubscriber implements OnChanges {\r\n @ViewChild(CdkVirtualScrollViewport) viewPort: CdkVirtualScrollViewport;\r\n\r\n @Input() elements: AssetListItem[] = [];\r\n @Input() selectedElement: MapElement;\r\n @Input() enableDragging = false;\r\n @Input() showChangedCheckbox = false;\r\n @Input() showRefreshButton = false;\r\n @Input() isLoading = false;\r\n @Input() actionButtons: AssetListItemButton[];\r\n\r\n @Output() clickedElement = new EventEmitter();\r\n @Output() itemDraggedToMap = new EventEmitter();\r\n @Output() refreshTable = new EventEmitter();\r\n @Output() buttonClicked = new EventEmitter<{ item: AssetListItem; button: AssetListItemButton }>();\r\n filteredElements: AssetListItem[] = [];\r\n\r\n assetFilter = '';\r\n\r\n onlyShowChanged = false;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if ('elements' in changes) {\r\n this.filterElements(this.assetFilter);\r\n }\r\n if ('selectedElement' in changes && this.selectedElement != null) {\r\n const index = this.filteredElements.findIndex((e) => e.element.guid === this.selectedElement.guid);\r\n if (index > -1) {\r\n this.viewPort.scrollToIndex(index, 'smooth');\r\n }\r\n }\r\n }\r\n\r\n setChangedFilter(value: boolean): void {\r\n this.onlyShowChanged = value;\r\n this.filterElements(this.assetFilter);\r\n }\r\n\r\n setAssetFilter(value: string): void {\r\n this.assetFilter = value;\r\n this.filterElements(value);\r\n }\r\n\r\n clickElement(item: AssetListItem): void {\r\n this.clickedElement.emit(item);\r\n }\r\n\r\n emitActionButtonClick(button: AssetListItemButton, item: AssetListItem): void {\r\n this.buttonClicked.emit({ item, button });\r\n }\r\n\r\n emitItemDraggedToMap(item: AssetListItem): void {\r\n this.itemDraggedToMap.emit(item);\r\n }\r\n\r\n emitRefreshAction(): void {\r\n this.refreshTable.emit();\r\n }\r\n\r\n filterElements(value: string): void {\r\n if (this.elements == null) {\r\n this.filteredElements = [];\r\n return;\r\n }\r\n const terms = value.toLocaleLowerCase().trim().split(/\\s+/);\r\n this.filteredElements = this.elements.filter(\r\n (el) =>\r\n terms.every(\r\n (term) =>\r\n el.element.name?.toLocaleLowerCase().includes(term) ||\r\n el.element.type?.toLocaleLowerCase() === term ||\r\n SisMapAssetCategory[el.element.category].toLocaleLowerCase() === term ||\r\n el.element.label?.toLocaleLowerCase().includes(term)\r\n ) &&\r\n (!this.onlyShowChanged || el.changed || el.deleted)\r\n );\r\n }\r\n\r\n async selectText(event: FocusEvent): Promise {\r\n let inputElement: HTMLInputElement;\r\n if (event.target instanceof HTMLInputElement) {\r\n inputElement = event.target;\r\n } else if ('getInputElement' in event.target) {\r\n // Ionic input wrapper\r\n inputElement = await (event.target as EventTarget & IonInput).getInputElement();\r\n }\r\n setTimeout(() => {\r\n inputElement?.select();\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 Nur Geänderte\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0 && !isLoading; else loading\"\r\n itemSize=\"32\"\r\n class=\"scroll-container\"\r\n minBufferPx=\"320\"\r\n maxBufferPx=\"640\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n Lade Assets... \r\n \r\n \r\n \r\n \r\n \r\n Keine Assets gefunden \r\n \r\n \r\n\r\n","import { AfterViewInit, Component, EventEmitter, Input, OnChanges, Output, ViewChild } from '@angular/core';\r\nimport { MatAutocompleteTrigger } from '@angular/material/autocomplete';\r\nimport { MatOption } from '@angular/material/core';\r\nimport { Unsubscriber } from 'src/app/core/unsubscriber/unsubscriber';\r\n\r\n@Component({\r\n selector: 'sis-sismap-sidepane-autocomplete-selector',\r\n templateUrl: './autocomplete-selector.component.html',\r\n styleUrls: ['./autocomplete-selector.component.scss'],\r\n})\r\nexport class AutocompleteSelectorComponent extends Unsubscriber implements OnChanges, AfterViewInit {\r\n private _canditates: Array<{ value: T; formatted: string }>;\r\n @ViewChild(MatAutocompleteTrigger) private autocompleteTrigger: MatAutocompleteTrigger;\r\n\r\n @Input() candidates: T[];\r\n @Input() placeholder = '';\r\n @Input() disabled = false;\r\n\r\n @Input() compareFn?: (a: T, b: T) => number;\r\n @Input() formatFn: (element: T) => string;\r\n @Input() filterFn: (filterText: string, element: T) => boolean;\r\n\r\n @Output() selectedElement = new EventEmitter();\r\n\r\n filterValue = '';\r\n\r\n filteredCandidates: Array<{ value: T; formatted: string }> = [];\r\n\r\n ngAfterViewInit(): void {\r\n if (this.formatFn == null || this.filterFn == null) {\r\n throw new Error('The input fields formatFn and filterFn are required');\r\n }\r\n }\r\n\r\n ngOnChanges(): void {\r\n const sortedCandidates = (this.compareFn != null ? this.candidates?.sort(this.compareFn) : this.candidates) ?? [];\r\n this._canditates = sortedCandidates.map((c) => ({ formatted: this.formatFn(c), value: c }));\r\n this.filterElements(this.filterValue);\r\n }\r\n\r\n updateSelection(value: string | T): void {\r\n if (typeof value === 'string') {\r\n this.autocompleteTrigger.autocomplete.options.forEach((o) => o.deselect());\r\n this.filterElements(value);\r\n this.filterValue = value;\r\n this.selectedElement.emit(null);\r\n }\r\n }\r\n\r\n selectText(event: FocusEvent): void {\r\n setTimeout(() => {\r\n if (event.target instanceof HTMLInputElement) {\r\n event.target.select();\r\n }\r\n });\r\n }\r\n\r\n formatInputValue(value: T): string {\r\n if (value == null) {\r\n return '';\r\n }\r\n if (typeof value === 'string') {\r\n return value;\r\n }\r\n return this.formatFn(value);\r\n }\r\n\r\n emitSelectedOption(event: { option: MatOption; source: MatOption }): void {\r\n if (event.option.selected) {\r\n this.selectedElement.emit(event.option.value);\r\n }\r\n }\r\n\r\n private filterElements(filterText: string): void {\r\n filterText = filterText.toLocaleLowerCase();\r\n this.filteredCandidates = this._canditates.filter((candidate) => this.filterFn(filterText, candidate.value));\r\n }\r\n}\r\n","\r\n\r\n\r\n {{ item.formatted }}\r\n\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { combineLatest, map, Observable, switchMap, take } from 'rxjs';\r\nimport { GastroAdapter } from 'src/app/maps/domain/masterdata/gastro.adapter';\r\nimport { LiftAdapter } from 'src/app/maps/domain/masterdata/lift.adapter';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { MasterDataService } from 'src/app/maps/domain/masterdata/masterdata.service';\r\nimport { POIAdapter } from 'src/app/maps/domain/masterdata/poi.adapter';\r\nimport { SisMapAssetCategory } from 'src/app/maps/domain/masterdata/sismap-asset-category.enum';\r\nimport { SlopeAdapter } from 'src/app/maps/domain/masterdata/slope.adapter';\r\nimport { Tenant } from 'src/app/maps/domain/masterdata/tenant.model';\r\nimport { TrailAdapter } from 'src/app/maps/domain/masterdata/trail.adapter';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TenantService {\r\n tenants$: Observable;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private activatedRoute: ActivatedRoute,\r\n private masterDataService: MasterDataService\r\n ) {}\r\n\r\n getTenants(): Observable {\r\n const url = `${environment.baseUrlApi}/api/sismap/tenants`;\r\n return combineLatest([this.activatedRoute.queryParams, this.masterDataService.masterData]).pipe(\r\n take(1),\r\n switchMap(([queryParams, masterData]) => {\r\n const editToken = queryParams['edit'];\r\n return this.http.get(`${url}?edit=${editToken}&map=${masterData.mapGuid}`, { responseType: 'json' });\r\n }),\r\n map((response) => {\r\n if (!Array.isArray(response)) {\r\n throw new Error('Tenant-API response was not an array');\r\n }\r\n const tenants = response as Tenant[];\r\n tenants.forEach((t) => {\r\n if (t.alias == null || t.guid == null || t.sisId == null) {\r\n throw new Error('Tenant-API did return tenants that did not contain all necessary fields');\r\n }\r\n });\r\n return tenants;\r\n })\r\n );\r\n }\r\n\r\n getAssetForTenant(tenant: Tenant): Observable {\r\n const url = `${environment.baseUrlApi}/api/sismap/assets/${tenant.guid}`;\r\n return combineLatest([this.activatedRoute.queryParams, this.masterDataService.masterData]).pipe(\r\n take(1),\r\n switchMap(([queryParams, masterData]) => {\r\n const editToken = queryParams['edit'];\r\n return this.http.get(`${url}?edit=${editToken}&map=${masterData.mapGuid}`, { responseType: 'json' });\r\n }),\r\n map((response: any[]) => {\r\n let result: MapElement[] = [];\r\n response.forEach((data: any) => {\r\n const assetCategory = data.assetCategory;\r\n const assets: any[] = data.assets;\r\n switch (assetCategory) {\r\n case SisMapAssetCategory.Slope:\r\n result = result.concat(assets.map((v: any) => SlopeAdapter.adapt(v)));\r\n break;\r\n case SisMapAssetCategory.Lift:\r\n result = result.concat(assets.map((v: any) => LiftAdapter.adapt(v)));\r\n break;\r\n case SisMapAssetCategory.Trail:\r\n result = result.concat(assets.map((v: any) => TrailAdapter.adapt(v)));\r\n break;\r\n case SisMapAssetCategory.Poi:\r\n result = result.concat(assets.map((v: any) => POIAdapter.adapt(v)));\r\n break;\r\n case SisMapAssetCategory.Gastro:\r\n result = result.concat(assets.map((v: any) => GastroAdapter.adapt(v)));\r\n break;\r\n default:\r\n console.error(`Unexpected AssetCategory found: ${assetCategory}`);\r\n break;\r\n }\r\n });\r\n return result;\r\n })\r\n );\r\n }\r\n}\r\n","import { ChangeDetectorRef, Component, EventEmitter, OnInit, Output } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n FormArray,\r\n FormControl,\r\n FormGroup,\r\n ValidationErrors,\r\n ValidatorFn,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { debounceTime, filter, fromEvent, map, merge, Observable, scan, Subject, switchMap, takeUntil } from 'rxjs';\r\nimport { parseCurveCoords } from 'src/app/core/leaflet-helper/curve-coords';\r\nimport { Unsubscriber } from 'src/app/core/unsubscriber/unsubscriber';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { SisMapAssetCategory } from 'src/app/maps/domain/masterdata/sismap-asset-category.enum';\r\nimport { MapStateService } from 'src/app/maps/map/map-state.service';\r\nimport { AssetEditorService } from 'src/app/maps/map/sidepane/asset-editor-tab/asset-editor.service';\r\nimport { AssetEditorConfig } from 'src/app/maps/map/sidepane/asset-editor-tab/asset-editor-config.model';\r\n\r\n@Component({\r\n selector: 'sis-sismap-sidepane-asset-editor-tab',\r\n templateUrl: './asset-editor-tab.component.html',\r\n styleUrls: ['./asset-editor-tab.component.scss'],\r\n})\r\nexport class AssetEditorTabComponent extends Unsubscriber implements OnInit {\r\n @Output() changeToAddAssetTab = new EventEmitter();\r\n\r\n asset: MapElement;\r\n iconPositionInputs: FormArray;\r\n formGroup: FormGroup;\r\n config: AssetEditorConfig = {\r\n editableProperties: [],\r\n adaptForApi: null,\r\n };\r\n maxIconCountReached: boolean;\r\n canRemoveIcon: boolean;\r\n canSave: boolean;\r\n canBeDuplicated: boolean;\r\n originalAssetMaxIconPositionIndex: number;\r\n hasChanges: boolean;\r\n selectedIconIndex: number;\r\n\r\n category: string;\r\n\r\n private readonly kill$ = new Subject();\r\n private readonly errors = new Set();\r\n\r\n readonly hasErrors$ = this.mapStateService.selectedElement$.pipe(\r\n switchMap(({ element }) =>\r\n this.assetEditorService.assetsWithError$.pipe(map((assetsWithError) => assetsWithError.has(element?.guid)))\r\n )\r\n );\r\n\r\n constructor(\r\n private mapStateService: MapStateService,\r\n private assetEditorService: AssetEditorService,\r\n private changeDetector: ChangeDetectorRef\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.mapStateService.selectedElement$.pipe(takeUntil(this.onDestroy$)).subscribe(({ element, iconIndex }) => {\r\n if (!element) {\r\n this.asset = null;\r\n this.category = null;\r\n this.changeToAddAssetTab.emit();\r\n this.detectChanges();\r\n return;\r\n }\r\n\r\n this.config = this.assetEditorService.configs.get(element.category) ?? {\r\n editableProperties: [],\r\n adaptForApi: null,\r\n };\r\n this.errors.clear();\r\n\r\n this.setOriginalAsset(element);\r\n\r\n this.asset = element;\r\n this.category = SisMapAssetCategory[element.category];\r\n const originalAsset = this.assetEditorService.editedAssetOriginals.get(element.guid);\r\n this.originalAssetMaxIconPositionIndex = originalAsset.iconPositions?.length - 1;\r\n this.selectedIconIndex = iconIndex;\r\n\r\n this.canBeDuplicated = this.config.canBeDuplicated;\r\n\r\n this.initForm();\r\n });\r\n\r\n this.mapStateService.elementMoved$\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe(({ element, iconIndex, newPosition }) => {\r\n this.setOriginalAsset(element);\r\n\r\n element.iconPositions[iconIndex] = newPosition;\r\n\r\n this.mapStateService.selectElement(element, iconIndex);\r\n });\r\n\r\n this.setupArrowkeyListeners();\r\n }\r\n\r\n addPosition(): void {\r\n if (this.maxIconCountReached) {\r\n return;\r\n }\r\n\r\n const x = this.asset.iconPositions[0]?.x ?? 200;\r\n const y = (this.asset.iconPositions[0]?.y ?? 200) + this.asset.iconWidth;\r\n\r\n this.iconPositionInputs.push(\r\n new FormGroup({\r\n x: new FormControl(x, [Validators.required]),\r\n y: new FormControl(y, [Validators.required]),\r\n })\r\n );\r\n\r\n this.detectChanges();\r\n }\r\n\r\n removePosition(removedIndex: number): void {\r\n // an asset must have a path or at least one icon\r\n if (!this.canRemoveIcon) {\r\n return;\r\n }\r\n\r\n this.iconPositionInputs.removeAt(removedIndex);\r\n }\r\n\r\n delete(): void {\r\n const assetToRemove = this.asset;\r\n this.mapStateService.selectElement(null, null);\r\n this.assetEditorService.removeAsset(assetToRemove);\r\n }\r\n\r\n duplicate(): void {\r\n const curPosition = this.asset.iconPositions[0];\r\n const assetClone = Object.assign(Object.create(Object.getPrototypeOf(this.asset)), this.asset);\r\n assetClone.guid = undefined;\r\n this.assetEditorService.addAsset(assetClone, { x: curPosition.x - 20, y: curPosition.y + 20 });\r\n }\r\n\r\n reset(): void {\r\n const original = this.getOriginalAsset(this.asset);\r\n Object.keys(this.asset).forEach((key) => {\r\n this.asset[key] = original[key];\r\n });\r\n\r\n this.initForm();\r\n this.emitChangedEvent();\r\n }\r\n\r\n resetProperty(key: string): void {\r\n const original = this.getOriginalAsset(this.asset);\r\n this.asset[key] = original[key];\r\n\r\n this.formGroup.controls[key].setValue(this.asset[key]);\r\n }\r\n\r\n resetPosition(index: number): void {\r\n if (index > this.originalAssetMaxIconPositionIndex) {\r\n return;\r\n }\r\n\r\n const original = this.getOriginalAsset(this.asset);\r\n\r\n this.asset.iconPositions[index].x = original.iconPositions[index].x;\r\n this.asset.iconPositions[index].y = original.iconPositions[index].y;\r\n\r\n this.iconPositionInputs.at(index).patchValue(this.asset.iconPositions[index]);\r\n }\r\n\r\n private initForm(): void {\r\n this.kill$.next();\r\n\r\n this.iconPositionInputs = new FormArray([]);\r\n this.formGroup = new FormGroup(\r\n {\r\n iconPositions: this.iconPositionInputs,\r\n },\r\n {\r\n validators: [this.validatePath()],\r\n }\r\n );\r\n\r\n this.addPositionInputs();\r\n\r\n this.config.editableProperties.forEach((property) => {\r\n this.formGroup.addControl(\r\n property.key,\r\n new FormControl(this.asset[property.key], this.validateProperty.bind(this))\r\n );\r\n });\r\n\r\n this.formGroup.valueChanges\r\n .pipe(takeUntil(this.onDestroy$), takeUntil(this.kill$), debounceTime(10))\r\n .subscribe((value) => {\r\n const properties = this.config.editableProperties;\r\n\r\n properties\r\n .filter((p) => p.key !== AssetEditorService.path)\r\n .forEach((property) => {\r\n const newValue = value[property.key];\r\n\r\n if ((newValue === '' || newValue == null) && property.isNullable) {\r\n this.asset[property.key] = null;\r\n } else {\r\n if (property.isNumber) {\r\n let parsed = Number.parseFloat(newValue);\r\n if (isNaN(parsed)) {\r\n parsed = null;\r\n }\r\n this.asset[property.key] = parsed;\r\n } else {\r\n this.asset[property.key] = newValue;\r\n }\r\n }\r\n });\r\n\r\n this.asset.iconPositions = (value['iconPositions'] as Array<{ x: string; y: string }>).map(\r\n ({ x, y }, index: number) => {\r\n if (isNaN(Number.parseInt(x, 10)) || isNaN(Number.parseInt(y, 10))) {\r\n return this.asset.iconPositions[index];\r\n }\r\n return {\r\n x: Number.parseInt(x, 10),\r\n y: Number.parseInt(y, 10),\r\n };\r\n }\r\n );\r\n\r\n if (properties.some((property) => property.key === AssetEditorService.path)) {\r\n if (this.formGroup.get(AssetEditorService.path).valid) {\r\n this.asset.path = value[AssetEditorService.path] ?? null;\r\n }\r\n }\r\n\r\n this.emitChangedEvent();\r\n });\r\n\r\n this.checkChanges();\r\n this.detectChanges();\r\n }\r\n\r\n private addPositionInputs(): void {\r\n this.asset?.iconPositions?.forEach((iconPosition) =>\r\n this.iconPositionInputs.push(\r\n new FormGroup({\r\n x: new FormControl(iconPosition.x, [\r\n Validators.required,\r\n (c): ValidationErrors | null => (!isNaN(Number.parseInt(c.value, 10)) ? null : { notANumber: true }),\r\n ]),\r\n y: new FormControl(iconPosition.y, [\r\n Validators.required,\r\n (c): ValidationErrors | null => (!isNaN(Number.parseInt(c.value, 10)) ? null : { notANumber: true }),\r\n ]),\r\n })\r\n )\r\n );\r\n }\r\n\r\n private emitChangedEvent(): void {\r\n this.mapStateService.updateMapElement(this.asset);\r\n\r\n this.checkChanges();\r\n }\r\n\r\n private checkChanges(): void {\r\n this.maxIconCountReached = this.asset?.iconPositions?.length >= this.config.maxIconCount;\r\n this.canRemoveIcon = !(this.asset?.iconPositions?.length <= 1 && !this.asset.path);\r\n\r\n let hasChanges = false;\r\n\r\n if (this.asset) {\r\n const original = this.getOriginalAsset(this.asset);\r\n\r\n hasChanges =\r\n this.config.editableProperties.some((property) => this.asset[property.key] !== original[property.key]) ||\r\n JSON.stringify(this.asset.iconPositions) !== JSON.stringify(original.iconPositions);\r\n\r\n if (hasChanges || this.asset.newlyAdded) {\r\n this.assetEditorService.setUnsavedAsset(this.asset);\r\n } else {\r\n this.assetEditorService.removeUnsavedAsset(this.asset);\r\n }\r\n }\r\n\r\n this.hasChanges = hasChanges;\r\n }\r\n\r\n private checkPath(pathString: string): boolean {\r\n if (!this.asset) {\r\n return true;\r\n }\r\n if (!pathString && this.asset.category === SisMapAssetCategory.CustomPath) {\r\n return false;\r\n }\r\n if (!pathString && this.asset.category !== SisMapAssetCategory.CustomPath) {\r\n return this.asset.iconPositions?.length > 0;\r\n }\r\n\r\n const reEverythingAllowed = /[MZLHVCSQTA0-9-,.\\s]/g;\r\n\r\n const bContainsIllegalCharacter = !!pathString.replace(reEverythingAllowed, '').length;\r\n const bContainsAdjacentLetters = /[a-zA-Z][a-zA-Z]/.test(pathString);\r\n const bInvalidStart = /^[0-9-,.]/.test(pathString);\r\n const bInvalidEnd = /.*[-,.]$/.test(pathString.trim());\r\n\r\n const path = parseCurveCoords(pathString);\r\n\r\n return !(bContainsIllegalCharacter || bContainsAdjacentLetters || bInvalidStart || bInvalidEnd) && path != null;\r\n }\r\n\r\n private validatePath(): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const pathControl = control.get(AssetEditorService.path);\r\n\r\n const valid = this.checkPath(pathControl?.value);\r\n\r\n if (!valid) {\r\n pathControl?.setErrors({ path: true });\r\n return { path: true };\r\n }\r\n\r\n pathControl?.setErrors(null);\r\n return null;\r\n };\r\n }\r\n\r\n private detectChanges(): void {\r\n // Need to detach and reattach in order to prevent race conditions\r\n // with the default Angular change-detector\r\n this.changeDetector.detach();\r\n this.changeDetector.detectChanges();\r\n this.changeDetector.reattach();\r\n }\r\n\r\n private getOriginalAsset(element: MapElement): MapElement {\r\n this.setOriginalAsset(element);\r\n\r\n const originalAsset = JSON.parse(JSON.stringify(this.assetEditorService.editedAssetOriginals.get(element.guid)));\r\n return originalAsset;\r\n }\r\n\r\n private setOriginalAsset(element: MapElement): void {\r\n if (!this.assetEditorService.editedAssetOriginals.has(element.guid)) {\r\n const originalAsset = JSON.parse(JSON.stringify(element));\r\n\r\n this.assetEditorService.editedAssetOriginals.set(element.guid, originalAsset);\r\n }\r\n }\r\n\r\n private setupArrowkeyListeners(): void {\r\n const keyDown$: Observable = fromEvent(window, 'keydown');\r\n const keyUp$: Observable = fromEvent(window, 'keyup');\r\n\r\n const moveVector$ = merge(\r\n keyDown$.pipe(\r\n filter((event) => event.key === 'ArrowUp'),\r\n map(() => ({ x: 1, y: null }))\r\n ),\r\n keyUp$.pipe(\r\n filter((event) => event.key === 'ArrowUp'),\r\n map(() => ({ x: 0, y: null }))\r\n ),\r\n keyDown$.pipe(\r\n filter((event) => event.key === 'ArrowRight'),\r\n map(() => ({ x: null, y: 1 }))\r\n ),\r\n keyUp$.pipe(\r\n filter((event) => event.key === 'ArrowRight'),\r\n map(() => ({ x: null, y: 0 }))\r\n ),\r\n keyDown$.pipe(\r\n filter((event) => event.key === 'ArrowDown'),\r\n map(() => ({ x: -1, y: null }))\r\n ),\r\n keyUp$.pipe(\r\n filter((event) => event.key === 'ArrowDown'),\r\n map(() => ({ x: 0, y: null }))\r\n ),\r\n keyDown$.pipe(\r\n filter((event) => event.key === 'ArrowLeft'),\r\n map(() => ({ x: null, y: -1 }))\r\n ),\r\n keyUp$.pipe(\r\n filter((event) => event.key === 'ArrowLeft'),\r\n map(() => ({ x: null, y: 0 }))\r\n )\r\n ).pipe(\r\n scan(\r\n (acc, c) => {\r\n if (c.x != null) {\r\n acc.x = c.x;\r\n }\r\n if (c.y != null) {\r\n acc.y = c.y;\r\n }\r\n return acc;\r\n },\r\n { x: 0, y: 0 }\r\n )\r\n );\r\n\r\n moveVector$.pipe(takeUntil(this.onDestroy$)).subscribe(({ x, y }) => {\r\n if (this.asset && this.selectedIconIndex != null) {\r\n this.asset.iconPositions[this.selectedIconIndex].x += x;\r\n this.asset.iconPositions[this.selectedIconIndex].y += y;\r\n\r\n this.iconPositionInputs.at(this.selectedIconIndex).patchValue(this.asset.iconPositions[this.selectedIconIndex]);\r\n }\r\n });\r\n }\r\n\r\n private validateProperty(control: AbstractControl): ValidationErrors | null {\r\n const { value, root } = control;\r\n if (root == null || root === control) {\r\n return null;\r\n }\r\n const controlName = this.getControlName(control);\r\n let valid = true;\r\n\r\n if (controlName === AssetEditorService.path) {\r\n valid = this.checkPath(control.value);\r\n } else {\r\n const key = controlName;\r\n const property = this.config.editableProperties.find((p) => p.key === key);\r\n const nullCheckFailed = !property.isNullable && (value == null || value === '');\r\n const numberCheckFailed =\r\n property.isNumber && isNaN(Number(value)) && !(property.isNullable && (value == null || value === ''));\r\n valid = !nullCheckFailed && !numberCheckFailed;\r\n }\r\n\r\n let error = null;\r\n\r\n if (!valid) {\r\n this.errors.add(controlName);\r\n error = { [controlName]: true };\r\n } else {\r\n this.errors.delete(controlName);\r\n }\r\n\r\n if (this.errors.size === 0) {\r\n this.assetEditorService.removeAssetWithError(this.asset);\r\n } else {\r\n this.assetEditorService.setAssetWithError(this.asset);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n private getControlName(c: AbstractControl): string | null {\r\n const formGroup = c.parent.controls;\r\n return Object.keys(formGroup).find((name) => c === formGroup[name]) || null;\r\n }\r\n}\r\n","\r\n \r\n \r\n {{ this.assetCategory | uppercase }}\r\n \r\n \r\n \r\n {{ this.asset.label }} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Icon-Koordinaten: \r\n \r\n \r\n \r\n x: \r\n \r\n \r\n \r\n \r\n \r\n y: \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 {{ property.key }}: \r\n \r\n \r\n \r\n {{ value }}\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\nNichts ausgewählt\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport {\r\n catchError,\r\n combineLatest,\r\n firstValueFrom,\r\n map,\r\n merge,\r\n Observable,\r\n of,\r\n scan,\r\n shareReplay,\r\n startWith,\r\n Subject,\r\n tap,\r\n withLatestFrom,\r\n} from 'rxjs';\r\nimport { AssetEditorPostAsset } from 'src/app/maps/domain/asset-editor/asset-editor-post-asset.model';\r\nimport { AssetEditorPostBody } from 'src/app/maps/domain/asset-editor/asset-editor-post-body.model';\r\nimport { AssetEditorPostInitializeAssetStatus } from 'src/app/maps/domain/asset-editor/asset-editor-post-initialize-asset-status.model';\r\nimport { CustomIconAdapter } from 'src/app/maps/domain/masterdata/custom-icon.adapter';\r\nimport { CustomPathAdapter } from 'src/app/maps/domain/masterdata/custom-path.adapter';\r\nimport { GastroAdapter } from 'src/app/maps/domain/masterdata/gastro.adapter';\r\nimport { LiftAdapter } from 'src/app/maps/domain/masterdata/lift.adapter';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { MapPosition } from 'src/app/maps/domain/masterdata/map-position.model';\r\nimport { MasterDataService } from 'src/app/maps/domain/masterdata/masterdata.service';\r\nimport { PlaceAdapter } from 'src/app/maps/domain/masterdata/place.adapter';\r\nimport { POIAdapter } from 'src/app/maps/domain/masterdata/poi.adapter';\r\nimport { SisMapAssetCategory } from 'src/app/maps/domain/masterdata/sismap-asset-category.enum';\r\nimport { SlopeAdapter } from 'src/app/maps/domain/masterdata/slope.adapter';\r\nimport { TrailAdapter } from 'src/app/maps/domain/masterdata/trail.adapter';\r\nimport { WebcamAdapter } from 'src/app/maps/domain/masterdata/webcam.adapter';\r\nimport { Webcam } from 'src/app/maps/domain/masterdata/webcam.model';\r\nimport { WindAdapter } from 'src/app/maps/domain/masterdata/wind.adapter';\r\nimport { MapStateService } from 'src/app/maps/map/map-state.service';\r\nimport { AssetEditorConfig } from 'src/app/maps/map/sidepane/asset-editor-tab/asset-editor-config.model';\r\nimport { environment } from 'src/environments/environment';\r\nimport { v4 as v4guid } from 'uuid';\r\n\r\ninterface RemoveMapItem {\r\n element: MapElement;\r\n wasChanged: boolean;\r\n hadErrors: boolean;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AssetEditorService {\r\n static readonly path = 'path';\r\n\r\n readonly configs = new Map([\r\n [\r\n SisMapAssetCategory.Lift,\r\n {\r\n editableProperties: [\r\n { key: AssetEditorService.path },\r\n { key: 'pathColor', isNullable: true },\r\n { key: 'pathBackgroundColor', isNullable: true },\r\n { key: 'pathDashArray', isNullable: true },\r\n { key: 'pathWeight', isNumber: true, isNullable: true },\r\n ],\r\n adaptForApi: LiftAdapter.adaptForApi,\r\n },\r\n ],\r\n [\r\n SisMapAssetCategory.Slope,\r\n {\r\n editableProperties: [\r\n { key: AssetEditorService.path },\r\n { key: 'pathColor', isNullable: true },\r\n { key: 'pathDashArray', isNullable: true },\r\n { key: 'pathWeight', isNumber: true, isNullable: true },\r\n ],\r\n adaptForApi: SlopeAdapter.adaptForApi,\r\n },\r\n ],\r\n [\r\n SisMapAssetCategory.Trail,\r\n {\r\n editableProperties: [\r\n { key: AssetEditorService.path },\r\n { key: 'pathColor', isNullable: true },\r\n { key: 'pathDashArray', isNullable: true },\r\n { key: 'pathWeight', isNumber: true, isNullable: true },\r\n ],\r\n adaptForApi: TrailAdapter.adaptForApi,\r\n },\r\n ],\r\n [\r\n SisMapAssetCategory.Gastro,\r\n {\r\n maxIconCount: 1,\r\n editableProperties: [],\r\n adaptForApi: GastroAdapter.adaptForApi,\r\n },\r\n ],\r\n [\r\n SisMapAssetCategory.Poi,\r\n {\r\n editableProperties: [\r\n { key: AssetEditorService.path },\r\n { key: 'pathColor', isNullable: true },\r\n { key: 'pathDashArray', isNullable: true },\r\n { key: 'pathWeight', isNumber: true, isNullable: true },\r\n ],\r\n adaptForApi: POIAdapter.adaptForApi,\r\n },\r\n ],\r\n [\r\n SisMapAssetCategory.Place,\r\n {\r\n maxIconCount: 1,\r\n editableProperties: [\r\n { key: 'name' },\r\n { key: 'altitude', isNullable: true },\r\n { key: 'textColor', isNullable: true },\r\n { key: 'backgroundColor', isNullable: true },\r\n { key: 'fontSize', isNumber: true, isNullable: true },\r\n { key: 'border', isNullable: true },\r\n { key: 'borderRadius', isNumber: true, isNullable: true },\r\n { key: 'textOutline', isNullable: true },\r\n ],\r\n adaptForApi: PlaceAdapter.adaptForApi,\r\n canBeDuplicated: true,\r\n },\r\n ],\r\n [\r\n SisMapAssetCategory.CustomIcon,\r\n {\r\n maxIconCount: 1,\r\n editableProperties: [\r\n { key: 'iconSvgBlobName' },\r\n { key: 'name', isNullable: true },\r\n { key: 'url', isNullable: true },\r\n { key: 'iconHeight', isNumber: true },\r\n { key: 'iconWidth', isNumber: true },\r\n ],\r\n adaptForApi: CustomIconAdapter.adaptForApi,\r\n },\r\n ],\r\n [\r\n SisMapAssetCategory.CustomPath,\r\n {\r\n maxIconCount: 0,\r\n editableProperties: [\r\n { key: 'path' },\r\n { key: 'name' },\r\n { key: 'type', selectableValues: ['wandern', 'bike', 'schneeschuh'] },\r\n { key: 'pathColor', isNullable: true },\r\n { key: 'pathDashArray', isNullable: true },\r\n { key: 'pathWeight', isNumber: true, isNullable: true },\r\n ],\r\n adaptForApi: CustomPathAdapter.adaptForApi,\r\n },\r\n ],\r\n [\r\n SisMapAssetCategory.Webcam,\r\n {\r\n maxIconCount: 1,\r\n editableProperties: [\r\n { key: 'name' },\r\n { key: 'url' },\r\n { key: 'type', selectableValues: [Webcam.page, Webcam.iframe, Webcam.external] },\r\n {\r\n key: 'aspectRatio',\r\n selectableValues: [Webcam.ratio_16_9, Webcam.ratio_4_3, Webcam.ratio_3_2, Webcam.ratio_other],\r\n },\r\n ],\r\n adaptForApi: WebcamAdapter.adaptForApi,\r\n },\r\n ],\r\n [\r\n SisMapAssetCategory.Wind,\r\n {\r\n maxIconCount: 1,\r\n editableProperties: [{ key: 'name' }],\r\n adaptForApi: WindAdapter.adaptForApi,\r\n },\r\n ],\r\n ]);\r\n\r\n private readonly assetUpdatePostUrl = '/api/sismap/assetupdate/';\r\n private readonly assetInitStatusUrl = '/api/sismap/initassetstatus';\r\n\r\n private readonly addUnsavedAsset$ = new Subject();\r\n private readonly removeUnsavedAsset$ = new Subject();\r\n private readonly clearUnsavedAssets$ = new Subject();\r\n\r\n private readonly addAssetWithError$ = new Subject();\r\n private readonly removeAssetWithError$ = new Subject();\r\n private readonly clearAssetsWithError$ = new Subject();\r\n\r\n private readonly removeAsset$ = new Subject();\r\n private readonly restoreAsset$ = new Subject();\r\n private readonly clearRemovedAssets$ = new Subject();\r\n\r\n private readonly addAsset$ = new Subject();\r\n\r\n readonly unsavedAssets$: Observable> = merge(\r\n this.addUnsavedAsset$.pipe(\r\n map(\r\n (asset) =>\r\n (assetMap: Map): Map =>\r\n assetMap.set(asset.guid, asset)\r\n )\r\n ),\r\n this.removeUnsavedAsset$.pipe(\r\n map((asset) => (assetMap: Map): Map => {\r\n assetMap.delete(asset.guid);\r\n return assetMap;\r\n })\r\n ),\r\n this.clearUnsavedAssets$.pipe(map(() => (): Map => new Map()))\r\n ).pipe(\r\n scan((assetMap, fn) => fn(assetMap), new Map()),\r\n startWith(new Map()),\r\n shareReplay(1)\r\n );\r\n\r\n readonly assetsWithError$: Observable> = merge(\r\n this.addAssetWithError$.pipe(\r\n map(\r\n (asset) =>\r\n (assetMap: Map): Map =>\r\n assetMap.set(asset.guid, asset)\r\n )\r\n ),\r\n this.removeAssetWithError$.pipe(\r\n map((asset) => (assetMap: Map): Map => {\r\n assetMap.delete(asset.guid);\r\n return assetMap;\r\n })\r\n ),\r\n this.clearAssetsWithError$.pipe(map(() => (): Map => new Map()))\r\n ).pipe(\r\n scan((assetMap, fn) => fn(assetMap), new Map()),\r\n startWith(new Map()),\r\n shareReplay(1)\r\n );\r\n\r\n readonly removedAssets$: Observable> = merge(\r\n this.removeAsset$.pipe(\r\n withLatestFrom(this.unsavedAssets$, this.assetsWithError$),\r\n map(\r\n ([asset, unsavedAssets, errorAssets]) =>\r\n (assetMap: Map): Map => {\r\n const wasChanged = unsavedAssets.has(asset.guid);\r\n const hadErrors = errorAssets.has(asset.guid);\r\n this.removeUnsavedAsset(asset);\r\n this.removeAssetWithError(asset);\r\n if (!asset.newlyAdded) {\r\n return assetMap.set(asset.guid, {\r\n element: asset,\r\n wasChanged,\r\n hadErrors,\r\n });\r\n } else {\r\n this.editedAssetOriginals.delete(asset.guid);\r\n return assetMap;\r\n }\r\n }\r\n )\r\n ),\r\n this.restoreAsset$.pipe(\r\n map((asset) => (assetMap: Map): Map => {\r\n const deletedAsset = assetMap.get(asset.guid);\r\n assetMap.delete(asset.guid);\r\n if (deletedAsset.wasChanged) {\r\n this.setUnsavedAsset(asset);\r\n }\r\n if (deletedAsset.hadErrors) {\r\n this.setAssetWithError(asset);\r\n }\r\n return assetMap;\r\n })\r\n ),\r\n this.clearRemovedAssets$.pipe(map(() => (): Map => new Map()))\r\n ).pipe(\r\n scan((assetMap, fn) => fn(assetMap), new Map()),\r\n startWith(new Map()),\r\n shareReplay(1)\r\n );\r\n\r\n readonly hasChanges$: Observable = combineLatest([this.unsavedAssets$, this.removedAssets$]).pipe(\r\n map(([unsavedAssets, removedAssets]) => unsavedAssets.size > 0 || removedAssets.size > 0),\r\n startWith(false),\r\n shareReplay(1)\r\n );\r\n\r\n readonly addedAsset$: Observable = this.addAsset$.asObservable();\r\n\r\n editedAssetOriginals = new Map();\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n private activatedRoute: ActivatedRoute,\r\n private masterDataService: MasterDataService,\r\n private mapStateService: MapStateService\r\n ) {}\r\n\r\n async saveAll(): Promise {\r\n const queryParams = await firstValueFrom(this.activatedRoute.queryParams);\r\n const editToken = queryParams['edit'];\r\n\r\n const assetToSaveMap = await firstValueFrom(this.unsavedAssets$);\r\n const assetsToRemoveMap = await firstValueFrom(this.removedAssets$);\r\n const assetsToSave = [...assetToSaveMap.values()];\r\n const assetsToRemove = [...assetsToRemoveMap.values()].filter(\r\n (e) => !e.element.newlyAdded && !assetToSaveMap.has(e.element.guid)\r\n );\r\n\r\n const mapGuid = await firstValueFrom(\r\n this.masterDataService.masterData.pipe(map((masterData) => masterData?.mapGuid))\r\n );\r\n\r\n const updatedAssets: AssetEditorPostAsset[] = assetsToSave.map((asset) => {\r\n const config = this.configs.get(asset.category);\r\n\r\n return config.adaptForApi(asset);\r\n });\r\n\r\n const removedAssets: AssetEditorPostAsset[] = assetsToRemove.map((asset) => {\r\n const config = this.configs.get(asset.element.category);\r\n\r\n return config.adaptForApi(asset.element);\r\n });\r\n\r\n const postData: AssetEditorPostBody = {\r\n mapGuid,\r\n editToken,\r\n removedAssets,\r\n updatedAssets,\r\n };\r\n\r\n const postRequest$ = this.httpClient.post(`${environment.baseUrlApi}${this.assetUpdatePostUrl}`, postData).pipe(\r\n map(() => true),\r\n catchError(() => of(false)),\r\n tap((success) => {\r\n if (success) {\r\n assetsToSave.forEach((asset) => (asset.newlyAdded = false));\r\n this.editedAssetOriginals.clear();\r\n this.clearRemovedAssets();\r\n this.clearUnsavedAssets();\r\n }\r\n })\r\n );\r\n\r\n return firstValueFrom(postRequest$);\r\n }\r\n\r\n async initializeAssetStatus(): Promise {\r\n const queryParams = await firstValueFrom(this.activatedRoute.queryParams);\r\n const editToken = queryParams['edit'];\r\n const mapGuid = await firstValueFrom(\r\n this.masterDataService.masterData.pipe(map((masterData) => masterData?.mapGuid))\r\n );\r\n\r\n const data: AssetEditorPostInitializeAssetStatus = {\r\n mapGuid,\r\n editToken,\r\n };\r\n await firstValueFrom(this.httpClient.post(`${environment.baseUrlApi}${this.assetInitStatusUrl}`, data));\r\n }\r\n\r\n async addAsset(element: MapElement, position?: MapPosition): Promise {\r\n element.guid ??= v4guid();\r\n element.name ??= '';\r\n element.newlyAdded = true;\r\n\r\n if (position) {\r\n position.x = Math.round(position.x);\r\n position.y = Math.round(position.y);\r\n element.iconPositions = [position];\r\n } else {\r\n element.iconPositions = [];\r\n }\r\n\r\n this.addUnsavedAsset$.next(element);\r\n\r\n await this.masterDataService.addMapElement(element);\r\n\r\n this.mapStateService.selectElement(element, 0);\r\n\r\n this.addAsset$.next(element);\r\n }\r\n\r\n async removeAsset(element: MapElement): Promise {\r\n this.removeAsset$.next(element);\r\n this.removeAssetWithError(element);\r\n await this.masterDataService.removeMapElement(element);\r\n }\r\n\r\n async restoreAsset(element: MapElement): Promise {\r\n this.restoreAsset$.next(element);\r\n await this.masterDataService.addMapElement(element);\r\n this.mapStateService.selectElement(element, 0);\r\n }\r\n\r\n clearRemovedAssets(): void {\r\n this.clearRemovedAssets$.next();\r\n }\r\n\r\n setUnsavedAsset(asset: MapElement): void {\r\n this.addUnsavedAsset$.next(asset);\r\n }\r\n\r\n removeUnsavedAsset(asset: MapElement): void {\r\n this.removeUnsavedAsset$.next(asset);\r\n }\r\n\r\n clearUnsavedAssets(): void {\r\n this.clearUnsavedAssets$.next();\r\n }\r\n\r\n setAssetWithError(asset: MapElement): void {\r\n this.addAssetWithError$.next(asset);\r\n }\r\n\r\n removeAssetWithError(asset: MapElement): void {\r\n this.removeAssetWithError$.next(asset);\r\n }\r\n\r\n clearAssetsWithError(): void {\r\n this.clearAssetsWithError$.next();\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { combineLatest, firstValueFrom, map, startWith, takeUntil } from 'rxjs';\r\nimport { Unsubscriber } from 'src/app/core/unsubscriber/unsubscriber';\r\nimport { UserMessage } from 'src/app/core/user-message/user-message.model';\r\nimport { UserMessageService } from 'src/app/core/user-message/user-message.service';\r\nimport { UserMessageColor } from 'src/app/core/user-message/user-message-color';\r\nimport { UserMessageIcon } from 'src/app/core/user-message/user-message-icon';\r\nimport { SisMapAssetCategory } from 'src/app/maps/domain/masterdata/sismap-asset-category.enum';\r\nimport { MapStateService } from 'src/app/maps/map/map-state.service';\r\nimport { AssetEditorService } from 'src/app/maps/map/sidepane/asset-editor-tab/asset-editor.service';\r\n\r\n@Component({\r\n selector: 'sis-sismap-sidepane',\r\n templateUrl: './sidepane.component.html',\r\n styleUrls: ['./sidepane.component.scss'],\r\n})\r\nexport class SidepaneComponent extends Unsubscriber implements OnInit {\r\n readonly hasErrors$ = this.assetEditorService.assetsWithError$.pipe(\r\n map((assetsWithError) => assetsWithError.size > 0)\r\n );\r\n\r\n readonly tabs = ['Eigenschaften', 'Hinzufügen'];\r\n\r\n readonly canSave$ = combineLatest([this.hasErrors$, this.assetEditorService.hasChanges$]).pipe(\r\n map(([hasErrors, hasChanges]) => !hasErrors && hasChanges),\r\n startWith(false)\r\n );\r\n\r\n readonly editToken$ = this.activatedRoute.queryParams.pipe(map((params) => params['edit']));\r\n readonly assetsWithErrorTooltip$ = this.assetEditorService.assetsWithError$.pipe(\r\n map((assetMap) =>\r\n [...assetMap.values()].map((asset) => `${SisMapAssetCategory[asset.category]}: ${asset.name}`).join(' \\n ')\r\n )\r\n );\r\n\r\n selectedTab = 1;\r\n\r\n constructor(\r\n private assetEditorService: AssetEditorService,\r\n private userMessageService: UserMessageService,\r\n private mapStateService: MapStateService,\r\n private activatedRoute: ActivatedRoute,\r\n private router: Router\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.mapStateService.elementClicked$\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((element) => (this.selectedTab = element.element == null ? 1 : 0));\r\n this.assetEditorService.addedAsset$\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((element) => (this.selectedTab = element == null ? 1 : 0));\r\n }\r\n\r\n changeToTab(tabIndex: number): void {\r\n this.selectedTab = tabIndex;\r\n }\r\n\r\n async save(): Promise {\r\n const success = await this.assetEditorService.saveAll();\r\n\r\n if (success) {\r\n const selectedElement = await firstValueFrom(this.mapStateService.selectedElement$);\r\n this.mapStateService.selectElement(selectedElement.element, selectedElement.iconIndex);\r\n }\r\n\r\n const userMessage = new UserMessage({\r\n color: success ? UserMessageColor.green : UserMessageColor.red,\r\n durationMs: 4000,\r\n icon: success ? UserMessageIcon.success : UserMessageIcon.failed,\r\n message: success ? 'user.message.success' : 'user.message.failed',\r\n position: 'top',\r\n });\r\n\r\n const toast = await this.userMessageService.showSingleToast(userMessage);\r\n await toast.present();\r\n }\r\n\r\n async initStatus(): Promise {\r\n let userMessage: UserMessage;\r\n try {\r\n await this.assetEditorService.initializeAssetStatus();\r\n userMessage = new UserMessage({\r\n color: UserMessageColor.green,\r\n durationMs: 4000,\r\n icon: UserMessageIcon.success,\r\n message: 'user.message.statusInitSuccess',\r\n position: 'top',\r\n });\r\n } catch (e) {\r\n userMessage = new UserMessage({\r\n color: UserMessageColor.red,\r\n durationMs: 4000,\r\n icon: UserMessageIcon.failed,\r\n message: 'user.message.statusInitFailed',\r\n position: 'top',\r\n });\r\n }\r\n const toast = await this.userMessageService.showSingleToast(userMessage);\r\n await toast.present();\r\n }\r\n\r\n tokenInput(event: any): void {\r\n const token = event.target.value;\r\n this.router.navigate([], {\r\n relativeTo: this.activatedRoute,\r\n queryParams: { edit: token },\r\n queryParamsHandling: 'merge',\r\n });\r\n }\r\n}\r\n","\r\n \r\n \r\n \r\n {{ tab }}\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 EditToken: \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { CurvePathData } from '@elfalem/leaflet-curve';\r\nimport { Marker } from 'leaflet';\r\nimport { firstValueFrom, map, Observable, shareReplay } from 'rxjs';\r\nimport { IconHelper } from 'src/app/core/leaflet-helper/icon-helper';\r\nimport { AssetStatus } from 'src/app/maps/domain/livedata/status.enum';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { MasterDataService } from 'src/app/maps/domain/masterdata/masterdata.service';\r\nimport { CurveEndMarkers } from 'src/app/maps/map/style/curve-end-markers.model';\r\nimport { IconColor } from 'src/app/maps/map/style/icon-color.model';\r\nimport { MapStyleAndermatt } from 'src/app/maps/map/style/styles/andermatt.style';\r\nimport { MapStyle } from 'src/app/maps/map/style/styles/map-style.base';\r\nimport { MapStyleSisag } from 'src/app/maps/map/style/styles/sisag.style';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MapStyleService {\r\n private readonly styleMap = new Map([\r\n ['andermatt', new MapStyleAndermatt(this.iconHelper)],\r\n ['sisag', new MapStyleSisag(this.iconHelper)],\r\n ]);\r\n\r\n private currentStyle$: Observable = this.masterDataService.masterData.pipe(\r\n map((masterData) => this.styleMap.get(masterData.style)),\r\n shareReplay({ bufferSize: 1, refCount: true })\r\n );\r\n\r\n constructor(private masterDataService: MasterDataService, private iconHelper: IconHelper) {}\r\n\r\n async getStyleName(): Promise {\r\n const style = await this.getStyle();\r\n return style.name;\r\n }\r\n\r\n async getIconSvg(iconName: string): Promise {\r\n const style = await this.getStyle();\r\n return style.getIconSvg(iconName);\r\n }\r\n async getLayerIconSvgUrl(layerIconName: string, alternateStyle = false): Promise {\r\n const style = await this.getStyle();\r\n return style.getLayerIconSvgUrl(layerIconName, alternateStyle);\r\n }\r\n async getSeasonIconSvgUrl(seasonIconName: string, alternateStyle = false): Promise {\r\n const style = await this.getStyle();\r\n return style.getSeasonIconSvgUrl(seasonIconName, alternateStyle);\r\n }\r\n\r\n async createCurveEndMarkers(\r\n curveCoords: CurvePathData,\r\n color: string,\r\n element: MapElement\r\n ): Promise {\r\n const style = await this.getStyle();\r\n return style.createCurveEndMarkers(curveCoords, color, element);\r\n }\r\n async updateCurveEndMarkers(\r\n curveCoords: CurvePathData,\r\n curveEndMarkers: CurveEndMarkers,\r\n color: string,\r\n element: MapElement\r\n ): Promise {\r\n const style = await this.getStyle();\r\n style.updateCurveEndMarkers(curveCoords, curveEndMarkers, color, element);\r\n }\r\n async zoomCurveEndMarkers(curveEndMarkers: CurveEndMarkers, scaling: number): Promise {\r\n const style = await this.getStyle();\r\n style.zoomCurveEndMarkers(curveEndMarkers, scaling);\r\n }\r\n\r\n async setHighlight(curveEndMarkers: CurveEndMarkers, highlight: boolean): Promise {\r\n const style = await this.getStyle();\r\n style.setHighlight(curveEndMarkers, highlight);\r\n }\r\n\r\n async getLiftColor(assetStatus: AssetStatus, element: MapElement, overrideColor = false): Promise {\r\n const style = await this.getStyle();\r\n return style.getLiftColor(assetStatus, element, overrideColor);\r\n }\r\n\r\n async getColor(status: AssetStatus): Promise {\r\n const style = await this.getStyle();\r\n return style.getColor(status);\r\n }\r\n\r\n async setIconColor(icon: Marker, backgroundColor: string, symbolColor?: string): Promise {\r\n const style = await this.getStyle();\r\n style.setIconColor(icon, backgroundColor, symbolColor);\r\n }\r\n async setIconBorder(icon: Marker): Promise {\r\n const style = await this.getStyle();\r\n style.setIconBorder(icon);\r\n }\r\n\r\n async setSidepaneIconColor(icon: string, backgroundColor: string, symbolColor?: string): Promise {\r\n const style = await this.getStyle();\r\n return style.setSidepaneIconColor(icon, backgroundColor, symbolColor);\r\n }\r\n\r\n async createCurvePopupContent(\r\n element: MapElement,\r\n showLabel: boolean\r\n ): Promise<{ popupContent: string; className: string }> {\r\n const style = await this.getStyle();\r\n return style.createCurvePopupContent(element, showLabel);\r\n }\r\n\r\n async createIconPopupContent(\r\n element: MapElement,\r\n showLabel: boolean\r\n ): Promise<{ popupContent: string; className: string }> {\r\n const style = await this.getStyle();\r\n return style.createIconPopupContent(element, showLabel);\r\n }\r\n\r\n async getSignPostUrl(): Promise {\r\n const style = await this.getStyle();\r\n const blob = style.getSignPostSvgUrl();\r\n return `${environment.baseUrlPublicAssets}/${blob}`;\r\n }\r\n\r\n private async getStyle(): Promise {\r\n return firstValueFrom(this.currentStyle$);\r\n }\r\n}\r\n","import { CurvePathData } from '@elfalem/leaflet-curve';\r\nimport { Circle, circle, latLng, Marker } from 'leaflet';\r\nimport { IconHelper } from 'src/app/core/leaflet-helper/icon-helper';\r\nimport { AssetStatus } from 'src/app/maps/domain/livedata/status.enum';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { SisMapAssetCategory } from 'src/app/maps/domain/masterdata/sismap-asset-category.enum';\r\nimport { CurveEndMarkers } from 'src/app/maps/map/style/curve-end-markers.model';\r\nimport { IconColor } from 'src/app/maps/map/style/icon-color.model';\r\nimport { MapStyle } from 'src/app/maps/map/style/styles/map-style.base';\r\n\r\nexport class MapStyleAndermatt extends MapStyle {\r\n readonly name = 'andermatt';\r\n\r\n private readonly curveEndMarkerVisibleRadius = 2;\r\n private readonly curveEndMarkerHighlightRadius = 5;\r\n\r\n private readonly urlBlobPath = 'sismap/styles/andermatt/';\r\n private readonly statusIconNames = ['closed', 'disabled', 'preparation', 'open'];\r\n private readonly iconNameLetterMap = new Map([\r\n ['zahnradbahn', 'a'],\r\n ['gondelbahn', 'd'],\r\n ['pendelbahn', 'f'],\r\n ['sesselbahn3', 'g'],\r\n ['sesselbahn4', 'g'],\r\n ['sesselbahn6', 'g'],\r\n ['skilift', 'l'],\r\n ['foerderband', '»'],\r\n ['pistefreeride', 'j'],\r\n ['pisteleicht', 'j'],\r\n ['pistemittel', 'j'],\r\n ['pisteschwer', 'j'],\r\n ['rennpiste', 'j'],\r\n ['schlitteln', 'h'],\r\n ['rodeln', '\\u{201A}'],\r\n ['langlaufklassisch', '\\u{203A}'],\r\n ['langlaufskating', '\\u{201C}'],\r\n ['crosscountrycrossskillspark', '\\u{201C}'],\r\n ['wandern', 'u'],\r\n ['schneeschuh', '\\u{20BD}'],\r\n ['sos', 'n'],\r\n ['kinderskiland', '–'],\r\n ['funpark', '‹'],\r\n ['snowpark', '‹'],\r\n ['hotel', '/'],\r\n ['restaurant', '\\u{0027}'],\r\n ['bar', '•'],\r\n ['lvs', '¡'],\r\n ['webcam', '\\u{0F0009}'],\r\n ['atc', '\\u{0F0000}'],\r\n ]);\r\n\r\n private readonly layerIconNameLetterMap = new Map([\r\n ['anlagen', 'd'],\r\n ['pisten', 'j'],\r\n ['langlauf', '\\u{203A}'],\r\n ['schlitteln', 'h'],\r\n ['wandern', 'u'],\r\n ['schneeschuh', '\\u{20BD}'],\r\n ['bike', '('],\r\n ['gastro', '\\u{0027}'],\r\n ['poi', '฿'],\r\n ['webcam', '\\u{0F0009}'],\r\n ['winter', '˙'],\r\n ['summer', '˘'],\r\n ]);\r\n\r\n constructor(protected iconHelper: IconHelper) {\r\n super(iconHelper);\r\n }\r\n\r\n async getIconSvg(iconName: string): Promise {\r\n if (this.statusIconNames.includes(iconName)) {\r\n return this.iconHelper.getIcon(`${this.urlBlobPath}${iconName}.svg`);\r\n }\r\n\r\n const letter = this.iconNameLetterMap.get(iconName);\r\n if (!letter) {\r\n return '';\r\n }\r\n\r\n const svg = `\r\n \r\n \r\n ${letter}\r\n \r\n `;\r\n\r\n return svg;\r\n }\r\n\r\n getLayerIconSvgUrl(layerIconName: string, alternateStyle: boolean): string {\r\n const letter = this.layerIconNameLetterMap.get(layerIconName);\r\n if (!letter) {\r\n return '';\r\n }\r\n\r\n const fontFamily = alternateStyle ? 'ASD Piktogramme Medium-Negativ' : 'ASD Piktogramme Medium-Positiv';\r\n // urls generated with https://transfonter.org/ (tick base64 and input the required characters): u02D8, u02D9, u0064, u006A, u0068, u0075, u0027, u0E3F, u0F0009, u20BD, 203A\r\n const fontSrc = alternateStyle\r\n ? `url('data:font/woff2;charset=utf-8;base64,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') format('woff2');`\r\n : `url('data:font/woff2;charset=utf-8;base64,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') format('woff2');`;\r\n\r\n const svg = `\r\n \r\n \r\n ${letter}\r\n `;\r\n\r\n const blob = new Blob([svg], { type: 'image/svg+xml' });\r\n const svgUrl = URL.createObjectURL(blob);\r\n\r\n return svgUrl;\r\n }\r\n\r\n getSeasonIconSvgUrl(layerIconName: string, alternateStyle: boolean): string {\r\n return this.getLayerIconSvgUrl(layerIconName, alternateStyle);\r\n }\r\n\r\n createCurveEndMarkers(curveCoords: CurvePathData, color: string, element: MapElement): CurveEndMarkers {\r\n if (curveCoords.length && element.category === SisMapAssetCategory.Lift) {\r\n const start: number[] = curveCoords.find((v) => Array.isArray(v)) as number[];\r\n const end: number[] = curveCoords[curveCoords.length - 1] as number[];\r\n\r\n const latLngStart = latLng(start[0], start[1]);\r\n const latLngEnd = latLng(end[0], end[1]);\r\n\r\n return {\r\n visible: [\r\n circle(latLngStart, {\r\n radius: this.curveEndMarkerVisibleRadius,\r\n color,\r\n fillColor: color,\r\n fillOpacity: 1,\r\n pane: element.paneName,\r\n }),\r\n circle(latLngEnd, {\r\n radius: this.curveEndMarkerVisibleRadius,\r\n color,\r\n fillColor: color,\r\n fillOpacity: 1,\r\n pane: element.paneName,\r\n }),\r\n ],\r\n highlight: [\r\n circle(latLngStart, {\r\n radius: this.curveEndMarkerHighlightRadius,\r\n color,\r\n fillColor: color,\r\n fillOpacity: 0,\r\n opacity: 0,\r\n pane: element.paneName,\r\n }),\r\n circle(latLngEnd, {\r\n radius: this.curveEndMarkerHighlightRadius,\r\n color,\r\n fillColor: color,\r\n fillOpacity: 0,\r\n opacity: 0,\r\n pane: element.paneName,\r\n }),\r\n ],\r\n };\r\n }\r\n\r\n return { visible: [], highlight: [] };\r\n }\r\n\r\n updateCurveEndMarkers(\r\n curveCoords: CurvePathData,\r\n curveEndMarkers: CurveEndMarkers,\r\n color: string,\r\n element: MapElement\r\n ): void {\r\n if (element.category === SisMapAssetCategory.Lift) {\r\n const start: number[] = curveCoords.find((v) => Array.isArray(v)) as number[];\r\n const end: number[] = curveCoords[curveCoords.length - 1] as number[];\r\n\r\n const latLngStart = latLng(start[0], start[1]);\r\n const latLngEnd = latLng(end[0], end[1]);\r\n\r\n const style = {\r\n color,\r\n fillColor: color,\r\n };\r\n\r\n (curveEndMarkers.visible[0] as Circle).setLatLng(latLngStart).setStyle(style);\r\n (curveEndMarkers.visible[1] as Circle).setLatLng(latLngEnd).setStyle(style);\r\n (curveEndMarkers.highlight[0] as Circle).setLatLng(latLngStart).setStyle(style);\r\n (curveEndMarkers.highlight[1] as Circle).setLatLng(latLngEnd).setStyle(style);\r\n }\r\n }\r\n\r\n zoomCurveEndMarkers(curveEndMarkers: CurveEndMarkers, scaling: number): void {\r\n curveEndMarkers.visible.forEach((m: Circle) => m.setRadius(this.curveEndMarkerVisibleRadius + 0.8 * scaling));\r\n curveEndMarkers.highlight.forEach((m: Circle) => m.setRadius(this.curveEndMarkerHighlightRadius + 0.8 * scaling));\r\n }\r\n\r\n setHighlight(curveEndMarkers: CurveEndMarkers, highlight: boolean): void {\r\n (curveEndMarkers.highlight[0] as Circle)?.setStyle({\r\n fillOpacity: highlight ? 0.5 : 0,\r\n });\r\n\r\n (curveEndMarkers.highlight[1] as Circle)?.setStyle({\r\n fillOpacity: highlight ? 0.5 : 0,\r\n });\r\n }\r\n\r\n getLiftColor(assetStatus: AssetStatus, element: MapElement, overrideColor = false): IconColor {\r\n if (element.pathColor != null && !overrideColor) {\r\n return { statusColor: element.pathColor, textColor: '#ffffff' };\r\n }\r\n\r\n switch (assetStatus) {\r\n case AssetStatus.Open:\r\n return { statusColor: '#00ff10', textColor: '#ffffff' };\r\n case AssetStatus.Closed:\r\n return { statusColor: '#df360e', textColor: '#ffffff' };\r\n case AssetStatus.Preparation:\r\n return { statusColor: '#e68523', textColor: '#ffffff' };\r\n case AssetStatus.Disabled:\r\n return { statusColor: '#555555', textColor: '#ffffff' };\r\n case AssetStatus.NoStatus:\r\n return { statusColor: '#555555', textColor: '#ffffff' };\r\n default:\r\n return { statusColor: '#555555', textColor: '#ffffff' };\r\n }\r\n }\r\n\r\n getColor(status: AssetStatus): IconColor {\r\n switch (status) {\r\n case AssetStatus.Open:\r\n return { statusColor: '#00ff10', textColor: '#ffffff' };\r\n case AssetStatus.Closed:\r\n return { statusColor: '#df360e', textColor: '#ffffff' };\r\n case AssetStatus.Preparation:\r\n return { statusColor: '#e68523', textColor: '#ffffff' };\r\n case AssetStatus.Disabled:\r\n return { statusColor: '#ffffff', textColor: '#000000' };\r\n case AssetStatus.NoStatus:\r\n return { statusColor: '#ffffff', textColor: '#000000' };\r\n default:\r\n return { statusColor: '#ffffff', textColor: '#000000' };\r\n }\r\n }\r\n\r\n setIconColor(icon: Marker, backgroundColor: string, symbolColor?: string): void {\r\n const e = icon.getElement()?.querySelectorAll('#circle')[0];\r\n e?.setAttribute('stroke', backgroundColor);\r\n }\r\n\r\n setSidepaneIconColor(iconSvg: string, backgroundColor: string, symbolColor?: string): string {\r\n return this.setSvgColor('circle', backgroundColor, iconSvg);\r\n }\r\n\r\n private setSvgColor(id: string, color: string, iconSvg: string): string {\r\n const regex = new RegExp(`(id=\"${id}\"[^>]*?)stroke=\"[^\"]*\"`);\r\n if (iconSvg.match(regex)) {\r\n iconSvg = iconSvg.replace(regex, `$1stroke=\"${color}\"`);\r\n } else {\r\n iconSvg = iconSvg.replace(`id=\"${id}\"`, `id=\"${id}\" stroke=\"${color}\"`);\r\n }\r\n return iconSvg;\r\n }\r\n\r\n setIconBorder(icon: Marker): void {}\r\n\r\n async createCurvePopupContent(\r\n element: MapElement,\r\n showLabel: boolean\r\n ): Promise<{ popupContent: string; className: string }> {\r\n const label = showLabel && element.label ? `${element.label} ` : '';\r\n\r\n let svg: string;\r\n if (element.status != null && element.status !== AssetStatus.NoStatus) {\r\n const iconName = AssetStatus[element.status]?.toLocaleLowerCase();\r\n if (iconName) {\r\n svg = await this.getIconSvg(iconName);\r\n }\r\n }\r\n\r\n const icon = svg ? ` ${svg}` : '';\r\n const popupContent = `${label}${element.name}${icon}`;\r\n const className = `sis-map-tooltip-${this.name}`;\r\n\r\n return { popupContent, className };\r\n }\r\n\r\n async createIconPopupContent(\r\n element: MapElement,\r\n showLabel: boolean\r\n ): Promise<{ popupContent: string; className: string }> {\r\n let svg: string;\r\n if (element.status != null && element.status !== AssetStatus.NoStatus && element.status !== AssetStatus.Disabled) {\r\n const iconName = AssetStatus[element.status]?.toLowerCase();\r\n\r\n if (iconName) {\r\n svg = await this.getIconSvg(iconName);\r\n }\r\n }\r\n\r\n const icon = svg ? ` ${svg}` : '';\r\n const label = showLabel && element.label ? `${element.label} ` : '';\r\n\r\n const popupContent = `${label}${element.name}${icon}`;\r\n const className = `sis-map-tooltip-${this.name}`;\r\n\r\n return { popupContent, className };\r\n }\r\n\r\n getSignPostSvgUrl(): string {\r\n return `${this.urlBlobPath}signpost.svg`;\r\n }\r\n}\r\n","import { CurvePathData } from '@elfalem/leaflet-curve';\r\nimport { Marker } from 'leaflet';\r\nimport { IconHelper } from 'src/app/core/leaflet-helper/icon-helper';\r\nimport { AssetStatus } from 'src/app/maps/domain/livedata/status.enum';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { CurveEndMarkers } from 'src/app/maps/map/style/curve-end-markers.model';\r\nimport { IconColor } from 'src/app/maps/map/style/icon-color.model';\r\n\r\nexport abstract class MapStyle {\r\n readonly name: string;\r\n\r\n constructor(protected iconHelper: IconHelper) {}\r\n\r\n abstract getIconSvg(iconName: string): Promise;\r\n abstract getLayerIconSvgUrl(layerIconName: string, alternateStyle: boolean): string;\r\n abstract getSeasonIconSvgUrl(layerIconName: string, alternateStyle: boolean): string;\r\n abstract createCurveEndMarkers(curveCoords: CurvePathData, color: string, element: MapElement): CurveEndMarkers;\r\n abstract updateCurveEndMarkers(\r\n curveCoords: CurvePathData,\r\n curveEndMarkers: CurveEndMarkers,\r\n color: string,\r\n element: MapElement\r\n ): void;\r\n abstract zoomCurveEndMarkers(curveEndMarkers: CurveEndMarkers, scaling: number): void;\r\n abstract setHighlight(curveEndMarkers: CurveEndMarkers, highlight: boolean): void;\r\n abstract getLiftColor(assetStatus: AssetStatus, element: MapElement, overrideColor: boolean): IconColor;\r\n abstract getColor(status: AssetStatus): IconColor;\r\n abstract setIconColor(icon: Marker, backgroundColor: string, symbolColor?: string): void;\r\n abstract setSidepaneIconColor(iconSvg: string, backgroundColor: string, symbolColor?: string): string;\r\n abstract setIconBorder(icon: Marker): void;\r\n abstract createCurvePopupContent(\r\n element: MapElement,\r\n showLabel: boolean\r\n ): Promise<{ popupContent: string; className: string }>;\r\n abstract createIconPopupContent(\r\n element: MapElement,\r\n showLabel: boolean\r\n ): Promise<{ popupContent: string; className: string }>;\r\n abstract getSignPostSvgUrl(): string;\r\n}\r\n","import { CurvePathData } from '@elfalem/leaflet-curve';\r\nimport { Marker } from 'leaflet';\r\nimport { IconHelper } from 'src/app/core/leaflet-helper/icon-helper';\r\nimport { AssetStatus } from 'src/app/maps/domain/livedata/status.enum';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { SisMapAssetCategory } from 'src/app/maps/domain/masterdata/sismap-asset-category.enum';\r\nimport { CurveEndMarkers } from 'src/app/maps/map/style/curve-end-markers.model';\r\nimport { IconColor } from 'src/app/maps/map/style/icon-color.model';\r\nimport { MapStyle } from 'src/app/maps/map/style/styles/map-style.base';\r\nimport { environment } from 'src/environments/environment';\r\n\r\nexport class MapStyleSisag extends MapStyle {\r\n readonly name = 'sisag';\r\n\r\n private readonly urlBlobPath = 'icons/sismedia/styles/sisag/';\r\n\r\n constructor(protected iconHelper: IconHelper) {\r\n super(iconHelper);\r\n }\r\n\r\n async getIconSvg(iconName: string): Promise {\r\n const url = this.urlBlobPath + iconName + '.svg';\r\n\r\n return this.iconHelper.getIcon(url);\r\n }\r\n\r\n getLayerIconSvgUrl(layerIconName: string, alternateStyle: boolean): string {\r\n return `${environment.baseUrlPublicAssets}/sismap/layer-selector-icons/${layerIconName}.svg`;\r\n }\r\n\r\n getSeasonIconSvgUrl(layerIconName: string, alternateStyle: boolean): string {\r\n return '';\r\n }\r\n\r\n createCurveEndMarkers(curveCoords: CurvePathData, color: string, element: MapElement): CurveEndMarkers {\r\n return { visible: [], highlight: [] };\r\n }\r\n\r\n updateCurveEndMarkers(\r\n curveCoords: CurvePathData,\r\n curveEndMarkers: CurveEndMarkers,\r\n color: string,\r\n element: MapElement\r\n ): void {}\r\n\r\n zoomCurveEndMarkers(curveEndMarkers: CurveEndMarkers, scaling: number): void {}\r\n\r\n setHighlight(curveEndMarkers: CurveEndMarkers, highlight: boolean): void {}\r\n\r\n getLiftColor(assetStatus: AssetStatus, element: MapElement, overrideColor = false): IconColor {\r\n if (element.pathColor != null && !overrideColor) {\r\n return { statusColor: element.pathColor, textColor: '#ffffff' };\r\n }\r\n\r\n switch (assetStatus) {\r\n case AssetStatus.Open:\r\n return { statusColor: '#1dab38', textColor: '#ffffff' };\r\n case AssetStatus.Closed:\r\n return { statusColor: '#af272f', textColor: '#ffffff' };\r\n case AssetStatus.Preparation:\r\n return { statusColor: '#e68523', textColor: '#ffffff' };\r\n case AssetStatus.Disabled:\r\n return { statusColor: '#555555', textColor: '#ffffff' };\r\n case AssetStatus.NoStatus:\r\n return { statusColor: '#555555', textColor: '#ffffff' };\r\n default:\r\n return { statusColor: '#555555', textColor: '#ffffff' };\r\n }\r\n }\r\n\r\n getColor(status: AssetStatus): IconColor {\r\n switch (status) {\r\n case AssetStatus.Open:\r\n return { statusColor: '#1dab38', textColor: '#ffffff' };\r\n case AssetStatus.Closed:\r\n return { statusColor: '#af272f', textColor: '#ffffff' };\r\n case AssetStatus.Preparation:\r\n return { statusColor: '#e68523', textColor: '#ffffff' };\r\n case AssetStatus.Disabled:\r\n return { statusColor: '#ffffff', textColor: '#000000' };\r\n case AssetStatus.NoStatus:\r\n return { statusColor: '#ffffff', textColor: '#000000' };\r\n default:\r\n return { statusColor: '#ffffff', textColor: '#000000' };\r\n }\r\n }\r\n setIconColor(icon: Marker, backgroundColor: string, symbolColor?: string): void {\r\n const e = icon.getElement()?.querySelectorAll('#background')[0];\r\n e?.setAttribute('fill', backgroundColor);\r\n\r\n if (symbolColor) {\r\n const s = icon.getElement()?.querySelectorAll('#symbol')[0];\r\n s?.setAttribute('fill', symbolColor);\r\n }\r\n }\r\n\r\n setSidepaneIconColor(iconSvg: string, backgroundColor: string, symbolColor?: string): string {\r\n iconSvg = this.setSvgColor('background', backgroundColor, iconSvg);\r\n if (symbolColor) {\r\n iconSvg = this.setSvgColor('symbol', symbolColor, iconSvg);\r\n }\r\n return iconSvg;\r\n }\r\n\r\n private setSvgColor(id: string, color: string, iconSvg: string): string {\r\n const regex = new RegExp(`(id=\"${id}\"[^>]*?)fill=\"[^\"]*\"`);\r\n if (iconSvg.match(regex)) {\r\n iconSvg = iconSvg.replace(regex, `$1fill=\"${color}\"`);\r\n } else {\r\n iconSvg = iconSvg.replace(`id=\"${id}\"`, `id=\"${id}\" fill=\"${color}\"`);\r\n }\r\n return iconSvg;\r\n }\r\n\r\n setIconBorder(icon: Marker): void {\r\n const e = icon.getElement()?.querySelectorAll('#background')[0];\r\n\r\n if (e) {\r\n e.setAttribute('stroke', '#808080');\r\n e.setAttribute('stroke-width', '1');\r\n e.setAttribute('stroke-opacity', '0.8');\r\n }\r\n }\r\n\r\n async createCurvePopupContent(\r\n element: MapElement,\r\n showLabel: boolean\r\n ): Promise<{ popupContent: string; className: string }> {\r\n const colors =\r\n element.category === SisMapAssetCategory.Lift\r\n ? this.getLiftColor(element.status, element, true)\r\n : this.getColor(element.status);\r\n\r\n const svg = element.type ? await this.getIconSvg(element.type) : '';\r\n const parser = new DOMParser();\r\n const icon = parser.parseFromString(svg, 'image/svg+xml');\r\n\r\n const e = icon.querySelectorAll('#background')[0];\r\n e?.setAttribute('fill', colors.statusColor);\r\n const s = icon.querySelectorAll('#symbol')[0];\r\n s?.setAttribute('fill', colors.textColor);\r\n\r\n const label = showLabel && element.label ? `${element.label} ` : '';\r\n const popupContent = `${label}${element.name}${icon.documentElement.outerHTML}`;\r\n const className = `sis-map-tooltip-${this.name}`;\r\n\r\n return { popupContent, className };\r\n }\r\n\r\n async createIconPopupContent(\r\n element: MapElement,\r\n showLabel: boolean\r\n ): Promise<{ popupContent: string; className: string }> {\r\n let svg: string;\r\n if (element.status != null && element.status !== AssetStatus.NoStatus && element.status !== AssetStatus.Disabled) {\r\n const iconName = AssetStatus[element.status]?.toLowerCase();\r\n\r\n if (iconName) {\r\n svg = await this.getIconSvg(iconName);\r\n }\r\n }\r\n\r\n const icon = svg ? ` ${svg}` : '';\r\n const label = showLabel && element.label ? `${element.label} ` : '';\r\n\r\n const popupContent = `${label}${element.name}${icon}`;\r\n const className = `sis-map-tooltip-${this.name}`;\r\n\r\n return { popupContent, className };\r\n }\r\n\r\n getSignPostSvgUrl(): string {\r\n return `${this.urlBlobPath}signpost.svg`;\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\nimport { ModalController } from '@ionic/angular';\r\nimport { from, map } from 'rxjs';\r\nimport { Webcam } from 'src/app/maps/domain/masterdata/webcam.model';\r\nimport { MapStyleService } from 'src/app/maps/map/style/map-style.service';\r\n\r\n@Component({\r\n selector: 'sis-webcam-modal',\r\n templateUrl: './webcam-modal.component.html',\r\n styleUrls: ['./webcam-modal.component.scss'],\r\n})\r\nexport class WebcamModalComponent implements OnInit {\r\n @Input() readonly webcam: Webcam;\r\n\r\n webcamUrl: SafeResourceUrl;\r\n useIFrame: boolean;\r\n showSpinner = true;\r\n\r\n readonly className$ = from(this.mapStyleService.getStyleName()).pipe(map((name) => `sis-webcam-modal-${name}`));\r\n\r\n constructor(\r\n private modalCtrl: ModalController,\r\n private sanitizer: DomSanitizer,\r\n private mapStyleService: MapStyleService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.useIFrame = this.webcam.type === Webcam.iframe;\r\n this.webcamUrl = this.sanitizer.bypassSecurityTrustResourceUrl(\r\n `${this.webcam.url}?${Math.floor(Math.random() * 10000).toString()}`\r\n );\r\n }\r\n\r\n closeModal(): void {\r\n this.modalCtrl.dismiss();\r\n }\r\n\r\n hideSpinner(): void {\r\n this.showSpinner = false;\r\n }\r\n}\r\n","\r\n \r\n \r\n \r\n \r\n {{ this.webcam.name }}\r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { Coords } from 'src/app/maps/domain/masterdata/coords.model';\r\nimport { Wind } from 'src/app/maps/domain/masterdata/wind.model';\r\n\r\nexport enum ArrowStyle {\r\n NONE,\r\n ONE,\r\n TWO,\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class WindDisplayCalculatorService {\r\n static windSpeedUnknown = '?';\r\n\r\n static readonly defaultWarnRangeHigh = 40;\r\n static readonly defaultAlarmRangeHigh = 60;\r\n\r\n getRotationTransform(\r\n wind: Wind,\r\n directionOffsetPanomap: number,\r\n directionOffsetNorth: number,\r\n pivotPoint: Coords\r\n ): string {\r\n if (this.hasValue(wind.windDirectionDegreeNorth) && this.hasValue(directionOffsetNorth)) {\r\n return `rotate(${wind.windDirectionDegreeNorth - directionOffsetNorth + directionOffsetPanomap},${pivotPoint.x},${\r\n pivotPoint.y\r\n })`;\r\n } else if (this.hasValue(wind.windDirectionDegreeAxis)) {\r\n return `rotate(${wind.windDirectionDegreeAxis + directionOffsetPanomap},${pivotPoint.x},${pivotPoint.y})`;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n private hasValue(data: number): boolean {\r\n return !(data == null || isNaN(data));\r\n }\r\n\r\n getWindSpeed(wind: Wind): string {\r\n return wind.windSpeedKmh != null ? wind.windSpeedKmh.toString() : WindDisplayCalculatorService.windSpeedUnknown;\r\n }\r\n\r\n getArrowStyle(wind: Wind): ArrowStyle {\r\n if (wind.windSpeedKmh === 0 || wind.windSpeedKmh == null) {\r\n return ArrowStyle.NONE;\r\n }\r\n\r\n switch (wind.type) {\r\n case 'none':\r\n return ArrowStyle.NONE;\r\n case 'directional':\r\n return ArrowStyle.ONE;\r\n case 'across':\r\n return ArrowStyle.TWO;\r\n default:\r\n return ArrowStyle.ONE;\r\n }\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { shareReplay } from 'rxjs/operators';\r\nimport { MeteoDataService } from 'src/app/maps/domain/livedata/meteodata.service';\r\nimport { Coords } from 'src/app/maps/domain/masterdata/coords.model';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { Wind } from 'src/app/maps/domain/masterdata/wind.model';\r\nimport { ArrowStyle, WindDisplayCalculatorService } from 'src/app/maps/map/wind-display-calculator.service';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class WindIconService {\r\n private readonly windMarkerPivotPoint = new Coords(35, 35);\r\n private readonly cssMeteostationColorNormal = 'sis-meteostation-normal';\r\n private readonly cssMeteostationColorOffline = 'sis-meteostation-offline';\r\n\r\n readonly windIconSvgAsHtml$ = this.httpClient\r\n .get(`${environment.baseUrlPublicAssets}/icons/windmonitor/sis-wind-icon-windmonitor.svg`, { responseType: 'text' })\r\n .pipe(shareReplay(1));\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n private meteoDataService: MeteoDataService,\r\n private windDisplayService: WindDisplayCalculatorService\r\n ) {}\r\n\r\n startLiveData(updateInterval: number, tenantGuid: string): void {\r\n this.meteoDataService.startLiveData({ enabled: true, updateInterval, urlParams: [tenantGuid] });\r\n }\r\n\r\n async getIconHTML(wind: MapElement): Promise {\r\n if (!(wind instanceof Wind)) {\r\n return '';\r\n }\r\n const svgHtmlContent = await firstValueFrom(this.windIconSvgAsHtml$);\r\n const parser = new DOMParser();\r\n const doc = parser.parseFromString(svgHtmlContent, 'image/svg+xml');\r\n doc.getElementsByClassName('wind-speed')[0].innerHTML = this.windDisplayService.getWindSpeed(wind);\r\n\r\n const rotationElements = doc.querySelectorAll('.wind-direction-cross,.wind-direction');\r\n rotationElements.forEach((rotationElement: Element) => {\r\n rotationElement.setAttribute(\r\n 'transform',\r\n this.windDisplayService.getRotationTransform(\r\n wind,\r\n wind.directionOffsetPanoMap,\r\n wind.directionOffsetNorth,\r\n this.windMarkerPivotPoint\r\n )\r\n );\r\n });\r\n\r\n const colorElement = doc.getElementsByClassName('wind-iconcolor')[0];\r\n const color = wind.windSpeedKmh != null ? this.cssMeteostationColorNormal : this.cssMeteostationColorOffline;\r\n colorElement.classList.remove(this.cssMeteostationColorNormal, this.cssMeteostationColorOffline);\r\n colorElement.classList.add(color);\r\n\r\n const arrowStyle = this.windDisplayService.getArrowStyle(wind);\r\n this.applyArrowStyle(arrowStyle, doc);\r\n\r\n return doc.documentElement.outerHTML;\r\n }\r\n\r\n private applyArrowStyle(arrowStyle: ArrowStyle, element: Document): void {\r\n const elemDirCross = element.getElementsByClassName('wind-direction-cross')[0];\r\n const elemDir = element.getElementsByClassName('wind-direction')[0];\r\n const elemNone = element.getElementsByClassName('wind-direction-none')[0];\r\n switch (arrowStyle) {\r\n case ArrowStyle.ONE:\r\n elemDirCross.setAttribute('display', 'none');\r\n elemDir.setAttribute('display', 'inline');\r\n elemNone.setAttribute('display', 'none');\r\n return;\r\n case ArrowStyle.TWO:\r\n elemDirCross.setAttribute('display', 'inline');\r\n elemDir.setAttribute('display', 'none');\r\n elemNone.setAttribute('display', 'none');\r\n return;\r\n default:\r\n elemDirCross.setAttribute('display', 'none');\r\n elemDir.setAttribute('display', 'none');\r\n elemNone.setAttribute('display', 'inline');\r\n return;\r\n }\r\n }\r\n}\r\n","import { Map } from 'leaflet';\r\n\r\nexport class SisZoom {\r\n readonly showIcons: boolean;\r\n readonly iconZoom: number;\r\n\r\n constructor(\r\n public zoomLevel: number,\r\n public showIconZoomThreshold: number,\r\n public map: Map,\r\n public readonly baseIconZoom: number\r\n ) {\r\n const width = map.getBounds().getEast() - map.getBounds().getWest();\r\n const height = map.getBounds().getNorth() - map.getBounds().getSouth();\r\n\r\n const mapSize = map.getSize();\r\n const wr = mapSize.x / width;\r\n const hr = mapSize.y / height;\r\n\r\n const scaling = wr > hr ? wr : hr;\r\n\r\n this.iconZoom = scaling;\r\n this.showIcons = scaling > showIconZoomThreshold;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { shareReplay, Subject } from 'rxjs';\r\nimport { SisZoom } from 'src/app/maps/map/zoom.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ZoomService {\r\n private zoom$ = new Subject();\r\n\r\n zoomChanged$ = this.zoom$.pipe(shareReplay(1));\r\n\r\n zoom(value: SisZoom): void {\r\n this.zoom$.next(value);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'hoursMinutes',\r\n})\r\nexport class HoursMinutesPipe implements PipeTransform {\r\n transform(value: string): string {\r\n if (!value) {\r\n return value;\r\n }\r\n\r\n const totalMinutes = Number.parseInt(value, 10);\r\n\r\n if (!totalMinutes) {\r\n return value;\r\n }\r\n\r\n const hours = Math.floor(totalMinutes / 60);\r\n const minutes = totalMinutes % 60;\r\n\r\n return `${hours} h ${minutes} min`;\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CoreModule } from 'src/app/core/core.module';\r\nimport { PendingChangesGuard } from 'src/app/core/guards/pending-changes.guard';\r\nimport { MapModule } from 'src/app/maps/map/map.module';\r\nimport { SisMapPage } from 'src/app/maps/sismap/sismap.page';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CoreModule,\r\n FormsModule,\r\n IonicModule,\r\n MapModule,\r\n RouterModule.forChild([\r\n {\r\n path: '',\r\n component: SisMapPage,\r\n canDeactivate: [PendingChangesGuard],\r\n },\r\n ]),\r\n TranslateModule,\r\n ],\r\n declarations: [SisMapPage],\r\n})\r\nexport class SisMapPageModule {}\r\n","import { Component, HostListener, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { combineLatest, Observable } from 'rxjs';\r\nimport { map, take, takeUntil } from 'rxjs/operators';\r\nimport { AppService } from 'src/app/app.service';\r\nimport { Season } from 'src/app/core/domain/season.enum';\r\nimport { ComponentCanDeactivate } from 'src/app/core/guards/pending-changes.guard';\r\nimport { NavigatorService } from 'src/app/core/navigator/navigator.service';\r\nimport { Unsubscriber } from 'src/app/core/unsubscriber/unsubscriber';\r\nimport { Status } from 'src/app/maps/domain/livedata/status.model';\r\nimport { StatusService } from 'src/app/maps/domain/livedata/status.service';\r\nimport { MapRoutes } from 'src/app/maps/domain/map-routes';\r\nimport { LayerName } from 'src/app/maps/domain/masterdata/layername.enum';\r\nimport { MapElement } from 'src/app/maps/domain/masterdata/map-element.model';\r\nimport { MasterData } from 'src/app/maps/domain/masterdata/masterdata.model';\r\nimport { MasterDataService } from 'src/app/maps/domain/masterdata/masterdata.service';\r\nimport { MapStateService } from 'src/app/maps/map/map-state.service';\r\nimport { AssetEditorService } from 'src/app/maps/map/sidepane/asset-editor-tab/asset-editor.service';\r\n\r\n@Component({\r\n selector: 'sis-maps',\r\n templateUrl: './sismap.page.html',\r\n styleUrls: ['./sismap.page.scss'],\r\n})\r\nexport class SisMapPage extends Unsubscriber implements OnInit, ComponentCanDeactivate {\r\n private editorHasChanges = false;\r\n\r\n masterData: MasterData;\r\n backgroundColor = 'white';\r\n editMode = false;\r\n\r\n hideLayerSelector = false;\r\n hideSeasonFilter = false;\r\n hideSignPosts = false;\r\n showStatusIcons = false;\r\n openLayerSelector = false;\r\n\r\n constructor(\r\n private masterDataService: MasterDataService,\r\n private activatedRoute: ActivatedRoute,\r\n private navigator: NavigatorService,\r\n private appService: AppService,\r\n private statusService: StatusService,\r\n private mapStateService: MapStateService,\r\n private assetEditorService: AssetEditorService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n combineLatest([this.activatedRoute.params, this.activatedRoute.queryParams])\r\n .pipe(take(1))\r\n .subscribe(([params, queryParams]) => {\r\n const routeSisId = params[MapRoutes.SisId];\r\n const routeAlias = params[MapRoutes.Alias];\r\n const routeSeason = params[MapRoutes.Season];\r\n const seasonParam = queryParams['season'];\r\n this.editMode = queryParams['edit'] != null;\r\n const parsedRouteSeason = Number.parseInt(routeSeason, 10);\r\n if (!(parsedRouteSeason in Season)) {\r\n this.navigator.navigateToErrorPage();\r\n return;\r\n }\r\n const parsedSeasonParam = Number.parseInt(seasonParam, 10);\r\n if (seasonParam != null && parsedSeasonParam !== Season.Summer && parsedSeasonParam !== Season.Winter) {\r\n this.navigator.navigateToErrorPage();\r\n return;\r\n }\r\n\r\n this.hideLayerSelector = queryParams && queryParams['layerSelector'] === 'hide';\r\n this.hideSeasonFilter = queryParams && queryParams['seasonFilter'] === 'hide';\r\n this.hideSignPosts = queryParams && queryParams['signPost'] === 'hide';\r\n this.openLayerSelector = queryParams && queryParams['layerSelector'] === 'open';\r\n this.showStatusIcons = queryParams && queryParams['showAssetIcon'] === 'true';\r\n\r\n const layers = [\r\n LayerName.Gastro,\r\n LayerName.Lift,\r\n LayerName.Place,\r\n LayerName.Poi,\r\n LayerName.Slope,\r\n LayerName.Trail,\r\n LayerName.Webcam,\r\n LayerName.CustomIcon,\r\n LayerName.CustomPath,\r\n ];\r\n\r\n this.masterDataService.requestMasterData(routeSisId, routeAlias, routeSeason, layers);\r\n });\r\n\r\n this.masterDataService.masterData.pipe(takeUntil(this.onDestroy$)).subscribe({\r\n next: (masterData) => {\r\n if (\r\n masterData == null ||\r\n (!this.editMode &&\r\n !(\r\n masterData?.gastros?.length ||\r\n masterData?.pois?.length ||\r\n masterData?.slopes?.length ||\r\n masterData?.trails?.length ||\r\n masterData?.webcams?.length\r\n ))\r\n ) {\r\n this.navigator.navigateToErrorPage();\r\n return;\r\n }\r\n this.masterData = masterData;\r\n\r\n this.statusService.startLiveData({ enabled: true, updateInterval: 20000, urlParams: [masterData.mapGuid] });\r\n this.statusService.status$.pipe(takeUntil(this.onDestroy$)).subscribe((data) => {\r\n masterData.lifts.forEach((c) => this.updateStatusForElement(c, data));\r\n masterData.slopes.forEach((c) => this.updateStatusForElement(c, data));\r\n masterData.trails.forEach((c) => this.updateStatusForElement(c, data));\r\n masterData.pois.forEach((c) => this.updateStatusForElement(c, data));\r\n masterData.gastros.forEach((c) => this.updateStatusForElement(c, data));\r\n });\r\n },\r\n error: () => {\r\n this.navigator.navigateToErrorPage();\r\n },\r\n });\r\n\r\n this.assetEditorService.hasChanges$\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((hasChanges) => (this.editorHasChanges = hasChanges));\r\n\r\n this.appService.backgroundColor$\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((backgroundColor) => (this.backgroundColor = backgroundColor));\r\n }\r\n\r\n @HostListener('window:beforeunload')\r\n nativeCanDeactivate(): boolean {\r\n return !this.editorHasChanges;\r\n }\r\n\r\n canDeactivate(): Observable {\r\n return this.assetEditorService.hasChanges$.pipe(map((hasChanges) => !hasChanges));\r\n }\r\n\r\n private updateStatusForElement(element: MapElement, data: Status[]): void {\r\n const newStatus = this.statusService.findStatus(element.guid, data);\r\n const newSubStatus = this.statusService.findSubStatus(element.guid, data);\r\n const statusChanged = newStatus !== element.status || newSubStatus !== element.subStatus;\r\n\r\n if (statusChanged) {\r\n element.status = newStatus;\r\n element.subStatus = newSubStatus;\r\n\r\n this.mapStateService.updateMapElement(element);\r\n }\r\n }\r\n}\r\n","\r\n \r\n \r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CoreModule } from 'src/app/core/core.module';\r\nimport { MapModule } from 'src/app/maps/map/map.module';\r\nimport { WindmonitorPage } from 'src/app/maps/windmonitor/windmonitor.page';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: WindmonitorPage,\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CoreModule,\r\n FormsModule,\r\n IonicModule,\r\n MapModule,\r\n RouterModule.forChild(routes),\r\n TranslateModule,\r\n ],\r\n declarations: [WindmonitorPage],\r\n})\r\nexport class WindmonitorModule {}\r\n","import { Component, HostListener, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { combineLatest, Observable } from 'rxjs';\r\nimport { map, take, takeUntil } from 'rxjs/operators';\r\nimport { Season } from 'src/app/core/domain/season.enum';\r\nimport { ComponentCanDeactivate } from 'src/app/core/guards/pending-changes.guard';\r\nimport { NavigatorService } from 'src/app/core/navigator/navigator.service';\r\nimport { Unsubscriber } from 'src/app/core/unsubscriber/unsubscriber';\r\nimport { MeteoDataService } from 'src/app/maps/domain/livedata/meteodata.service';\r\nimport { MapRoutes } from 'src/app/maps/domain/map-routes';\r\nimport { LayerName } from 'src/app/maps/domain/masterdata/layername.enum';\r\nimport { MasterData } from 'src/app/maps/domain/masterdata/masterdata.model';\r\nimport { MasterDataService } from 'src/app/maps/domain/masterdata/masterdata.service';\r\nimport { MapStateService } from 'src/app/maps/map/map-state.service';\r\nimport { AssetEditorService } from 'src/app/maps/map/sidepane/asset-editor-tab/asset-editor.service';\r\nimport { WindIconService } from 'src/app/maps/map/wind-icon.service';\r\n\r\n@Component({\r\n selector: 'sis-windmonitor-map',\r\n templateUrl: './windmonitor.page.html',\r\n styleUrls: ['./windmonitor.page.scss'],\r\n})\r\nexport class WindmonitorPage extends Unsubscriber implements OnInit, ComponentCanDeactivate {\r\n private editorHasChanges = false;\r\n\r\n masterData: MasterData;\r\n editMode = false;\r\n\r\n constructor(\r\n private masterDataService: MasterDataService,\r\n private activatedRoute: ActivatedRoute,\r\n private navigator: NavigatorService,\r\n private windIconService: WindIconService,\r\n private meteoDataService: MeteoDataService,\r\n private assetEditorService: AssetEditorService,\r\n private mapStateService: MapStateService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n combineLatest([this.activatedRoute.params, this.activatedRoute.queryParams])\r\n .pipe(take(1))\r\n .subscribe(([params, queryParams]) => {\r\n const routeSisId = params[MapRoutes.SisId];\r\n const routeAlias = params[MapRoutes.Alias];\r\n const routeSeason = params[MapRoutes.Season];\r\n this.editMode = queryParams['edit'] != null;\r\n const layers = [LayerName.Lift, LayerName.Place, LayerName.Wind];\r\n const parsedRouteSeason = Number.parseInt(routeSeason, 10);\r\n if (!(parsedRouteSeason in Season)) {\r\n this.navigator.navigateToErrorPage();\r\n return;\r\n }\r\n\r\n this.masterDataService.requestMasterData(routeSisId, routeAlias, routeSeason, layers);\r\n });\r\n\r\n this.masterDataService.masterData.pipe(takeUntil(this.onDestroy$)).subscribe({\r\n next: (masterData) => {\r\n if (masterData == null || (!this.editMode && !masterData?.winds?.length)) {\r\n this.navigator.navigateToErrorPage();\r\n return;\r\n }\r\n this.masterData = masterData;\r\n\r\n this.windIconService.startLiveData(10000, masterData.tenantGuid);\r\n this.meteoDataService.meteoData$.pipe(takeUntil(this.onDestroy$)).subscribe((meteoData) => {\r\n masterData.winds.forEach((wind) => {\r\n const liveData = meteoData?.find((f) => f.meteoDeviceSisId === wind.meteoStationSisId);\r\n if (!liveData || liveData.outdated || liveData.windSpeedKmh == null) {\r\n wind.windDirectionDegreeAxis = null;\r\n wind.windDirectionDegreeNorth = null;\r\n wind.windSpeedKmh = null;\r\n } else {\r\n wind.windDirectionDegreeAxis = liveData.windDirectionDegreeAxis;\r\n wind.windDirectionDegreeNorth = liveData.windDirectionDegreeNorth;\r\n wind.windSpeedKmh = liveData.windSpeedKmh;\r\n }\r\n this.mapStateService.updateMapElement(wind);\r\n });\r\n });\r\n },\r\n error: () => {\r\n this.navigator.navigateToErrorPage();\r\n },\r\n });\r\n\r\n this.assetEditorService.hasChanges$\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((hasChanges) => (this.editorHasChanges = hasChanges));\r\n }\r\n\r\n @HostListener('window:beforeunload')\r\n nativeCanDeactivate(): boolean {\r\n return !this.editorHasChanges;\r\n }\r\n\r\n canDeactivate(): Observable {\r\n return this.assetEditorService.hasChanges$.pipe(map((hasChanges) => !hasChanges));\r\n }\r\n}\r\n","\r\n","import { OperatingInfoEntry } from 'src/app/operating-info/domain/operating-info-entry.model';\r\nimport { OperatingInfoTextAdapter } from 'src/app/operating-info/domain/operating-info-text.adapter';\r\n\r\nexport class OperatingInfoEntryAdapter {\r\n static adapt(items: any[]): OperatingInfoEntry[] {\r\n if (!items) {\r\n return null;\r\n }\r\n\r\n const entries: OperatingInfoEntry[] = [];\r\n\r\n items.forEach((i: any) => {\r\n entries.push({\r\n libraryGuid: i.libraryGuid,\r\n tenantGuid: i.guid,\r\n priority: Number(i.priority),\r\n color: i.color,\r\n texts: OperatingInfoTextAdapter.adapt(i.texts),\r\n timestamp: new Date(i.timestamp),\r\n });\r\n });\r\n\r\n return entries;\r\n }\r\n}\r\n","import { OperatingInfoTenant } from 'src/app/operating-info/domain/operating-info-tenant.model';\r\n\r\nexport class OperatingInfoTenantAdapter {\r\n static adapt(items: any[]): OperatingInfoTenant[] {\r\n if (!items) {\r\n return null;\r\n }\r\n\r\n const tenants: OperatingInfoTenant[] = [];\r\n\r\n items.forEach((i: any) => {\r\n tenants.push({\r\n guid: i.guid,\r\n alias: i.alias,\r\n logo: i.logo,\r\n website: i.website,\r\n phone: i.phone,\r\n order: i.order,\r\n });\r\n });\r\n\r\n return tenants;\r\n }\r\n}\r\n","import { OperatingInfoText } from 'src/app/operating-info/domain/operating-info-text.model';\r\n\r\nexport class OperatingInfoTextAdapter {\r\n static adapt(items: any[]): OperatingInfoText[] {\r\n if (!items) {\r\n return null;\r\n }\r\n\r\n const texts: OperatingInfoText[] = [];\r\n\r\n items.forEach((i: any) => {\r\n texts.push({\r\n language: i.language,\r\n title: i.title,\r\n text: i.text,\r\n });\r\n });\r\n\r\n return texts;\r\n }\r\n}\r\n","import { OperatingInfo } from 'src/app/operating-info/domain/operating-info.model';\r\nimport { OperatingInfoEntryAdapter } from 'src/app/operating-info/domain/operating-info-entry.adapter';\r\nimport { OperatingInfoTenantAdapter } from 'src/app/operating-info/domain/operating-info-tenant.adapter';\r\nimport { OperatingInfoLinkAdapter } from 'src/app/operating-info/domain/operting-info-link.adapter';\r\n\r\nexport class OperatingInfoAdapter {\r\n static adapt(item: any): OperatingInfo {\r\n if (!item) {\r\n return null;\r\n }\r\n\r\n return {\r\n title: item.title,\r\n logo: item.logo,\r\n tenants: OperatingInfoTenantAdapter.adapt(item.tenants),\r\n entries: OperatingInfoEntryAdapter.adapt(item.entries),\r\n links: OperatingInfoLinkAdapter.adapt(item.links),\r\n };\r\n }\r\n}\r\n","import { OperatingInfoLink } from 'src/app/operating-info/domain/operting-info-link.model';\r\n\r\nexport class OperatingInfoLinkAdapter {\r\n static adapt(items: any[]): OperatingInfoLink[] {\r\n if (!items) {\r\n return null;\r\n }\r\n\r\n const links: OperatingInfoLink[] = [];\r\n\r\n items.forEach((i: any) => {\r\n links.push({\r\n url: i.url,\r\n iconName: i.iconName,\r\n descriptionDe: i.descriptionDe,\r\n descriptionEn: i.descriptionEn,\r\n descriptionFr: i.descriptionFr,\r\n descriptionIt: i.descriptionFr,\r\n displayOrder: i.displayOrder,\r\n });\r\n });\r\n\r\n return links;\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { OperatingInfoEntry } from 'src/app/operating-info/domain/operating-info-entry.model';\r\n\r\n@Component({\r\n selector: 'sis-operating-info-item',\r\n templateUrl: './operating-info-item.component.html',\r\n styleUrls: ['./operating-info-item.component.scss'],\r\n})\r\nexport class OperatingInfoItemComponent implements OnInit {\r\n @Input() entry: OperatingInfoEntry;\r\n\r\n language: string;\r\n itemColor: string;\r\n operatingInfoTitle: string;\r\n operatingInfoText: string;\r\n operatingInfoTimestamp: Date;\r\n\r\n constructor(private translateService: TranslateService) {}\r\n\r\n ngOnInit(): void {\r\n if (this.entry) {\r\n const browserLanguage = this.translateService.getBrowserLang();\r\n this.language = browserLanguage.match(/de|en|fr|it/) ? browserLanguage : 'en';\r\n\r\n this.itemColor = this.entry.color;\r\n this.operatingInfoTitle =\r\n this.entry.texts.find((text) => text.language === this.language)?.title ?? this.entry.texts[0].title;\r\n this.operatingInfoText =\r\n this.entry.texts.find((text) => text.language === this.language)?.text ?? this.entry.texts[0].text;\r\n this.operatingInfoTimestamp = this.entry.timestamp;\r\n }\r\n }\r\n}\r\n","\r\n \r\n \r\n {{ this.operatingInfoTitle }}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{ this.operatingInfoTimestamp | date : 'dd.MM.yyyy HH:mm' }}\r\n \r\n \r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CoreModule } from 'src/app/core/core.module';\r\nimport { OperatingInfoAdapter } from 'src/app/operating-info/domain/operating-info.adapter';\r\nimport { OperatingInfoEntryAdapter } from 'src/app/operating-info/domain/operating-info-entry.adapter';\r\nimport { OperatingInfoTenantAdapter } from 'src/app/operating-info/domain/operating-info-tenant.adapter';\r\nimport { OperatingInfoTextAdapter } from 'src/app/operating-info/domain/operating-info-text.adapter';\r\nimport { OperatingInfoPage } from 'src/app/operating-info/operating-info.page';\r\nimport { OperatingInfoService } from 'src/app/operating-info/operating-info.service';\r\nimport { OperatingInfoItemComponent } from 'src/app/operating-info/operating-info-item/operating-info-item.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n IonicModule,\r\n RouterModule.forChild([\r\n {\r\n path: '',\r\n component: OperatingInfoPage\r\n }\r\n ]),\r\n CoreModule,\r\n TranslateModule\r\n ],\r\n declarations: [OperatingInfoPage, OperatingInfoItemComponent],\r\n providers: [\r\n OperatingInfoService,\r\n OperatingInfoAdapter,\r\n OperatingInfoTenantAdapter,\r\n OperatingInfoEntryAdapter,\r\n OperatingInfoTextAdapter\r\n ]\r\n})\r\nexport class OperatingInfoPageModule {}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { switchMap, takeUntil } from 'rxjs/operators';\r\nimport { Unsubscriber } from 'src/app/core/unsubscriber/unsubscriber';\r\nimport { OperatingInfo } from 'src/app/operating-info/domain/operating-info.model';\r\nimport { OperatingInfoTenant } from 'src/app/operating-info/domain/operating-info-tenant.model';\r\nimport { OperatingInfoLink } from 'src/app/operating-info/domain/operting-info-link.model';\r\nimport { OperatingInfoService } from 'src/app/operating-info/operating-info.service';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Component({\r\n selector: 'sis-operating-info',\r\n templateUrl: 'operating-info.page.html',\r\n styleUrls: ['operating-info.page.scss'],\r\n})\r\nexport class OperatingInfoPage extends Unsubscriber implements OnInit {\r\n private static readonly OperatingInfoUrl = 'operatinginfoUrl';\r\n\r\n private readonly updateInterval = 60_000;\r\n\r\n logoUrl: string;\r\n operatingInfo: OperatingInfo;\r\n isMultiTenant: boolean;\r\n publicAssetLogoBaseUrl: string;\r\n\r\n constructor(\r\n private operatingInfoService: OperatingInfoService,\r\n private activatedRoute: ActivatedRoute,\r\n private translateService: TranslateService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.publicAssetLogoBaseUrl = `${environment.baseUrlPublicAssets}/logo/`;\r\n\r\n this.activatedRoute.params\r\n .pipe(\r\n switchMap((params) =>\r\n this.operatingInfoService.periodicallyRequestOperatingInfoData(\r\n this.updateInterval,\r\n params[OperatingInfoPage.OperatingInfoUrl]\r\n )\r\n ),\r\n takeUntil(this.onDestroy$)\r\n )\r\n .subscribe((data: OperatingInfo) => {\r\n if (!data) {\r\n return;\r\n }\r\n\r\n data.links = data.links.sort((a, b) => a.displayOrder - b.displayOrder);\r\n // sort: newest first\r\n data.entries = data.entries.sort((a, b) => b.timestamp.valueOf() - a.timestamp.valueOf());\r\n\r\n // if at least one entry with prio > 0, remove all prio 0 entries\r\n if (data.entries.find((entry) => entry.priority !== 0)) {\r\n data.entries = data.entries.filter((entry) => entry.priority !== 0);\r\n } else {\r\n // remove double 'No information available' entries for multi tenants and set global title\r\n if (data.entries.length > 1) {\r\n data.entries = data.entries.slice(0, 1);\r\n data.entries[0].texts.forEach((text) => (text.title = data.title));\r\n }\r\n }\r\n\r\n this.isMultiTenant = data.tenants.length > 1;\r\n if (this.isMultiTenant) {\r\n data.tenants.sort((a, b) => a.order - b.order);\r\n }\r\n this.operatingInfo = data;\r\n\r\n this.logoUrl = `${environment.baseUrlPublicAssets}/logo/${data.logo}`;\r\n this.setDescriptions(\r\n this.translateService.currentLang ?? this.translateService.defaultLang,\r\n this.operatingInfo.links\r\n );\r\n });\r\n\r\n this.translateService.onLangChange.pipe(takeUntil(this.onDestroy$)).subscribe((event) => {\r\n if (this.operatingInfo) {\r\n this.setDescriptions(event.lang, this.operatingInfo.links);\r\n }\r\n });\r\n }\r\n\r\n trackByGuid(_: number, tenant: OperatingInfoTenant): string {\r\n return tenant.guid;\r\n }\r\n\r\n private setDescriptions(languageKey: string, links: OperatingInfoLink[]): void {\r\n if (!links) {\r\n return;\r\n }\r\n links.forEach((link) => {\r\n switch (languageKey) {\r\n case 'de':\r\n link.description = link.descriptionDe;\r\n break;\r\n case 'en':\r\n link.description = link.descriptionEn;\r\n break;\r\n case 'fr':\r\n link.description = link.descriptionFr;\r\n break;\r\n case 'it':\r\n link.description = link.descriptionIt;\r\n break;\r\n default:\r\n link.description = link.descriptionEn;\r\n break;\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 {{ 'operatinginfo.title' | translate }}\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 {{ link.description}}\r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n {{ 'operatinginfo.information' | translate }}\r\n {{ this.operatingInfo.tenants[0].website }}\r\n Tel. {{ this.operatingInfo.tenants[0].phone }}\r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ tenant.alias }}\r\n \r\n \r\n \r\n\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { EMPTY, Observable, timer } from 'rxjs';\r\nimport { catchError, map, switchMap, tap } from 'rxjs/operators';\r\nimport { NavigatorService } from 'src/app/core/navigator/navigator.service';\r\nimport { Unsubscriber } from 'src/app/core/unsubscriber/unsubscriber';\r\nimport { OperatingInfoAdapter } from 'src/app/operating-info/domain/operating-info.adapter';\r\nimport { OperatingInfo } from 'src/app/operating-info/domain/operating-info.model';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class OperatingInfoService extends Unsubscriber {\r\n static readonly urlPath = '/api/operatingInfo/';\r\n\r\n constructor(private http: HttpClient, private navigator: NavigatorService) {\r\n super();\r\n }\r\n\r\n periodicallyRequestOperatingInfoData(period: number, operatingInfoGuid: string): Observable {\r\n if (!operatingInfoGuid || operatingInfoGuid.length === 0) {\r\n this.navigator.navigateToErrorPage();\r\n return;\r\n }\r\n\r\n const url = `${environment.baseUrlApi}${OperatingInfoService.urlPath}${operatingInfoGuid}?`;\r\n\r\n return timer(0, period).pipe(\r\n switchMap(() =>\r\n this.http.get(`${url}?${Math.random() * 1000}`).pipe(\r\n catchError(() => {\r\n this.navigator.navigateToErrorPage();\r\n return EMPTY;\r\n })\r\n )\r\n ),\r\n map((data: any) => OperatingInfoAdapter.adapt(data)),\r\n tap((operatingInfo) => {\r\n if (!operatingInfo) {\r\n this.navigator.navigateToErrorPage();\r\n }\r\n })\r\n );\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'sis-quickstart',\r\n template: '',\r\n})\r\nexport class QuickstartPage implements OnInit {\r\n constructor(private translateService: TranslateService) {}\r\n\r\n ngOnInit(): void {\r\n window.location.href = `https://prodsiscontrolpublic.blob.core.windows.net/public-assets/quickstart/quickstart_${this.translateService.defaultLang}.pdf`;\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sis-siscontrol',\r\n template: '',\r\n})\r\nexport class SiscontrolPage implements OnInit {\r\n ngOnInit(): void {\r\n window.location.href = 'https://sisag.ch/produkte/siscontrol';\r\n }\r\n}\r\n","export enum SisMediaAssetCategory {\r\n Lift = 1,\r\n Slope = 2,\r\n Trail = 3,\r\n Gastro = 4,\r\n Poi = 5,\r\n}\r\n","export enum SisMediaAssetStatus {\r\n NoStatus = null,\r\n Disabled = 0,\r\n Closed = 1,\r\n Open = 2,\r\n Preparation = 3,\r\n Free = 7,\r\n Full = 8,\r\n}\r\n","import { SisMediaItem } from 'src/app/webreport/domain/sismedia-item.model';\r\n\r\nexport class SisMediaItemAdapter {\r\n static adapt(items: any): SisMediaItem[] {\r\n const result: SisMediaItem[] = [];\r\n\r\n if (items) {\r\n items.forEach((e: any) => {\r\n result.push(\r\n new SisMediaItem({\r\n guid: e.guid,\r\n name: e.name,\r\n nameEn: e.nameEn ?? e.name,\r\n assetCategory: e.assetCategory,\r\n order: e.exportOrder ?? 0,\r\n status: e.status,\r\n type: e.type?.toLowerCase(),\r\n typeDescription: e.typeDescription,\r\n season: e.season,\r\n tenantAlias: e.tenantAlias,\r\n label: e.label ?? '',\r\n lengthMeter: e.lengthMeter ?? 0,\r\n })\r\n );\r\n });\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n","import { Season } from 'src/app/core/domain/season.enum';\r\nimport { WritablePart } from 'src/app/core/utils/type-helper';\r\nimport { SisMediaAssetCategory } from 'src/app/webreport/domain/sismedia-asset-category.enum';\r\nimport { SisMediaAssetStatus } from 'src/app/webreport/domain/sismedia-asset-status.enum';\r\nimport { SisMediaItemIconOptions } from 'src/app/webreport/domain/sismedia-item-icon-options.model';\r\n\r\nexport class SisMediaItem {\r\n static readonly iconOptions = new Map([\r\n [\r\n SisMediaAssetStatus.Disabled,\r\n {\r\n iconName: 'sis-closed-inactive',\r\n colorClassName: 'sis-black',\r\n tooltipTranslationString: 'webreport.term.inactive',\r\n },\r\n ],\r\n [\r\n SisMediaAssetStatus.Closed,\r\n {\r\n iconName: 'sis-closed',\r\n colorClassName: 'sis-red',\r\n tooltipTranslationString: 'webreport.term.closed',\r\n },\r\n ],\r\n [\r\n SisMediaAssetStatus.Preparation,\r\n {\r\n iconName: 'sis-preparation',\r\n colorClassName: 'sis-yellow',\r\n tooltipTranslationString: 'webreport.term.preparation',\r\n },\r\n ],\r\n [\r\n SisMediaAssetStatus.Open,\r\n {\r\n iconName: 'sis-open',\r\n colorClassName: 'sis-green',\r\n tooltipTranslationString: 'webreport.term.open',\r\n },\r\n ],\r\n ]);\r\n\r\n guid: string;\r\n name: string;\r\n nameEn: string;\r\n type: string;\r\n typeDescription: string;\r\n status: SisMediaAssetStatus;\r\n order: number;\r\n assetCategory: SisMediaAssetCategory;\r\n tenantAlias: string;\r\n season: Season;\r\n options: SisMediaItemIconOptions;\r\n label: string;\r\n lengthMeter: number;\r\n\r\n constructor(init?: Partial>) {\r\n Object.assign(this, init);\r\n\r\n this.options = SisMediaItem.iconOptions.get(init?.status) ?? { colorClassName: 'sis-none' };\r\n }\r\n}\r\n","import moment from 'moment';\r\nimport { SisMediaSetting } from 'src/app/webreport/domain/sismedia-setting.model';\r\n\r\nexport class SisMediaSettingAdapter {\r\n static adapt(item: any): SisMediaSetting | null {\r\n if (!item) {\r\n return null;\r\n }\r\n\r\n return {\r\n tenantGuid: item.tenantGuid,\r\n winterSeasonStartDate: new Date(moment(item.winterSeasonStartDate).format('YYYY-MM-DD')),\r\n winterSeasonEndDate: new Date(moment(item.winterSeasonEndDate).format('YYYY-MM-DD')),\r\n liftsOpenFrom: item.liftsOpenFrom,\r\n liftsOpenTo: item.liftsOpenTo,\r\n };\r\n }\r\n}\r\n","import { WebReportInfotext } from 'src/app/webreport/domain/webreport-infotext.model';\r\n\r\nexport class WebReportInfotextItemAdapter {\r\n static adapt(items: any): WebReportInfotext {\r\n const result: WebReportInfotext = {\r\n textDe: items.textDe,\r\n textEn: items.textEn,\r\n textFr: items.textFr,\r\n textIt: items.textIt,\r\n timestamp: items.timestamp,\r\n };\r\n return result;\r\n }\r\n}\r\n","import { WebReportMeteoInfoItem } from 'src/app/webreport/domain/webreport-meteo-info-item.model';\r\n\r\nexport class WebReportMeteoInfoItemAdapter {\r\n static adapt(items: any[]): WebReportMeteoInfoItem[] {\r\n if (!items) {\r\n return [];\r\n }\r\n\r\n return items\r\n .map((i) => ({\r\n guid: i.guid,\r\n tenantGuid: i.tenantGuid,\r\n location: i.location,\r\n altitude: i.altitude,\r\n temperature: this.toNumberOrUndefined(i.temperature),\r\n snowDepth: this.toNumberOrUndefined(i.snowDepth),\r\n freshSnow: this.toNumberOrUndefined(i.freshSnow),\r\n weather: i.weather,\r\n avalancheDangerLevel: i.avalancheDangerLevel,\r\n snowConditionId: i.snowConditionId,\r\n slopeConditionId: i.slopeConditionId,\r\n windSpeed: i.windSpeed,\r\n latestSnowfall: this.toStringAsLocalDate(i.latestSnowfall),\r\n }))\r\n .sort((a, b) => a.altitude - b.altitude);\r\n }\r\n\r\n static toNumberOrUndefined(value: any): number | undefined {\r\n return isNaN(Number(value)) ? undefined : Number(value);\r\n }\r\n\r\n static toStringAsLocalDate(dateString: string): string {\r\n const date = new Date(dateString);\r\n if (isNaN(date.getTime())) {\r\n throw new Error('Invalid date string');\r\n }\r\n return `${String(date.getUTCDate()).padStart(2, '0')}.${String(date.getUTCMonth() + 1).padStart(2, '0')}.${date.getUTCFullYear()}`;\r\n }\r\n\r\n}\r\n","export enum WebReportMobileAssetCategory {\r\n Lift = 1,\r\n Slope = 2,\r\n Trail = 3,\r\n Gastro = 4,\r\n Poi = 5,\r\n Meteo = 6,\r\n}\r\n","import { Converter } from 'src/app/core/livedata/converter';\r\nimport { SisMediaAssetCategory } from 'src/app/webreport/domain/sismedia-asset-category.enum';\r\nimport { SisMediaAssetStatus } from 'src/app/webreport/domain/sismedia-asset-status.enum';\r\nimport { SisMediaItemAdapter } from 'src/app/webreport/domain/sismedia-item.adapter';\r\nimport { SisMediaItem } from 'src/app/webreport/domain/sismedia-item.model';\r\nimport { SisMediaSettingAdapter } from 'src/app/webreport/domain/sismedia-setting.adapter';\r\nimport { SisMediaSetting } from 'src/app/webreport/domain/sismedia-setting.model';\r\nimport { WebReport } from 'src/app/webreport/domain/webreport.model';\r\nimport { WebReportInfotext } from 'src/app/webreport/domain/webreport-infotext.model';\r\nimport { WebReportInfotextItemAdapter } from 'src/app/webreport/domain/webreport-infotext-item.adapter';\r\nimport { WebReportMeteoInfoItemAdapter } from 'src/app/webreport/domain/webreport-meteo-info-item.adapter';\r\nimport { WebReportMeteoInfoItem } from 'src/app/webreport/domain/webreport-meteo-info-item.model';\r\nimport { WebReportTenant } from 'src/app/webreport/domain/webreport-tenant.model';\r\n\r\nexport class WebReportAdapter {\r\n static adapt(item: any, columns: number): WebReport {\r\n if (!item) {\r\n return null;\r\n }\r\n\r\n const tenant: WebReportTenant = {\r\n alias: item.tenant.alias,\r\n name: item.tenant.name,\r\n guid: item.tenant.guid,\r\n logo: item.tenant.logoFilename,\r\n website: item.tenant.website,\r\n phone: item.tenant.phone,\r\n timeZoneId: item.tenant.timeZoneId,\r\n };\r\n\r\n const exportConfig = JSON.parse(item.exportConfig) || {};\r\n exportConfig.columns = !isNaN(columns) && columns > 0 ? columns : exportConfig.columns ?? 1;\r\n\r\n const sisMediaItemsByCategory = Object.entries(item.webReportAssetsByCategory).reduce(\r\n (p, c) =>\r\n p.set(\r\n SisMediaAssetCategory[Converter.firstLetterUppercase(c[0])],\r\n SisMediaItemAdapter.adapt(c[1])\r\n .filter((d) => d.status !== SisMediaAssetStatus.Disabled && d.status !== SisMediaAssetStatus.NoStatus)\r\n .sort((a, b) => (a.name < b.name ? -1 : 1))\r\n .sort((a, b) => (a.type < b.type ? -1 : 1))\r\n .sort((a, b) => a.order - b.order)\r\n ),\r\n new Map()\r\n );\r\n\r\n const infotextsByTenantAlias = Object.entries(item.infotextsByTenantAlias).reduce(\r\n (k, v) => k.set(Converter.firstLetterUppercase(v[0]), WebReportInfotextItemAdapter.adapt(v[1])),\r\n new Map()\r\n );\r\n\r\n const meteoInfosByTenantAlias = Object.entries(item.meteoInfosByTenantAlias).reduce(\r\n (k, v) => k.set(Converter.firstLetterUppercase(v[0]), WebReportMeteoInfoItemAdapter.adapt(v[1] as any[])),\r\n new Map()\r\n );\r\n\r\n const sisMediaSettingByTenantAlias = Object.entries(item.sisMediaSettingByTenantAlias).reduce(\r\n (k, v) => k.set(Converter.firstLetterUppercase(v[0]), SisMediaSettingAdapter.adapt(v[1] as any)),\r\n new Map()\r\n );\r\n\r\n return {\r\n tenant,\r\n tenantOrders: item.tenantOrders,\r\n exportConfig,\r\n sisMediaItemsByCategory,\r\n infotextsByTenantAlias,\r\n meteoInfosByTenantAlias,\r\n sisMediaSettingByTenantAlias,\r\n };\r\n }\r\n}\r\n","import { Component, Input, OnChanges, OnInit } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Unsubscriber } from 'src/app/core/unsubscriber/unsubscriber';\r\nimport { SisMediaItem } from 'src/app/webreport/domain/sismedia-item.model';\r\nimport { WebReportConfig } from 'src/app/webreport/domain/webreport-config.model';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Component({\r\n selector: 'sis-sismedia-item',\r\n templateUrl: './sismedia-item.component.html',\r\n styleUrls: ['./sismedia-item.component.scss'],\r\n})\r\nexport class SisMediaItemComponent extends Unsubscriber implements OnInit, OnChanges {\r\n @Input() item: SisMediaItem;\r\n @Input() bigScreenMode: boolean;\r\n @Input() config: WebReportConfig;\r\n @Input() mobileStyleTenant: boolean;\r\n @Input() longestLabelLength: number;\r\n\r\n name: string;\r\n icon: string;\r\n invert: boolean;\r\n showingLabelLength: string;\r\n\r\n constructor(private translateService: TranslateService) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.item) {\r\n this.icon = `${environment.baseUrlPublicAssets}/icons/sismedia/styles/sisag/${this.item.type}.svg`;\r\n this.invert =\r\n !(this.item.type.startsWith('piste') || this.item.type.endsWith('-color')) && !this.mobileStyleTenant;\r\n this.translateService.onLangChange.pipe(takeUntil(this.onDestroy$)).subscribe((event) => {\r\n this.name = event.lang === 'en' ? this.item.nameEn : this.item.name;\r\n });\r\n }\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.showingLabelLength = this.bigScreenMode\r\n ? `${this.longestLabelLength + 10}px`\r\n : `${Math.min(36, this.longestLabelLength) + 4}px`;\r\n this.name =\r\n (this.translateService.currentLang || this.translateService.defaultLang) === 'en'\r\n ? this.item.nameEn\r\n : this.item.name;\r\n }\r\n}\r\n","\r\n\r\n \r\n \r\n \r\n \r\n \r\n {{ this.item.label }}\r\n \r\n \r\n {{ this.name }}\r\n \r\n \r\n {{ this.item.lengthMeter | metersToKilometers }}\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.item.label }}\r\n \r\n \r\n {{ this.item.name }}\r\n \r\n \r\n \r\n\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport moment from 'moment';\r\nimport { Observable, takeUntil } from 'rxjs';\r\nimport { Unsubscriber } from 'src/app/core/unsubscriber/unsubscriber';\r\nimport { SisMediaSetting } from 'src/app/webreport/domain/sismedia-setting.model';\r\nimport { WebReportConfig } from 'src/app/webreport/domain/webreport-config.model';\r\nimport { WebReportMeteoInfoItem } from 'src/app/webreport/domain/webreport-meteo-info-item.model';\r\n\r\n@Component({\r\n selector: 'sis-webreport-meteo-desktop',\r\n templateUrl: './webreport-meteo-desktop.component.html',\r\n styleUrls: ['./webreport-meteo-desktop.component.scss'],\r\n})\r\nexport class WebReportMeteoDesktopComponent extends Unsubscriber implements OnInit {\r\n readonly slopeCondition: Array<{ value: number; translationString: string }> = [\r\n { value: 800, translationString: 'webreport.phrase.condition.noInfo' },\r\n { value: 801, translationString: 'webreport.phrase.condition.good' },\r\n { value: 802, translationString: 'webreport.phrase.condition.goodFair' },\r\n { value: 803, translationString: 'webreport.phrase.condition.fairGood' },\r\n { value: 804, translationString: 'webreport.phrase.condition.fair' },\r\n { value: 805, translationString: 'webreport.phrase.condition.closed' },\r\n { value: 806, translationString: 'webreport.phrase.condition.eos' },\r\n ];\r\n\r\n readonly snowCondition: Array<{ value: number; translationString: string }> = [\r\n { value: 900, translationString: 'webreport.phrase.condition.noInfo' },\r\n { value: 901, translationString: 'webreport.phrase.condition.powder' },\r\n { value: 905, translationString: 'webreport.phrase.condition.hard' },\r\n { value: 909, translationString: 'webreport.phrase.condition.sulz' },\r\n { value: 913, translationString: 'webreport.phrase.condition.wet' },\r\n ];\r\n\r\n readonly avalancheLevel: Array<{ value: number; translationString: string }> = [\r\n { value: 0, translationString: 'webreport.term.dangerlevel.noInfo' },\r\n { value: 1, translationString: 'webreport.term.dangerlevel.low' },\r\n { value: 2, translationString: 'webreport.term.dangerlevel.moderate' },\r\n { value: 3, translationString: 'webreport.term.dangerlevel.considerable' },\r\n { value: 4, translationString: 'webreport.term.dangerlevel.high' },\r\n { value: 5, translationString: 'webreport.term.dangerlevel.veryHigh' },\r\n ];\r\n\r\n @Input() tenantAlias: string;\r\n @Input() meteoInfos$: Observable>;\r\n @Input() config: WebReportConfig;\r\n @Input() sisMediaSettingByTenantAlias: Map;\r\n\r\n meteoInfosReport: WebReportMeteoInfoItem[][] = [];\r\n columnSize: number;\r\n isWinterSeason: boolean;\r\n\r\n showWeather: boolean;\r\n showTemperature: boolean;\r\n showFreshSnow: boolean;\r\n showSnowDepth: boolean;\r\n showAvalancheDangerLevel: boolean;\r\n showSnowCondition: boolean;\r\n showSlopeCondition: boolean;\r\n showWindSpeed: boolean;\r\n showLatestSnowfall: boolean;\r\n\r\n showWeatherTitle: boolean;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.meteoInfos$.pipe(takeUntil(this.onDestroy$)).subscribe((meteoInfos) => {\r\n const meteoInfosTenant = meteoInfos.get(this.tenantAlias);\r\n if (!meteoInfosTenant?.length) {\r\n this.meteoInfosReport = [];\r\n return;\r\n }\r\n\r\n this.updateMeteoReportSettings(meteoInfosTenant);\r\n this.meteoInfosReport = this.createMeteoReport(meteoInfosTenant);\r\n });\r\n }\r\n\r\n private updateMeteoReportSettings(meteoInfos: WebReportMeteoInfoItem[]): void {\r\n const sisMediaSettings = this.sisMediaSettingByTenantAlias.get(this.tenantAlias);\r\n this.isWinterSeason =\r\n sisMediaSettings == null ||\r\n moment().isBetween(\r\n moment(sisMediaSettings.winterSeasonStartDate),\r\n moment(sisMediaSettings.winterSeasonEndDate),\r\n null,\r\n '[]'\r\n );\r\n\r\n this.columnSize = 12 / this.config.columns;\r\n this.showWeather = this.config?.meteoDatas?.includes('weather');\r\n this.showTemperature =\r\n this.config?.meteoDatas?.includes('temperature') && meteoInfos.some((item) => item.temperature != null);\r\n this.showWindSpeed = this.config?.meteoDatas?.includes('windSpeed');\r\n\r\n this.showFreshSnow = this.config?.meteoDatas?.includes('freshSnow');\r\n this.showSnowDepth = this.config?.meteoDatas?.includes('snowDepth');\r\n this.showAvalancheDangerLevel = this.config?.meteoDatas?.includes('avalancheDangerLevel');\r\n this.showSnowCondition = this.config?.meteoDatas?.includes('snowCondition');\r\n this.showSlopeCondition = this.config?.meteoDatas?.includes('slopeCondition');\r\n this.showLatestSnowfall = this.config?.meteoDatas?.includes('latestSnowfall');\r\n\r\n this.showWeatherTitle = this.showWeather || this.showWindSpeed;\r\n }\r\n\r\n private createMeteoReport(meteoInfos: WebReportMeteoInfoItem[]): WebReportMeteoInfoItem[][] {\r\n const rows = Math.ceil(meteoInfos.length / this.config.columns);\r\n const meteoReport = Array(rows)\r\n .fill(null)\r\n .map(() => []);\r\n meteoInfos.forEach((item, index) => {\r\n const row = Math.floor(index / this.config.columns);\r\n const column = index % this.config.columns;\r\n meteoReport[row][column] = item;\r\n });\r\n return meteoReport;\r\n }\r\n\r\n public getAvalancheDangerLevelTranslationString(dangerLevel: number): string {\r\n return this.avalancheLevel.find((al) => al.value === dangerLevel).translationString;\r\n }\r\n\r\n public getSnowConditionTranslationString(snowConditionId: number): string {\r\n return this.snowCondition.find((al) => al.value === snowConditionId).translationString;\r\n }\r\n\r\n public getSlopeConditionTranslationString(slopeConditionId: number): string {\r\n return this.slopeCondition.find((al) => al.value === slopeConditionId).translationString;\r\n }\r\n\r\n trackByIndex(index: number): number {\r\n return index;\r\n }\r\n\r\n trackByGuid(_index: number, item: WebReportMeteoInfoItem): string {\r\n return item.guid;\r\n }\r\n}\r\n"," 0\">\r\n \r\n \r\n {{\r\n this.showWeatherTitle\r\n ? ('webreport.assetCategoryWeatherAndSnowConditions' | translate)\r\n : ('webreport.assetCategorySnowConditions' | translate)\r\n }}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ this.weatherStation.location }}\r\n {{\r\n this.weatherStation.altitude.slice(0, -1) + ' ' + ('webreport.term.metersAboveSeaLevel' | translate)\r\n }}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {{ 'webreport.term.temperature' | translate }}\r\n \r\n \r\n {{ weatherStation.temperature + ' °C' }}\r\n \r\n \r\n\r\n \r\n \r\n {{ 'webreport.term.windSpeed' | translate }}\r\n \r\n \r\n {{ weatherStation.windSpeed + ' km/h' }}\r\n \r\n \r\n\r\n \r\n \r\n {{ 'webreport.term.snowCondition' | translate }}\r\n \r\n \r\n {{ this.getSnowConditionTranslationString(weatherStation.snowConditionId) | translate }}\r\n \r\n \r\n\r\n \r\n \r\n {{ 'webreport.term.slopeCondition' | translate }}\r\n \r\n \r\n {{ this.getSlopeConditionTranslationString(weatherStation.slopeConditionId) | translate }}\r\n \r\n \r\n\r\n \r\n \r\n {{ 'webreport.term.freshSnow' | translate }}\r\n \r\n \r\n {{ weatherStation.freshSnow + ' cm' }}\r\n \r\n \r\n\r\n \r\n \r\n {{ 'webreport.term.snowDepth' | translate }}\r\n \r\n \r\n {{ weatherStation.snowDepth + ' cm' }}\r\n \r\n \r\n\r\n \r\n \r\n {{ 'webreport.term.latestSnowfall' | translate }}\r\n \r\n \r\n {{ weatherStation.latestSnowfall }}\r\n \r\n \r\n\r\n \r\n \r\n {{ 'webreport.term.avalancheDangerLevel' | translate }}\r\n \r\n \r\n {{ this.getAvalancheDangerLevelTranslationString(weatherStation.avalancheDangerLevel) | translate }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport moment from 'moment';\r\nimport { Observable, takeUntil } from 'rxjs';\r\nimport { Unsubscriber } from 'src/app/core/unsubscriber/unsubscriber';\r\nimport { SisMediaSetting } from 'src/app/webreport/domain/sismedia-setting.model';\r\nimport { WebReportConfig } from 'src/app/webreport/domain/webreport-config.model';\r\nimport { WebReportMeteoInfoItem } from 'src/app/webreport/domain/webreport-meteo-info-item.model';\r\n\r\n@Component({\r\n selector: 'sis-webreport-meteo-mobile-item',\r\n templateUrl: './webreport-meteo-mobile-item.component.html',\r\n styleUrls: ['./webreport-meteo-mobile-item.component.scss'],\r\n})\r\nexport class WebreportMeteoMobileItemComponent extends Unsubscriber implements OnInit {\r\n readonly slopeCondition: Array<{ value: number; translationString: string }> = [\r\n { value: 800, translationString: 'webreport.phrase.condition.noInfo' },\r\n { value: 801, translationString: 'webreport.phrase.condition.good' },\r\n { value: 802, translationString: 'webreport.phrase.condition.goodFair' },\r\n { value: 803, translationString: 'webreport.phrase.condition.fairGood' },\r\n { value: 804, translationString: 'webreport.phrase.condition.fair' },\r\n { value: 805, translationString: 'webreport.phrase.condition.closed' },\r\n { value: 806, translationString: 'webreport.phrase.condition.eos' },\r\n ];\r\n\r\n readonly snowCondition: Array<{ value: number; translationString: string }> = [\r\n { value: 900, translationString: 'webreport.phrase.condition.noInfo' },\r\n { value: 901, translationString: 'webreport.phrase.condition.powder' },\r\n { value: 905, translationString: 'webreport.phrase.condition.hard' },\r\n { value: 909, translationString: 'webreport.phrase.condition.sulz' },\r\n { value: 913, translationString: 'webreport.phrase.condition.wet' },\r\n ];\r\n\r\n readonly avalancheLevel: Array<{ value: number; translationString: string }> = [\r\n { value: 0, translationString: 'webreport.term.dangerlevel.noInfo' },\r\n { value: 1, translationString: 'webreport.term.dangerlevel.low' },\r\n { value: 2, translationString: 'webreport.term.dangerlevel.moderate' },\r\n { value: 3, translationString: 'webreport.term.dangerlevel.considerable' },\r\n { value: 4, translationString: 'webreport.term.dangerlevel.high' },\r\n { value: 5, translationString: 'webreport.term.dangerlevel.veryHigh' },\r\n ];\r\n\r\n @Input() meteoInfos$: Observable>;\r\n @Input() config: WebReportConfig;\r\n @Input() mobileStyleTenant: boolean;\r\n @Input() tenantAlias: string;\r\n @Input() sisMediaSettingByTenantAlias: Map;\r\n\r\n weatherStations: WebReportMeteoInfoItem[];\r\n\r\n showWeather: boolean;\r\n showTemperature: boolean;\r\n showFreshSnow: boolean;\r\n showSnowDepth: boolean;\r\n showAvalancheDangerLevel: boolean;\r\n showSnowCondition: boolean;\r\n showSlopeCondition: boolean;\r\n showWindSpeed: boolean;\r\n showLatestSnowfall: boolean;\r\n\r\n ngOnInit(): void {\r\n this.meteoInfos$.pipe(takeUntil(this.onDestroy$)).subscribe((meteoInfos) => {\r\n this.weatherStations = meteoInfos.get(this.tenantAlias);\r\n this.updateMeteoReportSettings();\r\n });\r\n }\r\n\r\n private updateMeteoReportSettings(): void {\r\n const sisMediaSettings = this.sisMediaSettingByTenantAlias.get(this.tenantAlias);\r\n const isWinterSeason =\r\n sisMediaSettings == null ||\r\n moment().isBetween(\r\n moment(sisMediaSettings.winterSeasonStartDate),\r\n moment(sisMediaSettings.winterSeasonEndDate),\r\n null,\r\n '[]'\r\n );\r\n\r\n this.showWeather = this.config?.meteoDatas?.includes('weather');\r\n this.showTemperature = this.config?.meteoDatas?.includes('temperature');\r\n this.showFreshSnow = isWinterSeason && this.config?.meteoDatas?.includes('freshSnow');\r\n this.showSnowDepth = isWinterSeason && this.config?.meteoDatas?.includes('snowDepth');\r\n this.showAvalancheDangerLevel = isWinterSeason && this.config?.meteoDatas?.includes('avalancheDangerLevel');\r\n this.showSnowCondition = isWinterSeason && this.config?.meteoDatas?.includes('snowCondition');\r\n this.showSlopeCondition = isWinterSeason && this.config?.meteoDatas?.includes('slopeCondition');\r\n this.showWindSpeed = this.config?.meteoDatas?.includes('windSpeed');\r\n this.showLatestSnowfall = isWinterSeason && this.config?.meteoDatas?.includes('latestSnowfall');\r\n }\r\n\r\n public getAvalancheDangerLevelTranslationString(dangerLevel: number): string {\r\n return this.avalancheLevel.find((al) => al.value === dangerLevel).translationString;\r\n }\r\n\r\n public getSnowConditionTranslationString(snowConditionId: number): string {\r\n return this.snowCondition.find((al) => al.value === snowConditionId).translationString;\r\n }\r\n\r\n public getSlopeConditionTranslationString(slopeConditionId: number): string {\r\n return this.slopeCondition.find((al) => al.value === slopeConditionId).translationString;\r\n }\r\n\r\n trackByGuid(_index: number, item: WebReportMeteoInfoItem): string {\r\n return item.guid;\r\n }\r\n}\r\n","\r\n \r\n {{ this.tenantAlias }}\r\n \r\n\r\n\r\n\r\n \r\n \r\n {{ this.weatherStation.location }}\r\n {{\r\n this.weatherStation.altitude.slice(0, -1) + ' ' + ('webreport.term.metersAboveSeaLevel' | translate)\r\n }}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {{ 'webreport.term.temperature' | translate }}\r\n \r\n \r\n {{ weatherStation.temperature + ' °C' }}\r\n \r\n \r\n\r\n \r\n \r\n {{ 'webreport.term.snowCondition' | translate }}\r\n \r\n \r\n {{ this.getSnowConditionTranslationString(weatherStation.snowConditionId) | translate }}\r\n \r\n \r\n\r\n \r\n \r\n {{ 'webreport.term.slopeCondition' | translate }}\r\n \r\n \r\n {{ this.getSlopeConditionTranslationString(weatherStation.slopeConditionId) | translate }}\r\n \r\n \r\n\r\n \r\n \r\n {{ 'webreport.term.freshSnow' | translate }}\r\n \r\n \r\n {{ weatherStation.freshSnow + ' cm' }}\r\n \r\n \r\n\r\n \r\n \r\n {{ 'webreport.term.snowDepth' | translate }}\r\n \r\n \r\n {{ weatherStation.snowDepth + ' cm' }}\r\n \r\n \r\n\r\n \r\n \r\n {{ 'webreport.term.latestSnowfall' | translate }}\r\n \r\n \r\n {{ weatherStation.latestSnowfall }}\r\n \r\n \r\n\r\n \r\n \r\n {{ 'webreport.term.avalancheDangerLevel' | translate }}\r\n \r\n \r\n {{ this.getAvalancheDangerLevelTranslationString(weatherStation.avalancheDangerLevel) | translate }}\r\n \r\n \r\n\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Observable, takeUntil } from 'rxjs';\r\nimport { Unsubscriber } from 'src/app/core/unsubscriber/unsubscriber';\r\nimport { SisMediaSetting } from 'src/app/webreport/domain/sismedia-setting.model';\r\nimport { WebReportConfig } from 'src/app/webreport/domain/webreport-config.model';\r\nimport { WebReportMeteoInfoItem } from 'src/app/webreport/domain/webreport-meteo-info-item.model';\r\n\r\n@Component({\r\n selector: 'sis-webreport-meteo-mobile',\r\n templateUrl: './webreport-meteo-mobile.component.html',\r\n styleUrls: ['./webreport-meteo-mobile.component.scss'],\r\n})\r\nexport class WebreportMeteoMobileComponent extends Unsubscriber implements OnInit {\r\n @Input() meteoInfos$: Observable>;\r\n @Input() config: WebReportConfig;\r\n @Input() mobileStyleTenant: boolean;\r\n @Input() tenantAlias: string;\r\n @Input() sisMediaSettingByTenantAlias: Map;\r\n\r\n meteoInfosReport: Map;\r\n\r\n ngOnInit(): void {\r\n this.meteoInfos$.pipe(takeUntil(this.onDestroy$)).subscribe((meteoInfos) => {\r\n this.meteoInfosReport = meteoInfos;\r\n });\r\n }\r\n\r\n trackByTenantKey(_index: number, tenant: { key: string; value: WebReportMeteoInfoItem[] }): string {\r\n return tenant.key;\r\n }\r\n\r\n trackByGuid(_index: number, item: WebReportMeteoInfoItem): string {\r\n return item.guid;\r\n }\r\n}\r\n","\r\n \r\n \r\n \r\n\r\n\r\n 0\">\r\n \r\n\r\n","import { ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Unsubscriber } from 'src/app/core/unsubscriber/unsubscriber';\r\nimport { SisMediaAssetCategory } from 'src/app/webreport/domain/sismedia-asset-category.enum';\r\nimport { SisMediaItem } from 'src/app/webreport/domain/sismedia-item.model';\r\nimport { WebReportConfig } from 'src/app/webreport/domain/webreport-config.model';\r\nimport { WebReportMobile } from 'src/app/webreport/domain/webreport-mobile.model';\r\nimport pixelWidth from 'string-pixel-width';\r\n\r\n@Component({\r\n selector: 'sis-webreport-mobile-category',\r\n templateUrl: './webreport-mobile-category.component.html',\r\n styleUrls: ['./webreport-mobile-category.component.scss'],\r\n})\r\nexport class WebreportMobileCategoryComponent extends Unsubscriber implements OnInit {\r\n @Input() category: SisMediaAssetCategory;\r\n @Input() items: SisMediaItem[] = [];\r\n @Input() itemsUpdated$: Observable;\r\n @Input() config: WebReportConfig;\r\n @Input() mobileStyleTenant: boolean;\r\n\r\n webReportMobileItems: WebReportMobile[];\r\n\r\n constructor(private changeDetection: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.itemsUpdated$.pipe(takeUntil(this.onDestroy$)).subscribe(() => {\r\n const mobileItems = this.items.reduce((p: WebReportMobile[], c: SisMediaItem) => {\r\n let webReportMobile = p.find((m) => m.tenantAlias === c.tenantAlias);\r\n if (!webReportMobile) {\r\n webReportMobile = {\r\n tenantAlias: c.tenantAlias,\r\n items: [],\r\n longestLabelLength: 0,\r\n };\r\n p.push(webReportMobile);\r\n }\r\n webReportMobile.items.push(c);\r\n webReportMobile.items\r\n .sort((a, b) => (a.name < b.name ? -1 : 1))\r\n .sort((a, b) => (a.type < b.type ? -1 : 1))\r\n .sort((a, b) => a.order - b.order);\r\n return p;\r\n }, []);\r\n\r\n for (const mobileItem of mobileItems) {\r\n let longestLabelLengthPixel = 0;\r\n for (const item of mobileItem.items) {\r\n longestLabelLengthPixel = Math.max(\r\n longestLabelLengthPixel,\r\n pixelWidth(item.label, { font: 'arial', size: 13 })\r\n );\r\n }\r\n mobileItem.longestLabelLength = longestLabelLengthPixel;\r\n }\r\n\r\n this.webReportMobileItems = mobileItems;\r\n\r\n this.changeDetection.detectChanges();\r\n });\r\n }\r\n\r\n trackByTenantAlias(_index: number, item: WebReportMobile): string {\r\n return item.tenantAlias;\r\n }\r\n}\r\n","\r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n {{ 'webreport.term.no' | translate }} {{ this.titleTranslationString | translate }}\r\n {{ 'webreport.term.available' | translate }}\r\n \r\n\r\n\r\n\r\n","\r\n \r\n {{ this.tenantAlias }}\r\n \r\n\r\n\r\n","import { Component, Input } from '@angular/core';\r\nimport { SisMediaItem } from 'src/app/webreport/domain/sismedia-item.model';\r\nimport { WebReportConfig } from 'src/app/webreport/domain/webreport-config.model';\r\n\r\n@Component({\r\n selector: 'sis-webreport-mobile-tenant',\r\n templateUrl: './webreport-mobile-tenant.component.html',\r\n styleUrls: ['./webreport-mobile-tenant.component.scss'],\r\n})\r\nexport class WebreportMobileTenantComponent {\r\n @Input() tenantAlias: string;\r\n @Input() items: SisMediaItem[] = [];\r\n @Input() config: WebReportConfig;\r\n @Input() mobileStyleTenant: boolean;\r\n @Input() longestLabelLength: number;\r\n\r\n trackByItemGuid(_index: number, item: SisMediaItem): string {\r\n return item.guid;\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { RouterModule } from '@angular/router';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CoreModule } from 'src/app/core/core.module';\r\nimport { SisMediaItemComponent } from 'src/app/webreport/sismedia-item/sismedia-item.component';\r\nimport { WebReportPage } from 'src/app/webreport/webreport.page';\r\nimport { WebReportMeteoDesktopComponent } from 'src/app/webreport/webreport-meteo-desktop/webreport-meteo-desktop.component';\r\nimport { WebreportMeteoMobileComponent } from 'src/app/webreport/webreport-meteo-mobile/webreport-meteo-mobile.component';\r\nimport { WebreportMeteoMobileItemComponent } from 'src/app/webreport/webreport-meteo-mobile/webreport-meteo-mobile-item/webreport-meteo-mobile-item.component';\r\nimport { WebreportMobileCategoryComponent } from 'src/app/webreport/webreport-mobile/webreport-mobile-category.component';\r\nimport { WebreportMobileTenantComponent } from 'src/app/webreport/webreport-mobile/webreport-mobile-tenant/webreport-mobile-tenant.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n IonicModule,\r\n RouterModule.forChild([\r\n {\r\n path: '',\r\n component: WebReportPage,\r\n },\r\n ]),\r\n CoreModule,\r\n MatTooltipModule,\r\n TranslateModule,\r\n ],\r\n declarations: [\r\n WebReportPage,\r\n SisMediaItemComponent,\r\n WebreportMobileCategoryComponent,\r\n WebreportMobileTenantComponent,\r\n WebReportMeteoDesktopComponent,\r\n WebreportMeteoMobileComponent,\r\n WebreportMeteoMobileItemComponent,\r\n ],\r\n})\r\nexport class WebReportModule {}\r\n","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { ActivatedRoute, Params } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport moment from 'moment-timezone';\r\nimport { combineLatest, Observable, of, ReplaySubject } from 'rxjs';\r\nimport { map, shareReplay, switchMap, takeUntil } from 'rxjs/operators';\r\nimport { Season } from 'src/app/core/domain/season.enum';\r\nimport { Unsubscriber } from 'src/app/core/unsubscriber/unsubscriber';\r\nimport { ScreenSizeService } from 'src/app/core/utils/screen-size.service';\r\nimport { SisMediaAssetCategory } from 'src/app/webreport/domain/sismedia-asset-category.enum';\r\nimport { SisMediaItem } from 'src/app/webreport/domain/sismedia-item.model';\r\nimport { SisMediaSetting } from 'src/app/webreport/domain/sismedia-setting.model';\r\nimport { WebReport } from 'src/app/webreport/domain/webreport.model';\r\nimport { WebReportConfig } from 'src/app/webreport/domain/webreport-config.model';\r\nimport { WebReportDesktop } from 'src/app/webreport/domain/webreport-desktop.model';\r\nimport { WebReportDesktopRow } from 'src/app/webreport/domain/webreport-desktop-row.model';\r\nimport { WebReportInfotext } from 'src/app/webreport/domain/webreport-infotext.model';\r\nimport { WebReportMeteoInfoItem } from 'src/app/webreport/domain/webreport-meteo-info-item.model';\r\nimport { WebReportMobile } from 'src/app/webreport/domain/webreport-mobile.model';\r\nimport { WebReportMobileAssetCategory } from 'src/app/webreport/domain/webreport-mobile-asset-category.enum';\r\nimport { WebReportService } from 'src/app/webreport/webreport.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport pixelWidth from 'string-pixel-width';\r\nimport { findIana } from 'windows-iana';\r\n\r\n@Component({\r\n templateUrl: './webreport.page.html',\r\n styleUrls: ['./webreport.page.scss'],\r\n selector: 'sis-webreport',\r\n})\r\nexport class WebReportPage extends Unsubscriber implements OnInit {\r\n private static readonly titleTypesByAssetCategoryMap: Map> = new Map([\r\n [\r\n SisMediaAssetCategory.Slope,\r\n new Map([\r\n ['pisteleicht', 'Slope'],\r\n ['pistemittel', 'Slope'],\r\n ['pisteschwer', 'Slope'],\r\n ['langlauf', 'Crosscountry'],\r\n ['langlaufklassisch', 'Crosscountry'],\r\n ['langlaufskating', 'Crosscountry'],\r\n ['schlitteln', 'Sledging'],\r\n ['airboard', 'Airboard'],\r\n ]),\r\n ],\r\n [\r\n SisMediaAssetCategory.Trail,\r\n new Map([\r\n ['wandern', 'Hiking'],\r\n ['schneeschuh', 'Snowshoe'],\r\n ['bike', 'Bike'],\r\n ['downhill', 'Bike'],\r\n ['skitour', 'Skitour'],\r\n ]),\r\n ],\r\n [\r\n SisMediaAssetCategory.Poi,\r\n new Map([\r\n ['shop', 'ShopRental'],\r\n ['schlittenvermietung', 'ShopRental'],\r\n ['skivermietung', 'ShopRental'],\r\n ['trottivermietung', 'ShopRental'],\r\n ['veloverleih', 'ShopRental'],\r\n ['vermietung', 'ShopRental'],\r\n ]),\r\n ],\r\n ]);\r\n\r\n private static readonly titleOrder = [\r\n SisMediaAssetCategory[SisMediaAssetCategory.Slope],\r\n 'Slope',\r\n 'Crosscountry',\r\n 'Sledging',\r\n 'Airboard',\r\n SisMediaAssetCategory[SisMediaAssetCategory.Trail],\r\n 'Hiking',\r\n 'Snowshoe',\r\n 'HikingWinter',\r\n 'Bike',\r\n 'ShopRental',\r\n SisMediaAssetCategory[SisMediaAssetCategory.Poi],\r\n ];\r\n\r\n private readonly selectedAssetCategory$ = new ReplaySubject(1);\r\n\r\n private readonly urlParams$: Observable<[Params, Params]> = combineLatest([\r\n this.activatedRoute.params,\r\n this.activatedRoute.queryParams,\r\n ]);\r\n\r\n readonly webReport$: Observable = this.urlParams$.pipe(\r\n switchMap(([params, queryParams]) => {\r\n const urlName = params['urlName'] as string;\r\n const season: number = +queryParams['season'] as number;\r\n const columnsInParams: number = Number.parseInt(queryParams['columns'], 10);\r\n const assetFilters: string[] =\r\n (queryParams['hide'] as string)\r\n ?.trim()\r\n .toLowerCase()\r\n .split(',')\r\n .filter((f) => f !== '') ?? [];\r\n\r\n return this.webReportService.requestSisMediaAssets(urlName, columnsInParams).pipe(\r\n map((webReport) => {\r\n const assetCategories = [...webReport.sisMediaItemsByCategory.keys()].map(\r\n (key) => SisMediaAssetCategory[key]\r\n );\r\n\r\n assetCategories.forEach((assetCategory) => {\r\n if (assetFilters.includes(assetCategory.toLowerCase())) {\r\n webReport.sisMediaItemsByCategory.delete(SisMediaAssetCategory[assetCategory]);\r\n }\r\n });\r\n\r\n webReport.sisMediaItemsByCategory.forEach((items, category) => {\r\n const filteredItems = items.filter((item) => {\r\n if (\r\n season in Season &&\r\n season !== Season.SummerAndWinter &&\r\n item.season !== season &&\r\n item.season !== Season.SummerAndWinter\r\n ) {\r\n return false;\r\n }\r\n\r\n return !assetFilters.some((assetFilter) => item.type?.toLowerCase() === assetFilter);\r\n });\r\n\r\n if (filteredItems.length === 0) {\r\n webReport.sisMediaItemsByCategory.delete(category);\r\n } else {\r\n webReport.sisMediaItemsByCategory.set(category, filteredItems);\r\n }\r\n });\r\n\r\n if (assetFilters.includes('meteo')) {\r\n webReport.meteoInfosByTenantAlias = new Map();\r\n }\r\n\r\n return webReport;\r\n })\r\n );\r\n }),\r\n shareReplay(1)\r\n );\r\n\r\n readonly webReportMeteoItems$: Observable> = this.webReport$.pipe(\r\n map((webReport) => {\r\n const webReportMeteoItems = new Map();\r\n if (!webReport) {\r\n return webReportMeteoItems;\r\n }\r\n\r\n webReport.meteoInfosByTenantAlias.forEach((values, key) => {\r\n const filteredValues = values\r\n .filter((value) => webReport.exportConfig?.meteoStations?.includes(value.location))\r\n .sort((a, b) => {\r\n const indexA = webReport.exportConfig?.meteoStations?.indexOf(a.location);\r\n const indexB = webReport.exportConfig?.meteoStations?.indexOf(b.location);\r\n return indexA - indexB;\r\n });\r\n\r\n if (filteredValues.length > 0) {\r\n webReportMeteoItems.set(key, filteredValues);\r\n }\r\n });\r\n\r\n return webReportMeteoItems;\r\n }),\r\n shareReplay({\r\n refCount: true,\r\n bufferSize: 1,\r\n })\r\n );\r\n\r\n showHeader = false;\r\n showFooter = false;\r\n showLegend = false;\r\n isMobileDataLoaded = false;\r\n isDesktopDataLoaded = false;\r\n allowPageBreak = false;\r\n showTimestamp = false;\r\n\r\n bigScreenMode: boolean;\r\n config: WebReportConfig;\r\n sisMediaSettingByTenantAlias: Map;\r\n\r\n // big screen data\r\n alias: string;\r\n headerImage: string;\r\n website: string;\r\n websiteUrl: string;\r\n phone: string;\r\n report: WebReport;\r\n timestamp: Date;\r\n\r\n webReportDesktopItems: WebReportDesktop[] = [];\r\n gridMinHeight = 0;\r\n\r\n // small screen data\r\n titleTranslationString: string;\r\n selectedAssetCategory: string;\r\n webReportItemsByCategory: Map = new Map();\r\n hasLifts: boolean;\r\n hasSlopes: boolean;\r\n hasGastros: boolean;\r\n hasTrails: boolean;\r\n hasPois: boolean;\r\n showMeteo: boolean;\r\n mobileStyleTenant = false;\r\n\r\n @ViewChild('desktopGrid', { read: ElementRef }) desktopGrid: ElementRef;\r\n\r\n constructor(\r\n private webReportService: WebReportService,\r\n private activatedRoute: ActivatedRoute,\r\n private translateService: TranslateService,\r\n private screenSizeService: ScreenSizeService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.activatedRoute.queryParams\r\n .pipe(\r\n switchMap((queryParams) => {\r\n if (queryParams['columns']) {\r\n return of(true);\r\n } else {\r\n return this.screenSizeService.bigScreenMode$;\r\n }\r\n }),\r\n takeUntil(this.onDestroy$)\r\n )\r\n .subscribe((bigScreenMode) => (this.bigScreenMode = bigScreenMode));\r\n\r\n this.urlParams$.pipe(takeUntil(this.onDestroy$)).subscribe(([, queryParams]) => {\r\n this.showHeader = queryParams['header'] === 'true';\r\n this.showFooter = queryParams['footer'] === 'true';\r\n this.showLegend = queryParams['legend'] === 'true';\r\n this.allowPageBreak = queryParams['allowPageBreak'] === 'true';\r\n this.showTimestamp = queryParams['timestamp'] === 'true';\r\n });\r\n\r\n this.webReport$.pipe(takeUntil(this.onDestroy$)).subscribe((webReport) => {\r\n this.setHeaderImageUrl(webReport.exportConfig.headerImage);\r\n\r\n this.alias = webReport.tenant.alias;\r\n this.websiteUrl = webReport.tenant.website;\r\n this.website = webReport.tenant.website?.replace(/^https?:\\/\\//, '');\r\n this.phone = webReport.tenant.phone;\r\n this.config = webReport.exportConfig;\r\n this.sisMediaSettingByTenantAlias = webReport.sisMediaSettingByTenantAlias;\r\n\r\n this.hasLifts = webReport.sisMediaItemsByCategory.has(SisMediaAssetCategory.Lift);\r\n this.hasSlopes = webReport.sisMediaItemsByCategory.has(SisMediaAssetCategory.Slope);\r\n this.hasGastros = webReport.sisMediaItemsByCategory.has(SisMediaAssetCategory.Gastro);\r\n this.hasTrails = webReport.sisMediaItemsByCategory.has(SisMediaAssetCategory.Trail);\r\n this.hasPois = webReport.sisMediaItemsByCategory.has(SisMediaAssetCategory.Poi);\r\n this.showMeteo = webReport.meteoInfosByTenantAlias.size > 0 && webReport.exportConfig?.meteoStations?.length > 0;\r\n this.mobileStyleTenant = webReport.exportConfig?.mobileStyleTenant || false;\r\n\r\n this.webReportItemsByCategory = webReport.sisMediaItemsByCategory;\r\n this.isMobileDataLoaded = true;\r\n\r\n if (!this.selectedAssetCategory) {\r\n const initialCategory = this.hasLifts\r\n ? WebReportMobileAssetCategory.Lift\r\n : this.hasSlopes\r\n ? WebReportMobileAssetCategory.Slope\r\n : this.hasGastros\r\n ? WebReportMobileAssetCategory.Gastro\r\n : this.hasTrails\r\n ? WebReportMobileAssetCategory.Trail\r\n : this.hasPois\r\n ? WebReportMobileAssetCategory.Poi\r\n : WebReportMobileAssetCategory.Meteo;\r\n\r\n this.selectedAssetCategory$.next(initialCategory);\r\n }\r\n\r\n const timeZoneIANA = findIana(webReport.tenant.timeZoneId)[0];\r\n this.timestamp = moment().tz(timeZoneIANA).toDate();\r\n });\r\n\r\n combineLatest([this.webReport$, this.urlParams$])\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe(([webReport]) => {\r\n if (this.desktopGrid) {\r\n const currentHeight = this.desktopGrid.nativeElement?.offsetHeight;\r\n this.gridMinHeight = Math.max(this.gridMinHeight, currentHeight);\r\n }\r\n\r\n this.webReportDesktopItems = this.buildWebReportDesktopItems(webReport).sort((a, b) => a.order - b.order);\r\n\r\n this.isDesktopDataLoaded = true;\r\n });\r\n\r\n this.selectedAssetCategory$.pipe(takeUntil(this.onDestroy$)).subscribe((selectedAssetCategory) => {\r\n this.selectedAssetCategory = WebReportMobileAssetCategory[selectedAssetCategory];\r\n this.titleTranslationString = this.selectedAssetCategory\r\n ? `webreport.assetCategory${this.selectedAssetCategory}`\r\n : '';\r\n });\r\n\r\n window.onmessage = (event: MessageEvent): void => {\r\n if (event?.data?.update) {\r\n this.webReportService.requestUpdate();\r\n }\r\n };\r\n }\r\n\r\n assetCategorySelected(selection: string): void {\r\n const assetCategory = WebReportMobileAssetCategory[selection];\r\n this.selectedAssetCategory$.next(assetCategory);\r\n }\r\n\r\n trackByTenantAlias(_index: number, item: WebReportDesktop | WebReportMobile): string {\r\n return item.tenantAlias;\r\n }\r\n\r\n private sisMediaItemsByTenantAlias(items: SisMediaItem[]): Map {\r\n if (!items?.length) {\r\n return new Map();\r\n }\r\n\r\n return items.reduce((p, c) => {\r\n let list = p.get(c.tenantAlias);\r\n if (!list) {\r\n list = [];\r\n p.set(c.tenantAlias, list);\r\n }\r\n list.push(c);\r\n return p;\r\n }, new Map());\r\n }\r\n\r\n private buildWebReportDesktopItems(webReport: WebReport): WebReportDesktop[] {\r\n const assetMap = new Map>([\r\n [\r\n SisMediaAssetCategory.Lift,\r\n this.sisMediaItemsByTenantAlias(webReport.sisMediaItemsByCategory.get(SisMediaAssetCategory.Lift)),\r\n ],\r\n [\r\n SisMediaAssetCategory.Slope,\r\n this.sisMediaItemsByTenantAlias(webReport.sisMediaItemsByCategory.get(SisMediaAssetCategory.Slope)),\r\n ],\r\n [\r\n SisMediaAssetCategory.Trail,\r\n this.sisMediaItemsByTenantAlias(webReport.sisMediaItemsByCategory.get(SisMediaAssetCategory.Trail)),\r\n ],\r\n [\r\n SisMediaAssetCategory.Gastro,\r\n this.sisMediaItemsByTenantAlias(webReport.sisMediaItemsByCategory.get(SisMediaAssetCategory.Gastro)),\r\n ],\r\n [\r\n SisMediaAssetCategory.Poi,\r\n this.sisMediaItemsByTenantAlias(webReport.sisMediaItemsByCategory.get(SisMediaAssetCategory.Poi)),\r\n ],\r\n ]);\r\n\r\n const resultMap = new Map<\r\n string,\r\n {\r\n infotext: string;\r\n asset: Map;\r\n }\r\n >();\r\n\r\n for (const [assetCategory, tenantItemMap] of assetMap) {\r\n for (const [tenantAlias, items] of tenantItemMap) {\r\n if (!resultMap.has(tenantAlias)) {\r\n resultMap.set(tenantAlias, {\r\n infotext: this.infotextLang(\r\n this.translateService.currentLang ?? this.translateService.defaultLang,\r\n webReport.infotextsByTenantAlias.get(tenantAlias)\r\n ),\r\n asset: new Map(),\r\n });\r\n for (const category of assetMap.keys()) {\r\n resultMap.get(tenantAlias).asset.set(category, {\r\n items: [],\r\n titles: [''],\r\n });\r\n }\r\n }\r\n\r\n const tenantResult = resultMap.get(tenantAlias).asset.get(assetCategory);\r\n tenantResult.titles = this.getCategoryTitles(\r\n items,\r\n SisMediaAssetCategory[assetCategory],\r\n WebReportPage.titleTypesByAssetCategoryMap.get(assetCategory)\r\n );\r\n\r\n const columns = webReport.exportConfig.columns;\r\n const rows = Math.ceil(items.length / columns);\r\n for (let r = 0; r < rows; r++) {\r\n tenantResult.items[r] = { rowItems: new Array(columns), longestLabelLengths: new Array(columns) };\r\n }\r\n\r\n for (let i = 0; i < items.length; i++) {\r\n tenantResult.items[i % rows].rowItems[Math.floor(i / rows)] = items[i];\r\n }\r\n\r\n const longestLabelArrayPixel = new Array(columns).fill(0);\r\n for (let i = 0; i < columns; i++) {\r\n for (const item of tenantResult.items) {\r\n if (item.rowItems[i]) {\r\n longestLabelArrayPixel[i] = Math.max(\r\n longestLabelArrayPixel[i],\r\n pixelWidth(item.rowItems[i].label, { font: 'arial', size: 15 })\r\n );\r\n }\r\n }\r\n }\r\n for (let r = 0; r < rows; r++) {\r\n tenantResult.items[r].longestLabelLengths = longestLabelArrayPixel;\r\n }\r\n }\r\n }\r\n\r\n const result: WebReportDesktop[] = [];\r\n for (const [tenantAlias, itemMap] of resultMap) {\r\n let order = webReport.tenantOrders?.indexOf(tenantAlias);\r\n if (order == null || order === -1) {\r\n order = 999;\r\n }\r\n result.push({\r\n tenantAlias,\r\n order,\r\n infotext: itemMap.infotext,\r\n lifts: itemMap.asset.get(SisMediaAssetCategory.Lift)?.items,\r\n liftsTitles: itemMap.asset.get(SisMediaAssetCategory.Lift)?.titles,\r\n slopes: itemMap.asset.get(SisMediaAssetCategory.Slope)?.items,\r\n slopesTitles: itemMap.asset.get(SisMediaAssetCategory.Slope)?.titles,\r\n gastros: itemMap.asset.get(SisMediaAssetCategory.Gastro)?.items,\r\n gastrosTitles: itemMap.asset.get(SisMediaAssetCategory.Gastro)?.titles,\r\n trails: itemMap.asset.get(SisMediaAssetCategory.Trail)?.items,\r\n trailsTitles: itemMap.asset.get(SisMediaAssetCategory.Trail)?.titles,\r\n pois: itemMap.asset.get(SisMediaAssetCategory.Poi)?.items,\r\n poisTitles: itemMap.asset.get(SisMediaAssetCategory.Poi)?.titles,\r\n });\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private setHeaderImageUrl(image: string): void {\r\n this.headerImage = `${environment.baseUrlPublicAssets}/webreport/header/${image}`;\r\n }\r\n\r\n private infotextLang(languageKey: string, infotext: WebReportInfotext): string {\r\n if (!infotext) {\r\n return null;\r\n }\r\n switch (languageKey) {\r\n case 'de':\r\n return infotext.textDe;\r\n case 'en':\r\n return infotext.textEn;\r\n case 'fr':\r\n return infotext.textFr;\r\n case 'it':\r\n return infotext.textIt;\r\n default:\r\n return infotext.textEn;\r\n }\r\n }\r\n\r\n private getCategoryTitles(\r\n items: SisMediaItem[],\r\n defaultTitle: string,\r\n extraTitleTypes?: Map\r\n ): string[] {\r\n const titleTypes = extraTitleTypes ?? new Map();\r\n\r\n return Array.from(\r\n new Set(\r\n items\r\n .map((item) => {\r\n const titleType = titleTypes.get(item.type);\r\n\r\n switch (titleType) {\r\n case 'Hiking':\r\n if (item.season === Season.Winter || item.season === Season.SummerAndWinter) {\r\n return `${titleType}Winter`;\r\n }\r\n if (item.season === Season.Summer || item.season === Season.SummerAndWinter) {\r\n return defaultTitle;\r\n }\r\n break;\r\n default:\r\n return titleType ?? defaultTitle;\r\n }\r\n })\r\n .sort((a, b) => WebReportPage.titleOrder.indexOf(a) - WebReportPage.titleOrder.indexOf(b))\r\n )\r\n ).map((t) => `webreport.assetCategory${t}`);\r\n }\r\n}\r\n","\r\n \r\n \r\n \r\n {{this.timestamp | date : 'dd.MM.yyyy HH:mm'}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{ tenantMapping.tenantAlias }}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n 0\" class=\"sis-category-title\">\r\n \r\n \r\n {{ title | translate }} / \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n 0\" class=\"sis-category-title\">\r\n \r\n \r\n {{ title | translate }} / \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n 0\" class=\"sis-category-title\">\r\n \r\n \r\n {{ title | translate }} / \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n 0\" class=\"sis-category-title\">\r\n \r\n \r\n {{ title | translate }} / \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n 0\" class=\"sis-category-title\">\r\n \r\n \r\n {{ title | translate }} / \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 {{ 'webreport.term.open' | translate }}\r\n \r\n \r\n \r\n {{ 'webreport.term.closed' | translate }}\r\n \r\n \r\n \r\n {{ 'webreport.term.preparation' | translate }}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{ this.alias }} \r\n | \r\n \r\n {{ this.website }}\r\n \r\n | \r\n \r\n Tel. {{ this.phone }}\r\n \r\n \r\n \r\n \r\n |www.sisag.ch|© 2025 SISAG AG\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.titleTranslationString | translate }}\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 {{ 'webreport.assetCategoryLift' | translate }}\r\n \r\n \r\n \r\n {{ 'webreport.assetCategorySlope' | translate }}\r\n \r\n \r\n \r\n {{ 'webreport.assetCategoryTrail' | translate }}\r\n \r\n \r\n \r\n {{ 'webreport.assetCategoryGastro' | translate }}\r\n \r\n \r\n \r\n {{ 'webreport.assetCategoryPoi' | translate }}\r\n \r\n \r\n \r\n {{ 'webreport.assetCategoryMeteo' | translate }}\r\n \r\n \r\n\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { EMPTY, merge, Observable, of, Subject, timer } from 'rxjs';\r\nimport { catchError, map, scan, switchMap } from 'rxjs/operators';\r\nimport { NavigatorService } from 'src/app/core/navigator/navigator.service';\r\nimport { SisMediaAssetCategory } from 'src/app/webreport/domain/sismedia-asset-category.enum';\r\nimport { SisMediaItem } from 'src/app/webreport/domain/sismedia-item.model';\r\nimport { SisMediaSetting } from 'src/app/webreport/domain/sismedia-setting.model';\r\nimport { WebReportAdapter } from 'src/app/webreport/domain/webreport.adapter';\r\nimport { WebReport } from 'src/app/webreport/domain/webreport.model';\r\nimport { WebReportInfotext } from 'src/app/webreport/domain/webreport-infotext.model';\r\nimport { WebReportMeteoInfoItem } from 'src/app/webreport/domain/webreport-meteo-info-item.model';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class WebReportService {\r\n private readonly updateRequestsIntervalMs = 30_000;\r\n private readonly requestUpdate$ = new Subject();\r\n\r\n constructor(private httpClient: HttpClient, private navigatorService: NavigatorService) {}\r\n\r\n requestSisMediaAssets(exportUrlName: string, columnsInParams: number): Observable {\r\n if (!exportUrlName) {\r\n return of({\r\n tenant: null,\r\n tenantOrders: [],\r\n sisMediaItemsByCategory: new Map(),\r\n infotextsByTenantAlias: new Map(),\r\n meteoInfosByTenantAlias: new Map(),\r\n sisMediaSettingByTenantAlias: new Map(),\r\n });\r\n }\r\n\r\n const url = `${environment.baseUrlApi}/api/webreport/${exportUrlName}`;\r\n\r\n return merge(timer(0, this.updateRequestsIntervalMs), this.requestUpdate$).pipe(\r\n switchMap(() =>\r\n this.httpClient.get(`${url}?${Math.random() * 1000}`).pipe(\r\n catchError(() => {\r\n this.navigatorService.navigateToErrorPage();\r\n return EMPTY;\r\n })\r\n )\r\n ),\r\n map((data) => WebReportAdapter.adapt(data, columnsInParams)),\r\n scan((prev, curr) => {\r\n if (!prev) {\r\n return curr;\r\n } else {\r\n prev.exportConfig = curr.exportConfig;\r\n prev.infotextsByTenantAlias = curr.infotextsByTenantAlias;\r\n prev.tenant = curr.tenant;\r\n prev.tenantOrders = curr.tenantOrders;\r\n prev.meteoInfosByTenantAlias = curr.meteoInfosByTenantAlias;\r\n prev.sisMediaSettingByTenantAlias = curr.sisMediaSettingByTenantAlias;\r\n\r\n prev.sisMediaItemsByCategory.forEach((items, category) => {\r\n if (!curr.sisMediaItemsByCategory.has(category)) {\r\n prev.sisMediaItemsByCategory.delete(category);\r\n return;\r\n }\r\n if (!prev.sisMediaItemsByCategory.has(category)) {\r\n prev.sisMediaItemsByCategory.set(category, curr.sisMediaItemsByCategory.get(category));\r\n return;\r\n }\r\n\r\n const newItems = curr.sisMediaItemsByCategory.get(category);\r\n newItems.forEach((item) => {\r\n const existingItem = items.find((i) => i.guid === item.guid);\r\n if (existingItem) {\r\n Object.assign(existingItem, item);\r\n } else {\r\n items.push(item);\r\n }\r\n });\r\n\r\n const removedItems = items.filter((i) => !newItems.find((n) => n.guid === i.guid));\r\n removedItems.forEach((i) =>\r\n items.splice(\r\n items.findIndex((o) => o.guid === i.guid),\r\n 1\r\n )\r\n );\r\n });\r\n }\r\n\r\n return prev;\r\n })\r\n );\r\n }\r\n\r\n requestUpdate(): void {\r\n this.requestUpdate$.next();\r\n }\r\n}\r\n","export const environment = {\r\n production: false,\r\n baseUrlApi: 'https://api-dev.siscontrol.ch',\r\n baseUrlPublicAssets: 'https://devsiscontrolpublic.blob.core.windows.net/public-assets',\r\n cockpitUrl: 'https://dev-cockpit.siscontrol.ch',\r\n slideshowPlayerWebApp: 'https://dev-player.siscontrol.ch',\r\n};\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\nimport { AppModule } from 'src/app/app.module';\r\nimport { environment } from 'src/environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n if (window) {\r\n window.console.log = (): void => {};\r\n }\r\n}\r\n\r\nplatformBrowserDynamic()\r\n .bootstrapModule(AppModule)\r\n .catch((err) => console.log(err));\r\n","var map = {\n\t\"./ion-accordion_2.entry.js\": [\n\t\t470,\n\t\t8592,\n\t\t470\n\t],\n\t\"./ion-action-sheet.entry.js\": [\n\t\t22725,\n\t\t8592,\n\t\t2725\n\t],\n\t\"./ion-alert.entry.js\": [\n\t\t36149,\n\t\t8592,\n\t\t6149\n\t],\n\t\"./ion-app_8.entry.js\": [\n\t\t19288,\n\t\t8592,\n\t\t9288\n\t],\n\t\"./ion-avatar_3.entry.js\": [\n\t\t61031,\n\t\t1031\n\t],\n\t\"./ion-back-button.entry.js\": [\n\t\t58310,\n\t\t8592,\n\t\t8310\n\t],\n\t\"./ion-backdrop.entry.js\": [\n\t\t81983,\n\t\t1983\n\t],\n\t\"./ion-breadcrumb_2.entry.js\": [\n\t\t17039,\n\t\t8592,\n\t\t7039\n\t],\n\t\"./ion-button_2.entry.js\": [\n\t\t57945,\n\t\t7945\n\t],\n\t\"./ion-card_5.entry.js\": [\n\t\t8714,\n\t\t8714\n\t],\n\t\"./ion-checkbox.entry.js\": [\n\t\t31786,\n\t\t1786\n\t],\n\t\"./ion-chip.entry.js\": [\n\t\t24702,\n\t\t4702\n\t],\n\t\"./ion-col_3.entry.js\": [\n\t\t94094,\n\t\t4094\n\t],\n\t\"./ion-datetime-button.entry.js\": [\n\t\t1203,\n\t\t2311,\n\t\t1203\n\t],\n\t\"./ion-datetime_3.entry.js\": [\n\t\t50795,\n\t\t2311,\n\t\t8592,\n\t\t795\n\t],\n\t\"./ion-fab_3.entry.js\": [\n\t\t36976,\n\t\t8592,\n\t\t6976\n\t],\n\t\"./ion-img.entry.js\": [\n\t\t51417,\n\t\t1417\n\t],\n\t\"./ion-infinite-scroll_2.entry.js\": [\n\t\t78412,\n\t\t8592,\n\t\t8412\n\t],\n\t\"./ion-input.entry.js\": [\n\t\t94706,\n\t\t8592,\n\t\t4706\n\t],\n\t\"./ion-item-option_3.entry.js\": [\n\t\t73459,\n\t\t8592,\n\t\t3459\n\t],\n\t\"./ion-item_8.entry.js\": [\n\t\t23354,\n\t\t8592,\n\t\t3354\n\t],\n\t\"./ion-loading.entry.js\": [\n\t\t41025,\n\t\t1025\n\t],\n\t\"./ion-menu_3.entry.js\": [\n\t\t98592,\n\t\t8592,\n\t\t8820\n\t],\n\t\"./ion-modal.entry.js\": [\n\t\t52526,\n\t\t8592,\n\t\t2526\n\t],\n\t\"./ion-nav_2.entry.js\": [\n\t\t92447,\n\t\t8592,\n\t\t2447\n\t],\n\t\"./ion-picker-column-internal.entry.js\": [\n\t\t24820,\n\t\t8592,\n\t\t4820\n\t],\n\t\"./ion-picker-internal.entry.js\": [\n\t\t83212,\n\t\t3212\n\t],\n\t\"./ion-popover.entry.js\": [\n\t\t87557,\n\t\t8592,\n\t\t7557\n\t],\n\t\"./ion-progress-bar.entry.js\": [\n\t\t28692,\n\t\t8692\n\t],\n\t\"./ion-radio_2.entry.js\": [\n\t\t93544,\n\t\t3544\n\t],\n\t\"./ion-range.entry.js\": [\n\t\t40042,\n\t\t8592,\n\t\t42\n\t],\n\t\"./ion-refresher_2.entry.js\": [\n\t\t70718,\n\t\t8592,\n\t\t718\n\t],\n\t\"./ion-reorder_2.entry.js\": [\n\t\t95981,\n\t\t8592,\n\t\t5981\n\t],\n\t\"./ion-ripple-effect.entry.js\": [\n\t\t76488,\n\t\t6488\n\t],\n\t\"./ion-route_4.entry.js\": [\n\t\t47937,\n\t\t7937\n\t],\n\t\"./ion-searchbar.entry.js\": [\n\t\t50942,\n\t\t8592,\n\t\t942\n\t],\n\t\"./ion-segment_2.entry.js\": [\n\t\t20816,\n\t\t8592,\n\t\t816\n\t],\n\t\"./ion-select_3.entry.js\": [\n\t\t19062,\n\t\t9062\n\t],\n\t\"./ion-slide_2.entry.js\": [\n\t\t13466,\n\t\t3466\n\t],\n\t\"./ion-spinner.entry.js\": [\n\t\t18404,\n\t\t8592,\n\t\t8404\n\t],\n\t\"./ion-split-pane.entry.js\": [\n\t\t60953,\n\t\t953\n\t],\n\t\"./ion-tab-bar_2.entry.js\": [\n\t\t44254,\n\t\t8592,\n\t\t4254\n\t],\n\t\"./ion-tab_2.entry.js\": [\n\t\t45195,\n\t\t8592,\n\t\t5195\n\t],\n\t\"./ion-text.entry.js\": [\n\t\t86116,\n\t\t6116\n\t],\n\t\"./ion-textarea.entry.js\": [\n\t\t79781,\n\t\t9781\n\t],\n\t\"./ion-toast.entry.js\": [\n\t\t48323,\n\t\t8323\n\t],\n\t\"./ion-toggle.entry.js\": [\n\t\t376,\n\t\t8592,\n\t\t376\n\t],\n\t\"./ion-virtual-scroll.entry.js\": [\n\t\t82072,\n\t\t2072\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 50863;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./af\": 51975,\n\t\"./af.js\": 51975,\n\t\"./ar\": 24145,\n\t\"./ar-dz\": 75982,\n\t\"./ar-dz.js\": 75982,\n\t\"./ar-kw\": 56242,\n\t\"./ar-kw.js\": 56242,\n\t\"./ar-ly\": 26864,\n\t\"./ar-ly.js\": 26864,\n\t\"./ar-ma\": 22239,\n\t\"./ar-ma.js\": 22239,\n\t\"./ar-sa\": 834,\n\t\"./ar-sa.js\": 834,\n\t\"./ar-tn\": 22387,\n\t\"./ar-tn.js\": 22387,\n\t\"./ar.js\": 24145,\n\t\"./az\": 32351,\n\t\"./az.js\": 32351,\n\t\"./be\": 35392,\n\t\"./be.js\": 35392,\n\t\"./bg\": 38946,\n\t\"./bg.js\": 38946,\n\t\"./bm\": 91284,\n\t\"./bm.js\": 91284,\n\t\"./bn\": 84885,\n\t\"./bn-bd\": 64936,\n\t\"./bn-bd.js\": 64936,\n\t\"./bn.js\": 84885,\n\t\"./bo\": 52342,\n\t\"./bo.js\": 52342,\n\t\"./br\": 21319,\n\t\"./br.js\": 21319,\n\t\"./bs\": 90605,\n\t\"./bs.js\": 90605,\n\t\"./ca\": 97135,\n\t\"./ca.js\": 97135,\n\t\"./cs\": 17783,\n\t\"./cs.js\": 17783,\n\t\"./cv\": 8060,\n\t\"./cv.js\": 8060,\n\t\"./cy\": 65052,\n\t\"./cy.js\": 65052,\n\t\"./da\": 6997,\n\t\"./da.js\": 6997,\n\t\"./de\": 74846,\n\t\"./de-at\": 15074,\n\t\"./de-at.js\": 15074,\n\t\"./de-ch\": 87973,\n\t\"./de-ch.js\": 87973,\n\t\"./de.js\": 74846,\n\t\"./dv\": 48879,\n\t\"./dv.js\": 48879,\n\t\"./el\": 88233,\n\t\"./el.js\": 88233,\n\t\"./en-au\": 32333,\n\t\"./en-au.js\": 32333,\n\t\"./en-ca\": 48371,\n\t\"./en-ca.js\": 48371,\n\t\"./en-gb\": 85980,\n\t\"./en-gb.js\": 85980,\n\t\"./en-ie\": 15263,\n\t\"./en-ie.js\": 15263,\n\t\"./en-il\": 96225,\n\t\"./en-il.js\": 96225,\n\t\"./en-in\": 89198,\n\t\"./en-in.js\": 89198,\n\t\"./en-nz\": 76014,\n\t\"./en-nz.js\": 76014,\n\t\"./en-sg\": 58604,\n\t\"./en-sg.js\": 58604,\n\t\"./eo\": 38351,\n\t\"./eo.js\": 38351,\n\t\"./es\": 47446,\n\t\"./es-do\": 15381,\n\t\"./es-do.js\": 15381,\n\t\"./es-mx\": 41268,\n\t\"./es-mx.js\": 41268,\n\t\"./es-us\": 93922,\n\t\"./es-us.js\": 93922,\n\t\"./es.js\": 47446,\n\t\"./et\": 93874,\n\t\"./et.js\": 93874,\n\t\"./eu\": 29501,\n\t\"./eu.js\": 29501,\n\t\"./fa\": 62986,\n\t\"./fa.js\": 62986,\n\t\"./fi\": 63517,\n\t\"./fi.js\": 63517,\n\t\"./fil\": 40471,\n\t\"./fil.js\": 40471,\n\t\"./fo\": 69848,\n\t\"./fo.js\": 69848,\n\t\"./fr\": 22104,\n\t\"./fr-ca\": 14079,\n\t\"./fr-ca.js\": 14079,\n\t\"./fr-ch\": 15960,\n\t\"./fr-ch.js\": 15960,\n\t\"./fr.js\": 22104,\n\t\"./fy\": 59942,\n\t\"./fy.js\": 59942,\n\t\"./ga\": 86259,\n\t\"./ga.js\": 86259,\n\t\"./gd\": 10196,\n\t\"./gd.js\": 10196,\n\t\"./gl\": 9667,\n\t\"./gl.js\": 9667,\n\t\"./gom-deva\": 58901,\n\t\"./gom-deva.js\": 58901,\n\t\"./gom-latn\": 8001,\n\t\"./gom-latn.js\": 8001,\n\t\"./gu\": 9430,\n\t\"./gu.js\": 9430,\n\t\"./he\": 98008,\n\t\"./he.js\": 98008,\n\t\"./hi\": 13449,\n\t\"./hi.js\": 13449,\n\t\"./hr\": 69271,\n\t\"./hr.js\": 69271,\n\t\"./hu\": 61036,\n\t\"./hu.js\": 61036,\n\t\"./hy-am\": 83043,\n\t\"./hy-am.js\": 83043,\n\t\"./id\": 27102,\n\t\"./id.js\": 27102,\n\t\"./is\": 87297,\n\t\"./is.js\": 87297,\n\t\"./it\": 11248,\n\t\"./it-ch\": 3529,\n\t\"./it-ch.js\": 3529,\n\t\"./it.js\": 11248,\n\t\"./ja\": 70645,\n\t\"./ja.js\": 70645,\n\t\"./jv\": 74317,\n\t\"./jv.js\": 74317,\n\t\"./ka\": 35359,\n\t\"./ka.js\": 35359,\n\t\"./kk\": 9027,\n\t\"./kk.js\": 9027,\n\t\"./km\": 14941,\n\t\"./km.js\": 14941,\n\t\"./kn\": 77478,\n\t\"./kn.js\": 77478,\n\t\"./ko\": 74356,\n\t\"./ko.js\": 74356,\n\t\"./ku\": 91077,\n\t\"./ku.js\": 91077,\n\t\"./ky\": 80145,\n\t\"./ky.js\": 80145,\n\t\"./lb\": 12339,\n\t\"./lb.js\": 12339,\n\t\"./lo\": 53814,\n\t\"./lo.js\": 53814,\n\t\"./lt\": 20281,\n\t\"./lt.js\": 20281,\n\t\"./lv\": 90177,\n\t\"./lv.js\": 90177,\n\t\"./me\": 99034,\n\t\"./me.js\": 99034,\n\t\"./mi\": 58772,\n\t\"./mi.js\": 58772,\n\t\"./mk\": 16112,\n\t\"./mk.js\": 16112,\n\t\"./ml\": 42854,\n\t\"./ml.js\": 42854,\n\t\"./mn\": 50538,\n\t\"./mn.js\": 50538,\n\t\"./mr\": 30450,\n\t\"./mr.js\": 30450,\n\t\"./ms\": 11508,\n\t\"./ms-my\": 86169,\n\t\"./ms-my.js\": 86169,\n\t\"./ms.js\": 11508,\n\t\"./mt\": 47009,\n\t\"./mt.js\": 47009,\n\t\"./my\": 55350,\n\t\"./my.js\": 55350,\n\t\"./nb\": 15909,\n\t\"./nb.js\": 15909,\n\t\"./ne\": 87502,\n\t\"./ne.js\": 87502,\n\t\"./nl\": 65321,\n\t\"./nl-be\": 94405,\n\t\"./nl-be.js\": 94405,\n\t\"./nl.js\": 65321,\n\t\"./nn\": 45704,\n\t\"./nn.js\": 45704,\n\t\"./oc-lnc\": 83788,\n\t\"./oc-lnc.js\": 83788,\n\t\"./pa-in\": 96290,\n\t\"./pa-in.js\": 96290,\n\t\"./pl\": 98265,\n\t\"./pl.js\": 98265,\n\t\"./pt\": 58802,\n\t\"./pt-br\": 53430,\n\t\"./pt-br.js\": 53430,\n\t\"./pt.js\": 58802,\n\t\"./ro\": 17732,\n\t\"./ro.js\": 17732,\n\t\"./ru\": 14548,\n\t\"./ru.js\": 14548,\n\t\"./sd\": 43268,\n\t\"./sd.js\": 43268,\n\t\"./se\": 31832,\n\t\"./se.js\": 31832,\n\t\"./si\": 51601,\n\t\"./si.js\": 51601,\n\t\"./sk\": 96759,\n\t\"./sk.js\": 96759,\n\t\"./sl\": 81930,\n\t\"./sl.js\": 81930,\n\t\"./sq\": 84476,\n\t\"./sq.js\": 84476,\n\t\"./sr\": 63648,\n\t\"./sr-cyrl\": 1249,\n\t\"./sr-cyrl.js\": 1249,\n\t\"./sr.js\": 63648,\n\t\"./ss\": 39724,\n\t\"./ss.js\": 39724,\n\t\"./sv\": 12280,\n\t\"./sv.js\": 12280,\n\t\"./sw\": 87639,\n\t\"./sw.js\": 87639,\n\t\"./ta\": 45843,\n\t\"./ta.js\": 45843,\n\t\"./te\": 89211,\n\t\"./te.js\": 89211,\n\t\"./tet\": 35822,\n\t\"./tet.js\": 35822,\n\t\"./tg\": 69191,\n\t\"./tg.js\": 69191,\n\t\"./th\": 74716,\n\t\"./th.js\": 74716,\n\t\"./tk\": 59684,\n\t\"./tk.js\": 59684,\n\t\"./tl-ph\": 84428,\n\t\"./tl-ph.js\": 84428,\n\t\"./tlh\": 85189,\n\t\"./tlh.js\": 85189,\n\t\"./tr\": 83807,\n\t\"./tr.js\": 83807,\n\t\"./tzl\": 6539,\n\t\"./tzl.js\": 6539,\n\t\"./tzm\": 36714,\n\t\"./tzm-latn\": 98827,\n\t\"./tzm-latn.js\": 98827,\n\t\"./tzm.js\": 36714,\n\t\"./ug-cn\": 97366,\n\t\"./ug-cn.js\": 97366,\n\t\"./uk\": 92757,\n\t\"./uk.js\": 92757,\n\t\"./ur\": 57362,\n\t\"./ur.js\": 57362,\n\t\"./uz\": 5534,\n\t\"./uz-latn\": 50321,\n\t\"./uz-latn.js\": 50321,\n\t\"./uz.js\": 5534,\n\t\"./vi\": 24049,\n\t\"./vi.js\": 24049,\n\t\"./x-pseudo\": 43134,\n\t\"./x-pseudo.js\": 43134,\n\t\"./yo\": 2668,\n\t\"./yo.js\": 2668,\n\t\"./zh-cn\": 41282,\n\t\"./zh-cn.js\": 41282,\n\t\"./zh-hk\": 13423,\n\t\"./zh-hk.js\": 13423,\n\t\"./zh-mo\": 6739,\n\t\"./zh-mo.js\": 6739,\n\t\"./zh-tw\": 81037,\n\t\"./zh-tw.js\": 81037\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 = 46700;"],"names":["RouterModule","BreakdownInfoPageModule","ErrorPageModule","SisMapPageModule","WindmonitorModule","OperatingInfoPageModule","QuickstartPage","SiscontrolPage","WebReportModule","routes","path","component","pathMatch","loadChildren","AppRoutingModule","forRoot","useHash","imports","exports","filter","take","takeUntil","Unsubscriber","AppComponent","constructor","platform","splashScreen","statusBar","translateService","appService","ccService","navigatorService","location","activatedRoute","initializeApp","popupClose$","pipe","subscribe","localStorage","setItem","onLangChange","onDestroy$","setupCookieBanner","ngOnInit","browserLanguage","getBrowserLang","setDefaultLang","match","queryParams","setLanguage","backgroundColor$","backgroundColor","language","selectedLanguage","use","destroy","routesWithoutCookieBanner","some","r","includes","getItem","cookieTextTranslationString","cookieUnderstoodTranslationString","cookieConfig","getConfig","get","translations","content","message","dismiss","cookie","domain","baseUrl","init","ready","then","readySource","styleDefault","hide","selectors","features","decls","vars","consts","template","i0","HttpBackend","HttpClient","HttpClientModule","BrowserModule","BrowserAnimationsModule","RouteReuseStrategy","IonicModule","IonicRouteStrategy","SplashScreen","StatusBar","TranslateLoader","TranslateModule","TranslateHttpLoader","NgcCookieConsentModule","CoreModule","NavigatorService","palette","popup","background","button","theme","position","type","showLink","translateHttpLoaderFactory","httpBackend","VERSION","AppModule","bootstrap","provide","useClass","loader","useFactory","deps","declarations","map","AppService","params","b","factory","providedIn","BreakdownInfoAdapter","adapt","item","titleDe","titleEn","titleFr","titleIt","textDe","textEn","textFr","textIt","name","iconName","color","logoFilename","websiteUrl","website","telNumber","CommonModule","FormsModule","BreakdownInfoPage","BreakdownInfoService","forChild","switchMap","environment","breakdownInfoService","periodicallyRequestBreakdownInfoData","updateInterval","BreakdownInfoGuid","data","breakdownInfo","setLogoUrl","setbreakdownInfoIconUrl","setTextAndTitle","currentLang","defaultLang","setWebsite","logoUrl","baseUrlPublicAssets","breakdownInfoIconFilename","breakdownInfoIconUrl","homepageUrl","homepage","replace","languageKey","title","text","EMPTY","timer","catchError","tap","http","navigator","period","breakdownInfoGuid","length","navigateToErrorPage","baseUrlApi","urlPath","Math","floor","random","toString","EventEmitter","NumberPickerComponent","setDisplayedValue","initialValue","emit","increment","newValue","min","displayedValue","stepSize","maximumValue","decrement","max","minimumValue","value","unit","fontSize","inputs","floatRight","outputs","ctx","GeneralButtonComponent","LanguageSelector","ClickableUrlPipe","MetersToKilometersPipe","Season","ButtonType","ButtonAlign","ngOnChanges","btnType","Primary","buttonType","Secondary","Red","btnAlign","Left","buttonAlign","Right","onClick","disabled","sisClick","expand","showSpinner","width","icon","from","isObservable","of","PendingChangesGuard","confirmationDialogService","canDeactivate","cD","getCanDeactivateObservable","presentAlert","current","translate","key","Array","isArray","languages","find","l","fullName","changeLanguage","compare","l1","l2","curveParams","isNumeric","num","trim","isNaN","parseCurveCoords","svgCoords","coords","cs","forEach","letter","RegExp","parts","split","part","push","ns","Number","firstValueFrom","shareReplay","IconHelper","httpClient","Map","getIcon","blobPath","iconMap","has","url","toLowerCase","set","responseType","svg","makeBackgroundVisible","backgroundTags","backgroundTag","newBackgroundTag","Converter","toNumberOrUndefined","undefined","toBoolean","input","Boolean","JSON","parse","e","toDateOrUndefined","date","Date","getTime","firstLetterUppercase","word","charAt","toUpperCase","slice","BehaviorSubject","distinctUntilKeyChanged","exhaustMap","LivedataServiceBase","endpointUri","enabled","liveDataEnabled$","options","publishLiveDataRepeatedly","urlParams","startLiveData","next","requestSasToken","sasToken","expiryDuration","expiryParam","URLSearchParams","expiryDate","valueOf","now","killTimer","getLiveDataRepeatedly","urlAppend","join","sas","OutdatedDataHelper","isOutdated","timestamp","timeoutMs","timeNowMs","timestampMs","dateIsToday","isToday","getFullYear","getMonth","getDate","router","window","origin","redirectToCockpit","href","cockpitUrl","navigate","Subject","ngOnDestroy","unsubscribe","UserMessageColor","UserMessageIcon","UserMessage","Object","assign","messageParts","UserMessageService","toastController","messageTimeMap","createToast","userMessage","toastButtons","translatedMessage","getTranslatedString","showCloseButton","side","create","duration","durationMs","cssClass","toastCssClass","animated","buttons","presentToast","document","hasFocus","lastTimeSent","minTimeBetweenSameMessageMs","userMessages","presentAllToasts","showSingleToast","translateKeys","translation","values","toastActive","shift","messageOutdatedAfterMs","toast","onDidDismiss","present","transform","result","urlRegex","addHttpsToUrls","pattern","urls","urlWithoutQuotes","test","pure","ConfirmationDialogService","alertCtrl","confirmationText","confirmationButton","Promise","resolve","header","handler","role","backdropDismiss","alert","translateKey","meters","convertMetersToKilometers","kilometers","roundedKilometers","round","distinctUntilChanged","fromEvent","startWith","ScreenSizeService","bigScreenMode","bigScreenThreshold","landscapeMode","isLandscape","screenMode$","ErrorPage","MeteoDataAdapter","livedata","meteoDeviceSisId","MeteoDeviceSisId","deviceTimestamp","DeviceTimestamp","gatewayTimestamp","GatewayTimestamp","windDirectionDegreeAxis","WindDirectionDegreeAxis","windDirectionDegreeNorth","WindDirectionDegreeNorth","windSpeedKmh","WindSpeedKmh","temperatureCelsius","TemperatureCelsius","outdated","MeteoDataService","liveData$","AssetStatus","AssetSubStatus","StatusAdapter","assetGuid","RowKey","assetStatus","Status","NoStatus","assetSubStatus","SubStatus","Disabled","StatusService","findStatus","guid","statusArray","status","findSubStatus","subStatus","MapRoutes","SisId","Alias","Coords","x","y","empty","CustomIcon","CustomIconAdapter","positions","iconPosition","iconPositions","season","iconSvgBlobName","svgName","iconHeight","height","iconWidth","disallowHighlight","disallowPopUp","adaptForApi","customIcon","assetCategory","category","stringify","SisMapAssetCategory","defaultColor","CustomPath","CustomPathAdapter","description","pathColor","pathDashArray","dashArray","pathWeight","weight","customPath","defaultPathColor","defaultPathWeight","defaultWeight","Gastro","GastroAdapter","defaultIconSize","nameEn","contact","phone","email","info","operatingHoursEnabled","operatingHours","iconImageName","gastro","LayerName","Lift","LiftAdapter","label","firstRide","lastRide","throughput","travelTime","pathBackgroundColor","lift","PlaceAdapter","POIAdapter","SlopeAdapter","Slope","TrailAdapter","WebcamAdapter","WindAdapter","v4","v4guid","MasterDataAdapter","tenantGuid","alias","panoMapFilename","showIconZoomThreshold","showIconZoomThresholdMobile","iconZoomFactor","areaUrlName","sisId","oppositeMapExist","lifts","slopes","trails","pois","places","customIcons","customPaths","gastros","webcams","winds","style","labelInTooltip","signPosts","createList","sort","a","getDisplayName","slope","iconUseStatus","trail","poi","place","fontFamily","padding","windIcons","s","displayOrder","mapGuid","element","search","startsWith","ReplaySubject","Place","POI","Trail","Webcam","Wind","MasterDataService","masterData$","asObservable","requestMasterData","layers","layersUrlString","layerName","masterDataRequestUrl","addMapElement","masterData","console","error","removeMapElement","elementList","index","findIndex","splice","updateMapElementPosition","layer","elementguid","editToken","post","textPosition","altitude","textColor","fontColor","border","borderRadius","textOutline","defaultTextColor","defaultFontSize","defaultBorder","defaultBorderRadius","iconHtml","defaultBackgroundColor","defaultFontFamily","defaultPadding","defaultTextOutline","Poi","isPiste","iconSize","defaultStatusIconSize","lengthMeter","Closed","elevation","displayType","SummerAndWinter","aspectRatio","webcam","page","iframe","external","ratio_16_9","ratio_4_3","ratio_3_2","ratio_other","types","aspectRatios","meteoStationSisId","directionOffsetPanoMap","directionOffsetNorth","iconUseMeteoData","wind","AssetSidepaneContentComponent","mapStyleService","mapStateService","iconService","sanitizer","selectedElement$","getStyleName","element$","getAssetTypeIconHtml","iconString","bypassSecurityTrustHtml","createOperatingHours","weekday","dayNow","getDay","weekDates","getWeekDates","weekdays","o","dayName","instant","timeString","from1","until1","from2","until2","todayDayOfWeek","dayOffset","monday","setDate","i","currentDay","dateString","AssetSidepaneComponent","hoverService","modalCtrl","menuCtrl","elementClicked$","categories","editMode","open","createBottomSheetModal","initialBreakpoint","modal","breakpoints","handle","mode","showBackdrop","onWillDismiss","clickElement","hover","iconHovered","resetMenu","EnterTheViewportNotifierDirective","_elementRef","entries","_","entry","visibilityChange","isIntersecting","ngAfterViewInit","root","rootMargin","threshold","observer","IntersectionObserver","callback","observe","nativeElement","disconnect","HoverService","onHover","onHover$","hoverDisabled","hoverData","divIcon","DomUtil","latLng","Marker","marker","include","scale","setScale","update","_setPos","pos","_icon","setPosition","classList","contains","_shadow","_zIndex","zIndexOffset","_resetZIndex","IconService","iconHelper","windIconService","styleService","Preparation","Open","getIconSvg","getMarker","createIconElement","iconAlwaysOnTop","getIconHtml","html","errorIcon","customIconBlobPath","getIconHTML","colors","getLiftColor","getColor","sidepaneIcon","setSidepaneIconColor","statusColor","popupAnchor","className","scaleIcon","m","zoom","highlight","hideOnScaling","hideIcons","showIcons","setOpacity","scaling","iconZoom","iconDisableBaseZoom","baseIconZoom","LayerSelectorItemComponent","changes","iconUrl$","getLayerIconSvgUrl","layerSelector","imageName","active","iconClass$","tooltipTranslationString","dataTestKey","$event","stopPropagation","clicked","HttpParams","combineLatest","pixelWidth","LayerSelectorComponent","layerService","masterDataService","getSignPostUrl","existingLayerSelectors$","layerFab","fabActivated","activated","setTimeout","hideQueryParams$","existingLayerSelectors","hiddenLayers","showLayers","layerSelectors","order","routeSeason","selectSeason","setActivatedSeason","Summer","layerSelectorActiveClass","layerSelectorInactiveClass","menuButtonClass","fabButtonClass","signPostOptionClass","styleName","hasSignPosts","signPostButtonWidth","font","size","seasonParam","activeSeason","winterIconSvgUrl$","getSeasonIconSvgUrl","Winter","summerIconSvgUrl$","addFilters","removeFilters","fromObject","changeUrl","signPostClicked","signPost","viewQuery","categoryUrl","LayerService","masterdataService","ski","crosscountry","sledging","snowpark","hiking","themedtrail","snowshoe","bike","response","d","concat","c","toLocaleLowerCase","t","showInLayerSelector","f","parseInt","season$","availableCategories$","hideQueryParams","allAssets","asset","res","layerOrderConfig","keys","every","j","availableCategories","hiddenCategories","filterAssets","updateUrlQueryParams","h","relativeTo","queryParamsHandling","assets","mapElements","hiddenCategory","MapElementContainerComponent","curveTestClass","iconTestClass","layerGroup","showStatus","showStatusIcons","curve","MapElementCurveComponent","zoomService","changeDetector","screenSizeService","initCurveLayer","updateCurve","elementUpdated$","isMarked","bigScreenMode$","getPathColor","lineCap","visibleCurve","interactive","pane","paneName","backgroundCurve","opacity","highlightCurve","clickableCurve","bubblingMouseEvents","fill","clickable","curveEndMarkers","createCurveEndMarkers","addEventListeners","shownAssetGuids$","shownAssetGuids","showLayer","hideLayer","zoomChanged$","hasLayer","setStrokeOpacity","setHighlight","createAndShowPopup","hoverPosition","closePopup","popupContent","createCurvePopupContent","bindPopup","closeButton","offset","autoPan","maxWidth","openPopup","setPath","setStyle","updateCurveEndMarkers","bringToFront","visible","bringToBack","liftColor","colorArr","summer","winter","on","event","latlng","lat","lng","curveExists","setStrokeWidth","setStrokeDashArray","displayCurve","zoomCurveEndMarkers","detectChanges","curveElement","getElement","setAttribute","cursor","addLayer","removeLayer","styles","LatLng","merge","MapElementIconComponent","assetEditorService","positionIndex","setupMarker","updateIcon","highlightedElement","iconIndex","showFindMarkerAnimation","elementMoved$","assetsWithError$","selectedOrMovedEvent","errorMap","hasError","markElement","unmarkElement","draggable","dragging","enable","disable","setIcon","setIconColor","addClass","addEventListener","removeClass","once","setIconBorder","setLatLng","zoomIcon","onMarkerAdded","drawBorder","hovered","highlightMarker","offsetY","createIconPopupContent","unbindPopup","showIcon","markerPos","getLatLng","trunc","newPosition","moveMapElement","MapStateService","_selectedElement$","_elementUpdated$","_elementMoved$","_elementClicked$","_centeredElement$","_highlightedElement$","selectElement","updateMapElement","centerElementIcon","highlightElement","CRS","imageOverlay","ajax","delay","WebcamModalComponent","SisZoom","MapComponent","zone","initLeafletConfigureOptions","initLayers","mapReady$","setupMap","allowElementSelection","windowFeatures","componentProps","centerElement$","panTo","setMapVisibility","wasVisibleAtLeastOnce","onMapReady","onMapFullscreenToggle","run","shouldMapFitToHeight","fitMapToHeight","fitMapToWidth","onFitMapToHeight","fitBounds","imageResY","bounds","setMinZoom","getBoundsZoom","onFitMapToWidth","imageResX","onZoomIn","zoomIn","onZoomOut","zoomOut","onFullscreen","fullscreen","onOpenSidepaneClick","openSidepane","invalidateSize","trackByGuid","_index","drop","mapPos","containerPointToLatLng","dropPoint","getBounds","addAsset","setContextPosition","lastContextPosition","addWebcam","addPlace","addCustomIcon","addCustomPath","setZoom","getZoom","fullScreenControl","toggleFullScreen","getImageDimension","imageUrl","pop","img","Image","onload","loadedImage","currentTarget","src","crs","Simple","wheelPxPerZoomLevel","zoomControl","zoomSnap","zoomDelta","maxBoundsViscosity","attributionControl","zoomAnimation","slopeLayerGroup","trailLayerGroup","poiLayerGroup","liftLayerGroup","gastroLayerGroup","webcamLayerGroup","windLayerGroup","customIconLayerGroup","customPathLayerGroup","placeLayerGroup","snapshot","leafletMap","getElementsByClassName","screenWidth","clientWidth","screenHeight","clientHeight","leafletContainer","offsetWidth","offsetHeight","paneNames","createPane","zIndex","panoMapUrl","imageDimension","getImageDimensionFromMetadata","imageBounds","setMaxBounds","setMaxZoom","addZoomListener","whenReady","getCenter","z","parseFloat","setView","animate","minZoom","getMinZoom","defaultZoom","abs","fire","currentZoom","diff","getMinZoomRatio","fireEvent","minRatio","blobUrl","method","responseHeaders","defaultOpacity","selectedOpacity","DragDropModule","CdkMenuModule","ScrollingModule","ReactiveFormsModule","MatAutocompleteModule","MatButtonModule","MatTooltipModule","LeafletModule","AddAssetTabComponent","AssetListComponent","AssetListItemComponent","AutocompleteSelectorComponent","AssetEditorTabComponent","SidepaneComponent","WindDisplayCalculatorService","WindIconService","ZoomService","HoursMinutesPipe","MapModule","tenantService","userMessageService","sortElementsByName","allTenantAssets$","categoryFilter$","masterDataElements$","el","a1","a2","localeCompare","unsavedAssets$","removedAssets$","unsavedElements","removedElements","assetsWithError","unsavedElementsOfThisSeason","assetsWithErrorOfThisSeason","removedElementsOfThisSeason","changed","hidden","deleted","tooltip","isVisible","loadAvailableTenants","handleCurrentAssetActionButtonClicked","restoreAsset","changeToEditTab","originalAsset","editedAssetOriginals","removeUnsavedAsset","handleNewAssetActionButtonClicked","itemDraggedToMap","getTenants","tenants","red","failed","setSelectedTenant","tenant","selectedTenant","getAssetsForTenant","tenantAssetsLoading","getAssetForTenant","elements","refreshTenantAssets","addElement","setCategoryFilter","selectExistingActiveElement","selectMapElement","selectDisabledElement","compareTenants","filterTenants","filterText","formatTenants","compareCategories","filterCategories","formatCategory","e1","e2","elementName","elementLabel","elementIcon","elementTooltip","emitButtonAction","buttonClicked","updateLabelTooltipDisabled","elementLabelTooltipDisabled","scrollWidth","dragEnd","ev","container","id","selected","actionButtons","CdkVirtualScrollViewport","filterElements","assetFilter","selectedElement","filteredElements","viewPort","scrollToIndex","setChangedFilter","onlyShowChanged","setAssetFilter","clickedElement","emitActionButtonClick","emitItemDraggedToMap","emitRefreshAction","refreshTable","terms","term","selectText","inputElement","target","HTMLInputElement","getInputElement","select","MatAutocompleteTrigger","formatFn","filterFn","Error","sortedCandidates","compareFn","candidates","_canditates","formatted","filterValue","updateSelection","autocompleteTrigger","autocomplete","deselect","formatInputValue","emitSelectedOption","option","filteredCandidates","candidate","TenantService","v","FormArray","FormControl","FormGroup","Validators","debounceTime","scan","AssetEditorService","editableProperties","Set","changeToAddAssetTab","config","configs","errors","clear","setOriginalAsset","originalAssetMaxIconPositionIndex","selectedIconIndex","canBeDuplicated","initForm","setupArrowkeyListeners","addPosition","maxIconCountReached","iconPositionInputs","required","removePosition","removedIndex","canRemoveIcon","removeAt","delete","assetToRemove","removeAsset","duplicate","curPosition","assetClone","getPrototypeOf","reset","original","getOriginalAsset","emitChangedEvent","resetProperty","formGroup","controls","setValue","resetPosition","at","patchValue","kill$","validators","validatePath","addPositionInputs","property","addControl","validateProperty","bind","valueChanges","properties","p","isNullable","isNumber","parsed","valid","checkChanges","notANumber","maxIconCount","hasChanges","newlyAdded","setUnsavedAsset","checkPath","pathString","reEverythingAllowed","bContainsIllegalCharacter","bContainsAdjacentLetters","bInvalidStart","bInvalidEnd","control","pathControl","setErrors","detach","reattach","keyDown$","keyUp$","moveVector$","acc","controlName","getControlName","nullCheckFailed","numberCheckFailed","add","removeAssetWithError","setAssetWithError","parent","withLatestFrom","selectableValues","addUnsavedAsset$","assetMap","removeUnsavedAsset$","clearUnsavedAssets$","fn","addAssetWithError$","removeAssetWithError$","clearAssetsWithError$","removeAsset$","unsavedAssets","errorAssets","wasChanged","hadErrors","restoreAsset$","deletedAsset","clearRemovedAssets$","removedAssets","addAsset$","saveAll","assetToSaveMap","assetsToRemoveMap","assetsToSave","assetsToRemove","updatedAssets","postData","postRequest$","assetUpdatePostUrl","success","clearRemovedAssets","clearUnsavedAssets","initializeAssetStatus","assetInitStatusUrl","clearAssetsWithError","hasErrors$","hasChanges$","hasErrors","selectedTab","addedAsset$","changeToTab","tabIndex","save","green","initStatus","tokenInput","token","edit","MapStyleAndermatt","MapStyleSisag","MapStyleService","styleMap","bufferSize","refCount","getStyle","layerIconName","alternateStyle","seasonIconName","curveCoords","overrideColor","symbolColor","showLabel","blob","getSignPostSvgUrl","currentStyle$","circle","MapStyle","statusIconNames","urlBlobPath","iconNameLetterMap","layerIconNameLetterMap","fontSrc","Blob","svgUrl","URL","createObjectURL","start","end","latLngStart","latLngEnd","radius","curveEndMarkerVisibleRadius","fillColor","fillOpacity","curveEndMarkerHighlightRadius","setRadius","querySelectorAll","iconSvg","setSvgColor","regex","parser","DOMParser","parseFromString","documentElement","outerHTML","useIFrame","webcamUrl","bypassSecurityTrustResourceUrl","closeModal","hideSpinner","ArrowStyle","getRotationTransform","directionOffsetPanomap","pivotPoint","hasValue","getWindSpeed","windSpeedUnknown","getArrowStyle","NONE","ONE","TWO","defaultWarnRangeHigh","defaultAlarmRangeHigh","meteoDataService","windDisplayService","svgHtmlContent","windIconSvgAsHtml$","doc","innerHTML","rotationElements","rotationElement","windMarkerPivotPoint","colorElement","cssMeteostationColorNormal","cssMeteostationColorOffline","remove","arrowStyle","applyArrowStyle","elemDirCross","elemDir","elemNone","zoomLevel","getEast","getWest","getNorth","getSouth","mapSize","getSize","wr","hr","zoom$","totalMinutes","hours","minutes","SisMapPage","statusService","routeSisId","routeAlias","parsedRouteSeason","parsedSeasonParam","hideLayerSelector","hideSeasonFilter","hideSignPosts","openLayerSelector","status$","updateStatusForElement","editorHasChanges","nativeCanDeactivate","newStatus","newSubStatus","statusChanged","hostBindings","WindmonitorPage","meteoData$","meteoData","liveData","OperatingInfoTextAdapter","OperatingInfoEntryAdapter","items","libraryGuid","priority","texts","OperatingInfoTenantAdapter","logo","OperatingInfoLinkAdapter","OperatingInfoAdapter","links","descriptionDe","descriptionEn","descriptionFr","descriptionIt","OperatingInfoItemComponent","itemColor","operatingInfoTitle","operatingInfoText","operatingInfoTimestamp","OperatingInfoPage","OperatingInfoService","operatingInfoService","publicAssetLogoBaseUrl","periodicallyRequestOperatingInfoData","OperatingInfoUrl","isMultiTenant","operatingInfo","setDescriptions","lang","link","operatingInfoGuid","encapsulation","SisMediaAssetCategory","SisMediaAssetStatus","SisMediaItem","SisMediaItemAdapter","exportOrder","typeDescription","tenantAlias","iconOptions","colorClassName","moment","SisMediaSettingAdapter","winterSeasonStartDate","format","winterSeasonEndDate","liftsOpenFrom","liftsOpenTo","WebReportInfotextItemAdapter","WebReportMeteoInfoItemAdapter","temperature","snowDepth","freshSnow","weather","avalancheDangerLevel","snowConditionId","slopeConditionId","windSpeed","latestSnowfall","toStringAsLocalDate","String","getUTCDate","padStart","getUTCMonth","getUTCFullYear","WebReportMobileAssetCategory","WebReportAdapter","columns","timeZoneId","exportConfig","sisMediaItemsByCategory","webReportAssetsByCategory","reduce","infotextsByTenantAlias","k","meteoInfosByTenantAlias","sisMediaSettingByTenantAlias","tenantOrders","SisMediaItemComponent","invert","endsWith","mobileStyleTenant","showingLabelLength","longestLabelLength","WebReportMeteoDesktopComponent","translationString","meteoInfos$","meteoInfos","meteoInfosTenant","meteoInfosReport","updateMeteoReportSettings","createMeteoReport","sisMediaSettings","isWinterSeason","isBetween","columnSize","showWeather","meteoDatas","showTemperature","showWindSpeed","showFreshSnow","showSnowDepth","showAvalancheDangerLevel","showSnowCondition","showSlopeCondition","showLatestSnowfall","showWeatherTitle","rows","ceil","meteoReport","row","column","getAvalancheDangerLevelTranslationString","dangerLevel","avalancheLevel","al","getSnowConditionTranslationString","snowCondition","getSlopeConditionTranslationString","slopeCondition","trackByIndex","WebreportMeteoMobileItemComponent","weatherStations","WebreportMeteoMobileComponent","trackByTenantKey","WebreportMobileCategoryComponent","changeDetection","itemsUpdated$","mobileItems","webReportMobile","mobileItem","longestLabelLengthPixel","webReportMobileItems","trackByTenantAlias","WebreportMobileTenantComponent","trackByItemGuid","WebReportPage","ElementRef","findIana","webReportService","urlParams$","urlName","columnsInParams","assetFilters","requestSisMediaAssets","webReport","assetCategories","filteredItems","webReport$","webReportMeteoItems","filteredValues","meteoStations","indexA","indexOf","indexB","showHeader","showFooter","showLegend","allowPageBreak","showTimestamp","setHeaderImageUrl","headerImage","hasLifts","hasSlopes","hasGastros","hasTrails","hasPois","showMeteo","webReportItemsByCategory","isMobileDataLoaded","selectedAssetCategory","initialCategory","Meteo","selectedAssetCategory$","timeZoneIANA","tz","toDate","desktopGrid","currentHeight","gridMinHeight","webReportDesktopItems","buildWebReportDesktopItems","isDesktopDataLoaded","titleTranslationString","onmessage","requestUpdate","assetCategorySelected","selection","sisMediaItemsByTenantAlias","list","resultMap","tenantItemMap","infotext","infotextLang","titles","tenantResult","getCategoryTitles","titleTypesByAssetCategoryMap","rowItems","longestLabelLengths","longestLabelArrayPixel","itemMap","liftsTitles","slopesTitles","gastrosTitles","trailsTitles","poisTitles","image","defaultTitle","extraTitleTypes","titleTypes","titleType","titleOrder","WebReportService","exportUrlName","updateRequestsIntervalMs","requestUpdate$","prev","curr","newItems","existingItem","removedItems","n","production","slideshowPlayerWebApp","enableProdMode","log","__NgCli_bootstrap_1","bootstrapModule","catch","err"],"sourceRoot":"webpack:///","x_google_ignoreList":[160,161]}