geonetwork-ui 2.6.1-dev.e79bf07fb → 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +4 -6
  2. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +11 -1
  3. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +2 -2
  4. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +4 -2
  5. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +4 -2
  6. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +3 -3
  7. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +2 -7
  8. package/esm2022/translations/de.json +10 -0
  9. package/esm2022/translations/en.json +10 -0
  10. package/esm2022/translations/es.json +10 -0
  11. package/esm2022/translations/fr.json +10 -0
  12. package/esm2022/translations/it.json +10 -0
  13. package/esm2022/translations/nl.json +10 -0
  14. package/esm2022/translations/pt.json +10 -0
  15. package/esm2022/translations/sk.json +10 -0
  16. package/fesm2022/geonetwork-ui.mjs +114 -26
  17. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  18. package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
  19. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  20. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  21. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  22. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  23. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts +0 -1
  24. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  25. package/package.json +11 -10
  26. package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +3 -5
  27. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +11 -0
  28. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +3 -1
  29. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +3 -1
  30. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +5 -1
  31. package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +4 -1
  32. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +1 -9
  33. package/translations/de.json +10 -0
  34. package/translations/en.json +10 -0
  35. package/translations/es.json +10 -0
  36. package/translations/fr.json +10 -0
  37. package/translations/it.json +10 -0
  38. package/translations/nl.json +10 -0
  39. package/translations/pt.json +10 -0
  40. package/translations/sk.json +10 -0
@@ -900,6 +900,16 @@ const RecordStatusValues = [
900
900
  'deprecated',
901
901
  'removed',
902
902
  ];
903
+ marker('record.metadata.api.accessServiceProtocol.wms');
904
+ marker('record.metadata.api.accessServiceProtocol.wfs');
905
+ marker('record.metadata.api.accessServiceProtocol.wps');
906
+ marker('record.metadata.api.accessServiceProtocol.wmts');
907
+ marker('record.metadata.api.accessServiceProtocol.esriRest');
908
+ marker('record.metadata.api.accessServiceProtocol.ogcFeatures');
909
+ marker('record.metadata.api.accessServiceProtocol.GPFDL');
910
+ marker('record.metadata.api.accessServiceProtocol.tms');
911
+ marker('record.metadata.api.accessServiceProtocol.maplibre-style');
912
+ marker('record.metadata.api.accessServiceProtocol.other');
903
913
 
