geonetwork-ui 2.7.0-dev.dadaab772 → 2.7.0-dev.e3a54608e

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 (92) hide show
  1. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +4 -6
  2. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +47 -3
  3. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +7 -3
  4. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +11 -1
  5. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +2 -2
  6. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +3 -5
  7. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +4 -2
  8. package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +3 -2
  9. package/esm2022/libs/feature/search/src/lib/state/reducer.mjs +5 -2
  10. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +3 -3
  11. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +5 -4
  12. package/esm2022/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.mjs +5 -4
  13. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +1 -4
  14. package/esm2022/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.mjs +5 -4
  15. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +3 -1
  16. package/esm2022/libs/util/app-config/src/lib/model.mjs +1 -1
  17. package/esm2022/libs/util/shared/src/lib/record/quality-score.util.mjs +7 -7
  18. package/esm2022/libs/util/shared/src/lib/utils/geojson.mjs +58 -1
  19. package/esm2022/libs/util/shared/src/lib/utils/index.mjs +2 -1
  20. package/esm2022/libs/util/shared/src/lib/utils/mobile-screen.mjs +9 -0
  21. package/esm2022/translations/de.json +10 -0
  22. package/esm2022/translations/en.json +10 -0
  23. package/esm2022/translations/es.json +10 -0
  24. package/esm2022/translations/fr.json +10 -0
  25. package/esm2022/translations/it.json +10 -0
  26. package/esm2022/translations/nl.json +10 -0
  27. package/esm2022/translations/pt.json +10 -0
  28. package/esm2022/translations/sk.json +10 -0
  29. package/fesm2022/geonetwork-ui.mjs +2498 -2293
  30. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  31. package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
  32. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +1 -1
  33. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  34. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +1 -0
  35. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  36. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  37. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  38. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +2 -2
  39. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  40. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  41. package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
  42. package/libs/feature/search/src/lib/state/reducer.d.ts.map +1 -1
  43. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -0
  44. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts.map +1 -1
  45. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts +1 -0
  46. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts.map +1 -1
  47. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts +0 -1
  48. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  49. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts +1 -0
  50. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts.map +1 -1
  51. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  52. package/libs/util/app-config/src/lib/model.d.ts +1 -0
  53. package/libs/util/app-config/src/lib/model.d.ts.map +1 -1
  54. package/libs/util/shared/src/lib/record/quality-score.util.d.ts.map +1 -1
  55. package/libs/util/shared/src/lib/utils/geojson.d.ts +7 -2
  56. package/libs/util/shared/src/lib/utils/geojson.d.ts.map +1 -1
  57. package/libs/util/shared/src/lib/utils/index.d.ts +1 -0
  58. package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
  59. package/libs/util/shared/src/lib/utils/mobile-screen.d.ts +2 -0
  60. package/libs/util/shared/src/lib/utils/mobile-screen.d.ts.map +1 -0
  61. package/package.json +11 -10
  62. package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +3 -5
  63. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +50 -3
  64. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +7 -5
  65. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +11 -0
  66. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +3 -1
  67. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +8 -8
  68. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +3 -1
  69. package/src/libs/feature/router/src/lib/default/state/router.facade.ts +2 -1
  70. package/src/libs/feature/search/src/lib/state/reducer.ts +4 -1
  71. package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +4 -1
  72. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +12 -11
  73. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +7 -1
  74. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.html +4 -1
  75. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.ts +7 -1
  76. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +0 -4
  77. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.html +7 -1
  78. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.ts +3 -1
  79. package/src/libs/util/app-config/src/lib/app-config.ts +2 -0
  80. package/src/libs/util/app-config/src/lib/model.ts +1 -0
  81. package/src/libs/util/shared/src/lib/record/quality-score.util.ts +8 -9
  82. package/src/libs/util/shared/src/lib/utils/geojson.ts +72 -2
  83. package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
  84. package/src/libs/util/shared/src/lib/utils/mobile-screen.ts +14 -0
  85. package/translations/de.json +10 -0
  86. package/translations/en.json +10 -0
  87. package/translations/es.json +10 -0
  88. package/translations/fr.json +10 -0
  89. package/translations/it.json +10 -0
  90. package/translations/nl.json +10 -0
  91. package/translations/pt.json +10 -0
  92. package/translations/sk.json +10 -0
