{"version":3,"file":"hslayers-ng-common-layer-table.mjs","sources":["../../../projects/hslayers/common/layer-table/wms-layer-highlight.directive.ts","../../../projects/hslayers/common/layer-table/nested-layers-table/nested-layers-table.component.ts","../../../projects/hslayers/common/layer-table/nested-layers-table/nested-layers-table.component.html","../../../projects/hslayers/common/layer-table/layer-table.component.ts","../../../projects/hslayers/common/layer-table/layer-table.component.html","../../../projects/hslayers/common/layer-table/hslayers-ng-common-layer-table.ts"],"sourcesContent":["import {Directive, ElementRef, HostBinding, inject} from '@angular/core';\nimport {isOverflown} from 'hslayers-ng/services/utils';\n\n@Directive({\n  selector: '[hsWmsLayerHighlight]',\n  standalone: true,\n})\nexport class WmsLayerHighlightDirective {\n  private elRef = inject(ElementRef);\n\n  @HostBinding('class.hs-wms-highlighted') highlighted = false;\n\n  constructor() {\n    setTimeout(() => {\n      this.highlighted = isOverflown(this.elRef.nativeElement);\n    }, 500);\n  }\n}\n","import {Component, EventEmitter, Input, Output, inject} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {HsUrlWmsService} from 'hslayers-ng/services/add-data';\nimport {WmsLayerHighlightDirective} from '../wms-layer-highlight.directive';\n\n@Component({\n  selector: 'hs-nested-layers-table',\n  templateUrl: './nested-layers-table.component.html',\n  imports: [FormsModule, TranslatePipe, WmsLayerHighlightDirective],\n})\nexport class HsNestedLayersTableComponent {\n  hsUrlWmsService = inject(HsUrlWmsService);\n\n  @Input() layers;\n\n  @Output() layerChecked = new EventEmitter<string>();\n\n  checked(layer): void {\n    this.layerChecked.emit(layer);\n  }\n\n  isArray(maybeArray: any): boolean {\n    return Array.isArray(maybeArray);\n  }\n}\n","<table class=\"table table-sm table-striped table-bordered hs-url-table\" style=\"width: 100%\">\n  @for (sub_layer of layers; track sub_layer['Name']) {\n  <tbody>\n    <tr>\n      <td style=\"width: 1em\"><input type=\"checkbox\" [(ngModel)]=\"sub_layer.checked\" (change)=\"checked(sub_layer)\"\n          [ngModelOptions]=\"{standalone: true}\" style=\"cursor: pointer;\" /></td>\n      <td hsWmsLayerHighlight class=\"text-truncate\" style=\"max-width: 12em;\"\n        [title]=\"'Title: ' + sub_layer.Title  + '\\nName: ' + sub_layer.Name\"\n        (click)=\"hsUrlWmsService.expandTableRow($event)\"><span>{{sub_layer.Title}}</span>\n      </td>\n      <!-- <td class=\"text-truncate\" style=\"width: 30%; padding-left: 1em\">{{sub_layer.Name}}</td> -->\n      <td hsWmsLayerHighlight class=\"text-truncate\" style=\"max-width: 10.875em;width: 30%;\" [title]=\"sub_layer.Abstract\"\n        (click)=\"hsUrlWmsService.expandTableRow($event)\">{{sub_layer.Abstract}}\n      </td>\n    </tr>\n    @if (sub_layer.Style?.length > 1 && sub_layer.checked) {\n    <tr>\n      <td colspan=\"3\">\n        <div class=\"d-flex align-items-baseline px-2 w-100\">\n          <div class=\"d-flex align-items-baseline\" style=\"flex-grow: 1;\">\n            <label class=\"control-label\">{{'COMMON.style' | translate }}:</label>\n            <select class=\"form-control form-select-sm form-select\" [(ngModel)]=\"sub_layer.styleSelected\"\n              [ngModelOptions]=\"{standalone: true}\">\n              @for (style of sub_layer.Style; track style) {\n              <option>{{style.Name}}</option>\n              }\n            </select>\n          </div>\n        </div>\n      </td>\n    </tr>\n    }\n    @if (!!sub_layer.Dimension) {\n    <tr>\n      <td colspan=\"3\">\n        <form class=\"form\">\n          @for (dimension of sub_layer.Dimension; track dimension) {\n          <div class=\"form-group\">\n            @if (isArray(dimension.values)) {\n            <!-- TODO: Remove function call from template -->\n            <label class=\"control-label\">{{dimension.name}}:</label>\n            <div>\n              <select class=\"form-control form-select\" [(ngModel)]=\"dimension.value\"\n                [ngModelOptions]=\"{standalone: true}\">\n                @for (dimension_value of dimension.values; track dimension_value) {\n                <option [value]=\"dimension_value\">\n                  {{dimension_value}}</option>\n                }\n              </select>\n            </div>\n            } @else {\n            <span class=\"text-muted\">{{'ADDLAYERS.unknownDimesion'\n            | translate }}: {{dimension.name}}</span>\n            }\n          </div>\n          }\n        </form>\n      </td>\n    </tr>\n    }\n    @if (!!sub_layer.Layer) {\n    <tr>\n      <td colspan=\"3\" style=\"padding-left: 1em\">\n        <hs-nested-layers-table style=\"display: block;\" (layerChecked)=\"checked($event)\"\n          [layers]=\"sub_layer.Layer\"></hs-nested-layers-table>\n      </td>\n    </tr>\n    }\n  </tbody>\n  }\n</table>\n","import {AfterContentInit, Component, Input, inject} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {NgClass, SlicePipe} from '@angular/common';\nimport {TranslatePipe} from '@ngx-translate/core';\n\nimport {\n  AddDataUrlType,\n  UrlDataObject,\n  HsUrlTypeServiceModel,\n  Service,\n} from 'hslayers-ng/types';\nimport {\n  HsAddDataCommonService,\n  HsAddDataService,\n  HsAddDataUrlService,\n  HsUrlWmsService,\n} from 'hslayers-ng/services/add-data';\nimport {HsLanguageService} from 'hslayers-ng/services/language';\nimport {HsNestedLayersTableComponent} from './nested-layers-table/nested-layers-table.component';\n\n@Component({\n  selector: 'hs-layer-table',\n  templateUrl: './layer-table.component.html',\n  imports: [\n    TranslatePipe,\n    FormsModule,\n    SlicePipe,\n    NgClass,\n    HsNestedLayersTableComponent,\n  ],\n})\nexport class HsLayerTableComponent implements AfterContentInit {\n  hsAddDataUrlService = inject(HsAddDataUrlService);\n  hsAddDataService = inject(HsAddDataService);\n  hsLanguageService = inject(HsLanguageService);\n  hsUrlWmsService = inject(HsUrlWmsService);\n  hsAddDataCommonService = inject(HsAddDataCommonService);\n\n  @Input() injectedService: HsUrlTypeServiceModel;\n  @Input() type: AddDataUrlType;\n\n  data: UrlDataObject;\n  checkedSubLayers = {};\n  getDimensionValues: any;\n  limitShown = 100;\n\n  ngAfterContentInit(): void {\n    this.data = this.injectedService.data;\n    this.getDimensionValues = this.hsAddDataCommonService.getDimensionValues;\n  }\n\n  reachedLimit(): boolean {\n    if (\n      this.data.layers?.length > this.limitShown ||\n      this.data.services?.length > this.limitShown\n    ) {\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * Checked property event handler\n   */\n  changed(whichArray: 'layers' | 'services', e: MouseEvent, layer: any): void {\n    this.hsAddDataUrlService.searchForChecked(this.data[whichArray]);\n    /**\n     * If possible calls side effect handling function defined on type service\n     * e.g. query getFeature-hits for WFS\n     */\n    if (this.injectedService.tableLayerChecked) {\n      this.injectedService.tableLayerChecked(e, layer);\n    }\n  }\n\n  /**\n   * Collapse ArcGIS MapServer expanded service. Used as a way to step back\n   */\n  collapseServices() {\n    if (this.injectedService.collapseServices) {\n      this.injectedService.collapseServices();\n    }\n  }\n\n  async expandService(service: Service): Promise<void> {\n    if (this.injectedService.expandService) {\n      this.injectedService.expandService(service);\n      if (\n        this.injectedService.isImageService &&\n        this.injectedService.isImageService()\n      ) {\n        const layers = await this.injectedService.getLayers();\n        this.injectedService.addLayers(layers);\n      }\n    }\n  }\n\n  searchForChecked(layer): void {\n    this.checkedSubLayers[layer.Name] = layer.checked;\n    this.hsAddDataUrlService.addingAllowed = Object.values(\n      this.checkedSubLayers,\n    ).some((value) => value === true);\n  }\n\n  getLimitTextTranslation(): string {\n    return this.hsLanguageService.getTranslation(\n      'ADDDATA.CATALOGUE.showingSubset',\n      {limitShown: this.limitShown, total: this.data.layers.length},\n    );\n  }\n}\n","<div>\n  @if (type === \"wms\") {\n  <table class=\"table table-sm table-striped table-bordered hs-url-table\">\n    <thead class=\"bg-secondary text-light\">\n      <th style=\"width: 1.5em\">&nbsp;</th>\n      <th>{{ \"COMMON.title\" | translate }}</th>\n      <!-- <th style=\"width:30%\">{{'COMMON.name' | translate }}</th> -->\n      <th>{{ \"COMMON.abstract\" | translate }}</th>\n    </thead>\n    @for ( layer of data.layers | slice: 0 : limitShown; track layer.Name ) {\n    <tbody>\n      <tr>\n        <td [attr.rowspan]=\"layer.Style?.length ? 3 : 2\" [ngClass]=\"{ 'align-middle': !layer.Layer }\">\n          <input type=\"checkbox\" class=\"checkbox-lg\" [(ngModel)]=\"layer.checked\" name=\"layer\" style=\"cursor: pointer\"\n            (change)=\"searchForChecked(layer)\" />\n        </td>\n        <td hsWmsLayerHighlight style=\"max-width: 25.375em\" class=\"text-truncate\"\n          [title]=\"'Title: ' + layer.Title + '\\nName: ' + layer.Name\" (click)=\"hsUrlWmsService.expandTableRow($event)\">\n          <span>{{ layer.Title }}</span>\n        </td>\n        <!-- <td style=\"max-width: 13.75em\" class=\"text-truncate\" [title]=\"layer.Name\">{{layer.Name}}</td> -->\n        <td hsWmsLayerHighlight style=\"max-width: 10.875em; width: 30%\" class=\"text-truncate\" [title]=\"layer.Abstract\"\n          (click)=\"hsUrlWmsService.expandTableRow($event)\">\n          {{ layer.Abstract }}\n        </td>\n      </tr>\n      @if (layer.Style?.length > 1 && layer.checked) {\n      <tr>\n        <td colspan=\"3\">\n          <div class=\"d-flex align-items-baseline px-2 w-100\">\n            <div class=\"d-flex align-items-baseline\" style=\"flex-grow: 1\">\n              <label class=\"control-label\">{{ \"COMMON.style\" | translate }}:</label>\n              <select class=\"form-control form-select-sm form-select\" [(ngModel)]=\"layer.styleSelected\"\n                [ngModelOptions]=\"{ standalone: true }\">\n                @for (style of layer.Style; track $index) {\n                <option [ngValue]=\"style\">{{ style.Name }}</option>\n                }\n              </select>\n            </div>\n          </div>\n        </td>\n      </tr>\n      }\n      <tr [hidden]=\"!layer.Layer\">\n        <td colspan=\"3\" style=\"padding-left: 1em\">\n          <hs-nested-layers-table style=\"display: block\" [layers]=\"layer.Layer\"\n            (layerChecked)=\"searchForChecked($event)\">\n          </hs-nested-layers-table>\n        </td>\n      </tr>\n    </tbody>\n    }\n  </table>\n  } @else {\n  <table class=\"table table-sm table-striped table-bordered\">\n    <thead>\n      <th class=\"border-0\" style=\"width: 1em\">&nbsp;</th>\n      <div class=\"d-flex justify-content-between\">\n        <th class=\"border-0\">{{ \"COMMON.name\" | translate }}</th>\n        @if (type === \"arcgis\" && data.serviceExpanded) {\n        <button type=\"button\" class=\"btn btn-sm px-2 border-0 d-flex align-items-baseline gap-1\" (click)=\"collapseServices()\"\n          [title]=\"'COMMON.back' | translate\">\n          <i class=\"fa-solid fa-chevron-left text-black-50\"></i>\n          <span class=\"text-black-50 fw-bold\">{{\n            \"COMMON.back\" | translate\n            }}</span>\n        </button>\n        }\n      </div>\n    </thead>\n    @for ( service of data.services; track service.name ) {\n    <tbody>\n      <tr>\n        <td>\n          <input class=\"checkbox-lg\" type=\"checkbox\" name=\"service\" (change)=\"changed('services', $event, service)\"\n            style=\"cursor: pointer\" [(ngModel)]=\"service.checked\" />\n        </td>\n        <td (click)=\"expandService(service)\" data-toggle=\"tooltip\"\n          [title]=\"'ADDDATA.requestServiceLayers' | translate\" style=\"cursor: pointer\">\n          @if(service.icon){\n            <i class=\"fa-solid px-1\" [ngClass]=\"service.icon\" [title]=\"service.type\"></i>\n          }\n          {{ service.name }}\n          <span style=\"font-size: x-small\"><i class=\"fa-solid fa-chevron-right\"></i></span>\n        </td>\n      </tr>\n    </tbody>\n    }\n    @for ( layer of data.layers; track layer[data.table.trackBy] ) {\n    <tbody>\n      <tr>\n        <td>\n          <input class=\"checkbox-lg\" type=\"checkbox\" name=\"layer\" style=\"cursor: pointer\"\n            (change)=\"changed('layers', $event, layer)\" [(ngModel)]=\"layer.checked\" />\n        </td>\n        <td hsWmsLayerHighlight (click)=\"hsUrlWmsService.expandTableRow($event)\" class=\"text-truncate position-relative\"\n          style=\"max-width: 45ch\">\n          @if(layer.icon){\n            <i class=\"fa-solid px-1\" [ngClass]=\"layer.icon\"></i>\n          }\n          <span>{{ layer[data.table.nameProperty] }}</span>\n          <span class=\"hs-loader hs-loader-dark position-absolute end-0 bottom-0 me-3\" [hidden]=\"!layer.loading\"></span>\n          @if (layer.featureCount === -9999) {\n          <span style=\"transform: translateY(50%)\" [title]=\"'ADDLAYERS.WFS.featureCountError' | translate\"\n            class=\"align-items-center bottom-50 d-flex end-0 h-75 me-3 p-2 position-absolute rounded-1 text-bg-warning\">i</span>\n          }\n          @if (layer.checked && type === \"wmts\") {\n          <div class=\"d-flex flex-row justify-content-end align-items-baseline mt-1\">\n            {{ \"COMMON.addAs\" | translate }}\n            <div class=\"btn-group ms-2\">\n              <button type=\"button\" class=\"btn btn-sm btn-light btn-outline-secondary\" (click)=\"layer.base = true\"\n                [ngClass]=\"{ active: layer.base }\">\n                {{ \"COMPOSITONKEYWORDS.Basemap\" | translate }}\n              </button>\n              <button type=\"button\" class=\"btn btn-sm btn-light btn-outline-secondary\" (click)=\"layer.base = false\"\n                [ngClass]=\"{ active: !layer.base }\">\n                {{ \"COMMON.layer\" | translate }}\n              </button>\n            </div>\n          </div>\n          }\n          @if ( layer.featureCount > 1000 && layer.checked && type === \"wfs\" ) {\n          <div class=\"alert alert-primary d-flex m-1\" role=\"alert\">\n            <div class=\"w-100\">\n              <p class=\"mb-0\" style=\"white-space: normal\" [hidden]=\"!layer.limitFeatureCount\">\n                {{ \"ADDLAYERS.WFS.selectedLayerContains\" | translate }}\n                {{ layer.featureCount }}\n                {{ \"ADDLAYERS.WFS.loadingToManyAtOnce\" | translate }}\n              </p>\n            </div>\n          </div>\n          }\n        </td>\n      </tr>\n    </tbody>\n    }\n  </table>\n  }\n  @if (type === \"wms\" && reachedLimit()) {\n  <div class=\"d-flex justify-content-around align-items-center m-3\">\n    <span> {{ getLimitTextTranslation() }}</span>\n    <div class=\"btn-group ms-2\">\n      <button type=\"button\" class=\"btn btn-sm btn-light btn-outline-secondary\" (click)=\"limitShown = limitShown + 100\">\n        {{ \"ADDDATA.CATALOGUE.showNext100\" | translate }}\n      </button>\n      <button type=\"button\" class=\"btn btn-sm btn-light btn-outline-secondary\"\n        (click)=\"limitShown = data.layers.length\">\n        {{ \"ADDDATA.CATALOGUE.showAll\" | translate }}\n      </button>\n    </div>\n  </div>\n  }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}