geonetwork-ui 2.10.3-dev.4154db07d → 2.11.0-dev.0559cfd9d

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 (128) hide show
  1. package/fesm2022/geonetwork-ui.mjs +2983 -2095
  2. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  3. package/index.d.ts +408 -180
  4. package/index.d.ts.map +1 -1
  5. package/package.json +10 -8
  6. package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +2 -0
  7. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +5 -5
  8. package/src/libs/api/metadata-converter/src/lib/fixtures/mel.records.dataset+featurecatalog.ts +395 -0
  9. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +5 -5
  10. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +78 -21
  11. package/src/libs/api/metadata-converter/src/lib/gn4/types/elasticsearch.model.ts +13 -1
  12. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +19 -0
  13. package/src/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.ts +17 -6
  14. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +110 -0
  15. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +133 -2
  16. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +9 -0
  17. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +11 -6
  18. package/src/libs/api/metadata-converter/src/lib/iso19139/utils/association-type.mapper.ts +12 -0
  19. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +2 -2
  20. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +157 -38
  21. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +45 -50
  22. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +54 -20
  23. package/src/libs/common/domain/src/lib/model/search/aggregation.model.ts +2 -0
  24. package/src/libs/common/domain/src/lib/model/search/filter.model.ts +24 -2
  25. package/src/libs/common/domain/src/lib/model/search/sort-by.model.ts +1 -5
  26. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +3 -3
  27. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +42 -62
  28. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +3 -2
  29. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.ts +2 -1
  30. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +54 -41
  31. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-associated-records/form-field-associated-records.component.html +33 -0
  32. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-associated-records/form-field-associated-records.component.ts +94 -0
  33. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.html +16 -12
  34. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +6 -0
  35. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +6 -0
  36. package/src/libs/feature/editor/src/lib/fields.config.ts +5 -0
  37. package/src/libs/feature/map/src/index.ts +0 -2
  38. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.html +1 -0
  39. package/src/libs/feature/map/src/lib/feature-map.module.ts +1 -8
  40. package/src/libs/feature/notifications/src/lib/notifications.service.ts +6 -4
  41. package/src/libs/feature/notify-reuse/src/lib/notify-reuse-form/notify-reuse-form.component.ts +8 -3
  42. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +4 -8
  43. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +10 -17
  44. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +2 -4
  45. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +4 -9
  46. package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +2 -7
  47. package/src/libs/feature/router/src/lib/default/router.service.ts +1 -1
  48. package/src/libs/feature/router/src/lib/default/state/query-params.utils.ts +1 -1
  49. package/src/libs/feature/search/src/index.ts +2 -0
  50. package/src/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.html +18 -4
  51. package/src/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.ts +80 -19
  52. package/src/libs/feature/search/src/lib/geocoding/geocoding.service.ts +105 -0
  53. package/src/libs/feature/search/src/lib/location-search/location-search.component.html +18 -0
  54. package/src/libs/feature/search/src/lib/location-search/location-search.component.ts +114 -0
  55. package/src/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.ts +19 -8
  56. package/src/libs/feature/search/src/lib/sort-by/sort-by.component.ts +1 -1
  57. package/src/libs/feature/search/src/lib/state/reducer.ts +1 -4
  58. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +64 -4
  59. package/src/libs/feature/search/src/lib/utils/service/fields.ts +92 -9
  60. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.html +6 -7
  61. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +31 -19
  62. package/src/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.ts +2 -2
  63. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.html +3 -3
  64. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.ts +2 -2
  65. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +2 -1
  66. package/src/libs/ui/inputs/src/index.ts +2 -0
  67. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.css +0 -4
  68. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +12 -3
  69. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +11 -3
  70. package/src/libs/ui/inputs/src/lib/date-adapter.providers.ts +30 -0
  71. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.ts +3 -24
  72. package/src/libs/ui/inputs/src/lib/date-range-dropdown/date-range-dropdown.component.css +37 -3
  73. package/src/libs/ui/inputs/src/lib/date-range-dropdown/date-range-dropdown.component.html +135 -16
  74. package/src/libs/ui/inputs/src/lib/date-range-dropdown/date-range-dropdown.component.ts +166 -29
  75. package/src/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.ts +3 -7
  76. package/src/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.css +1 -0
  77. package/src/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.html +20 -7
  78. package/src/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.ts +46 -5
  79. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +7 -4
  80. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.ts +12 -9
  81. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.model.ts +2 -2
  82. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.ts +2 -1
  83. package/src/libs/ui/inputs/src/lib/spatial-extent-dropdown/spatial-extent-dropdown.component.css +0 -0
  84. package/src/libs/ui/inputs/src/lib/spatial-extent-dropdown/spatial-extent-dropdown.component.html +117 -0
  85. package/src/libs/ui/inputs/src/lib/spatial-extent-dropdown/spatial-extent-dropdown.component.ts +244 -0
  86. package/src/libs/ui/layout/src/lib/block-list/block-list.component.css +1 -0
  87. package/src/libs/util/app-config/src/lib/app-config.ts +37 -0
  88. package/src/libs/util/app-config/src/lib/fixtures.ts +37 -1
  89. package/src/libs/util/app-config/src/lib/model.ts +25 -1
  90. package/src/libs/util/data-fetcher/src/lib/data-fetcher.ts +19 -22
  91. package/src/libs/util/data-fetcher/src/lib/engine/duckdb.ts +185 -0
  92. package/src/libs/util/data-fetcher/src/lib/engine/results.ts +63 -0
  93. package/src/libs/util/data-fetcher/src/lib/{sql-utils.ts → engine/sql-utils.ts} +28 -13
  94. package/src/libs/util/data-fetcher/src/lib/model.ts +2 -1
  95. package/src/libs/util/data-fetcher/src/lib/readers/base-file.ts +53 -38
  96. package/src/libs/util/data-fetcher/src/lib/readers/base.ts +11 -0
  97. package/src/libs/util/data-fetcher/src/lib/readers/csv.ts +9 -47
  98. package/src/libs/util/data-fetcher/src/lib/readers/excel.ts +27 -27
  99. package/src/libs/util/data-fetcher/src/lib/readers/geojson.ts +5 -24
  100. package/src/libs/util/data-fetcher/src/lib/readers/gml.ts +5 -49
  101. package/src/libs/util/data-fetcher/src/lib/readers/json.ts +5 -23
  102. package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +184 -128
  103. package/src/libs/util/data-fetcher/src/lib/utils.ts +0 -143
  104. package/src/libs/util/shared/src/index.ts +1 -0
  105. package/src/libs/util/shared/src/lib/autofocus.directive.ts +26 -0
  106. package/src/libs/util/shared/src/lib/gn-ui-version.ts +1 -1
  107. package/src/libs/util/shared/src/lib/links/link-utils.ts +19 -10
  108. package/src/libs/util/shared/src/lib/services/date.service.ts +3 -3
  109. package/src/libs/util/shared/src/lib/utils/file.ts +15 -0
  110. package/src/libs/util/shared/src/lib/utils/geojson.ts +24 -0
  111. package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
  112. package/tailwind.base.css +5 -0
  113. package/translations/de.json +38 -5
  114. package/translations/en.json +37 -4
  115. package/translations/es.json +35 -2
  116. package/translations/fr.json +42 -9
  117. package/translations/it.json +36 -3
  118. package/translations/nl.json +35 -2
  119. package/translations/pt.json +35 -2
  120. package/translations/sk.json +36 -3
  121. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.html +0 -41
  122. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +0 -112
  123. package/src/libs/feature/map/src/lib/geocoding.service.ts +0 -57
  124. package/src/libs/feature/map/src/lib/style/index.ts +0 -2
  125. package/src/libs/feature/map/src/lib/style/map-style.fixtures.ts +0 -47
  126. package/src/libs/feature/map/src/lib/style/map-style.service.ts +0 -108
  127. package/src/libs/util/data-fetcher/src/lib/readers/base-cache.ts +0 -14
  128. /package/src/libs/feature/{map/src/lib/geocoding/geocoding.component.css → editor/src/lib/components/record-form/form-field/form-field-associated-records/form-field-associated-records.component.css} +0 -0