@@ -67,7 +67,10 @@
67
67
  [ngClass]="{
68
68
  '!bg-primary': currentlyActive,
69
69
  }"
70
- >{{ link.accessServiceProtocol }}</span
70
+ translate
71
+ >record.metadata.api.accessServiceProtocol.{{
72
+ link.accessServiceProtocol
73
+ }}</span
71
74
  >
72
75
  <span
73
76
  *ngIf="link.accessServiceProtocol === 'GPFDL'"
@@ -13,8 +13,7 @@
13
13
  <span class="px-3">({{ linksCount }})</span>
14
14
  </div>
15
15
  <gn-ui-previous-next-buttons
16
- class="md:block hidden"
17
- *ngIf="_list?.pagesCount > 1"
16
+ *ngIf="(isMobile$ | async) === false && _list?.pagesCount > 1"
18
17
  [listComponent]="_list"
19
18
  ></gn-ui-previous-next-buttons>
20
19
  </div>
@@ -40,7 +39,7 @@
40
39
 
41
40
  <ng-container>
42
41
  <gn-ui-block-list
43
- class="md:block hidden"
42
+ *ngIf="(isMobile$ | async) === false"
44
43
  #blockList
45
44
  (listChanges)="updateList($event)"
46
45
  containerClass="gap-4 pt-5 pb-7"
@@ -57,12 +56,14 @@
57
56
  </gn-ui-block-list>
58
57
  </ng-container>
59
58
 
60
- <div class="mb-5 md:hidden block" *ngFor="let link of filteredLinks">
61
- <gn-ui-download-item
62
- size="M"
63
- [link]="link"
64
- [color]="getLinkColor(link)"
65
- [format]="getLinkFormat(link)"
66
- [isFromApi]="isFromApi(link)"
67
- ></gn-ui-download-item>
59
+ <div class="mb-5" *ngFor="let link of filteredLinks">
60
+ <ng-container *ngIf="(isMobile$ | async) === true">
61
+ <gn-ui-download-item
62
+ size="M"
63
+ [link]="link"
64
+ [color]="getLinkColor(link)"
65
+ [format]="getLinkFormat(link)"
66
+ [isFromApi]="isFromApi(link)"
67
+ ></gn-ui-download-item>
68
+ </ng-container>
68
69
  </div>
@@ -6,7 +6,11 @@ import {
6
6
  } from '@angular/core'
7
7
  import { TranslateDirective, TranslateService } from '@ngx-translate/core'
8
8
  import { marker } from '@biesbjerg/ngx-translate-extract-marker'
9
- import { getBadgeColor, getFileFormat } from '../../../../../../libs/util/shared/src'
9
+ import {
10
+ getBadgeColor,
11
+ getFileFormat,
12
+ getIsMobile,
13
+ } from '../../../../../../libs/util/shared/src'
10
14
  import { DatasetDownloadDistribution } from '../../../../../../libs/common/domain/src/lib/model/record'
11
15
  import { CommonModule } from '@angular/common'
12
16
  import { ButtonComponent } from '../../../../../../libs/ui/inputs/src'
@@ -50,6 +54,8 @@ export class DownloadsListComponent {
50
54
  return this.filteredLinks?.length || 0
51
55
  }
52
56
 
57
+ isMobile$ = getIsMobile()
58
+
53
59
  activeFilterFormats: FilterFormat[] = ['all']
54
60
 
