{"version":3,"file":"c8y-ngx-components-location.mjs","sources":["../../location/add-location.component.ts","../../location/add-location.component.html","../../location/add-location.factory.ts","../../location/location-tab.factory.ts","../../location/location.component.ts","../../location/location.component.html","../../location/location.module.ts","../../location/c8y-ngx-components-location.ts"],"sourcesContent":["import {\n  Component,\n  Inject,\n  OnInit,\n  Optional,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\nimport { IManagedObject, InventoryService } from '@c8y/client';\nimport {\n  AlertService,\n  ContextRouteService,\n  IconDirective,\n  C8yTranslateDirective,\n  C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport type { MapDefaultConfig } from '@c8y/options';\nimport { Router } from '@angular/router';\nimport { MAP_DEFAULT_CONFIG, defaultMapConfig } from '@c8y/ngx-components/map';\nimport { Observable, of } from 'rxjs';\nimport { first } from 'rxjs/operators';\n\n@Component({\n  selector: 'c8y-add-location',\n  templateUrl: './add-location.component.html',\n  imports: [IconDirective, C8yTranslateDirective, C8yTranslatePipe]\n})\nexport class AddLocationComponent implements OnInit {\n  @ViewChild('templateCopy', { read: TemplateRef, static: true }) templateCopy;\n\n  constructor(\n    private inventoryService: InventoryService,\n    private contextRouteService: ContextRouteService,\n    @Optional()\n    @Inject(MAP_DEFAULT_CONFIG)\n    private defaultConfig$: Observable<MapDefaultConfig>,\n    private router: Router,\n    private alertService: AlertService,\n    private vcRef: ViewContainerRef\n  ) {}\n\n  ngOnInit() {\n    this.vcRef.createEmbeddedView(this.templateCopy);\n  }\n\n  onClick(): void {\n    const mapConfig$ = this.defaultConfig$ || of(defaultMapConfig);\n    mapConfig$.pipe(first()).subscribe(async config => {\n      const context = this.contextRouteService.activatedContextData;\n      context.contextData.c8y_Position = {\n        lat: config.center[0],\n        lng: config.center[1]\n      };\n      try {\n        await this.inventoryService.update(context.contextData as IManagedObject);\n      } catch (ex) {\n        this.alertService.addServerFailure(ex);\n      }\n\n      const route = this.contextRouteService.getContextRoute(context);\n      this.contextRouteService.refreshContext();\n      this.router.navigateByUrl(route + '/location');\n    });\n  }\n}\n","<ng-template #templateCopy>\n  <button\n    class=\"btn btn-link\"\n    [title]=\"'Add location' | translate\"\n    (click)=\"onClick()\"\n  >\n    <i c8yIcon=\"location-arrow\"></i>\n    <span translate>Add location</span>\n  </button>\n</ng-template>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n  ActionBarFactory,\n  ActionBarItem,\n  ContextRouteService,\n  ViewContext\n} from '@c8y/ngx-components';\nimport { AddLocationComponent } from './add-location.component';\nimport { isUndefined } from 'lodash-es';\n\n@Injectable({ providedIn: 'root' })\nexport class AddLocationFactory implements ActionBarFactory {\n  private action: ActionBarItem = {\n    component: AddLocationComponent,\n    placement: 'more'\n  };\n\n  constructor(private contextRouteService: ContextRouteService) {}\n\n  get(activatedRoute?: ActivatedRoute): ActionBarItem {\n    const routeData = this.contextRouteService.getContextData(activatedRoute);\n    if (!routeData) {\n      return;\n    }\n    if (\n      routeData.context === ViewContext.Device &&\n      isUndefined(routeData.contextData.c8y_Position)\n    ) {\n      return this.action;\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { ContextRouteService, Tab, ViewContext, ExtensionFactory } from '@c8y/ngx-components';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class LocationTabFactory implements ExtensionFactory<Tab> {\n  constructor(private contextRouteService: ContextRouteService) {}\n\n  get(activatedRoute: ActivatedRoute): Tab[] {\n    const contextData = this.contextRouteService.getContextData(activatedRoute);\n    const isDeviceOrGroupWithPosition =\n      (contextData?.context === ViewContext.Device || contextData?.context === ViewContext.Group) &&\n      contextData?.contextData.c8y_Position;\n    if (isDeviceOrGroupWithPosition) {\n      return [\n        {\n          label: gettext('Location'),\n          icon: 'location-arrow',\n          path: `${this.contextRouteService.getContextRoute(contextData)}/location`\n        }\n      ];\n    }\n    return [];\n  }\n}\n","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { MapComponent, MapConfig, PositionManagedObject } from '@c8y/ngx-components/map';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n  AlertService,\n  ContextRouteService,\n  OptionsService,\n  Permissions,\n  ActionBarItemComponent,\n  C8yTranslateDirective,\n  IconDirective,\n  FormGroupComponent,\n  RequiredInputPlaceholderDirective,\n  MinValidationDirective,\n  MaxValidationDirective,\n  MessagesComponent,\n  MessageDirective,\n  C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { ActivatedRoute } from '@angular/router';\nimport { InventoryService } from '@c8y/client';\nimport { isUndefined, cloneDeep } from 'lodash-es';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { NgClass, NgIf } from '@angular/common';\n\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'c8y-location',\n  templateUrl: './location.component.html',\n  imports: [\n    ActionBarItemComponent,\n    NgClass,\n    C8yTranslateDirective,\n    IconDirective,\n    MapComponent,\n    FormsModule,\n    NgIf,\n    FormGroupComponent,\n    RequiredInputPlaceholderDirective,\n    MinValidationDirective,\n    MaxValidationDirective,\n    MessagesComponent,\n    MessageDirective,\n    C8yTranslatePipe\n  ]\n})\nexport class LocationComponent implements OnInit, OnDestroy {\n  position: PositionManagedObject;\n  originalPosition: PositionManagedObject;\n  isEdit = false;\n  canEdit = true;\n  config: MapConfig = { realtime: false, follow: true, zoomLevel: 12 };\n  addressSearchTerm = '';\n  hideAddressSearchFeature = false;\n\n  private destroy$ = new Subject<void>();\n  private mapNominatimUrl = 'https://nominatim.openstreetmap.org/search?format=json&q={searchTerm}';\n\n  @ViewChild(MapComponent)\n  map: MapComponent;\n\n  constructor(\n    private contextRouteService: ContextRouteService,\n    private activatedRoute: ActivatedRoute,\n    private inventoryService: InventoryService,\n    private permissions: Permissions,\n    private optionsService: OptionsService,\n    private alertService: AlertService\n  ) {}\n\n  ngOnInit(): void {\n    this.activatedRoute.url.pipe(takeUntil(this.destroy$)).subscribe(() => {\n      this.updateMap();\n    });\n  }\n\n  async updateMap() {\n    const { contextData } = this.contextRouteService.getContextData(this.activatedRoute);\n    this.position = contextData as PositionManagedObject;\n    this.canEdit = await this.permissions.canEdit(\n      [Permissions.ROLE_INVENTORY_ADMIN, Permissions.ROLE_INVENTORY_CREATE],\n      contextData\n    );\n\n    const hasCustomSetting = !isUndefined(this.optionsService.mapNominatimUrl);\n    this.hideAddressSearchFeature = hasCustomSetting && !this.optionsService.mapNominatimUrl;\n\n    if (hasCustomSetting) {\n      this.mapNominatimUrl = this.optionsService.mapNominatimUrl;\n    }\n\n    this.map.refresh();\n  }\n\n  toggleRealtime() {\n    this.config = { ...this.config, realtime: !this.config.realtime };\n  }\n\n  disableRealtime() {\n    this.config = { ...this.config, realtime: false };\n  }\n\n  centerMap() {\n    this.config = {\n      ...this.config,\n      center: [this.position.c8y_Position.lat, this.position.c8y_Position.lng]\n    };\n  }\n\n  edit() {\n    this.originalPosition = cloneDeep(this.position);\n    this.enableMarkerDragging();\n    this.disableRealtime();\n    this.isEdit = true;\n  }\n\n  cancel() {\n    this.position = this.originalPosition;\n    this.isEdit = false;\n    this.map.markers[0]?.dragging.disable();\n    this.centerMap();\n  }\n\n  async save() {\n    try {\n      const { data } = await this.inventoryService.update({\n        id: this.position.id,\n        c8y_Position: this.position.c8y_Position\n      });\n      this.position = data as PositionManagedObject;\n    } catch (ex) {\n      this.alertService.addServerFailure(ex);\n    }\n    this.map.markers[0]?.dragging.disable();\n    this.centerMap();\n    this.isEdit = false;\n  }\n\n  positionChanged(position: PositionManagedObject) {\n    this.position = position;\n  }\n\n  async searchAddress(searchTerm: string) {\n    const fetchResponse = await fetch(this.mapNominatimUrl.replace('{searchTerm}', searchTerm));\n    if (fetchResponse.status !== 200) {\n      this.alertService.danger(gettext('Failed to search for address.'));\n      return;\n    }\n    const data: Array<{ lat: string | number; lon: string | number; licence?: string }> =\n      await fetchResponse.json();\n    const latLng = data[0];\n    if (!latLng) {\n      this.alertService.warning(gettext('Address could not be found.'));\n      return;\n    }\n    this.position.c8y_Position.lat = Number(latLng.lat);\n    this.position.c8y_Position.lng = Number(latLng.lon);\n    this.updateMarkerPosition();\n    if (latLng.licence) {\n      this.map.map.attributionControl.addAttribution(latLng.licence);\n    }\n  }\n\n  updateMarkerPosition() {\n    this.map.refreshMarkers();\n    this.enableMarkerDragging();\n    this.centerMap();\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n  }\n\n  private enableMarkerDragging() {\n    const marker = this.map.markers[0];\n    if (marker) {\n      marker.dragging.enable();\n      marker.on('dragend', () => {\n        const latlng = marker.getLatLng();\n        this.position.c8y_Position = {\n          ...this.position.c8y_Position,\n          lat: latlng.lat,\n          lng: latlng.lng\n        };\n        this.centerMap();\n      });\n    }\n  }\n}\n","<c8y-action-bar-item placement=\"right\">\n  <button\n    class=\"btn btn-link c8y-realtime\"\n    title=\"{{ 'Toggle realtime' | translate }}\"\n    type=\"button\"\n    (click)=\"toggleRealtime()\"\n  >\n    <span\n      class=\"c8y-pulse\"\n      [ngClass]=\"{ active: config.realtime, inactive: !config.realtime }\"\n    ></span>\n    <span translate>Realtime</span>\n  </button>\n</c8y-action-bar-item>\n<c8y-action-bar-item placement=\"right\">\n  <button\n    class=\"btn btn-clean\"\n    title=\"{{ 'Center`verb`' | translate }}\"\n    (click)=\"centerMap()\"\n  >\n    <i [c8yIcon]=\"'target1'\"></i>\n    <span translate>Center`verb`</span>\n  </button>\n</c8y-action-bar-item>\n\n<div class=\"card card--grid content-fullpage d-grid grid__col--8-4--md\">\n  <div\n    class=\"bg-white p-relative\"\n    style=\"min-height: 30vh\"\n  >\n    <c8y-map\n      [assets]=\"[position]\"\n      [config]=\"config\"\n      (onRealtimeUpdate)=\"positionChanged($event)\"\n    ></c8y-map>\n  </div>\n\n  <form\n    class=\"d-flex d-col bg-inherit content-fullpage bg-gray-white\"\n    #positionForm=\"ngForm\"\n    (ngSubmit)=\"save()\"\n  >\n    <div class=\"card-header large-padding separator sticky-top\">\n      <span\n        class=\"card-title\"\n        translate\n      >\n        Device location\n      </span>\n    </div>\n    <div class=\"inner-scroll\">\n      <div\n        class=\"m-16\"\n        *ngIf=\"!isEdit\"\n      >\n        <div class=\"p-b-40\">\n          <div\n            class=\"text-bold\"\n            translate\n          >\n            Latitude (°)\n          </div>\n          {{ position.c8y_Position.lat }}\n        </div>\n        <div class=\"p-b-40\">\n          <div\n            class=\"text-bold\"\n            translate\n          >\n            Longitude (°)\n          </div>\n          {{ position.c8y_Position.lng }}\n        </div>\n        <div class=\"p-b-40\">\n          <div\n            class=\"text-bold\"\n            translate\n          >\n            Altitude (m)\n          </div>\n          {{ position.c8y_Position.alt }}\n        </div>\n      </div>\n      <div\n        class=\"m-16\"\n        *ngIf=\"isEdit\"\n      >\n        <c8y-form-group>\n          <label\n            for=\"lat\"\n            translate\n          >\n            Latitude (°)\n          </label>\n\n          <input\n            class=\"form-control\"\n            [title]=\"'Latitude (°)' | translate\"\n            id=\"lat\"\n            name=\"lat\"\n            type=\"number\"\n            required\n            min=\"-90\"\n            max=\"90\"\n            (blur)=\"positionForm.valid && updateMarkerPosition()\"\n            [(ngModel)]=\"position.c8y_Position.lat\"\n          />\n          <c8y-messages>\n            <c8y-message\n              name=\"min\"\n              [text]=\"'The minimum latitude value is -90°.' | translate\"\n            ></c8y-message>\n            <c8y-message\n              name=\"max\"\n              [text]=\"'The maximum latitude value is 90°.' | translate\"\n            ></c8y-message>\n          </c8y-messages>\n        </c8y-form-group>\n        <c8y-form-group>\n          <label\n            for=\"lat\"\n            translate\n          >\n            Longitude (°)\n          </label>\n\n          <input\n            class=\"form-control\"\n            [title]=\"'Longitude (°)' | translate\"\n            id=\"lng\"\n            name=\"lng\"\n            type=\"number\"\n            required\n            min=\"-180\"\n            max=\"180\"\n            (blur)=\"positionForm.valid && updateMarkerPosition()\"\n            [(ngModel)]=\"position.c8y_Position.lng\"\n          />\n          <c8y-messages>\n            <c8y-message\n              name=\"min\"\n              [text]=\"'The minimum longitude value is -180°.' | translate\"\n            ></c8y-message>\n            <c8y-message\n              name=\"max\"\n              [text]=\"'The maximum longitude value is 180°.' | translate\"\n            ></c8y-message>\n          </c8y-messages>\n        </c8y-form-group>\n        <c8y-form-group>\n          <label\n            for=\"alt\"\n            translate\n          >\n            Altitude (m)\n          </label>\n\n          <input\n            class=\"form-control\"\n            [title]=\"'Altitude (m)' | translate\"\n            id=\"alt\"\n            name=\"alt\"\n            type=\"number\"\n            [(ngModel)]=\"position.c8y_Position.alt\"\n          />\n        </c8y-form-group>\n      </div>\n\n      <form\n        class=\"card-block bg-level-1\"\n        #addressSearch=\"ngForm\"\n        novalidate\n        (submit)=\"searchAddress(addressSearchTerm)\"\n        *ngIf=\"isEdit && !hideAddressSearchFeature\"\n      >\n        <div class=\"form-group\">\n          <label\n            for=\"searchAddress\"\n            translate\n          >\n            Find lat/long by address\n          </label>\n          <div class=\"input-group input-group-search\">\n            <input\n              class=\"form-control\"\n              id=\"searchAddress\"\n              name=\"addressSearchTerm\"\n              type=\"text\"\n              [placeholder]=\"'e.g. Speditionstraße 13, Düsseldorf`LOCALIZE`' | translate\"\n              [(ngModel)]=\"addressSearchTerm\"\n            />\n            <span class=\"input-group-btn\">\n              <button\n                class=\"btn btn-dot\"\n                [title]=\"'Search' | translate\"\n                type=\"submit\"\n              >\n                <i\n                  class=\"dlt-c8y-icon-search\"\n                  c8y-icon=\"search\"\n                ></i>\n              </button>\n            </span>\n          </div>\n        </div>\n      </form>\n    </div>\n    <div class=\"card-footer separator\">\n      <button\n        class=\"btn btn-default\"\n        [title]=\"'Edit location' | translate\"\n        type=\"button\"\n        *ngIf=\"canEdit && !isEdit\"\n        (click)=\"edit()\"\n        translate\n      >\n        Edit location\n      </button>\n      <button\n        class=\"btn btn-default\"\n        [title]=\"'Cancel' | translate\"\n        type=\"button\"\n        (click)=\"cancel()\"\n        *ngIf=\"isEdit\"\n        translate\n      >\n        Cancel\n      </button>\n      <button\n        class=\"btn btn-primary\"\n        [title]=\"'Save' | translate\"\n        type=\"submit\"\n        *ngIf=\"isEdit\"\n        translate\n        [disabled]=\"!positionForm.valid\"\n      >\n        Save\n      </button>\n    </div>\n  </form>\n</div>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { CoreModule, hookActionBar, hookRoute, hookTab, ViewContext } from '@c8y/ngx-components';\nimport { MapModule } from '@c8y/ngx-components/map';\nimport { AddLocationComponent } from './add-location.component';\nimport { AddLocationFactory } from './add-location.factory';\nimport { LocationTabFactory } from './location-tab.factory';\nimport { LocationComponent } from './location.component';\nimport { LocationConfiguration } from './location.model';\n\n@NgModule({\n  imports: [MapModule, CoreModule, RouterModule, LocationComponent],\n  exports: [LocationComponent],\n  providers: [\n    hookRoute({\n      path: 'location',\n      component: LocationComponent,\n      context: ViewContext.Device,\n      tabs: []\n    }),\n    hookRoute({\n      path: 'location',\n      component: LocationComponent,\n      context: ViewContext.Group,\n      tabs: []\n    })\n  ]\n})\nexport class LocationRouteModule {}\n\n@NgModule({\n  imports: [LocationRouteModule],\n  providers: [hookTab(LocationTabFactory)]\n})\nexport class LocationTabModule {}\n\n/**\n * @deprecated has been splitted into `LocationTabModule` and `AddLocationModule`.\n */\n@NgModule({\n  imports: [LocationTabModule]\n})\nexport class LocationModule {\n  /**\n   *\n   * @deprecated use the `LocationTabModule` and optionally `AddLocationModule` instead.\n   */\n  static config(\n    config: LocationConfiguration = { addLocation: false }\n  ): ModuleWithProviders<LocationModule> {\n    return {\n      ngModule: LocationModule,\n      providers: config.addLocation ? [hookActionBar(AddLocationFactory)] : []\n    };\n  }\n}\n\n@NgModule({\n  imports: [CoreModule, LocationRouteModule, AddLocationComponent],\n  exports: [AddLocationComponent],\n  providers: [hookActionBar(AddLocationFactory)]\n})\nexport class AddLocationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i3","i4"],"mappings":"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"}