@@ -344,7 +344,11 @@ export function getLinkLabel(
344
344
  return format ? `${label} (${format})` : label
345
345
  }
346
346
 
347
- export async function getLayers(url: string, serviceProtocol: ServiceProtocol) {
347
+ export async function getLayers(
348
+ url: string,
349
+ serviceProtocol: ServiceProtocol,
350
+ deep = false
351
+ ) {
348
352
  switch (serviceProtocol) {
349
353
  case 'ogcFeatures': {
350
354
  const layers = await new OgcApiEndpoint(url).allCollections
@@ -352,7 +356,10 @@ export async function getLayers(url: string, serviceProtocol: ServiceProtocol) {
352
356
  }
353
357
  case 'wfs': {
354
358
  const endpointWfs = await new WfsEndpoint(url).isReady()
355
- const featureTypes = await endpointWfs.getFeatureTypes()
359
+ const featureTypes = endpointWfs.getFeatureTypes()
360
+ if (!deep) {
361
+ return featureTypes
362
+ }
356
363
  const layers = (
357
364
  await Promise.allSettled(
358
365
  featureTypes.map((collection) => {
@@ -366,14 +373,16 @@ export async function getLayers(url: string, serviceProtocol: ServiceProtocol) {
366
373
  }
367
374
  case 'wms': {
368
375
  const endpointWms = await new WmsEndpoint(url).isReady()
369
- const layers = (
370
- await endpointWms
371
- .getLayers()
372
- .flatMap(wmsLayerFlatten)
373
- .filter((l) => l.name)
374
- ).map((collection) => {
375
- return endpointWms.getLayerByName(collection.name)
376
- })
376
+ const layersSummary = endpointWms
377
+ .getLayers()
378
+ .flatMap(wmsLayerFlatten)
379
+ .filter((l) => l.name)
380
+ if (!deep) {
381
+ return layersSummary
382
+ }
383
+ const layers = layersSummary.map((collection) =>
384
+ endpointWms.getLayerByName(collection.name)
385
+ )
377
386
  return layers
378
387
  }
379
388
  case 'wmts': {
@@ -35,10 +35,10 @@ export class DateService {
35
35
  return { locale, dateObj }
36
36
  }
37
37
 
38
- private async getDateLocale(): Promise<Locale> {
38
+ async getDateFnsLocale(): Promise<Locale> {
39
39
  const lang = this.translateService.getCurrentLang() || DEFAULT_LANGUAGE
40
40
  const locales = await this.dateLocales
41
- return locales[lang]
41
+ return locales[lang] ?? locales[DEFAULT_LANGUAGE]
42
42
  }
43
43
 
44
44
  formatDate(
@@ -61,7 +61,7 @@ export class DateService {
61
61
  const dateObj = this.getDateObject(date)
62
62
 
63
63
  const now = new Date()
64
- const locale = await this.getDateLocale()
64
+ const locale = await this.getDateFnsLocale()
65
65
 
66
66
  return formatDistance(dateObj, now, {
67
67
  addSuffix: true,
@@ -0,0 +1,15 @@
1
+ export function isFileExtensionValid(
2
+ fileName: string,
3
+ acceptedExtensions: string[]
4
+ ): boolean {
5
+ return acceptedExtensions.some((ext) => fileName.toLowerCase().endsWith(ext))
6
+ }
7
+
8
+ export function readFileAsText(file: File): Promise<string> {
9
+ return new Promise((resolve, reject) => {
10
+ const reader = new FileReader()
11
+ reader.onload = () => resolve(reader.result as string)
12
+ reader.onerror = () => reject(reader.error)
13
+ reader.readAsText(file)
14
+ })
15
+ }
@@ -38,6 +38,30 @@ export function getGeometryFromGeoJSON(
38
38
  // FIXME: this type should be more generic across the project
39
39
  export type BoundingBox = [number, number, number, number]
40
40
 
41
+ export function isBoundingBox(value: unknown): value is BoundingBox {
42
+ return (
43
+ Array.isArray(value) &&
44
+ value.length === 4 &&
45
+ value.every((item) => typeof item === 'number')
46
+ )
47
+ }
48
+
49
+ /**
50
+ * Checks that a bounding box's coordinates stay within the valid
51
+ * longitude (-180/180) and latitude (-90/90) ranges.
52
+ */
53
+ export function isBoundingBoxWithinWorldExtent(bbox: BoundingBox): boolean {
54
+ const [minX, minY, maxX, maxY] = bbox
55
+ return (
56
+ minX >= -180 &&
57
+ maxX <= 180 &&
58
+ minY >= -90 &&
59
+ maxY <= 90 &&
60
+ minX <= maxX &&
61
+ minY <= maxY
62
+ )
63
+ }
64
+
41
65
  export function getGeometryBoundingBox(geometry: Geometry): BoundingBox {
42
66
  // use the bounding box if specified in the GeoJSON object
43
67
  if (geometry.bbox) {
@@ -1,5 +1,6 @@
1
1
  export * from './bytes-convert'
2
2
  export * from './event'
3
+ export * from './file'
3
4
  export * from './format-fields'
4
5
  export * from './fuzzy-filter'
5
6
  export * from './geojson'
package/tailwind.base.css CHANGED
@@ -224,6 +224,11 @@
224
224
  disabled:cursor-not-allowed disabled:border-gray-100 disabled:placeholder-gray-300 disabled:text-gray-700 disabled:bg-white;
225
225
  }
226
226
 
227
+ .gn-ui-gray-outline-input {
228
+ @apply bg-white rounded-lg
229
+ border border-gray-400 hover:border-neutral-300 hover:bg-black/10;
230
+ }
231
+
227
232
  /* GENERIC CARD */
228
233
  .gn-ui-card {
229
234
  @apply flex flex-row border border-gray-200 rounded-xl p-4 gap-2 w-full;
@@ -65,9 +65,10 @@
65
65
  "dataset.error.restrictedAccess": "",
66
66
  "dataset.error.unknown": "Die Daten können nicht angezeigt werden: \"{ info }\"",
67
67
  "dataset.error.unsupportedType": "Der folgende Inhaltstyp wird nicht unterstützt: \"{ info }\"",
68
- "daterange.filter.from": "Von",
68
+ "daterange.filter.datePlaceholder": "tt.mm.jjjj",
69
+ "daterange.filter.from": "Ab dem",
69
70
  "daterange.filter.period": "Zeitraum auswählen",
70
- "daterange.filter.to": "Bis",
71
+ "daterange.filter.to": "Bis zum",
71
72
  "domain.contact.role.author": "Autor",
72
73
  "domain.contact.role.collaborator": "Mitarbeiter",
73
74
  "domain.contact.role.contributor": "Beitragender",
@@ -89,6 +90,15 @@
89
90
  "domain.contact.role.stakeholder": "Beteiligter",
90
91
  "domain.contact.role.unspecified": "Nicht angegeben",
91
92
  "domain.contact.role.user": "Benutzer",
93
+ "domain.record.associationType.collectiveTitle": "",
94
+ "domain.record.associationType.crossReference": "",
95
+ "domain.record.associationType.dependency": "",
96
+ "domain.record.associationType.isComposedOf": "",
97
+ "domain.record.associationType.largerWorkCitation": "",
98
+ "domain.record.associationType.partOfSeamlessDatabase": "",
99
+ "domain.record.associationType.revisionOf": "",
100
+ "domain.record.associationType.series": "",
101
+ "domain.record.associationType.stereoMate": "",
92
102
  "domain.record.keywordType.other": "Stichworte",
93
103
  "domain.record.keywordType.place": "Ort",
94
104
  "domain.record.keywordType.temporal": "Zeitlich",
@@ -212,6 +222,9 @@
212
222
  "editor.record.form.field.organisation": "Ansprechpartner - Organisation",
213
223
  "editor.record.form.field.otherConstraints": "Allgemeine Einschränkung",
214
224
  "editor.record.form.field.overviews": "Übersicht",
225
+ "editor.record.form.field.parentIdentifier": "",
226
+ "editor.record.form.field.parentLink": "",
227
+ "editor.record.form.field.parentType": "",
215
228
  "editor.record.form.field.recordUpdated": "Datensatz zuletzt aktualisiert",
216
229
  "editor.record.form.field.resourceCreated": "Erstellungsdatum",
217
230
  "editor.record.form.field.resourceIdentifier": "Kennung",
@@ -359,7 +372,7 @@
359
372
  "favorite.starToggle.add": "Zu Favoriten hinzufügen",
360
373
  "favorite.starToggle.remove": "Aus Favoriten entfernen",
361
374
  "feature.catalog.attribute.code": "Code",
362
- "feature.catalog.attribute.definition": "Beschreibung",
375
+ "feature.catalog.attribute.description": "Beschreibung",
363
376
  "feature.catalog.attribute.name": "Name",
364
377
  "feature.catalog.attribute.type": "Typ",
365
378
  "feature.catalog.attribute.values": "Werte",
@@ -412,7 +425,6 @@
412
425
  "map.add.layer.wms": "Aus WMS",
413
426
  "map.addFromFile.placeholder": "Klicke hier oder ziehe eine Datei herein",
414
427
  "map.dropdown.placeholder": "Kein Vorschaulayer verfügbar",
415
- "map.geocoding.placeholder": "Nach einem Ort suchen",
416
428
  "map.help.addFromFile": "Klicke oder ziehe eine Datei herein um eine Karte hinzuzufügen (momentan wird nur das GeoJSON-Format unterstützt).",
417
429
  "map.layer.add": "Hinzufügen",
418
430
  "map.layers.available": "Verfügbare Layer",
@@ -533,11 +545,12 @@
533
545
  "record.metadata.download": "Herunterladen",
534
546
  "record.metadata.feature.catalog": "Attributkatalog",
535
547
  "record.metadata.formats": "Formate",
536
- "record.metadata.isGeographical": "geographischer Datensatz",
548
+ "record.metadata.isGeographical": "geo",
537
549
  "record.metadata.keywords": "Stichworte",
538
550
  "record.metadata.languages": "Sprachen",
539
551
  "record.metadata.link.postgis.table": "Tabelle:",
540
552
  "record.metadata.link.postgis.tooltip": "PostGIS-Ressourcen haben keinen Zugriffslink.",
553
+ "record.metadata.linked.associatedRecords": "",
541
554
  "record.metadata.linked.datasets": "Verknüpfte Datensätze",
542
555
  "record.metadata.linked.records": "Verknüpfte Inhalte",
543
556
  "record.metadata.linked.reuses": "Verknüpfte Wiederverwendungen",
@@ -645,6 +658,7 @@
645
658
  "search.filters.changeDate": "Letzte Aktualisierung",
646
659
  "search.filters.clear": "Zurücksetzen",
647
660
  "search.filters.contact": "Kontakte",
661
+ "search.filters.documentStandard": "Dokumentenstandard",
648
662
  "search.filters.format": "Formate",
649
663
  "search.filters.inspireKeyword": "INSPIRE-Schlüsselwort",
650
664
  "search.filters.isSpatial": "Ist räumliche Daten",
@@ -676,10 +690,29 @@
676
690
  "search.filters.recordKind.reuse": "Wiederverwendungen",
677
691
  "search.filters.recordKind.service": "Dienste",
678
692
  "search.filters.representationType": "Repräsentationstyp",
693
+ "search.filters.resourceCreationRevisionDate": "Ressourcendatum",
679
694
  "search.filters.resourceType": "Ressourcentyp",
695
+ "search.filters.spatialExtent": "",
696
+ "search.filters.spatialExtent.bboxFromFile": "",
697
+ "search.filters.spatialExtent.bboxFromFileDelete": "",
698
+ "search.filters.spatialExtent.bboxFromLocation": "",
699
+ "search.filters.spatialExtent.bboxFromLocationDelete": "",
700
+ "search.filters.spatialExtent.bboxInitial": "",
701
+ "search.filters.spatialExtent.bboxInitialDelete": "",
702
+ "search.filters.spatialExtent.error.fileTooLarge": "",
703
+ "search.filters.spatialExtent.error.invalidFormat": "",
704
+ "search.filters.spatialExtent.error.noGeometry": "",
705
+ "search.filters.spatialExtent.error.outOfBounds": "",
706
+ "search.filters.spatialExtent.error.title": "",
707
+ "search.filters.spatialExtent.helpText": "",
708
+ "search.filters.spatialExtent.import": "",
709
+ "search.filters.spatialExtent.searchLocation": "",
680
710
  "search.filters.standard": "Standard",
681
711
  "search.filters.summaryLabel.changeDate": "Geändert am: ",
712
+ "search.filters.summaryLabel.resourceCreationRevisionDate": "Ressourcendatum: ",
713
+ "search.filters.summaryLabel.temporalExtent": "Zeitlicher Umfang: ",
682
714
  "search.filters.summaryLabel.user": "Geändert von: ",
715
+ "search.filters.temporalExtent": "Zeitlicher Umfang",
683
716
  "search.filters.title": "Ergebnisse filtern",
684
717
  "search.filters.topic": "Themen",
685
718
  "search.filters.useSpatialFilter": "Zuerst Ressourcen im Interessenbereich anzeigen",
@@ -65,9 +65,10 @@
65
65
  "dataset.error.restrictedAccess": "Access to this resource is restricted",
66
66
  "dataset.error.unknown": "The data cannot be displayed: \"{ info }\"",
67
67
  "dataset.error.unsupportedType": "The following content type is unsupported: \"{ info }\"",
68
+ "daterange.filter.datePlaceholder": "mm/dd/yyyy",
68
69
  "daterange.filter.from": "From",
69
70
  "daterange.filter.period": "Period",
70
- "daterange.filter.to": "To",
71
+ "daterange.filter.to": "Until",
71
72
  "domain.contact.role.author": "Author",
72
73
  "domain.contact.role.collaborator": "Collaborator",
73
74
  "domain.contact.role.contributor": "Contributor",
@@ -89,6 +90,15 @@
89
90
  "domain.contact.role.stakeholder": "Stakeholder",
90
91
  "domain.contact.role.unspecified": "Unspecified",
91
92
  "domain.contact.role.user": "User",
93
+ "domain.record.associationType.collectiveTitle": "Collective Title",
94
+ "domain.record.associationType.crossReference": "Cross reference",
95
+ "domain.record.associationType.dependency": "Dependency",
96
+ "domain.record.associationType.isComposedOf": "Is composed of",
97
+ "domain.record.associationType.largerWorkCitation": "Larger work citation",
98
+ "domain.record.associationType.partOfSeamlessDatabase": "Part of seamless database",
99
+ "domain.record.associationType.revisionOf": "Revision Of",
100
+ "domain.record.associationType.series": "Series",
101
+ "domain.record.associationType.stereoMate": "Stereo mate",
92
102
  "domain.record.keywordType.other": "Keywords",
93
103
  "domain.record.keywordType.place": "Place",
94
104
  "domain.record.keywordType.temporal": "Temporal",
@@ -212,6 +222,9 @@
212
222
  "editor.record.form.field.organisation": "Point of contact - Organization",
213
223
  "editor.record.form.field.otherConstraints": "Other constraint",
214
224
  "editor.record.form.field.overviews": "Overview",
225
+ "editor.record.form.field.parentIdentifier": "Parent identifier",
226
+ "editor.record.form.field.parentLink": "This record has a parent link",
227
+ "editor.record.form.field.parentType": "Relationship type",
215
228
  "editor.record.form.field.recordUpdated": "Record updated",
216
229
  "editor.record.form.field.resourceCreated": "{recordKind, select, dataset{Dataset} service{Service} reuse{Reuse} other{Record}} created",
217
230
  "editor.record.form.field.resourceIdentifier": "Identifier",
@@ -359,7 +372,7 @@
359
372
  "favorite.starToggle.add": "Add to favorites",
360
373
  "favorite.starToggle.remove": "Remove from favorites",
361
374
  "feature.catalog.attribute.code": "Code",
362
- "feature.catalog.attribute.definition": "Description",
375
+ "feature.catalog.attribute.description": "Description",
363
376
  "feature.catalog.attribute.name": "Name",
364
377
  "feature.catalog.attribute.type": "Type",
365
378
  "feature.catalog.attribute.values": "Values",
@@ -412,7 +425,6 @@
412
425
  "map.add.layer.wms": "From WMS",
413
426
  "map.addFromFile.placeholder": "Click or drop a file here",
414
427
  "map.dropdown.placeholder": "No preview layer available",
415
- "map.geocoding.placeholder": "Search for a place",
416
428
  "map.help.addFromFile": "Click or drag and drop a file to add to the map (currently supports GeoJSON format only).",
417
429
  "map.layer.add": "Add",
418
430
  "map.layers.available": "Available Layers",
@@ -533,11 +545,12 @@
533
545
  "record.metadata.download": "Downloads",
534
546
  "record.metadata.feature.catalog": "Feature catalog",
535
547
  "record.metadata.formats": "Formats",
536
- "record.metadata.isGeographical": "geographic dataset",
548
+ "record.metadata.isGeographical": "geo",
537
549
  "record.metadata.keywords": "Keywords",
538
550
  "record.metadata.languages": "Languages",
539
551
  "record.metadata.link.postgis.table": "table :",
540
552
  "record.metadata.link.postgis.tooltip": "PostGIS resources do not have access links",
553
+ "record.metadata.linked.associatedRecords": "Records referencing the current one",
541
554
  "record.metadata.linked.datasets": "Associated datasets",
542
555
  "record.metadata.linked.records": "Associated content",
543
556
  "record.metadata.linked.reuses": "Associated reuses",
@@ -645,6 +658,7 @@
645
658
  "search.filters.changeDate": "Updated",
646
659
  "search.filters.clear": "Reset",
647
660
  "search.filters.contact": "Contacts",
661
+ "search.filters.documentStandard": "Document standard",
648
662
  "search.filters.format": "Formats",
649
663
  "search.filters.inspireKeyword": "INSPIRE keyword",
650
664
  "search.filters.isSpatial": "Is spatial data",
@@ -676,10 +690,29 @@
676
690
  "search.filters.recordKind.reuse": "Reuses",
677
691
  "search.filters.recordKind.service": "Services",
678
692
  "search.filters.representationType": "Representation type",
693
+ "search.filters.resourceCreationRevisionDate": "Resource date",
679
694
  "search.filters.resourceType": "Resource type",
695
+ "search.filters.spatialExtent": "Spatial extent",
696
+ "search.filters.spatialExtent.bboxFromFile": "Extent from {fileName}",
697
+ "search.filters.spatialExtent.bboxFromFileDelete": "Delete {fileName}",
698
+ "search.filters.spatialExtent.bboxFromLocation": "Extent from {locationName}",
699
+ "search.filters.spatialExtent.bboxFromLocationDelete": "Delete {locationName}",
700
+ "search.filters.spatialExtent.bboxInitial": "Pre-selected extent",
701
+ "search.filters.spatialExtent.bboxInitialDelete": "Delete selection",
702
+ "search.filters.spatialExtent.error.fileTooLarge": "The file exceeds the maximum allowed size ({maxSize} MB)",
703
+ "search.filters.spatialExtent.error.invalidFormat": "The file could not be read as a valid GeoJSON",
704
+ "search.filters.spatialExtent.error.noGeometry": "No geometry could be found in the file",
705
+ "search.filters.spatialExtent.error.outOfBounds": "The geometry of the GeoJSON file is not compliant; either some coordinates are out of bounds ([-180, 180] for longitude and [-90, 90] for latitude), or the file uses projected coordinates instead of longitude and latitude",
706
+ "search.filters.spatialExtent.error.title": "GeoJSON import error",
707
+ "search.filters.spatialExtent.helpText": "The extent of the selected geometry will be used",
708
+ "search.filters.spatialExtent.import": "Import a GeoJSON",
709
+ "search.filters.spatialExtent.searchLocation": "Search in the list",
680
710
  "search.filters.standard": "Standard",
681
711
  "search.filters.summaryLabel.changeDate": "Updated: ",
712
+ "search.filters.summaryLabel.resourceCreationRevisionDate": "Resource date: ",
713
+ "search.filters.summaryLabel.temporalExtent": "Temporal extent: ",
682
714
  "search.filters.summaryLabel.user": "Editor: ",
715
+ "search.filters.temporalExtent": "Temporal extent",
683
716
  "search.filters.title": "Filter your results",
684
717
  "search.filters.topic": "Topics",
685
718
  "search.filters.useSpatialFilter": "Show records in the area of interest first",
@@ -65,6 +65,7 @@
65
65
  "dataset.error.restrictedAccess": "",
66
66
  "dataset.error.unknown": "",
67
67
  "dataset.error.unsupportedType": "",
68
+ "daterange.filter.datePlaceholder": "dd/mm/aaaa",
68
69
  "daterange.filter.from": "",
69
70
  "daterange.filter.period": "",
70
71
  "daterange.filter.to": "",
@@ -89,6 +90,15 @@
89
90
  "domain.contact.role.stakeholder": "",
90
91
  "domain.contact.role.unspecified": "",
91
92
  "domain.contact.role.user": "",
93
+ "domain.record.associationType.collectiveTitle": "",
94
+ "domain.record.associationType.crossReference": "",
95
+ "domain.record.associationType.dependency": "",
96
+ "domain.record.associationType.isComposedOf": "",
97
+ "domain.record.associationType.largerWorkCitation": "",
98
+ "domain.record.associationType.partOfSeamlessDatabase": "",
99
+ "domain.record.associationType.revisionOf": "",
100
+ "domain.record.associationType.series": "",
101
+ "domain.record.associationType.stereoMate": "",
92
102
  "domain.record.keywordType.other": "",
93
103
  "domain.record.keywordType.place": "",
94
104
  "domain.record.keywordType.temporal": "",
@@ -212,6 +222,9 @@
212
222
  "editor.record.form.field.organisation": "Punto de contacto - Organización",
213
223
  "editor.record.form.field.otherConstraints": "",
214
224
  "editor.record.form.field.overviews": "",
225
+ "editor.record.form.field.parentIdentifier": "",
226
+ "editor.record.form.field.parentLink": "",
227
+ "editor.record.form.field.parentType": "",
215
228
  "editor.record.form.field.recordUpdated": "",
216
229
  "editor.record.form.field.resourceCreated": "",
217
230
  "editor.record.form.field.resourceIdentifier": "",
@@ -359,7 +372,7 @@
359
372
  "favorite.starToggle.add": "Añadir a favoritos",
360
373
  "favorite.starToggle.remove": "Eliminar de favoritos",
361
374
  "feature.catalog.attribute.code": "Código",
362
- "feature.catalog.attribute.definition": "Descripción",
375
+ "feature.catalog.attribute.description": "Descripción",
363
376
  "feature.catalog.attribute.name": "Nombre",
364
377
  "feature.catalog.attribute.type": "Tipo",
365
378
  "feature.catalog.attribute.values": "Valores",
@@ -412,7 +425,6 @@
412
425
  "map.add.layer.wms": "",
413
426
  "map.addFromFile.placeholder": "",
414
427
  "map.dropdown.placeholder": "",
415
- "map.geocoding.placeholder": "",
416
428
  "map.help.addFromFile": "",
417
429
  "map.layer.add": "",
418
430
  "map.layers.available": "",
@@ -538,6 +550,7 @@
538
550
  "record.metadata.languages": "",
539
551
  "record.metadata.link.postgis.table": "",
540
552
  "record.metadata.link.postgis.tooltip": "",
553
+ "record.metadata.linked.associatedRecords": "",
541
554
  "record.metadata.linked.datasets": "",
542
555
  "record.metadata.linked.records": "",
543
556
  "record.metadata.linked.reuses": "",
@@ -645,6 +658,7 @@
645
658
  "search.filters.changeDate": "Última actualización",
646
659
  "search.filters.clear": "",
647
660
  "search.filters.contact": "",
661
+ "search.filters.documentStandard": "",
648
662
  "search.filters.format": "",
649
663
  "search.filters.inspireKeyword": "",
650
664
  "search.filters.isSpatial": "",
@@ -676,10 +690,29 @@
676
690
  "search.filters.recordKind.reuse": "",
677
691
  "search.filters.recordKind.service": "",
678
692
  "search.filters.representationType": "",
693
+ "search.filters.resourceCreationRevisionDate": "",
679
694
  "search.filters.resourceType": "",
695
+ "search.filters.spatialExtent": "",
696
+ "search.filters.spatialExtent.bboxFromFile": "",
697
+ "search.filters.spatialExtent.bboxFromFileDelete": "",
698
+ "search.filters.spatialExtent.bboxFromLocation": "",
699
+ "search.filters.spatialExtent.bboxFromLocationDelete": "",
700
+ "search.filters.spatialExtent.bboxInitial": "",
701
+ "search.filters.spatialExtent.bboxInitialDelete": "",
702
+ "search.filters.spatialExtent.error.fileTooLarge": "",
703
+ "search.filters.spatialExtent.error.invalidFormat": "",
704
+ "search.filters.spatialExtent.error.noGeometry": "",
705
+ "search.filters.spatialExtent.error.outOfBounds": "",
706
+ "search.filters.spatialExtent.error.title": "",
707
+ "search.filters.spatialExtent.helpText": "",
708
+ "search.filters.spatialExtent.import": "",
709
+ "search.filters.spatialExtent.searchLocation": "",
680
710
  "search.filters.standard": "",
681
711
  "search.filters.summaryLabel.changeDate": "",
712
+ "search.filters.summaryLabel.resourceCreationRevisionDate": "",
713
+ "search.filters.summaryLabel.temporalExtent": "",
682
714
  "search.filters.summaryLabel.user": "",
715
+ "search.filters.temporalExtent": "",
683
716
  "search.filters.title": "",
684
717
  "search.filters.topic": "",
685
718
  "search.filters.useSpatialFilter": "",
@@ -65,9 +65,10 @@
65
65
  "dataset.error.restrictedAccess": "L’accès à cette ressource est restreint",
66
66
  "dataset.error.unknown": "Les données ne peuvent être affichées: \"{ info }\"",
67
67
  "dataset.error.unsupportedType": "Le type de contenu suivant n'est pas pris en charge: \"{ info }\"",
68
- "daterange.filter.from": "Du",
68
+ "daterange.filter.datePlaceholder": "jj/mm/aaaa",
69
+ "daterange.filter.from": "A partir du",
69
70
  "daterange.filter.period": "Choix de la période",
70
- "daterange.filter.to": "Au",
71
+ "daterange.filter.to": "Jusqu'au",
71
72
  "domain.contact.role.author": "Auteur",
72
73
  "domain.contact.role.collaborator": "Collaborateur",
73
74
  "domain.contact.role.contributor": "Contributeur",
@@ -76,19 +77,28 @@
76
77
  "domain.contact.role.editor": "Éditeur",
77
78
  "domain.contact.role.funder": "Financeur",
78
79
  "domain.contact.role.mediator": "Médiateur",
79
- "domain.contact.role.originator": "Créateur",
80
+ "domain.contact.role.originator": "Producteur",
80
81
  "domain.contact.role.other": "Autre",
81
82
  "domain.contact.role.owner": "Propriétaire",
82
83
  "domain.contact.role.point_of_contact": "Point de contact",
83
- "domain.contact.role.principal_investigator": "Chercheur principal",
84
- "domain.contact.role.processor": "Processeur",
85
- "domain.contact.role.publisher": "Producteur",
84
+ "domain.contact.role.principal_investigator": "Investigateur principal",
85
+ "domain.contact.role.processor": "Exécutant",
86
+ "domain.contact.role.publisher": "Editeur (publication)",
86
87
  "domain.contact.role.resource_provider": "Fournisseur",
87
88
  "domain.contact.role.rights_holder": "Détenteur des droits",
88
89
  "domain.contact.role.sponsor": "Sponsor",
89
90
  "domain.contact.role.stakeholder": "Partie prenante",
90
91
  "domain.contact.role.unspecified": "Non spécifié",
91
92
  "domain.contact.role.user": "Utilisateur",
93
+ "domain.record.associationType.collectiveTitle": "Titre commun",
94
+ "domain.record.associationType.crossReference": "Référence croisée",
95
+ "domain.record.associationType.dependency": "Dépendance",
96
+ "domain.record.associationType.isComposedOf": "Est composé de",
97
+ "domain.record.associationType.largerWorkCitation": "Référence mère",
98
+ "domain.record.associationType.partOfSeamlessDatabase": "Partie d'une même base de données",
99
+ "domain.record.associationType.revisionOf": "Révision de",
100
+ "domain.record.associationType.series": "Séries",
101
+ "domain.record.associationType.stereoMate": "Stéréo restitution",
92
102
  "domain.record.keywordType.other": "Mots-clés",
93
103
  "domain.record.keywordType.place": "Localisation",
94
104
  "domain.record.keywordType.temporal": "Temps",
@@ -212,6 +222,9 @@
212
222
  "editor.record.form.field.organisation": "Point de contact - Organisation",
213
223
  "editor.record.form.field.otherConstraints": "Contrainte générale",
214
224
  "editor.record.form.field.overviews": "Aperçu",
225
+ "editor.record.form.field.parentIdentifier": "Identifiant du parent",
226
+ "editor.record.form.field.parentLink": "Cette donnée possède un lien de parenté",
227
+ "editor.record.form.field.parentType": "Type de parenté",
215
228
  "editor.record.form.field.recordUpdated": "Date de mise à jour",
216
229
  "editor.record.form.field.resourceCreated": "Date de création",
217
230
  "editor.record.form.field.resourceIdentifier": "Identifiant",
@@ -359,7 +372,7 @@
359
372
  "favorite.starToggle.add": "Ajouter aux favoris",
360
373
  "favorite.starToggle.remove": "Retirer des favoris",
361
374
  "feature.catalog.attribute.code": "Code",
362
- "feature.catalog.attribute.definition": "Description",
375
+ "feature.catalog.attribute.description": "Description",
363
376
  "feature.catalog.attribute.name": "Nom",
364
377
  "feature.catalog.attribute.type": "Type",
365
378
  "feature.catalog.attribute.values": "Valeurs",
@@ -412,7 +425,6 @@
412
425
  "map.add.layer.wms": "Depuis un service WMS",
413
426
  "map.addFromFile.placeholder": "Cliquez ou déposez un fichier ici",
414
427
  "map.dropdown.placeholder": "Aucune couche d'aperçu disponible",
415
- "map.geocoding.placeholder": "Rechercher un lieu",
416
428
  "map.help.addFromFile": "Cliquez ou glissez-déposez un fichier pour l'ajouter à la carte (supporte actuellement uniquement le format GeoJSON).",
417
429
  "map.layer.add": "Ajouter",
418
430
  "map.layers.available": "Couches disponibles",
@@ -533,11 +545,12 @@
533
545
  "record.metadata.download": "Téléchargements",
534
546
  "record.metadata.feature.catalog": "Catalogue d'attributs",
535
547
  "record.metadata.formats": "Formats",
536
- "record.metadata.isGeographical": "donnée géographique",
548
+ "record.metadata.isGeographical": "géo",
537
549
  "record.metadata.keywords": "Mots-clés",
538
550
  "record.metadata.languages": "Langues",
539
551
  "record.metadata.link.postgis.table": "table :",
540
552
  "record.metadata.link.postgis.tooltip": "Les ressources de type PostGIS n'ont pas de lien d'accès",
553
+ "record.metadata.linked.associatedRecords": "Jeux de données faisant référence à celui-ci",
541
554
  "record.metadata.linked.datasets": "Jeux de données associés",
542
555
  "record.metadata.linked.records": "Contenus associés",
543
556
  "record.metadata.linked.reuses": "Réutilisations associées",
@@ -645,6 +658,7 @@
645
658
  "search.filters.changeDate": "Mise à jour",
646
659
  "search.filters.clear": "Réinitialiser",
647
660
  "search.filters.contact": "Contacts",
661
+ "search.filters.documentStandard": "Norme de document",
648
662
  "search.filters.format": "Formats",
649
663
  "search.filters.inspireKeyword": "Mot-clé INSPIRE",
650
664
  "search.filters.isSpatial": "Données spatiales",
@@ -676,10 +690,29 @@
676
690
  "search.filters.recordKind.reuse": "Réutilisations",
677
691
  "search.filters.recordKind.service": "Services",
678
692
  "search.filters.representationType": "Type de représentation",
693
+ "search.filters.resourceCreationRevisionDate": "Date de la ressource",
679
694
  "search.filters.resourceType": "Type de ressource",
695
+ "search.filters.spatialExtent": "Étendue spatiale",
696
+ "search.filters.spatialExtent.bboxFromFile": "Étendue de {fileName}",
697
+ "search.filters.spatialExtent.bboxFromFileDelete": "Supprimer {fileName}",
698
+ "search.filters.spatialExtent.bboxFromLocation": "Étendue de {locationName}",
699
+ "search.filters.spatialExtent.bboxFromLocationDelete": "Supprimer {locationName}",
700
+ "search.filters.spatialExtent.bboxInitial": "Étendue présélectionnée",
701
+ "search.filters.spatialExtent.bboxInitialDelete": "Supprimer la sélection",
702
+ "search.filters.spatialExtent.error.fileTooLarge": "Le fichier dépasse la taille maximale autorisée ({maxSize} Mo)",
703
+ "search.filters.spatialExtent.error.invalidFormat": "Le fichier n'a pas pu être lu comme un GeoJSON valide",
704
+ "search.filters.spatialExtent.error.noGeometry": "Aucune géométrie n'a pu être trouvée dans le fichier",
705
+ "search.filters.spatialExtent.error.outOfBounds": "La géométrie du fichier GeoJSON n'est pas conforme ; soit certaines coordonnées sont hors limites ([-180, 180] pour la longitude et [-90, 90] pour la latitude), soit le fichier utilise des coordonnées projetées au lieu de la longitude et de la latitude.",
706
+ "search.filters.spatialExtent.error.title": "Erreur d'importation GeoJSON",
707
+ "search.filters.spatialExtent.helpText": "L'étendue de la géométrie sélectionnée sera utilisée",
708
+ "search.filters.spatialExtent.import": "Importer un GeoJSON",
709
+ "search.filters.spatialExtent.searchLocation": "Rechercher dans la liste",
680
710
  "search.filters.standard": "Standard",
681
711
  "search.filters.summaryLabel.changeDate": "Mise à jour : ",
712
+ "search.filters.summaryLabel.resourceCreationRevisionDate": "Date de la ressource : ",
713
+ "search.filters.summaryLabel.temporalExtent": "Étendue temporelle : ",
682
714
  "search.filters.summaryLabel.user": "Éditeur : ",
715
+ "search.filters.temporalExtent": "Étendue temporelle",
683
716
  "search.filters.title": "Affiner votre recherche",
684
717
  "search.filters.topic": "Thèmes",
685
718
  "search.filters.useSpatialFilter": "Mettre en avant les ressources sur la zone d'intérêt",