55
61
  updateList($event: BlockListComponent) {
@@ -7,7 +7,10 @@
7
7
  class="shrink-0 text-[0.75em]"
8
8
  name="matLocationSearchingOutline"
9
9
  ></ng-icon>
10
- <span class="ml-1 hidden sm:inline-block shrink-0" *ngIf="showLabel" translate
10
+ <span
11
+ class="ml-1 inline-block shrink-0"
12
+ *ngIf="(isMobile$ | async) === false && showLabel"
13
+ translate
11
14
  >record.metadata.isGeographical</span
12
15
  >
13
16
  </div>
@@ -4,7 +4,11 @@ import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/mode
4
4
  import { CommonModule } from '@angular/common'
5
5
  import { TranslateDirective, TranslatePipe } from '@ngx-translate/core'
6
6
  import { NgIcon, provideIcons } from '@ng-icons/core'
7
- import { LinkClassifierService, LinkUsage } from '../../../../../../libs/util/shared/src'
7
+ import {
8
+ getIsMobile,
9
+ LinkClassifierService,
10
+ LinkUsage,
11
+ } from '../../../../../../libs/util/shared/src'
8
12
 
9
13
  @Component({
10
14
  selector: 'gn-ui-geo-data-badge',
@@ -24,6 +28,8 @@ export class GeoDataBadgeComponent {
24
28
  @Input() styling = 'default'
25
29
  @Input() record: CatalogRecord
26
30
 
31
+ isMobile$ = getIsMobile()
32
+
27
33
  isGeodata() {
28
34
  const links =
29
35
  'onlineResources' in this.record ? this.record.onlineResources : []
@@ -74,10 +74,6 @@ export class MetadataQualityComponent implements OnChanges {
74
74
  )
75
75
  }
76
76
 
77
- hasGetCapabilities(url: string): boolean {
78
- return url.toLowerCase().includes('capabilities')
79
- }
80
-
81
77
  initialize() {
82
78
  if (!this.propsToValidate) {
83
79
  this.propsToValidate = getAllKeysValidator()
@@ -1,5 +1,8 @@
1
1
  <div
2
2
  class="flex items-center justify-between p-3 mt-8 bg-white rounded-lg border-b solid border-gray-300"
3
+ *ngIf="
4
+ (isMobile$ | async) === false || featureCatalog?.featureTypes?.length > 1
5
+ "
3
6
  >
4
7
  <div
5
8
  class="relative shrink-0"
@@ -17,7 +20,10 @@
17
20
  name="iconoirSearch"
18
21
  ></ng-icon>
19
22
  </div>
20
- <div class="text-sm px-1 ml-auto hidden sm:inline">
23
+ <div
24
+ *ngIf="(isMobile$ | async) === false"
25
+ class="text-sm px-1 ml-auto inline"
26
+ >
21
27
  <ng-container *ngIf="featureCatalog?.featureTypes?.length > 1">
22
28
  <span
23
29
  class="text-sm font-medium text-gray-900"
@@ -6,7 +6,7 @@ import { DatasetFeatureCatalog } from '../../../../../../libs/common/domain/src/
6
6
  import { FormsModule } from '@angular/forms'
7
7
  import { of } from 'rxjs'
8
8
  import { debounceTime, distinctUntilChanged, tap } from 'rxjs/operators'
9
- import { createFuzzyFilter } from '../../../../../../libs/util/shared/src'
9
+ import { createFuzzyFilter, getIsMobile } from '../../../../../../libs/util/shared/src'
10
10
  import { iconoirSearch } from '@ng-icons/iconoir'
11
11
 
12
12
  @Component({
@@ -39,6 +39,8 @@ export class SearchFeatureCatalogComponent {
39
39
  return this._featureCatalog
40
40
  }
41
41
 
42
+ isMobile$ = getIsMobile()
43
+
42
44
  @Output() filteredFeatureCatalogChange =
43
45
  new EventEmitter<DatasetFeatureCatalog>()
44
46
  filteredFeatureCatalog: DatasetFeatureCatalog
@@ -231,6 +231,7 @@ export function loadAppConfig() {
231
231
  'filter_geometry_url',
232
232
  'search_preset',
233
233
  'advanced_filters',
234
+ 'limit',
234
235
  ],
235
236
  warnings,
236
237
  errors
@@ -257,6 +258,7 @@ export function loadAppConfig() {
257
258
  filters: param.filters,
258
259
  })),
259
260
  ADVANCED_FILTERS: parsedSearchSection.advanced_filters,
261
+ LIMIT: parsedSearchSection.limit,
260
262
  } as SearchConfig)
261
263
 
262
264
  const parsedMetadataQualitySection = parseConfigSection(
@@ -60,6 +60,7 @@ export interface SearchConfig {
60
60
  FILTER_GEOMETRY_DATA?: string
61
61
  SEARCH_PRESET?: SearchPreset[]
62
62
  ADVANCED_FILTERS?: []
63
+ LIMIT?: number
63
64
  }
64
65
 
65
66
  export interface MetadataQualityConfig {
@@ -12,14 +12,13 @@ const ValidatorMapper: TValidatorMapper = {
12
12
  abstract: (record) => !!record?.abstract,
13
13
  keywords: (record) => (record?.keywords?.length ?? 0) > 0,
14
14
  legalConstraints: (record) => (record?.legalConstraints?.length ?? 0) > 0,
15
- contacts: (record) => !!record?.contacts?.[0]?.email,
16
- updateFrequency: (record) => !!record?.updateFrequency,
15
+ contacts: (record) =>
16
+ !!record?.contacts?.[0]?.email &&
17
+ record.contacts[0].email !== 'missing@missing.com',
18
+ updateFrequency: (record) =>
19
+ !!record?.updateFrequency && record.updateFrequency !== 'unknown',
17
20
  topics: (record) => (record?.topics?.length ?? 0) > 0,
18
21
  organisation: (record) => !!record?.contacts?.[0]?.organization?.name,
19
- capabilities: (record) =>
20
- record?.onlineResources?.some((resource) =>
21
- resource?.url?.href.toLowerCase().includes('capabilities')
22
- ),
23
22
  source: (record) => !!record?.extras?.sourcesIdentifiers,
24
23
  } as const
25
24
 
@@ -40,12 +39,12 @@ function getMappersFromKind(kind: RecordKind) {
40
39
  ]
41
40
 
42
41
  switch (kind) {
43
- case 'service':
44
- kindKeys = ['capabilities']
45
- break
46
42
  case 'reuse':
47
43
  kindKeys = ['topics', 'organisation', 'source']
48
44
  break
45
+ case 'service':
46
+ kindKeys = []
47
+ break
49
48
  case 'dataset':
50
49
  default:
51
50
  kindKeys = ['updateFrequency', 'topics', 'organisation']
@@ -1,8 +1,11 @@
1
- import { Feature, FeatureCollection, Geometry } from 'geojson'
1
+ import type { Feature, FeatureCollection, Geometry, Position } from 'geojson'
2
2
 
3
+ /**
4
+ * @returns The geometry if available, otherwise null.
5
+ */
3
6
  export function getGeometryFromGeoJSON(
4
7
  data: FeatureCollection | Feature | Geometry
5
- ): Geometry {
8
+ ): Geometry | null {
6
9
  if (data.type === 'FeatureCollection') {
7
10
  return data?.features?.[0]?.geometry || null
8
11
  }
@@ -24,3 +27,70 @@ export function getGeometryFromGeoJSON(
24
27
  }
25
28
  return null
26
29
  }
30
+
31
+ // FIXME: this type should be more generic across the project
32
+ export type BoundingBox = [number, number, number, number]
33
+
34
+ export function getGeometryBoundingBox(geometry: Geometry): BoundingBox {
35
+ // use the bounding box if specified in the GeoJSON object
36
+ if (geometry.bbox) {
37
+ return geometry.bbox.length > 4
38
+ ? [geometry.bbox[0], geometry.bbox[1], geometry.bbox[3], geometry.bbox[4]]
39
+ : (geometry.bbox as BoundingBox)
40
+ }
41
+
42
+ const coordinatesReducer = (prev: BoundingBox, coords: Position) =>
43
+ [
44
+ Math.min(prev[0], coords[0]),
45
+ Math.min(prev[1], coords[1]),
46
+ Math.max(prev[2], coords[0]),
47
+ Math.max(prev[3], coords[1]),
48
+ ] as BoundingBox
49
+ const coordinatesArrayReducer = (
50
+ prev: BoundingBox,
51
+ coordsArray: Position[]
52
+ ) => {
53
+ const bbox = coordsArray.reduce(coordinatesReducer, emptyExtent)
54
+ return [
55
+ Math.min(prev[0], bbox[0]),
56
+ Math.min(prev[1], bbox[1]),
57
+ Math.max(prev[2], bbox[2]),
58
+ Math.max(prev[3], bbox[3]),
59
+ ] as BoundingBox
60
+ }
61
+ const emptyExtent = [Infinity, Infinity, -Infinity, -Infinity] as BoundingBox
62
+
63
+ switch (geometry.type) {
64
+ case 'MultiPolygon':
65
+ return geometry.coordinates.reduce((prev, polygonCoords) => {
66
+ const bbox = polygonCoords.reduce(coordinatesArrayReducer, emptyExtent)
67
+ return [
68
+ Math.min(prev[0], bbox[0]),
69
+ Math.min(prev[1], bbox[1]),
70
+ Math.max(prev[2], bbox[2]),
71
+ Math.max(prev[3], bbox[3]),
72
+ ] as BoundingBox
73
+ }, emptyExtent)
74
+ case 'GeometryCollection':
75
+ return geometry.geometries.reduce((prev, geom) => {
76
+ const bbox = getGeometryBoundingBox(geom)
77
+ return [
78
+ Math.min(prev[0], bbox[0]),
79
+ Math.min(prev[1], bbox[1]),
80
+ Math.max(prev[2], bbox[2]),
81
+ Math.max(prev[3], bbox[3]),
82
+ ] as BoundingBox
83
+ }, emptyExtent)
84
+ case 'Polygon':
85
+ case 'MultiLineString':
86
+ return geometry.coordinates.reduce(coordinatesArrayReducer, emptyExtent)
87
+ case 'LineString':
88
+ case 'MultiPoint':
89
+ return geometry.coordinates.reduce<BoundingBox>(
90
+ coordinatesReducer,
91
+ emptyExtent
92
+ )
93
+ case 'Point':
94
+ return coordinatesReducer(emptyExtent, geometry.coordinates)
95
+ }
96
+ }
@@ -4,6 +4,7 @@ export * from './format-fields'
4
4
  export * from './fuzzy-filter'
5
5
  export * from './geojson'
6
6
  export * from './image-resize'
7
+ export * from './mobile-screen'
7
8
  export * from './no-duplicate-file-name'
8
9
  export * from './parse'
9
10
  export * from './remove-whitespace'
@@ -0,0 +1,14 @@
1
+ import { fromEvent, startWith, map, shareReplay } from 'rxjs'
2
+
3
+ /**
4
+ * This returns true when the screen size is under 768px, which is the mobile threshold.
5
+ */
6
+ const MOBILE_MAX_WIDTH = 768
7
+
8
+ export function getIsMobile() {
9
+ return fromEvent(window, 'resize').pipe(
10
+ startWith(window.innerWidth),
11
+ map(() => window.innerWidth < MOBILE_MAX_WIDTH),
12
+ shareReplay({ bufferSize: 1, refCount: true })
13
+ )
14
+ }
@@ -390,6 +390,16 @@
390
390
  "record.kind.service": "",
391
391
  "record.metadata.about": "Beschreibung",
392
392
  "record.metadata.api": "API",
393
+ "record.metadata.api.accessServiceProtocol.GPFDL": "",
394
+ "record.metadata.api.accessServiceProtocol.esriRest": "",
395
+ "record.metadata.api.accessServiceProtocol.maplibre-style": "",
396
+ "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
397
+ "record.metadata.api.accessServiceProtocol.other": "",
398
+ "record.metadata.api.accessServiceProtocol.tms": "",
399
+ "record.metadata.api.accessServiceProtocol.wfs": "",
400
+ "record.metadata.api.accessServiceProtocol.wms": "",
401
+ "record.metadata.api.accessServiceProtocol.wmts": "",
402
+ "record.metadata.api.accessServiceProtocol.wps": "",
393
403
  "record.metadata.api.form.closeButton": "Schließen",
394
404
  "record.metadata.api.form.closeForm": "Formular schließen",
395
405
  "record.metadata.api.form.create": "Ihre Anfrage erstellen",
@@ -390,6 +390,16 @@
390
390
  "record.kind.service": "Service",
391
391
  "record.metadata.about": "Description",
392
392
  "record.metadata.api": "API",
393
+ "record.metadata.api.accessServiceProtocol.GPFDL": "GPFDL",
394
+ "record.metadata.api.accessServiceProtocol.esriRest": "esriRest",
395
+ "record.metadata.api.accessServiceProtocol.maplibre-style": "maplibre-style",
396
+ "record.metadata.api.accessServiceProtocol.ogcFeatures": "ogcFeatures",
397
+ "record.metadata.api.accessServiceProtocol.other": "other",
398
+ "record.metadata.api.accessServiceProtocol.tms": "tms",
399
+ "record.metadata.api.accessServiceProtocol.wfs": "wfs",
400
+ "record.metadata.api.accessServiceProtocol.wms": "wms",
401
+ "record.metadata.api.accessServiceProtocol.wmts": "wmts",
402
+ "record.metadata.api.accessServiceProtocol.wps": "wps",
393
403
  "record.metadata.api.form.closeButton": "Close",
394
404
  "record.metadata.api.form.closeForm": "Close the form",
395
405
  "record.metadata.api.form.create": "Create your request",
@@ -390,6 +390,16 @@
390
390
  "record.kind.service": "",
391
391
  "record.metadata.about": "",
392
392
  "record.metadata.api": "",
393
+ "record.metadata.api.accessServiceProtocol.GPFDL": "",
394
+ "record.metadata.api.accessServiceProtocol.esriRest": "",
395
+ "record.metadata.api.accessServiceProtocol.maplibre-style": "",
396
+ "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
397
+ "record.metadata.api.accessServiceProtocol.other": "",
398
+ "record.metadata.api.accessServiceProtocol.tms": "",
399
+ "record.metadata.api.accessServiceProtocol.wfs": "",
400
+ "record.metadata.api.accessServiceProtocol.wms": "",
401
+ "record.metadata.api.accessServiceProtocol.wmts": "",
402
+ "record.metadata.api.accessServiceProtocol.wps": "",
393
403
  "record.metadata.api.form.closeButton": "",
394
404
  "record.metadata.api.form.closeForm": "",
395
405
  "record.metadata.api.form.create": "",
@@ -390,6 +390,16 @@
390
390
  "record.kind.service": "Service",
391
391
  "record.metadata.about": "A propos",
392
392
  "record.metadata.api": "API",
393
+ "record.metadata.api.accessServiceProtocol.GPFDL": "",
394
+ "record.metadata.api.accessServiceProtocol.esriRest": "",
395
+ "record.metadata.api.accessServiceProtocol.maplibre-style": "",
396
+ "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
397
+ "record.metadata.api.accessServiceProtocol.other": "autre",
398
+ "record.metadata.api.accessServiceProtocol.tms": "",
399
+ "record.metadata.api.accessServiceProtocol.wfs": "",
400
+ "record.metadata.api.accessServiceProtocol.wms": "",
401
+ "record.metadata.api.accessServiceProtocol.wmts": "",
402
+ "record.metadata.api.accessServiceProtocol.wps": "",
393
403
  "record.metadata.api.form.closeButton": "Fermer",
394
404
  "record.metadata.api.form.closeForm": "Fermer le panneau de personnalisation",
395
405
  "record.metadata.api.form.create": "Paramétrer votre requête",
@@ -390,6 +390,16 @@
390
390
  "record.kind.service": "Servizio",
391
391
  "record.metadata.about": "Descrizione",
392
392
  "record.metadata.api": "API",
393
+ "record.metadata.api.accessServiceProtocol.GPFDL": "",
394
+ "record.metadata.api.accessServiceProtocol.esriRest": "",
395
+ "record.metadata.api.accessServiceProtocol.maplibre-style": "",
396
+ "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
397
+ "record.metadata.api.accessServiceProtocol.other": "",
398
+ "record.metadata.api.accessServiceProtocol.tms": "",
399
+ "record.metadata.api.accessServiceProtocol.wfs": "",
400
+ "record.metadata.api.accessServiceProtocol.wms": "",
401
+ "record.metadata.api.accessServiceProtocol.wmts": "",
402
+ "record.metadata.api.accessServiceProtocol.wps": "",
393
403
  "record.metadata.api.form.closeButton": "Chiude",
394
404
  "record.metadata.api.form.closeForm": "Chiude il pannello di personalizzazione",
395
405
  "record.metadata.api.form.create": "Configura la sua richiesta",
@@ -390,6 +390,16 @@
390
390
  "record.kind.service": "",
391
391
  "record.metadata.about": "",
392
392
  "record.metadata.api": "",
393
+ "record.metadata.api.accessServiceProtocol.GPFDL": "",
394
+ "record.metadata.api.accessServiceProtocol.esriRest": "",
395
+ "record.metadata.api.accessServiceProtocol.maplibre-style": "",
396
+ "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
397
+ "record.metadata.api.accessServiceProtocol.other": "",
398
+ "record.metadata.api.accessServiceProtocol.tms": "",
399
+ "record.metadata.api.accessServiceProtocol.wfs": "",
400
+ "record.metadata.api.accessServiceProtocol.wms": "",
401
+ "record.metadata.api.accessServiceProtocol.wmts": "",
402
+ "record.metadata.api.accessServiceProtocol.wps": "",
393
403
  "record.metadata.api.form.closeButton": "",
394
404
  "record.metadata.api.form.closeForm": "",
395
405
  "record.metadata.api.form.create": "",
@@ -390,6 +390,16 @@
390
390
  "record.kind.service": "",
391
391
  "record.metadata.about": "",
392
392
  "record.metadata.api": "",
393
+ "record.metadata.api.accessServiceProtocol.GPFDL": "",
394
+ "record.metadata.api.accessServiceProtocol.esriRest": "",
395
+ "record.metadata.api.accessServiceProtocol.maplibre-style": "",
396
+ "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
397
+ "record.metadata.api.accessServiceProtocol.other": "",
398
+ "record.metadata.api.accessServiceProtocol.tms": "",
399
+ "record.metadata.api.accessServiceProtocol.wfs": "",
400
+ "record.metadata.api.accessServiceProtocol.wms": "",
401
+ "record.metadata.api.accessServiceProtocol.wmts": "",
402
+ "record.metadata.api.accessServiceProtocol.wps": "",
393
403
  "record.metadata.api.form.closeButton": "",
394
404
  "record.metadata.api.form.closeForm": "",
395
405
  "record.metadata.api.form.create": "",
@@ -390,6 +390,16 @@
390
390
  "record.kind.service": "",
391
391
  "record.metadata.about": "O",
392
392
  "record.metadata.api": "API",
393
+ "record.metadata.api.accessServiceProtocol.GPFDL": "",
394
+ "record.metadata.api.accessServiceProtocol.esriRest": "",
395
+ "record.metadata.api.accessServiceProtocol.maplibre-style": "",
396
+ "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
397
+ "record.metadata.api.accessServiceProtocol.other": "",
398
+ "record.metadata.api.accessServiceProtocol.tms": "",
399
+ "record.metadata.api.accessServiceProtocol.wfs": "",
400
+ "record.metadata.api.accessServiceProtocol.wms": "",
401
+ "record.metadata.api.accessServiceProtocol.wmts": "",
402
+ "record.metadata.api.accessServiceProtocol.wps": "",
393
403
  "record.metadata.api.form.closeButton": "Zavrieť",
394
404
  "record.metadata.api.form.closeForm": "Zavrieť formulár",
395
405
  "record.metadata.api.form.create": "Vytvoriť požiadavku",