904
914
  function getUpdateFrequencyFromFrequencyCode(frequencyCode) {
905
915
  return frequencyCode &&
@@ -19067,6 +19077,16 @@ var de = {
19067
19077
  "record.kind.service": "",
19068
19078
  "record.metadata.about": "Beschreibung",
19069
19079
  "record.metadata.api": "API",
19080
+ "record.metadata.api.accessServiceProtocol.GPFDL": "",
19081
+ "record.metadata.api.accessServiceProtocol.esriRest": "",
19082
+ "record.metadata.api.accessServiceProtocol.maplibre-style": "",
19083
+ "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
19084
+ "record.metadata.api.accessServiceProtocol.other": "",
19085
+ "record.metadata.api.accessServiceProtocol.tms": "",
19086
+ "record.metadata.api.accessServiceProtocol.wfs": "",
19087
+ "record.metadata.api.accessServiceProtocol.wms": "",
19088
+ "record.metadata.api.accessServiceProtocol.wmts": "",
19089
+ "record.metadata.api.accessServiceProtocol.wps": "",
19070
19090
  "record.metadata.api.form.closeButton": "Schließen",
19071
19091
  "record.metadata.api.form.closeForm": "Formular schließen",
19072
19092
  "record.metadata.api.form.create": "Ihre Anfrage erstellen",
@@ -19677,6 +19697,16 @@ var en = {
19677
19697
  "record.kind.service": "Service",
19678
19698
  "record.metadata.about": "Description",
19679
19699
  "record.metadata.api": "API",
19700
+ "record.metadata.api.accessServiceProtocol.GPFDL": "GPFDL",
19701
+ "record.metadata.api.accessServiceProtocol.esriRest": "esriRest",
19702
+ "record.metadata.api.accessServiceProtocol.maplibre-style": "maplibre-style",
19703
+ "record.metadata.api.accessServiceProtocol.ogcFeatures": "ogcFeatures",
19704
+ "record.metadata.api.accessServiceProtocol.other": "other",
19705
+ "record.metadata.api.accessServiceProtocol.tms": "tms",
19706
+ "record.metadata.api.accessServiceProtocol.wfs": "wfs",
19707
+ "record.metadata.api.accessServiceProtocol.wms": "wms",
19708
+ "record.metadata.api.accessServiceProtocol.wmts": "wmts",
19709
+ "record.metadata.api.accessServiceProtocol.wps": "wps",
19680
19710
  "record.metadata.api.form.closeButton": "Close",
19681
19711
  "record.metadata.api.form.closeForm": "Close the form",
19682
19712
  "record.metadata.api.form.create": "Create your request",
@@ -20287,6 +20317,16 @@ var es = {
20287
20317
  "record.kind.service": "",
20288
20318
  "record.metadata.about": "",
20289
20319
  "record.metadata.api": "",
20320
+ "record.metadata.api.accessServiceProtocol.GPFDL": "",
20321
+ "record.metadata.api.accessServiceProtocol.esriRest": "",
20322
+ "record.metadata.api.accessServiceProtocol.maplibre-style": "",
20323
+ "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
20324
+ "record.metadata.api.accessServiceProtocol.other": "",
20325
+ "record.metadata.api.accessServiceProtocol.tms": "",
20326
+ "record.metadata.api.accessServiceProtocol.wfs": "",
20327
+ "record.metadata.api.accessServiceProtocol.wms": "",
20328
+ "record.metadata.api.accessServiceProtocol.wmts": "",
20329
+ "record.metadata.api.accessServiceProtocol.wps": "",
20290
20330
  "record.metadata.api.form.closeButton": "",
20291
20331
  "record.metadata.api.form.closeForm": "",
20292
20332
  "record.metadata.api.form.create": "",
@@ -20897,6 +20937,16 @@ var fr = {
20897
20937
  "record.kind.service": "Service",
20898
20938
  "record.metadata.about": "A propos",
20899
20939
  "record.metadata.api": "API",
20940
+ "record.metadata.api.accessServiceProtocol.GPFDL": "",
20941
+ "record.metadata.api.accessServiceProtocol.esriRest": "",
20942
+ "record.metadata.api.accessServiceProtocol.maplibre-style": "",
20943
+ "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
20944
+ "record.metadata.api.accessServiceProtocol.other": "autre",
20945
+ "record.metadata.api.accessServiceProtocol.tms": "",
20946
+ "record.metadata.api.accessServiceProtocol.wfs": "",
20947
+ "record.metadata.api.accessServiceProtocol.wms": "",
20948
+ "record.metadata.api.accessServiceProtocol.wmts": "",
20949
+ "record.metadata.api.accessServiceProtocol.wps": "",
20900
20950
  "record.metadata.api.form.closeButton": "Fermer",
20901
20951
  "record.metadata.api.form.closeForm": "Fermer le panneau de personnalisation",
20902
20952
  "record.metadata.api.form.create": "Paramétrer votre requête",
@@ -21507,6 +21557,16 @@ var it = {
21507
21557
  "record.kind.service": "Servizio",
21508
21558
  "record.metadata.about": "Descrizione",
21509
21559
  "record.metadata.api": "API",
21560
+ "record.metadata.api.accessServiceProtocol.GPFDL": "",
21561
+ "record.metadata.api.accessServiceProtocol.esriRest": "",
21562
+ "record.metadata.api.accessServiceProtocol.maplibre-style": "",
21563
+ "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
21564
+ "record.metadata.api.accessServiceProtocol.other": "",
21565
+ "record.metadata.api.accessServiceProtocol.tms": "",
21566
+ "record.metadata.api.accessServiceProtocol.wfs": "",
21567
+ "record.metadata.api.accessServiceProtocol.wms": "",
21568
+ "record.metadata.api.accessServiceProtocol.wmts": "",
21569
+ "record.metadata.api.accessServiceProtocol.wps": "",
21510
21570
  "record.metadata.api.form.closeButton": "Chiude",
21511
21571
  "record.metadata.api.form.closeForm": "Chiude il pannello di personalizzazione",
21512
21572
  "record.metadata.api.form.create": "Configura la sua richiesta",
@@ -22117,6 +22177,16 @@ var nl = {
22117
22177
  "record.kind.service": "",
22118
22178
  "record.metadata.about": "",
22119
22179
  "record.metadata.api": "",
22180
+ "record.metadata.api.accessServiceProtocol.GPFDL": "",
22181
+ "record.metadata.api.accessServiceProtocol.esriRest": "",
22182
+ "record.metadata.api.accessServiceProtocol.maplibre-style": "",
22183
+ "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
22184
+ "record.metadata.api.accessServiceProtocol.other": "",
22185
+ "record.metadata.api.accessServiceProtocol.tms": "",
22186
+ "record.metadata.api.accessServiceProtocol.wfs": "",
22187
+ "record.metadata.api.accessServiceProtocol.wms": "",
22188
+ "record.metadata.api.accessServiceProtocol.wmts": "",
22189
+ "record.metadata.api.accessServiceProtocol.wps": "",
22120
22190
  "record.metadata.api.form.closeButton": "",
22121
22191
  "record.metadata.api.form.closeForm": "",
22122
22192
  "record.metadata.api.form.create": "",
@@ -22727,6 +22797,16 @@ var pt = {
22727
22797
  "record.kind.service": "",
22728
22798
  "record.metadata.about": "",
22729
22799
  "record.metadata.api": "",
22800
+ "record.metadata.api.accessServiceProtocol.GPFDL": "",
22801
+ "record.metadata.api.accessServiceProtocol.esriRest": "",
22802
+ "record.metadata.api.accessServiceProtocol.maplibre-style": "",
22803
+ "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
22804
+ "record.metadata.api.accessServiceProtocol.other": "",
22805
+ "record.metadata.api.accessServiceProtocol.tms": "",
22806
+ "record.metadata.api.accessServiceProtocol.wfs": "",
22807
+ "record.metadata.api.accessServiceProtocol.wms": "",
22808
+ "record.metadata.api.accessServiceProtocol.wmts": "",
22809
+ "record.metadata.api.accessServiceProtocol.wps": "",
22730
22810
  "record.metadata.api.form.closeButton": "",
22731
22811
  "record.metadata.api.form.closeForm": "",
22732
22812
  "record.metadata.api.form.create": "",
@@ -23337,6 +23417,16 @@ var sk = {
23337
23417
  "record.kind.service": "",
23338
23418
  "record.metadata.about": "O",
23339
23419
  "record.metadata.api": "API",
23420
+ "record.metadata.api.accessServiceProtocol.GPFDL": "",
23421
+ "record.metadata.api.accessServiceProtocol.esriRest": "",
23422
+ "record.metadata.api.accessServiceProtocol.maplibre-style": "",
23423
+ "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
23424
+ "record.metadata.api.accessServiceProtocol.other": "",
23425
+ "record.metadata.api.accessServiceProtocol.tms": "",
23426
+ "record.metadata.api.accessServiceProtocol.wfs": "",
23427
+ "record.metadata.api.accessServiceProtocol.wms": "",
23428
+ "record.metadata.api.accessServiceProtocol.wmts": "",
23429
+ "record.metadata.api.accessServiceProtocol.wps": "",
23340
23430
  "record.metadata.api.form.closeButton": "Zavrieť",
23341
23431
  "record.metadata.api.form.closeForm": "Zavrieť formulár",
23342
23432
  "record.metadata.api.form.create": "Vytvoriť požiadavku",
@@ -24068,14 +24158,12 @@ const ES_SOURCE_SUMMARY = [
24068
24158
  'codelist_status_text',
24069
24159
  'link',
24070
24160
  'linkProtocol',
24071
- 'contactForResource.organisation',
24072
- 'contact.organisation',
24073
- 'contact.email',
24161
+ 'contactForResource*.organisation*',
24162
+ 'contact*.organisation*',
24163
+ 'contact*.email',
24074
24164
  'userSavedCount',
24075
- 'updateFrequency',
24076
24165
  'cl_topic',
24077
24166
  'cl_maintenanceAndUpdateFrequency',
24078
- 'tag',
24079
24167
  'MD_LegalConstraints*Object',
24080
24168
  'qualityScore',
24081
24169
  'allKeywords',
@@ -26326,7 +26414,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
26326
26414
  }] } });
26327
26415
 
26328
26416
  var name = "geonetwork-ui";
26329
- var version = "2.6.1-dev.e79bf07fb";
26417
+ var version = "2.6.1";
26330
26418
  var engines = {
26331
26419
  node: ">=20"
26332
26420
  };
@@ -26359,27 +26447,28 @@ var peerDependencies = {
26359
26447
  "@ngrx/operators": "18.x",
26360
26448
  "@ngx-translate/core": "16.x",
26361
26449
  "@ngx-translate/http-loader": "16.x",
26450
+ "flag-icons": "^7.3.2",
26362
26451
  rxjs: "7.x",
26363
26452
  "zone.js": "*",
26364
26453
  tailwindcss: "3.x"
26365
26454
  };
26366
26455
  var dependencies = {
26367
- "@biesbjerg/ngx-translate-extract-marker": "^1.0.0",
26368
- "@camptocamp/ogc-client": "1.1.1-dev.3e2d3cc",
26369
- "@geospatial-sdk/core": "0.0.5-dev.31",
26370
- "@geospatial-sdk/geocoding": "0.0.5-dev.31",
26371
- "@geospatial-sdk/legend": "0.0.5-dev.31",
26372
- "@geospatial-sdk/openlayers": "0.0.5-dev.31",
26456
+ "@biesbjerg/ngx-translate-extract-marker": "~1.0.0",
26457
+ "@camptocamp/ogc-client": "1.2.1-dev.b1a75df",
26458
+ "@geospatial-sdk/core": "0.0.5-dev.37",
26459
+ "@geospatial-sdk/geocoding": "0.0.5-dev.37",
26460
+ "@geospatial-sdk/legend": "0.0.5-dev.37",
26461
+ "@geospatial-sdk/openlayers": "0.0.5-dev.37",
26373
26462
  "@ltd/j-toml": "~1.35.2",
26374
26463
  "@messageformat/core": "^3.0.1",
26375
26464
  "@ng-icons/core": "29.10.0",
26376
26465
  "@ng-icons/iconoir": "29.10.0",
26377
26466
  "@ng-icons/material-icons": "29.10.0",
26378
26467
  "@ng-icons/tabler-icons": "29.10.0",
26379
- "@nx/angular": "20.2.2",
26468
+ "@nx/angular": "20.3.4",
26380
26469
  "@rgrove/parse-xml": "4.2.0",
26381
26470
  alasql: "4.6.0",
26382
- axios: "1.8.2",
26471
+ axios: "1.8.4",
26383
26472
  basiclightbox: "^5.0.4",
26384
26473
  "chart.js": "4.4.7",
26385
26474
  "chroma-js": "3.1.2",
@@ -26406,7 +26495,7 @@ var dependencies = {
26406
26495
  tslib: "^2.3.0",
26407
26496
  typeorm: "^0.3.14",
26408
26497
  "whatwg-fetch": "^3.6.2",
26409
- xlsx: "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz"
26498
+ xlsx: "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz"
26410
26499
  };
26411
26500
  var packageJson = {
26412
26501
  name: name,
@@ -31903,9 +31992,7 @@ class MetadataQualityComponent {
31903
31992
  topic: (metadata) => (metadata?.topics?.length ?? 0) > 0,
31904
31993
  organisation: (metadata) => !!metadata?.contacts?.[0]?.organization?.name,
31905
31994
  },
31906
- service: {
31907
- capabilities: (metadata) => (metadata?.onlineResources ?? []).some((resource) => this.hasGetCapabilities(resource?.url?.href ?? '')),
31908
- },
31995
+ service: {},
31909
31996
  reuse: {
31910
31997
  topic: (metadata) => (metadata?.topics?.length ?? 0) > 0,
31911
31998
  organisation: (metadata) => !!metadata?.contacts?.[0]?.organization?.name,
@@ -31927,9 +32014,6 @@ class MetadataQualityComponent {
31927
32014
  this.items.push({ name, value });
31928
32015
  }
31929
32016
  }
31930
- hasGetCapabilities(url) {
31931
- return url.toLowerCase().includes('capabilities');
31932
- }
31933
32017
  initialize() {
31934
32018
  this.items = [];
31935
32019
  Object.entries(this.COMMON_CHECKS).forEach(([name, check]) => {
@@ -32326,7 +32410,7 @@ class ApiCardComponent {
32326
32410
  }
32327
32411
  }
32328
32412
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
32329
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ApiCardComponent, isStandalone: true, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink", size: "size" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex justify-between rounded filter overflow-hidden card-shadow\"\n [ngClass]=\"cardClass\"\n>\n <ng-container *ngIf=\"size !== 'S'\">\n <div class=\"flex-1 min-w-0\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div class=\"flex items-center min-w-[32px]\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #buttons>\n <div class=\"flex flex-row gap-2\">\n <gn-ui-copy-text-button\n [text]=\"link.url\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n class=\"border border-gray-300 rounded-lg pt-1 px-2 h-[34px]\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n class=\"gn-ui-card-icon\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText,\n }\"\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n (click)=\"openRecordApiFormPanel()\"\n >\n <ng-icon\n class=\"pointer-events-none align-middle card-icon\"\n name=\"iconoirSettings\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive,\n }\"\n ></ng-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #content>\n <div class=\"flex-1 min-w-0\">\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n </div>\n <div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row gap-2.5 items-center pt-1\">\n <span\n *ngIf=\"link.accessServiceProtocol !== 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <span\n *ngIf=\"link.accessServiceProtocol === 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n translate\n >\n record.metadata.api.gpfdl</span\n >\n </div>\n <div *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], viewProviders: [
32413
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ApiCardComponent, isStandalone: true, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink", size: "size" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex justify-between rounded filter overflow-hidden card-shadow\"\n [ngClass]=\"cardClass\"\n>\n <ng-container *ngIf=\"size !== 'S'\">\n <div class=\"flex-1 min-w-0\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div class=\"flex items-center min-w-[32px]\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #buttons>\n <div class=\"flex flex-row gap-2\">\n <gn-ui-copy-text-button\n [text]=\"link.url\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n class=\"border border-gray-300 rounded-lg pt-1 px-2 h-[34px]\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n class=\"gn-ui-card-icon\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText,\n }\"\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n (click)=\"openRecordApiFormPanel()\"\n >\n <ng-icon\n class=\"pointer-events-none align-middle card-icon\"\n name=\"iconoirSettings\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive,\n }\"\n ></ng-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #content>\n <div class=\"flex-1 min-w-0\">\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n </div>\n <div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row gap-2.5 items-center pt-1\">\n <span\n *ngIf=\"link.accessServiceProtocol !== 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n translate\n >record.metadata.api.accessServiceProtocol.{{\n link.accessServiceProtocol\n }}</span\n >\n <span\n *ngIf=\"link.accessServiceProtocol === 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n translate\n >\n record.metadata.api.gpfdl</span\n >\n </div>\n <div *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], viewProviders: [
32330
32414
  provideIcons({
32331
32415
  iconoirSettings,
32332
32416
  }),
@@ -32345,7 +32429,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
32345
32429
  provideIcons({
32346
32430
  iconoirSettings,
32347
32431
  }),
32348
- ], template: "<div\n class=\"group flex justify-between rounded filter overflow-hidden card-shadow\"\n [ngClass]=\"cardClass\"\n>\n <ng-container *ngIf=\"size !== 'S'\">\n <div class=\"flex-1 min-w-0\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div class=\"flex items-center min-w-[32px]\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #buttons>\n <div class=\"flex flex-row gap-2\">\n <gn-ui-copy-text-button\n [text]=\"link.url\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n class=\"border border-gray-300 rounded-lg pt-1 px-2 h-[34px]\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n class=\"gn-ui-card-icon\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText,\n }\"\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n (click)=\"openRecordApiFormPanel()\"\n >\n <ng-icon\n class=\"pointer-events-none align-middle card-icon\"\n name=\"iconoirSettings\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive,\n }\"\n ></ng-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #content>\n <div class=\"flex-1 min-w-0\">\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n </div>\n <div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row gap-2.5 items-center pt-1\">\n <span\n *ngIf=\"link.accessServiceProtocol !== 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <span\n *ngIf=\"link.accessServiceProtocol === 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n translate\n >\n record.metadata.api.gpfdl</span\n >\n </div>\n <div *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </div>\n</ng-template>\n" }]
32432
+ ], template: "<div\n class=\"group flex justify-between rounded filter overflow-hidden card-shadow\"\n [ngClass]=\"cardClass\"\n>\n <ng-container *ngIf=\"size !== 'S'\">\n <div class=\"flex-1 min-w-0\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div class=\"flex items-center min-w-[32px]\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #buttons>\n <div class=\"flex flex-row gap-2\">\n <gn-ui-copy-text-button\n [text]=\"link.url\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n class=\"border border-gray-300 rounded-lg pt-1 px-2 h-[34px]\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n class=\"gn-ui-card-icon\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText,\n }\"\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n (click)=\"openRecordApiFormPanel()\"\n >\n <ng-icon\n class=\"pointer-events-none align-middle card-icon\"\n name=\"iconoirSettings\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive,\n }\"\n ></ng-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #content>\n <div class=\"flex-1 min-w-0\">\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n </div>\n <div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row gap-2.5 items-center pt-1\">\n <span\n *ngIf=\"link.accessServiceProtocol !== 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n translate\n >record.metadata.api.accessServiceProtocol.{{\n link.accessServiceProtocol\n }}</span\n >\n <span\n *ngIf=\"link.accessServiceProtocol === 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n translate\n >\n record.metadata.api.gpfdl</span\n >\n </div>\n <div *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </div>\n</ng-template>\n" }]
32349
32433
  }], propDecorators: { link: [{
32350
32434
  type: Input
32351
32435
  }], currentLink: [{
@@ -38220,7 +38304,7 @@ class DataService {
38220
38304
  });
38221
38305
  }
38222
38306
  async getGeodataLinksFromTms(tmsLink, keepOriginalLink = false) {
38223
- const endpoint = new TmsEndpoint(tmsLink.url.toString());
38307
+ const endpoint = new TmsEndpoint(tmsLink.url.toString().replace(/\/?$/, `/${tmsLink.name}`));
38224
38308
  const tileMaps = await endpoint.allTileMaps.catch(() => {
38225
38309
  throw new Error(`ogc.unreachable.unknown`);
38226
38310
  });
@@ -39350,7 +39434,9 @@ class MdViewEffects {
39350
39434
  Metadata effects
39351
39435
  */
39352
39436
  this.loadFullMetadata$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadata), switchMap$1(({ uuid }) => this.recordsRepository.getRecord(uuid)), map$1((record) => {
39353
- if (record === null || !this.router.url.includes(record.kind)) {
39437
+ if (record === null ||
39438
+ (this.router.url !== '/' && // FIXME: special case for WC, find a better way
39439
+ !this.router.url.includes(record.kind))) {
39354
39440
  return loadFullMetadataFailure({ notFound: true });
39355
39441
  }
39356
39442
  return loadFullMetadataSuccess({ full: record });
@@ -40532,7 +40618,9 @@ class MapViewComponent {
40532
40618
  link.accessServiceProtocol === 'tms') {
40533
40619
  // FIXME: here we're assuming that the TMS serves vector tiles only; should be checked with ogc-client first
40534
40620
  return of({
40535
- url: link.url.toString().replace(/\/?$/, '/{z}/{x}/{y}.pbf'),
40621
+ url: link.url
40622
+ .toString()
40623
+ .replace(/\/?$/, `/${link.name}/{z}/{x}/{y}.pbf`),
40536
40624
  type: 'xyz',
40537
40625
  tileFormat: 'application/vnd.mapbox-vector-tile',
40538
40626
  name: link.name,