geonetwork-ui 2.10.0-dev.89f0dfe6f → 2.10.0-dev.8afb6cd00
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.
- package/fesm2022/geonetwork-ui.mjs +411 -257
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/index.d.ts +68 -12
- package/index.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +54 -32
- package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +46 -0
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +0 -5
- package/src/libs/common/domain/src/lib/model/user/group.model.ts +8 -0
- package/src/libs/common/domain/src/lib/model/user/index.ts +1 -0
- package/src/libs/common/domain/src/lib/platform.service.interface.ts +2 -0
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +0 -2
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-topics/form-field-topics.component.ts +2 -2
- package/src/libs/feature/editor/src/lib/fields.config.ts +60 -47
- package/src/libs/feature/editor/src/lib/services/editor.service.ts +1 -1
- package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +33 -0
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +9 -1
- package/src/libs/ui/elements/src/lib/contact-details/contact-details.component.html +1 -1
- package/src/libs/ui/elements/src/lib/contact-pill/contact-pill.component.html +7 -3
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/button/button.component.ts +4 -0
- package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.ts +4 -54
- package/src/libs/ui/map/src/lib/map-utils.ts +48 -0
- package/src/libs/util/app-config/src/lib/app-config.ts +14 -1
- package/src/libs/util/app-config/src/lib/model.ts +3 -0
- package/src/libs/util/app-config/src/lib/parse-utils.ts +27 -0
- package/src/libs/util/shared/src/lib/links/link-utils.ts +1 -1
- package/src/libs/util/shared/src/lib/utils/geojson.ts +58 -1
- package/tailwind.base.css +6 -0
- package/translations/de.json +19 -19
- package/translations/en.json +19 -19
- package/translations/es.json +19 -19
- package/translations/fr.json +19 -19
- package/translations/it.json +19 -19
- package/translations/nl.json +19 -19
- package/translations/pt.json +19 -19
- package/translations/sk.json +19 -19
|
@@ -23,7 +23,7 @@ import { formatDistance } from 'date-fns/formatDistance';
|
|
|
23
23
|
import { Scroll, NavigationEnd, Router, RouteReuseStrategy } from '@angular/router';
|
|
24
24
|
import { WmtsEndpoint, WmsEndpoint, WfsEndpoint, OgcApiEndpoint, sharedFetch, useCache, StacEndpoint, TmsEndpoint } from '@camptocamp/ogc-client';
|
|
25
25
|
import { getLength } from 'ol/sphere.js';
|
|
26
|
-
import { LineString
|
|
26
|
+
import { LineString } from 'ol/geom.js';
|
|
27
27
|
import * as i1 from '@ngrx/store';
|
|
28
28
|
import { createAction, props, createReducer, on, createFeatureSelector, createSelector, Store, select, StoreModule } from '@ngrx/store';
|
|
29
29
|
import { queryDataGouvFr, queryGeonames, queryGeoadmin } from '@geospatial-sdk/geocoding';
|
|
@@ -18879,25 +18879,25 @@ var de = {
|
|
|
18879
18879
|
"editor.record.form.temporalExtents.addRange": "Zeitraum",
|
|
18880
18880
|
"editor.record.form.temporalExtents.date": "Datum",
|
|
18881
18881
|
"editor.record.form.temporalExtents.range": "Datumsbereich",
|
|
18882
|
-
"editor.record.form.topics.
|
|
18883
|
-
"editor.record.form.topics.
|
|
18884
|
-
"editor.record.form.topics.
|
|
18885
|
-
"editor.record.form.topics.
|
|
18886
|
-
"editor.record.form.topics.
|
|
18887
|
-
"editor.record.form.topics.
|
|
18888
|
-
"editor.record.form.topics.
|
|
18889
|
-
"editor.record.form.topics.
|
|
18890
|
-
"editor.record.form.topics.
|
|
18891
|
-
"editor.record.form.topics.
|
|
18892
|
-
"editor.record.form.topics.
|
|
18893
|
-
"editor.record.form.topics.
|
|
18894
|
-
"editor.record.form.topics.
|
|
18895
|
-
"editor.record.form.topics.
|
|
18896
|
-
"editor.record.form.topics.
|
|
18897
|
-
"editor.record.form.topics.
|
|
18898
|
-
"editor.record.form.topics.
|
|
18899
|
-
"editor.record.form.topics.
|
|
18900
|
-
"editor.record.form.topics.
|
|
18882
|
+
"editor.record.form.topics.iso.biota": "Biologie",
|
|
18883
|
+
"editor.record.form.topics.iso.boundaries": "Grenzen",
|
|
18884
|
+
"editor.record.form.topics.iso.climatologyMeteorologyAtmosphere": "Klimatologie/Meteorologie/Atmosphäre",
|
|
18885
|
+
"editor.record.form.topics.iso.economy": "Wirtschaft",
|
|
18886
|
+
"editor.record.form.topics.iso.elevation": "Höhenangaben",
|
|
18887
|
+
"editor.record.form.topics.iso.environment": "Umwelt",
|
|
18888
|
+
"editor.record.form.topics.iso.farming": "Landwirtschaft",
|
|
18889
|
+
"editor.record.form.topics.iso.geoscientificInformation": "Geowissenschaften",
|
|
18890
|
+
"editor.record.form.topics.iso.health": "Gesundheitswesen",
|
|
18891
|
+
"editor.record.form.topics.iso.imageryBaseMapsEarthCover": "Bilddaten/Basiskarten/Landbedeckung",
|
|
18892
|
+
"editor.record.form.topics.iso.intelligenceMilitary": "Aufklärung/Militär",
|
|
18893
|
+
"editor.record.form.topics.iso.location": "Ortsangaben",
|
|
18894
|
+
"editor.record.form.topics.iso.oceans": "Meere",
|
|
18895
|
+
"editor.record.form.topics.iso.planningCadastre": "Planungsunterlagen/Kataster",
|
|
18896
|
+
"editor.record.form.topics.iso.society": "Gesellschaft",
|
|
18897
|
+
"editor.record.form.topics.iso.structure": "Bauwerke",
|
|
18898
|
+
"editor.record.form.topics.iso.transportation": "Verkehrswesen",
|
|
18899
|
+
"editor.record.form.topics.iso.utilitiesCommunication": "Ver- und Entsorgung/Nachrichtenwesen",
|
|
18900
|
+
"editor.record.form.topics.iso.inlandWaters": "Binnengewässer",
|
|
18901
18901
|
"editor.record.form.topics.placeholder": "Ein oder mehrere Themen auswählen",
|
|
18902
18902
|
"editor.record.form.updateFrequency.planned": "Dieses Dataset wird regelmäßig aktualisiert.",
|
|
18903
18903
|
"editor.record.importFromExternalFile.failure.body": "Beim Importieren des Datensatzes ist ein Fehler aufgetreten:",
|
|
@@ -19562,25 +19562,25 @@ var en = {
|
|
|
19562
19562
|
"editor.record.form.temporalExtents.addRange": "Time period",
|
|
19563
19563
|
"editor.record.form.temporalExtents.date": "Date",
|
|
19564
19564
|
"editor.record.form.temporalExtents.range": "Date range",
|
|
19565
|
-
"editor.record.form.topics.
|
|
19566
|
-
"editor.record.form.topics.
|
|
19567
|
-
"editor.record.form.topics.
|
|
19568
|
-
"editor.record.form.topics.
|
|
19569
|
-
"editor.record.form.topics.
|
|
19570
|
-
"editor.record.form.topics.
|
|
19571
|
-
"editor.record.form.topics.
|
|
19572
|
-
"editor.record.form.topics.
|
|
19573
|
-
"editor.record.form.topics.
|
|
19574
|
-
"editor.record.form.topics.
|
|
19575
|
-
"editor.record.form.topics.
|
|
19576
|
-
"editor.record.form.topics.
|
|
19577
|
-
"editor.record.form.topics.
|
|
19578
|
-
"editor.record.form.topics.
|
|
19579
|
-
"editor.record.form.topics.
|
|
19580
|
-
"editor.record.form.topics.
|
|
19581
|
-
"editor.record.form.topics.
|
|
19582
|
-
"editor.record.form.topics.
|
|
19583
|
-
"editor.record.form.topics.
|
|
19565
|
+
"editor.record.form.topics.iso.biota": "Biota",
|
|
19566
|
+
"editor.record.form.topics.iso.boundaries": "Boundaries",
|
|
19567
|
+
"editor.record.form.topics.iso.climatologyMeteorologyAtmosphere": "Climatology / Meteorology / Atmosphere",
|
|
19568
|
+
"editor.record.form.topics.iso.economy": "Economy",
|
|
19569
|
+
"editor.record.form.topics.iso.elevation": "Elevation",
|
|
19570
|
+
"editor.record.form.topics.iso.environment": "Environnement",
|
|
19571
|
+
"editor.record.form.topics.iso.farming": "Farming",
|
|
19572
|
+
"editor.record.form.topics.iso.geoscientificInformation": "Geoscientific Information",
|
|
19573
|
+
"editor.record.form.topics.iso.health": "Health",
|
|
19574
|
+
"editor.record.form.topics.iso.imageryBaseMapsEarthCover": "Imagery / Base Maps / Earth Cover",
|
|
19575
|
+
"editor.record.form.topics.iso.intelligenceMilitary": "Intelligence / Military",
|
|
19576
|
+
"editor.record.form.topics.iso.location": "Location",
|
|
19577
|
+
"editor.record.form.topics.iso.oceans": "Oceans",
|
|
19578
|
+
"editor.record.form.topics.iso.planningCadastre": "Planning / Cadastre",
|
|
19579
|
+
"editor.record.form.topics.iso.society": "Society",
|
|
19580
|
+
"editor.record.form.topics.iso.structure": "Structure",
|
|
19581
|
+
"editor.record.form.topics.iso.transportation": "Transportation",
|
|
19582
|
+
"editor.record.form.topics.iso.utilitiesCommunication": "Utilities / Communication",
|
|
19583
|
+
"editor.record.form.topics.iso.inlandWaters": "Inland Waters",
|
|
19584
19584
|
"editor.record.form.topics.placeholder": "Select one or several topics",
|
|
19585
19585
|
"editor.record.form.updateFrequency.planned": "This dataset is updated regularly",
|
|
19586
19586
|
"editor.record.importFromExternalFile.failure.body": "Failure",
|
|
@@ -20245,25 +20245,25 @@ var es = {
|
|
|
20245
20245
|
"editor.record.form.temporalExtents.addRange": "",
|
|
20246
20246
|
"editor.record.form.temporalExtents.date": "",
|
|
20247
20247
|
"editor.record.form.temporalExtents.range": "",
|
|
20248
|
-
"editor.record.form.topics.
|
|
20249
|
-
"editor.record.form.topics.
|
|
20250
|
-
"editor.record.form.topics.
|
|
20251
|
-
"editor.record.form.topics.
|
|
20252
|
-
"editor.record.form.topics.
|
|
20253
|
-
"editor.record.form.topics.
|
|
20254
|
-
"editor.record.form.topics.
|
|
20255
|
-
"editor.record.form.topics.
|
|
20256
|
-
"editor.record.form.topics.
|
|
20257
|
-
"editor.record.form.topics.
|
|
20258
|
-
"editor.record.form.topics.
|
|
20259
|
-
"editor.record.form.topics.
|
|
20260
|
-
"editor.record.form.topics.
|
|
20261
|
-
"editor.record.form.topics.
|
|
20262
|
-
"editor.record.form.topics.
|
|
20263
|
-
"editor.record.form.topics.
|
|
20264
|
-
"editor.record.form.topics.
|
|
20265
|
-
"editor.record.form.topics.
|
|
20266
|
-
"editor.record.form.topics.
|
|
20248
|
+
"editor.record.form.topics.iso.biota": "",
|
|
20249
|
+
"editor.record.form.topics.iso.boundaries": "",
|
|
20250
|
+
"editor.record.form.topics.iso.climatologyMeteorologyAtmosphere": "",
|
|
20251
|
+
"editor.record.form.topics.iso.economy": "",
|
|
20252
|
+
"editor.record.form.topics.iso.elevation": "",
|
|
20253
|
+
"editor.record.form.topics.iso.environment": "",
|
|
20254
|
+
"editor.record.form.topics.iso.farming": "",
|
|
20255
|
+
"editor.record.form.topics.iso.geoscientificInformation": "",
|
|
20256
|
+
"editor.record.form.topics.iso.health": "",
|
|
20257
|
+
"editor.record.form.topics.iso.imageryBaseMapsEarthCover": "",
|
|
20258
|
+
"editor.record.form.topics.iso.intelligenceMilitary": "",
|
|
20259
|
+
"editor.record.form.topics.iso.location": "",
|
|
20260
|
+
"editor.record.form.topics.iso.oceans": "",
|
|
20261
|
+
"editor.record.form.topics.iso.planningCadastre": "",
|
|
20262
|
+
"editor.record.form.topics.iso.society": "",
|
|
20263
|
+
"editor.record.form.topics.iso.structure": "",
|
|
20264
|
+
"editor.record.form.topics.iso.transportation": "",
|
|
20265
|
+
"editor.record.form.topics.iso.utilitiesCommunication": "",
|
|
20266
|
+
"editor.record.form.topics.iso.inlandWaters": "",
|
|
20267
20267
|
"editor.record.form.topics.placeholder": "",
|
|
20268
20268
|
"editor.record.form.updateFrequency.planned": "Este conjunto de datos se actualiza regularmente.",
|
|
20269
20269
|
"editor.record.importFromExternalFile.failure.body": "",
|
|
@@ -20928,25 +20928,25 @@ var fr = {
|
|
|
20928
20928
|
"editor.record.form.temporalExtents.addRange": "Période de temps",
|
|
20929
20929
|
"editor.record.form.temporalExtents.date": "Date concernée",
|
|
20930
20930
|
"editor.record.form.temporalExtents.range": "Période concernée",
|
|
20931
|
-
"editor.record.form.topics.
|
|
20932
|
-
"editor.record.form.topics.
|
|
20933
|
-
"editor.record.form.topics.
|
|
20934
|
-
"editor.record.form.topics.
|
|
20935
|
-
"editor.record.form.topics.
|
|
20936
|
-
"editor.record.form.topics.
|
|
20937
|
-
"editor.record.form.topics.
|
|
20938
|
-
"editor.record.form.topics.
|
|
20939
|
-
"editor.record.form.topics.
|
|
20940
|
-
"editor.record.form.topics.
|
|
20941
|
-
"editor.record.form.topics.
|
|
20942
|
-
"editor.record.form.topics.
|
|
20943
|
-
"editor.record.form.topics.
|
|
20944
|
-
"editor.record.form.topics.
|
|
20945
|
-
"editor.record.form.topics.
|
|
20946
|
-
"editor.record.form.topics.
|
|
20947
|
-
"editor.record.form.topics.
|
|
20948
|
-
"editor.record.form.topics.
|
|
20949
|
-
"editor.record.form.topics.
|
|
20931
|
+
"editor.record.form.topics.iso.biota": "Biote",
|
|
20932
|
+
"editor.record.form.topics.iso.boundaries": "Limites",
|
|
20933
|
+
"editor.record.form.topics.iso.climatologyMeteorologyAtmosphere": "Climatologie/Météorologie/Atmosphère",
|
|
20934
|
+
"editor.record.form.topics.iso.economy": "Économie",
|
|
20935
|
+
"editor.record.form.topics.iso.elevation": "Altitude",
|
|
20936
|
+
"editor.record.form.topics.iso.environment": "Environnement",
|
|
20937
|
+
"editor.record.form.topics.iso.farming": "Agriculture",
|
|
20938
|
+
"editor.record.form.topics.iso.geoscientificInformation": "Informations géoscientifiques",
|
|
20939
|
+
"editor.record.form.topics.iso.health": "Santé",
|
|
20940
|
+
"editor.record.form.topics.iso.imageryBaseMapsEarthCover": "Imagerie/Cartes de base/Occupation des terres",
|
|
20941
|
+
"editor.record.form.topics.iso.intelligenceMilitary": "Renseignement/Secteur militaire",
|
|
20942
|
+
"editor.record.form.topics.iso.location": "Localisation",
|
|
20943
|
+
"editor.record.form.topics.iso.oceans": "Océans",
|
|
20944
|
+
"editor.record.form.topics.iso.planningCadastre": "Planification/Cadastre",
|
|
20945
|
+
"editor.record.form.topics.iso.society": "Société",
|
|
20946
|
+
"editor.record.form.topics.iso.structure": "Structure",
|
|
20947
|
+
"editor.record.form.topics.iso.transportation": "Transport",
|
|
20948
|
+
"editor.record.form.topics.iso.utilitiesCommunication": "Services d’utilité publique/Communication",
|
|
20949
|
+
"editor.record.form.topics.iso.inlandWaters": "Eaux intérieures",
|
|
20950
20950
|
"editor.record.form.topics.placeholder": "Sélectionnez un ou plusieurs thèmes",
|
|
20951
20951
|
"editor.record.form.updateFrequency.planned": "Ce jeu de données est mis à jour régulièrement",
|
|
20952
20952
|
"editor.record.importFromExternalFile.failure.body": "Une erreur est survenue pendant l'import du jeu de données : ",
|
|
@@ -21611,25 +21611,25 @@ var it = {
|
|
|
21611
21611
|
"editor.record.form.temporalExtents.addRange": "Periodo di tempo",
|
|
21612
21612
|
"editor.record.form.temporalExtents.date": "Data rilevante",
|
|
21613
21613
|
"editor.record.form.temporalExtents.range": "Periodo interessato",
|
|
21614
|
-
"editor.record.form.topics.
|
|
21615
|
-
"editor.record.form.topics.
|
|
21616
|
-
"editor.record.form.topics.
|
|
21617
|
-
"editor.record.form.topics.
|
|
21618
|
-
"editor.record.form.topics.
|
|
21619
|
-
"editor.record.form.topics.
|
|
21620
|
-
"editor.record.form.topics.
|
|
21621
|
-
"editor.record.form.topics.
|
|
21622
|
-
"editor.record.form.topics.
|
|
21623
|
-
"editor.record.form.topics.
|
|
21624
|
-
"editor.record.form.topics.
|
|
21625
|
-
"editor.record.form.topics.
|
|
21626
|
-
"editor.record.form.topics.
|
|
21627
|
-
"editor.record.form.topics.
|
|
21628
|
-
"editor.record.form.topics.
|
|
21629
|
-
"editor.record.form.topics.
|
|
21630
|
-
"editor.record.form.topics.
|
|
21631
|
-
"editor.record.form.topics.
|
|
21632
|
-
"editor.record.form.topics.
|
|
21614
|
+
"editor.record.form.topics.iso.biota": "",
|
|
21615
|
+
"editor.record.form.topics.iso.boundaries": "",
|
|
21616
|
+
"editor.record.form.topics.iso.climatologyMeteorologyAtmosphere": "",
|
|
21617
|
+
"editor.record.form.topics.iso.economy": "",
|
|
21618
|
+
"editor.record.form.topics.iso.elevation": "",
|
|
21619
|
+
"editor.record.form.topics.iso.environment": "",
|
|
21620
|
+
"editor.record.form.topics.iso.farming": "",
|
|
21621
|
+
"editor.record.form.topics.iso.geoscientificInformation": "",
|
|
21622
|
+
"editor.record.form.topics.iso.health": "",
|
|
21623
|
+
"editor.record.form.topics.iso.imageryBaseMapsEarthCover": "",
|
|
21624
|
+
"editor.record.form.topics.iso.intelligenceMilitary": "",
|
|
21625
|
+
"editor.record.form.topics.iso.location": "",
|
|
21626
|
+
"editor.record.form.topics.iso.oceans": "",
|
|
21627
|
+
"editor.record.form.topics.iso.planningCadastre": "",
|
|
21628
|
+
"editor.record.form.topics.iso.society": "",
|
|
21629
|
+
"editor.record.form.topics.iso.structure": "",
|
|
21630
|
+
"editor.record.form.topics.iso.transportation": "",
|
|
21631
|
+
"editor.record.form.topics.iso.utilitiesCommunication": "",
|
|
21632
|
+
"editor.record.form.topics.iso.inlandWaters": "",
|
|
21633
21633
|
"editor.record.form.topics.placeholder": "",
|
|
21634
21634
|
"editor.record.form.updateFrequency.planned": "Questi dati dovrebbero essere aggiornati regolarmente",
|
|
21635
21635
|
"editor.record.importFromExternalFile.failure.body": "Ha successo un'errore durante l'importazione del dataset: ",
|
|
@@ -22294,25 +22294,25 @@ var nl = {
|
|
|
22294
22294
|
"editor.record.form.temporalExtents.addRange": "",
|
|
22295
22295
|
"editor.record.form.temporalExtents.date": "",
|
|
22296
22296
|
"editor.record.form.temporalExtents.range": "",
|
|
22297
|
-
"editor.record.form.topics.
|
|
22298
|
-
"editor.record.form.topics.
|
|
22299
|
-
"editor.record.form.topics.
|
|
22300
|
-
"editor.record.form.topics.
|
|
22301
|
-
"editor.record.form.topics.
|
|
22302
|
-
"editor.record.form.topics.
|
|
22303
|
-
"editor.record.form.topics.
|
|
22304
|
-
"editor.record.form.topics.
|
|
22305
|
-
"editor.record.form.topics.
|
|
22306
|
-
"editor.record.form.topics.
|
|
22307
|
-
"editor.record.form.topics.
|
|
22308
|
-
"editor.record.form.topics.
|
|
22309
|
-
"editor.record.form.topics.
|
|
22310
|
-
"editor.record.form.topics.
|
|
22311
|
-
"editor.record.form.topics.
|
|
22312
|
-
"editor.record.form.topics.
|
|
22313
|
-
"editor.record.form.topics.
|
|
22314
|
-
"editor.record.form.topics.
|
|
22315
|
-
"editor.record.form.topics.
|
|
22297
|
+
"editor.record.form.topics.iso.biota": "",
|
|
22298
|
+
"editor.record.form.topics.iso.boundaries": "",
|
|
22299
|
+
"editor.record.form.topics.iso.climatologyMeteorologyAtmosphere": "",
|
|
22300
|
+
"editor.record.form.topics.iso.economy": "",
|
|
22301
|
+
"editor.record.form.topics.iso.elevation": "",
|
|
22302
|
+
"editor.record.form.topics.iso.environment": "",
|
|
22303
|
+
"editor.record.form.topics.iso.farming": "",
|
|
22304
|
+
"editor.record.form.topics.iso.geoscientificInformation": "",
|
|
22305
|
+
"editor.record.form.topics.iso.health": "",
|
|
22306
|
+
"editor.record.form.topics.iso.imageryBaseMapsEarthCover": "",
|
|
22307
|
+
"editor.record.form.topics.iso.intelligenceMilitary": "",
|
|
22308
|
+
"editor.record.form.topics.iso.location": "",
|
|
22309
|
+
"editor.record.form.topics.iso.oceans": "",
|
|
22310
|
+
"editor.record.form.topics.iso.planningCadastre": "",
|
|
22311
|
+
"editor.record.form.topics.iso.society": "",
|
|
22312
|
+
"editor.record.form.topics.iso.structure": "",
|
|
22313
|
+
"editor.record.form.topics.iso.transportation": "",
|
|
22314
|
+
"editor.record.form.topics.iso.utilitiesCommunication": "",
|
|
22315
|
+
"editor.record.form.topics.iso.inlandWaters": "",
|
|
22316
22316
|
"editor.record.form.topics.placeholder": "",
|
|
22317
22317
|
"editor.record.form.updateFrequency.planned": "Deze dataset wordt regelmatig bijgewerkt.",
|
|
22318
22318
|
"editor.record.importFromExternalFile.failure.body": "",
|
|
@@ -22977,25 +22977,25 @@ var pt = {
|
|
|
22977
22977
|
"editor.record.form.temporalExtents.addRange": "",
|
|
22978
22978
|
"editor.record.form.temporalExtents.date": "",
|
|
22979
22979
|
"editor.record.form.temporalExtents.range": "",
|
|
22980
|
-
"editor.record.form.topics.
|
|
22981
|
-
"editor.record.form.topics.
|
|
22982
|
-
"editor.record.form.topics.
|
|
22983
|
-
"editor.record.form.topics.
|
|
22984
|
-
"editor.record.form.topics.
|
|
22985
|
-
"editor.record.form.topics.
|
|
22986
|
-
"editor.record.form.topics.
|
|
22987
|
-
"editor.record.form.topics.
|
|
22988
|
-
"editor.record.form.topics.
|
|
22989
|
-
"editor.record.form.topics.
|
|
22990
|
-
"editor.record.form.topics.
|
|
22991
|
-
"editor.record.form.topics.
|
|
22992
|
-
"editor.record.form.topics.
|
|
22993
|
-
"editor.record.form.topics.
|
|
22994
|
-
"editor.record.form.topics.
|
|
22995
|
-
"editor.record.form.topics.
|
|
22996
|
-
"editor.record.form.topics.
|
|
22997
|
-
"editor.record.form.topics.
|
|
22998
|
-
"editor.record.form.topics.
|
|
22980
|
+
"editor.record.form.topics.iso.biota": "",
|
|
22981
|
+
"editor.record.form.topics.iso.boundaries": "",
|
|
22982
|
+
"editor.record.form.topics.iso.climatologyMeteorologyAtmosphere": "",
|
|
22983
|
+
"editor.record.form.topics.iso.economy": "",
|
|
22984
|
+
"editor.record.form.topics.iso.elevation": "",
|
|
22985
|
+
"editor.record.form.topics.iso.environment": "",
|
|
22986
|
+
"editor.record.form.topics.iso.farming": "",
|
|
22987
|
+
"editor.record.form.topics.iso.geoscientificInformation": "",
|
|
22988
|
+
"editor.record.form.topics.iso.health": "",
|
|
22989
|
+
"editor.record.form.topics.iso.imageryBaseMapsEarthCover": "",
|
|
22990
|
+
"editor.record.form.topics.iso.intelligenceMilitary": "",
|
|
22991
|
+
"editor.record.form.topics.iso.location": "",
|
|
22992
|
+
"editor.record.form.topics.iso.oceans": "",
|
|
22993
|
+
"editor.record.form.topics.iso.planningCadastre": "",
|
|
22994
|
+
"editor.record.form.topics.iso.society": "",
|
|
22995
|
+
"editor.record.form.topics.iso.structure": "",
|
|
22996
|
+
"editor.record.form.topics.iso.transportation": "",
|
|
22997
|
+
"editor.record.form.topics.iso.utilitiesCommunication": "",
|
|
22998
|
+
"editor.record.form.topics.iso.inlandWaters": "",
|
|
22999
22999
|
"editor.record.form.topics.placeholder": "",
|
|
23000
23000
|
"editor.record.form.updateFrequency.planned": "Este conjunto de dados é atualizado regularmente.",
|
|
23001
23001
|
"editor.record.importFromExternalFile.failure.body": "",
|
|
@@ -23660,25 +23660,25 @@ var sk = {
|
|
|
23660
23660
|
"editor.record.form.temporalExtents.addRange": "",
|
|
23661
23661
|
"editor.record.form.temporalExtents.date": "",
|
|
23662
23662
|
"editor.record.form.temporalExtents.range": "",
|
|
23663
|
-
"editor.record.form.topics.
|
|
23664
|
-
"editor.record.form.topics.
|
|
23665
|
-
"editor.record.form.topics.
|
|
23666
|
-
"editor.record.form.topics.
|
|
23667
|
-
"editor.record.form.topics.
|
|
23668
|
-
"editor.record.form.topics.
|
|
23669
|
-
"editor.record.form.topics.
|
|
23670
|
-
"editor.record.form.topics.
|
|
23671
|
-
"editor.record.form.topics.
|
|
23672
|
-
"editor.record.form.topics.
|
|
23673
|
-
"editor.record.form.topics.
|
|
23674
|
-
"editor.record.form.topics.
|
|
23675
|
-
"editor.record.form.topics.
|
|
23676
|
-
"editor.record.form.topics.
|
|
23677
|
-
"editor.record.form.topics.
|
|
23678
|
-
"editor.record.form.topics.
|
|
23679
|
-
"editor.record.form.topics.
|
|
23680
|
-
"editor.record.form.topics.
|
|
23681
|
-
"editor.record.form.topics.
|
|
23663
|
+
"editor.record.form.topics.iso.biota": "",
|
|
23664
|
+
"editor.record.form.topics.iso.boundaries": "",
|
|
23665
|
+
"editor.record.form.topics.iso.climatologyMeteorologyAtmosphere": "",
|
|
23666
|
+
"editor.record.form.topics.iso.economy": "",
|
|
23667
|
+
"editor.record.form.topics.iso.elevation": "",
|
|
23668
|
+
"editor.record.form.topics.iso.environment": "",
|
|
23669
|
+
"editor.record.form.topics.iso.farming": "",
|
|
23670
|
+
"editor.record.form.topics.iso.geoscientificInformation": "",
|
|
23671
|
+
"editor.record.form.topics.iso.health": "",
|
|
23672
|
+
"editor.record.form.topics.iso.imageryBaseMapsEarthCover": "",
|
|
23673
|
+
"editor.record.form.topics.iso.intelligenceMilitary": "",
|
|
23674
|
+
"editor.record.form.topics.iso.location": "",
|
|
23675
|
+
"editor.record.form.topics.iso.oceans": "",
|
|
23676
|
+
"editor.record.form.topics.iso.planningCadastre": "",
|
|
23677
|
+
"editor.record.form.topics.iso.society": "",
|
|
23678
|
+
"editor.record.form.topics.iso.structure": "",
|
|
23679
|
+
"editor.record.form.topics.iso.transportation": "",
|
|
23680
|
+
"editor.record.form.topics.iso.utilitiesCommunication": "",
|
|
23681
|
+
"editor.record.form.topics.iso.inlandWaters": "",
|
|
23682
23682
|
"editor.record.form.topics.placeholder": "",
|
|
23683
23683
|
"editor.record.form.updateFrequency.planned": "Táto množina údajov sa pravidelne aktualizuje",
|
|
23684
23684
|
"editor.record.importFromExternalFile.failure.body": "",
|
|
@@ -24985,6 +24985,51 @@ function getGeometryBoundingBox(geometry) {
|
|
|
24985
24985
|
return coordinatesReducer(emptyExtent, geometry.coordinates);
|
|
24986
24986
|
}
|
|
24987
24987
|
}
|
|
24988
|
+
/**
|
|
24989
|
+
* Builds the closed GeoJSON Polygon matching the given bounding box.
|
|
24990
|
+
*/
|
|
24991
|
+
function bboxToPolygon(bbox) {
|
|
24992
|
+
const [minX, minY, maxX, maxY] = bbox;
|
|
24993
|
+
return {
|
|
24994
|
+
type: 'Polygon',
|
|
24995
|
+
coordinates: [
|
|
24996
|
+
[
|
|
24997
|
+
[minX, minY],
|
|
24998
|
+
[minX, maxY],
|
|
24999
|
+
[maxX, maxY],
|
|
25000
|
+
[maxX, minY],
|
|
25001
|
+
[minX, minY],
|
|
25002
|
+
],
|
|
25003
|
+
],
|
|
25004
|
+
};
|
|
25005
|
+
}
|
|
25006
|
+
/**
|
|
25007
|
+
* Returns the geometry carried by a spatial extent, falling back to the polygon
|
|
25008
|
+
* derived from its bounding box. Returns null when the extent has neither.
|
|
25009
|
+
*/
|
|
25010
|
+
function spatialExtentToGeometry(extent) {
|
|
25011
|
+
if (extent.geometry)
|
|
25012
|
+
return extent.geometry;
|
|
25013
|
+
if (extent.bbox)
|
|
25014
|
+
return bboxToPolygon(extent.bbox);
|
|
25015
|
+
return null;
|
|
25016
|
+
}
|
|
25017
|
+
/**
|
|
25018
|
+
* Converts a list of dataset spatial extents into a GeoJSON FeatureCollection,
|
|
25019
|
+
* e.g. to be used as the data source of a map layer.
|
|
25020
|
+
*/
|
|
25021
|
+
function spatialExtentsToFeatureCollection(extents) {
|
|
25022
|
+
return {
|
|
25023
|
+
type: 'FeatureCollection',
|
|
25024
|
+
features: extents.reduce((features, extent) => {
|
|
25025
|
+
const geometry = spatialExtentToGeometry(extent);
|
|
25026
|
+
if (geometry) {
|
|
25027
|
+
features.push({ type: 'Feature', properties: {}, geometry });
|
|
25028
|
+
}
|
|
25029
|
+
return features;
|
|
25030
|
+
}, []),
|
|
25031
|
+
};
|
|
25032
|
+
}
|
|
24988
25033
|
|
|
24989
25034
|
function downsizeImage(blob, maxWidth, maxHeight) {
|
|
24990
25035
|
return new Promise((resolve, reject) => {
|
|
@@ -25484,7 +25529,7 @@ function checkFileFormat(link, format) {
|
|
|
25484
25529
|
new RegExp(`[./]${format}`, 'i').test(link.name.toLowerCase())) ||
|
|
25485
25530
|
('url' in link &&
|
|
25486
25531
|
new RegExp(`[./]${format}`, 'i').test(link.url.toString())) ||
|
|
25487
|
-
('name' in link &&
|
|
25532
|
+
('name' in link && new RegExp(`\\b${format}\\b`, 'i').test(link.name)));
|
|
25488
25533
|
}
|
|
25489
25534
|
function getBadgeColor(linkFormat) {
|
|
25490
25535
|
for (const format in FORMATS) {
|
|
@@ -25677,9 +25722,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
25677
25722
|
}] } });
|
|
25678
25723
|
|
|
25679
25724
|
var name = "geonetwork-ui";
|
|
25680
|
-
var version = "2.10.0-dev.
|
|
25725
|
+
var version = "2.10.0-dev.8afb6cd00";
|
|
25681
25726
|
var engines = {
|
|
25682
|
-
node: ">=
|
|
25727
|
+
node: ">=24"
|
|
25683
25728
|
};
|
|
25684
25729
|
var main = "./index.ts";
|
|
25685
25730
|
var type = "module";
|
|
@@ -25717,7 +25762,7 @@ var peerDependencies = {
|
|
|
25717
25762
|
};
|
|
25718
25763
|
var dependencies = {
|
|
25719
25764
|
"@biesbjerg/ngx-translate-extract-marker": "~1.0.0",
|
|
25720
|
-
"@camptocamp/ogc-client": "1.3.1-dev.
|
|
25765
|
+
"@camptocamp/ogc-client": "1.3.1-dev.bb345f0",
|
|
25721
25766
|
"@geospatial-sdk/core": "0.0.5-dev.61",
|
|
25722
25767
|
"@geospatial-sdk/geocoding": "0.0.5-dev.61",
|
|
25723
25768
|
"@geospatial-sdk/legend": "0.0.5-dev.61",
|
|
@@ -26493,6 +26538,9 @@ const TEMPORARY_ID_PREFIX = 'TEMP-ID-';
|
|
|
26493
26538
|
const DISABLE_DRAFT = new InjectionToken('gnDisableDraft', {
|
|
26494
26539
|
factory: () => false,
|
|
26495
26540
|
});
|
|
26541
|
+
const DEFAULT_RECORD_CONVERTER = new InjectionToken('defaultRecordConverter', {
|
|
26542
|
+
factory: () => new Iso19139Converter(),
|
|
26543
|
+
});
|
|
26496
26544
|
class Gn4Repository {
|
|
26497
26545
|
constructor() {
|
|
26498
26546
|
this.httpClient = inject(HttpClient);
|
|
@@ -26504,6 +26552,7 @@ class Gn4Repository {
|
|
|
26504
26552
|
this.gn4LanguagesApi = inject(LanguagesApiService);
|
|
26505
26553
|
this.settingsService = inject(Gn4SettingsService);
|
|
26506
26554
|
this.disableDraft = inject(DISABLE_DRAFT, { optional: true }) ?? false;
|
|
26555
|
+
this.defaultConverter = inject(DEFAULT_RECORD_CONVERTER);
|
|
26507
26556
|
this._draftsChanged = new Subject();
|
|
26508
26557
|
this.draftsChanged$ = this._draftsChanged.asObservable();
|
|
26509
26558
|
}
|
|
@@ -26656,8 +26705,14 @@ class Gn4Repository {
|
|
|
26656
26705
|
}));
|
|
26657
26706
|
}
|
|
26658
26707
|
openRecordForDuplication(uniqueIdentifier) {
|
|
26659
|
-
return this.
|
|
26660
|
-
|
|
26708
|
+
return this.platformService.getUserPermissionsByGroup().pipe(map$1((permissions) => {
|
|
26709
|
+
const groupId = permissions.find((p) => p.canApprove)?.groupId?.toString() ??
|
|
26710
|
+
permissions.find((p) => p.canEdit)?.groupId?.toString();
|
|
26711
|
+
if (!groupId)
|
|
26712
|
+
throw new Error('Current user has no writable group to duplicate into');
|
|
26713
|
+
return groupId;
|
|
26714
|
+
}), switchMap((groupId) => this.gn4RecordsApi
|
|
26715
|
+
.create(uniqueIdentifier, groupId, 'METADATA', '', false, undefined, true, false, undefined, 'body', false, {
|
|
26661
26716
|
httpHeaderAccept: 'application/json',
|
|
26662
26717
|
httpContentTypeSelected: 'application/json;charset=UTF-8',
|
|
26663
26718
|
})
|
|
@@ -26669,7 +26724,7 @@ class Gn4Repository {
|
|
|
26669
26724
|
.then((record) => {
|
|
26670
26725
|
return [record, xml, true];
|
|
26671
26726
|
}));
|
|
26672
|
-
}));
|
|
26727
|
+
}))));
|
|
26673
26728
|
}
|
|
26674
26729
|
saveRecord(record, referenceRecordSource, publishToAll = true) {
|
|
26675
26730
|
return this.platformService.getApiVersion().pipe(map$1((version) => {
|
|
@@ -26782,10 +26837,10 @@ class Gn4Repository {
|
|
|
26782
26837
|
.pipe(map$1((response) => response.body), catchError((error) => error.status === 404 ? of(null) : throwError(() => error)));
|
|
26783
26838
|
}
|
|
26784
26839
|
serializeRecordToXml(record, referenceRecordSource) {
|
|
26785
|
-
// if there's a reference record, use that standard; otherwise, use
|
|
26840
|
+
// if there's a reference record, use that standard; otherwise, use standard based on configuration or default
|
|
26786
26841
|
const converter = referenceRecordSource
|
|
26787
26842
|
? findConverterForDocument(referenceRecordSource)
|
|
26788
|
-
:
|
|
26843
|
+
: this.defaultConverter;
|
|
26789
26844
|
return from(converter.writeRecord(record, referenceRecordSource));
|
|
26790
26845
|
}
|
|
26791
26846
|
getExternalRecordAsXml(recordDownloadUrl) {
|
|
@@ -27409,6 +27464,7 @@ class Gn4PlatformService {
|
|
|
27409
27464
|
constructor() {
|
|
27410
27465
|
this.meApi = inject(MeApiService);
|
|
27411
27466
|
this.usersApi = inject(UsersApiService);
|
|
27467
|
+
this.groupsApi = inject(GroupsApiService);
|
|
27412
27468
|
this.mapper = inject(Gn4PlatformMapper);
|
|
27413
27469
|
this.toolsApiService = inject(ToolsApiService);
|
|
27414
27470
|
this.registriesApiService = inject(RegistriesApiService);
|
|
@@ -27473,6 +27529,48 @@ class Gn4PlatformService {
|
|
|
27473
27529
|
getUsers() {
|
|
27474
27530
|
return this.users$;
|
|
27475
27531
|
}
|
|
27532
|
+
getUserPermissionsByGroup() {
|
|
27533
|
+
if (this.disableAuth)
|
|
27534
|
+
return of([]);
|
|
27535
|
+
return combineLatest([this.meApi.getMe(), this.groupsApi.getGroups()]).pipe(map$1(([meResponse, groups]) => {
|
|
27536
|
+
if (!meResponse)
|
|
27537
|
+
return [];
|
|
27538
|
+
if (meResponse.admin) {
|
|
27539
|
+
return groups.map((group) => ({
|
|
27540
|
+
groupId: group.id,
|
|
27541
|
+
groupName: group.name,
|
|
27542
|
+
isMember: true,
|
|
27543
|
+
canEdit: true,
|
|
27544
|
+
canApprove: true,
|
|
27545
|
+
canAdministrate: true,
|
|
27546
|
+
}));
|
|
27547
|
+
}
|
|
27548
|
+
const reviewerIds = meResponse.groupsWithReviewer ?? [];
|
|
27549
|
+
const editorIds = meResponse.groupsWithEditor ?? [];
|
|
27550
|
+
const memberIds = meResponse.groupsWithRegisteredUser ?? [];
|
|
27551
|
+
const adminIds = meResponse.groupsWithUserAdmin ?? [];
|
|
27552
|
+
const groupsById = new Map(groups.map((g) => [g.id, g]));
|
|
27553
|
+
return [
|
|
27554
|
+
...new Set([
|
|
27555
|
+
...reviewerIds,
|
|
27556
|
+
...editorIds,
|
|
27557
|
+
...groups.map((g) => g.id),
|
|
27558
|
+
]),
|
|
27559
|
+
]
|
|
27560
|
+
.filter((id) => groupsById.has(id))
|
|
27561
|
+
.map((id) => {
|
|
27562
|
+
const group = groupsById.get(id);
|
|
27563
|
+
return {
|
|
27564
|
+
groupId: group.id,
|
|
27565
|
+
groupName: group.name,
|
|
27566
|
+
isMember: memberIds.includes(id),
|
|
27567
|
+
canEdit: editorIds.includes(id),
|
|
27568
|
+
canApprove: reviewerIds.includes(id),
|
|
27569
|
+
canAdministrate: adminIds.includes(id),
|
|
27570
|
+
};
|
|
27571
|
+
});
|
|
27572
|
+
}));
|
|
27573
|
+
}
|
|
27476
27574
|
translateKey(key) {
|
|
27477
27575
|
// if the key is a URI, use the registries API to look for the translation
|
|
27478
27576
|
if (key.match(/^https?:\/\//)) {
|
|
@@ -28074,6 +28172,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
28074
28172
|
type: Output
|
|
28075
28173
|
}] } });
|
|
28076
28174
|
|
|
28175
|
+
/**
|
|
28176
|
+
* Default style for a spatial-extent layer: a solid black outline over a
|
|
28177
|
+
* translucent grey fill.
|
|
28178
|
+
*/
|
|
28179
|
+
const DEFAULT_SPATIAL_EXTENT_STYLE = {
|
|
28180
|
+
'stroke-color': 'black',
|
|
28181
|
+
'stroke-width': 2,
|
|
28182
|
+
'fill-color': 'rgba(153, 153, 153, 0.3)',
|
|
28183
|
+
};
|
|
28184
|
+
/**
|
|
28185
|
+
* Builds a GeoJSON map layer drawing the given spatial extents: each extent is
|
|
28186
|
+
* rendered from its own geometry or, when only a bounding box is available,
|
|
28187
|
+
* from a polygon derived from that box.
|
|
28188
|
+
*
|
|
28189
|
+
* @returns the layer, or `null` when none of the extents can be represented.
|
|
28190
|
+
*/
|
|
28191
|
+
function createSpatialExtentLayer(extents, overrides) {
|
|
28192
|
+
const data = spatialExtentsToFeatureCollection(extents);
|
|
28193
|
+
if (data.features.length === 0) {
|
|
28194
|
+
return null;
|
|
28195
|
+
}
|
|
28196
|
+
return {
|
|
28197
|
+
type: 'geojson',
|
|
28198
|
+
data,
|
|
28199
|
+
label: 'Spatial extents',
|
|
28200
|
+
style: DEFAULT_SPATIAL_EXTENT_STYLE,
|
|
28201
|
+
...overrides,
|
|
28202
|
+
};
|
|
28203
|
+
}
|
|
28077
28204
|
function prioritizePageScroll(interactions) {
|
|
28078
28205
|
interactions.clear();
|
|
28079
28206
|
interactions.extend(defaults({
|
|
@@ -28114,39 +28241,10 @@ class SpatialExtentComponent {
|
|
|
28114
28241
|
this._cdr = inject(ChangeDetectorRef);
|
|
28115
28242
|
this.spatialExtents$ = new BehaviorSubject([]);
|
|
28116
28243
|
this.mapContext$ = this.spatialExtents$.pipe(switchMap$1((extents) => {
|
|
28117
|
-
|
|
28244
|
+
const layer = createSpatialExtentLayer(extents);
|
|
28245
|
+
if (!layer) {
|
|
28118
28246
|
return of(null);
|
|
28119
28247
|
}
|
|
28120
|
-
const featureCollection = {
|
|
28121
|
-
type: 'FeatureCollection',
|
|
28122
|
-
features: [],
|
|
28123
|
-
};
|
|
28124
|
-
extents.forEach((extent) => {
|
|
28125
|
-
if (extent.geometry) {
|
|
28126
|
-
featureCollection.features.push({
|
|
28127
|
-
type: 'Feature',
|
|
28128
|
-
properties: {},
|
|
28129
|
-
geometry: extent.geometry,
|
|
28130
|
-
});
|
|
28131
|
-
}
|
|
28132
|
-
else if (extent.bbox?.length >= 0) {
|
|
28133
|
-
featureCollection.features.push({
|
|
28134
|
-
type: 'Feature',
|
|
28135
|
-
properties: {},
|
|
28136
|
-
geometry: this.bboxCoordsToGeometry(extent.bbox),
|
|
28137
|
-
});
|
|
28138
|
-
}
|
|
28139
|
-
});
|
|
28140
|
-
const layer = {
|
|
28141
|
-
type: 'geojson',
|
|
28142
|
-
data: featureCollection,
|
|
28143
|
-
label: 'Spatial extents',
|
|
28144
|
-
style: {
|
|
28145
|
-
'stroke-color': 'black',
|
|
28146
|
-
'stroke-width': 2,
|
|
28147
|
-
'fill-color': 'rgba(153, 153, 153, 0.3)',
|
|
28148
|
-
},
|
|
28149
|
-
};
|
|
28150
28248
|
return from(createViewFromLayer(layer)).pipe(map$1((view) => ({ view, layers: [layer] })), tap$1(() => this._cdr.markForCheck()));
|
|
28151
28249
|
}));
|
|
28152
28250
|
this.error = '';
|
|
@@ -28154,18 +28252,6 @@ class SpatialExtentComponent {
|
|
|
28154
28252
|
set spatialExtents(value) {
|
|
28155
28253
|
this.spatialExtents$.next(value);
|
|
28156
28254
|
}
|
|
28157
|
-
bboxCoordsToGeometry(bbox) {
|
|
28158
|
-
const geometry = new Polygon([
|
|
28159
|
-
[
|
|
28160
|
-
[bbox[0], bbox[1]],
|
|
28161
|
-
[bbox[0], bbox[3]],
|
|
28162
|
-
[bbox[2], bbox[3]],
|
|
28163
|
-
[bbox[2], bbox[1]],
|
|
28164
|
-
[bbox[0], bbox[1]],
|
|
28165
|
-
],
|
|
28166
|
-
]);
|
|
28167
|
-
return new GeoJSON().writeGeometryObject(geometry);
|
|
28168
|
-
}
|
|
28169
28255
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: SpatialExtentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28170
28256
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: SpatialExtentComponent, isStandalone: true, selector: "gn-ui-spatial-extent", inputs: { spatialExtents: "spatialExtents" }, ngImport: i0, template: "<gn-ui-map-container\n class=\"h-full w-full\"\n [context]=\"mapContext$ | async\"\n></gn-ui-map-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick", "extentChange", "sourceLoadError", "resolvedExtentChange"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }] }); }
|
|
28171
28257
|
}
|
|
@@ -28198,6 +28284,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
28198
28284
|
|
|
28199
28285
|
const LONLAT_CRS_CODES = ['EPSG:4326', 'CRS:84'];
|
|
28200
28286
|
|
|
28287
|
+
/**
|
|
28288
|
+
* Style of the extent overlay drawn on top of the previewed data: a dashed
|
|
28289
|
+
* black outline over a very light fill, so the extent stays readable without
|
|
28290
|
+
* hiding the data underneath.
|
|
28291
|
+
*/
|
|
28292
|
+
const RECORD_EXTENT_OVERLAY_STYLE = {
|
|
28293
|
+
'stroke-color': 'rgba(0, 0, 0, 0.6)',
|
|
28294
|
+
'stroke-width': 2,
|
|
28295
|
+
'stroke-line-dash': [8, 6],
|
|
28296
|
+
'fill-color': 'rgba(0, 0, 0, 0.03)',
|
|
28297
|
+
};
|
|
28201
28298
|
class MapUtilsService {
|
|
28202
28299
|
getRecordExtent(record) {
|
|
28203
28300
|
if (!('spatialExtents' in record) || record.spatialExtents.length === 0) {
|
|
@@ -28213,6 +28310,21 @@ class MapUtilsService {
|
|
|
28213
28310
|
return prev;
|
|
28214
28311
|
}, [Infinity, Infinity, -Infinity, -Infinity]);
|
|
28215
28312
|
}
|
|
28313
|
+
/**
|
|
28314
|
+
* Builds a non-interactive overlay layer drawing the spatial extent(s)
|
|
28315
|
+
* declared in the record's metadata (bounding boxes and/or geometries).
|
|
28316
|
+
* Returns null when the record has no usable spatial extent.
|
|
28317
|
+
*
|
|
28318
|
+
* This is purely for display and is independent from the map's initial view,
|
|
28319
|
+
* which is derived separately (see {@link getRecordExtent}).
|
|
28320
|
+
*/
|
|
28321
|
+
getRecordExtentLayer(record) {
|
|
28322
|
+
return createSpatialExtentLayer(record.spatialExtents ?? [], {
|
|
28323
|
+
label: 'Spatial extent',
|
|
28324
|
+
clickable: false,
|
|
28325
|
+
style: RECORD_EXTENT_OVERLAY_STYLE,
|
|
28326
|
+
});
|
|
28327
|
+
}
|
|
28216
28328
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: MapUtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
28217
28329
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: MapUtilsService, providedIn: 'root' }); }
|
|
28218
28330
|
}
|
|
@@ -28324,6 +28436,22 @@ function checkNewRecordDefaultLanguage(parsedConfigSection, outWarnings) {
|
|
|
28324
28436
|
new_record_default_language: lang2,
|
|
28325
28437
|
};
|
|
28326
28438
|
}
|
|
28439
|
+
function checkNewRecordStandard(parsedConfigSection, outWarnings) {
|
|
28440
|
+
const standard = parsedConfigSection.new_record_standard;
|
|
28441
|
+
const normalizedStandard = typeof standard === 'string' ? standard.trim().toLowerCase() : null;
|
|
28442
|
+
if (normalizedStandard === 'iso19139' ||
|
|
28443
|
+
normalizedStandard === 'iso19115-3') {
|
|
28444
|
+
return {
|
|
28445
|
+
...parsedConfigSection,
|
|
28446
|
+
new_record_standard: normalizedStandard,
|
|
28447
|
+
};
|
|
28448
|
+
}
|
|
28449
|
+
outWarnings.push(`In the [editing] section: new_record_standard = "${standard}" is not a supported metadata standard`);
|
|
28450
|
+
return {
|
|
28451
|
+
...parsedConfigSection,
|
|
28452
|
+
new_record_standard: undefined,
|
|
28453
|
+
};
|
|
28454
|
+
}
|
|
28327
28455
|
|
|
28328
28456
|
/**
|
|
28329
28457
|
* This loader extends the default one based on JSON files but also loads custom translations
|
|
@@ -28525,16 +28653,21 @@ function loadAppConfig(configUrl = 'assets/configuration/default.toml') {
|
|
|
28525
28653
|
ENABLED: parsedMetadataQualitySection.enabled,
|
|
28526
28654
|
SORTABLE: parsedMetadataQualitySection.sortable,
|
|
28527
28655
|
};
|
|
28528
|
-
let parsedEditingSection = parseConfigSection(parsed, 'editing', [], ['new_record_default_language'], warnings, errors);
|
|
28656
|
+
let parsedEditingSection = parseConfigSection(parsed, 'editing', [], ['new_record_default_language', 'new_record_standard'], warnings, errors);
|
|
28529
28657
|
if (parsedEditingSection !== null &&
|
|
28530
28658
|
parsedEditingSection.new_record_default_language !== undefined) {
|
|
28531
28659
|
parsedEditingSection = checkNewRecordDefaultLanguage(parsedEditingSection, warnings);
|
|
28532
28660
|
}
|
|
28661
|
+
if (parsedEditingSection !== null &&
|
|
28662
|
+
parsedEditingSection.new_record_standard !== undefined) {
|
|
28663
|
+
parsedEditingSection = checkNewRecordStandard(parsedEditingSection, warnings);
|
|
28664
|
+
}
|
|
28533
28665
|
editorConfig =
|
|
28534
28666
|
parsedEditingSection === null
|
|
28535
28667
|
? null
|
|
28536
28668
|
: {
|
|
28537
28669
|
NEW_RECORD_DEFAULT_LANGUAGE: parsedEditingSection.new_record_default_language,
|
|
28670
|
+
NEW_RECORD_STANDARD: parsedEditingSection.new_record_standard,
|
|
28538
28671
|
};
|
|
28539
28672
|
customTranslations = parseTranslationsConfigSection(parsed, 'translations');
|
|
28540
28673
|
if (errors.length) {
|
|
@@ -29323,6 +29456,9 @@ class ButtonComponent {
|
|
|
29323
29456
|
case 'gray':
|
|
29324
29457
|
this.btnClass = 'gn-ui-btn-gray';
|
|
29325
29458
|
break;
|
|
29459
|
+
case 'gray-light':
|
|
29460
|
+
this.btnClass = 'gn-ui-btn-gray-light';
|
|
29461
|
+
break;
|
|
29326
29462
|
case 'black':
|
|
29327
29463
|
this.btnClass = 'gn-ui-btn-black';
|
|
29328
29464
|
break;
|
|
@@ -34399,7 +34535,7 @@ class ContactDetailsComponent {
|
|
|
34399
34535
|
return getAddressLines(this.contact?.address);
|
|
34400
34536
|
}
|
|
34401
34537
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ContactDetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34402
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: ContactDetailsComponent, isStandalone: true, selector: "gn-ui-contact-details", inputs: { contact: "contact" }, ngImport: i0, template: "<div\n class=\"bg-gray-50 rounded border border-gray-200 shadow-md p-4 flex flex-col gap-3 w-full\"\n data-test=\"contact-details\"\n>\n @if (displayName) {\n <div class=\"flex items-center gap-3\">\n @if (organization?.logoUrl?.href) {\n <div\n class=\"flex items-center justify-center rounded-md bg-white w-14 h-14 shrink-0 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n }\n <span\n class=\"font-title text-xl leading-tight\"\n data-test=\"contact-details-name\"\n >{{ displayName }}</span\n >\n </div>\n }\n\n <!-- Email + phone: always shown; icon dimmed when field is absent -->\n <div class=\"grid grid-cols-2 gap-1 rounded-md overflow-hidden\">\n <div class=\"bg-gray-100 flex items-center gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0\"\n [class.opacity-30]=\"!contact.email\"\n [class.opacity-75]=\"!!contact.email\"\n name=\"matMailOutline\"\n ></ng-icon>\n @if (contact.email) {\n <a\n [href]=\"'mailto:' + contact.email\"\n class=\"text-sm break-all hover:underline\"\n data-test=\"contact-details-email\"\n >{{ contact.email }}</a\n >\n }\n </div>\n <div class=\"bg-gray-100 flex items-center gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0\"\n [class.opacity-30]=\"!contact.phone\"\n [class.opacity-75]=\"!!contact.phone\"\n name=\"matCallOutline\"\n ></ng-icon>\n @if (contact.phone) {\n <span class=\"text-sm\" data-test=\"contact-details-phone\">{{\n contact.phone\n }}</span>\n }\n </div>\n </div>\n\n <!-- Address: always shown; icon dimmed when absent -->\n <div class=\"bg-gray-100 rounded-md flex items-start gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0 mt-0.5\"\n [class.opacity-30]=\"!addressLines.length\"\n [class.opacity-75]=\"!!addressLines.length\"\n name=\"matLocationOnOutline\"\n ></ng-icon>\n @if (addressLines.length) {\n <div class=\"flex flex-col\" data-test=\"contact-details-address\">\n @for (line of addressLines; track line) {\n <p class=\"text-sm m-0\">{{ line }}</p>\n }\n </div>\n }\n </div>\n\n <!-- Website: only shown when org exists; icon dimmed when absent -->\n @if (organization) {\n <div class=\"bg-gray-100 rounded-md flex items-center gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0\"\n [class.opacity-30]=\"!organization.website\"\n [class.opacity-75]=\"!!organization.website\"\n name=\"matOpenInNew\"\n ></ng-icon>\n @if (organization.website) {\n <a\n [href]=\"organization.website.href\"\n target=\"_blank\"\n class=\"text-sm break-all hover:underline\"\n data-test=\"contact-details-website\"\n >{{ organization.website.href }}</a\n >\n }\n </div>\n }\n</div>\n", dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "ngmodule", type: TranslateModule }], viewProviders: [
|
|
34538
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: ContactDetailsComponent, isStandalone: true, selector: "gn-ui-contact-details", inputs: { contact: "contact" }, ngImport: i0, template: "<div\n class=\"bg-gray-50 text-black rounded border border-gray-200 shadow-md p-4 flex flex-col gap-3 w-full\"\n data-test=\"contact-details\"\n>\n @if (displayName) {\n <div class=\"flex items-center gap-3\">\n @if (organization?.logoUrl?.href) {\n <div\n class=\"flex items-center justify-center rounded-md bg-white w-14 h-14 shrink-0 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n }\n <span\n class=\"font-title text-xl leading-tight\"\n data-test=\"contact-details-name\"\n >{{ displayName }}</span\n >\n </div>\n }\n\n <!-- Email + phone: always shown; icon dimmed when field is absent -->\n <div class=\"grid grid-cols-2 gap-1 rounded-md overflow-hidden\">\n <div class=\"bg-gray-100 flex items-center gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0\"\n [class.opacity-30]=\"!contact.email\"\n [class.opacity-75]=\"!!contact.email\"\n name=\"matMailOutline\"\n ></ng-icon>\n @if (contact.email) {\n <a\n [href]=\"'mailto:' + contact.email\"\n class=\"text-sm break-all hover:underline\"\n data-test=\"contact-details-email\"\n >{{ contact.email }}</a\n >\n }\n </div>\n <div class=\"bg-gray-100 flex items-center gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0\"\n [class.opacity-30]=\"!contact.phone\"\n [class.opacity-75]=\"!!contact.phone\"\n name=\"matCallOutline\"\n ></ng-icon>\n @if (contact.phone) {\n <span class=\"text-sm\" data-test=\"contact-details-phone\">{{\n contact.phone\n }}</span>\n }\n </div>\n </div>\n\n <!-- Address: always shown; icon dimmed when absent -->\n <div class=\"bg-gray-100 rounded-md flex items-start gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0 mt-0.5\"\n [class.opacity-30]=\"!addressLines.length\"\n [class.opacity-75]=\"!!addressLines.length\"\n name=\"matLocationOnOutline\"\n ></ng-icon>\n @if (addressLines.length) {\n <div class=\"flex flex-col\" data-test=\"contact-details-address\">\n @for (line of addressLines; track line) {\n <p class=\"text-sm m-0\">{{ line }}</p>\n }\n </div>\n }\n </div>\n\n <!-- Website: only shown when org exists; icon dimmed when absent -->\n @if (organization) {\n <div class=\"bg-gray-100 rounded-md flex items-center gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0\"\n [class.opacity-30]=\"!organization.website\"\n [class.opacity-75]=\"!!organization.website\"\n name=\"matOpenInNew\"\n ></ng-icon>\n @if (organization.website) {\n <a\n [href]=\"organization.website.href\"\n target=\"_blank\"\n class=\"text-sm break-all hover:underline\"\n data-test=\"contact-details-website\"\n >{{ organization.website.href }}</a\n >\n }\n </div>\n }\n</div>\n", dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "ngmodule", type: TranslateModule }], viewProviders: [
|
|
34403
34539
|
provideIcons({
|
|
34404
34540
|
matCallOutline,
|
|
34405
34541
|
matLocationOnOutline,
|
|
@@ -34417,7 +34553,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
34417
34553
|
matMailOutline,
|
|
34418
34554
|
matOpenInNew,
|
|
34419
34555
|
}),
|
|
34420
|
-
], template: "<div\n class=\"bg-gray-50 rounded border border-gray-200 shadow-md p-4 flex flex-col gap-3 w-full\"\n data-test=\"contact-details\"\n>\n @if (displayName) {\n <div class=\"flex items-center gap-3\">\n @if (organization?.logoUrl?.href) {\n <div\n class=\"flex items-center justify-center rounded-md bg-white w-14 h-14 shrink-0 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n }\n <span\n class=\"font-title text-xl leading-tight\"\n data-test=\"contact-details-name\"\n >{{ displayName }}</span\n >\n </div>\n }\n\n <!-- Email + phone: always shown; icon dimmed when field is absent -->\n <div class=\"grid grid-cols-2 gap-1 rounded-md overflow-hidden\">\n <div class=\"bg-gray-100 flex items-center gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0\"\n [class.opacity-30]=\"!contact.email\"\n [class.opacity-75]=\"!!contact.email\"\n name=\"matMailOutline\"\n ></ng-icon>\n @if (contact.email) {\n <a\n [href]=\"'mailto:' + contact.email\"\n class=\"text-sm break-all hover:underline\"\n data-test=\"contact-details-email\"\n >{{ contact.email }}</a\n >\n }\n </div>\n <div class=\"bg-gray-100 flex items-center gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0\"\n [class.opacity-30]=\"!contact.phone\"\n [class.opacity-75]=\"!!contact.phone\"\n name=\"matCallOutline\"\n ></ng-icon>\n @if (contact.phone) {\n <span class=\"text-sm\" data-test=\"contact-details-phone\">{{\n contact.phone\n }}</span>\n }\n </div>\n </div>\n\n <!-- Address: always shown; icon dimmed when absent -->\n <div class=\"bg-gray-100 rounded-md flex items-start gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0 mt-0.5\"\n [class.opacity-30]=\"!addressLines.length\"\n [class.opacity-75]=\"!!addressLines.length\"\n name=\"matLocationOnOutline\"\n ></ng-icon>\n @if (addressLines.length) {\n <div class=\"flex flex-col\" data-test=\"contact-details-address\">\n @for (line of addressLines; track line) {\n <p class=\"text-sm m-0\">{{ line }}</p>\n }\n </div>\n }\n </div>\n\n <!-- Website: only shown when org exists; icon dimmed when absent -->\n @if (organization) {\n <div class=\"bg-gray-100 rounded-md flex items-center gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0\"\n [class.opacity-30]=\"!organization.website\"\n [class.opacity-75]=\"!!organization.website\"\n name=\"matOpenInNew\"\n ></ng-icon>\n @if (organization.website) {\n <a\n [href]=\"organization.website.href\"\n target=\"_blank\"\n class=\"text-sm break-all hover:underline\"\n data-test=\"contact-details-website\"\n >{{ organization.website.href }}</a\n >\n }\n </div>\n }\n</div>\n" }]
|
|
34556
|
+
], template: "<div\n class=\"bg-gray-50 text-black rounded border border-gray-200 shadow-md p-4 flex flex-col gap-3 w-full\"\n data-test=\"contact-details\"\n>\n @if (displayName) {\n <div class=\"flex items-center gap-3\">\n @if (organization?.logoUrl?.href) {\n <div\n class=\"flex items-center justify-center rounded-md bg-white w-14 h-14 shrink-0 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n }\n <span\n class=\"font-title text-xl leading-tight\"\n data-test=\"contact-details-name\"\n >{{ displayName }}</span\n >\n </div>\n }\n\n <!-- Email + phone: always shown; icon dimmed when field is absent -->\n <div class=\"grid grid-cols-2 gap-1 rounded-md overflow-hidden\">\n <div class=\"bg-gray-100 flex items-center gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0\"\n [class.opacity-30]=\"!contact.email\"\n [class.opacity-75]=\"!!contact.email\"\n name=\"matMailOutline\"\n ></ng-icon>\n @if (contact.email) {\n <a\n [href]=\"'mailto:' + contact.email\"\n class=\"text-sm break-all hover:underline\"\n data-test=\"contact-details-email\"\n >{{ contact.email }}</a\n >\n }\n </div>\n <div class=\"bg-gray-100 flex items-center gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0\"\n [class.opacity-30]=\"!contact.phone\"\n [class.opacity-75]=\"!!contact.phone\"\n name=\"matCallOutline\"\n ></ng-icon>\n @if (contact.phone) {\n <span class=\"text-sm\" data-test=\"contact-details-phone\">{{\n contact.phone\n }}</span>\n }\n </div>\n </div>\n\n <!-- Address: always shown; icon dimmed when absent -->\n <div class=\"bg-gray-100 rounded-md flex items-start gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0 mt-0.5\"\n [class.opacity-30]=\"!addressLines.length\"\n [class.opacity-75]=\"!!addressLines.length\"\n name=\"matLocationOnOutline\"\n ></ng-icon>\n @if (addressLines.length) {\n <div class=\"flex flex-col\" data-test=\"contact-details-address\">\n @for (line of addressLines; track line) {\n <p class=\"text-sm m-0\">{{ line }}</p>\n }\n </div>\n }\n </div>\n\n <!-- Website: only shown when org exists; icon dimmed when absent -->\n @if (organization) {\n <div class=\"bg-gray-100 rounded-md flex items-center gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0\"\n [class.opacity-30]=\"!organization.website\"\n [class.opacity-75]=\"!!organization.website\"\n name=\"matOpenInNew\"\n ></ng-icon>\n @if (organization.website) {\n <a\n [href]=\"organization.website.href\"\n target=\"_blank\"\n class=\"text-sm break-all hover:underline\"\n data-test=\"contact-details-website\"\n >{{ organization.website.href }}</a\n >\n }\n </div>\n }\n</div>\n" }]
|
|
34421
34557
|
}], propDecorators: { contact: [{
|
|
34422
34558
|
type: Input
|
|
34423
34559
|
}] } });
|
|
@@ -34462,11 +34598,11 @@ class ContactPillComponent {
|
|
|
34462
34598
|
this.overlayOpen = false;
|
|
34463
34599
|
}
|
|
34464
34600
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ContactPillComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34465
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: ContactPillComponent, isStandalone: true, selector: "gn-ui-contact-pill", inputs: { contact: "contact" }, ngImport: i0, template: "<gn-ui-button\n [type]=\"overlayOpen ? '
|
|
34601
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: ContactPillComponent, isStandalone: true, selector: "gn-ui-contact-pill", inputs: { contact: "contact" }, ngImport: i0, template: "<gn-ui-button\n [type]=\"overlayOpen ? 'gray-light' : 'primary-light'\"\n extraClass=\"group w-full min-h-12 gap-3 justify-between py-2 pl-5 pr-4 rounded\"\n data-test=\"contact-pill\"\n (buttonClick)=\"toggleOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <span\n class=\"font-title font-medium text-base leading-tight truncate\"\n [class]=\"!overlayOpen ? 'text-primary-black group-hover:text-white' : ''\"\n [title]=\"displayName\"\n >{{ displayName }}</span\n >\n <div\n class=\"gn-ui-card-icon items-center justify-center w-10 h-8\"\n [class]=\"\n !overlayOpen ? 'group-hover:border-white group-hover:text-white' : ''\n \"\n >\n @if (overlayOpen) {\n <ng-icon class=\"!w-6 !h-6 !text-[24px]\" name=\"matClose\"></ng-icon>\n } @else {\n <ng-icon class=\"!w-6 !h-6 !text-[24px]\" name=\"matInfoOutline\"></ng-icon>\n }\n </div>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayOffsetX]=\"overlayOffsetX\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div [style.width.px]=\"overlayWidth\">\n <gn-ui-contact-details [contact]=\"contact\"></gn-ui-contact-details>\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1$8.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$8.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ContactDetailsComponent, selector: "gn-ui-contact-details", inputs: ["contact"] }], viewProviders: [provideIcons({ matClose, matInfoOutline })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34466
34602
|
}
|
|
34467
34603
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ContactPillComponent, decorators: [{
|
|
34468
34604
|
type: Component,
|
|
34469
|
-
args: [{ selector: 'gn-ui-contact-pill', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIcon, ButtonComponent, OverlayModule, ContactDetailsComponent], viewProviders: [provideIcons({ matClose, matInfoOutline })], template: "<gn-ui-button\n [type]=\"overlayOpen ? '
|
|
34605
|
+
args: [{ selector: 'gn-ui-contact-pill', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIcon, ButtonComponent, OverlayModule, ContactDetailsComponent], viewProviders: [provideIcons({ matClose, matInfoOutline })], template: "<gn-ui-button\n [type]=\"overlayOpen ? 'gray-light' : 'primary-light'\"\n extraClass=\"group w-full min-h-12 gap-3 justify-between py-2 pl-5 pr-4 rounded\"\n data-test=\"contact-pill\"\n (buttonClick)=\"toggleOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <span\n class=\"font-title font-medium text-base leading-tight truncate\"\n [class]=\"!overlayOpen ? 'text-primary-black group-hover:text-white' : ''\"\n [title]=\"displayName\"\n >{{ displayName }}</span\n >\n <div\n class=\"gn-ui-card-icon items-center justify-center w-10 h-8\"\n [class]=\"\n !overlayOpen ? 'group-hover:border-white group-hover:text-white' : ''\n \"\n >\n @if (overlayOpen) {\n <ng-icon class=\"!w-6 !h-6 !text-[24px]\" name=\"matClose\"></ng-icon>\n } @else {\n <ng-icon class=\"!w-6 !h-6 !text-[24px]\" name=\"matInfoOutline\"></ng-icon>\n }\n </div>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayOffsetX]=\"overlayOffsetX\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div [style.width.px]=\"overlayWidth\">\n <gn-ui-contact-details [contact]=\"contact\"></gn-ui-contact-details>\n </div>\n</ng-template>\n" }]
|
|
34470
34606
|
}], propDecorators: { contact: [{
|
|
34471
34607
|
type: Input
|
|
34472
34608
|
}] } });
|
|
@@ -34551,7 +34687,7 @@ class MetadataInfoComponent {
|
|
|
34551
34687
|
this.keyword.emit(keyword);
|
|
34552
34688
|
}
|
|
34553
34689
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: MetadataInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34554
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: MetadataInfoComponent, isStandalone: true, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n @if (metadata.abstract) {\n <gn-ui-max-lines [maxLines]=\"6\" data-test=\"metadata-info-abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n }\n </gn-ui-content-ghost>\n\n @if (!fieldReady('keywords') || metadata.keywords?.length) {\n <p class=\"mt-6 mb-3 font-medium text-black text-sm\" translate>\n record.metadata.keywords\n </p>\n }\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n @if (metadata.keywords?.length) {\n <gn-ui-max-lines [maxLines]=\"7\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n @for (keyword of metadata.keywords; track keyword) {\n <gn-ui-button\n type=\"primary-light\"\n class=\"inline-block opacity-70\"\n extraClass=\"lowercase text-sm py-1 px-2\"\n (buttonClick)=\"onKeywordClick(keyword)\"\n >{{ keyword.label }}</gn-ui-button\n >\n }\n </div>\n </gn-ui-max-lines>\n }\n </gn-ui-content-ghost>\n</div>\n\n@if (\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n) {\n <gn-ui-expandable-panel\n [title]=\"'record.metadata.usage' | translate\"\n data-test=\"usage-panel\"\n >\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n @for (license of licenses; track $index) {\n @if (license.url) {\n <div class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n } @else {\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n }\n }\n @if (legalConstraints.length) {\n <div class=\"mb-6\">\n @for (constraint of legalConstraints; track constraint) {\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n }\n </div>\n }\n @if (otherConstraints.length) {\n @for (constraint of otherConstraints; track constraint) {\n <div gnUiLinkify>\n <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n }\n }\n @if (!hasUsage) {\n <span class=\"noUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n@if (metadata.contactsForResource?.length) {\n <gn-ui-expandable-panel\n [title]=\"'record.metadata.resource.contacts' | translate\"\n data-test=\"contacts-panel\"\n >\n <div class=\"flex flex-col gap-1 pt-3 pb-4\">\n @for (group of contactGroups; track group.role) {\n <div class=\"flex flex-col gap-1 rounded bg-gray-50 py-4 px-2\">\n <p class=\"text-xs font-normal text-black\">\n {{ group.roleLabel | translate }}\n </p>\n <div class=\"grid gap-1 grid-cols-1 md:grid-cols-2\">\n @for (contact of group.contacts; track contact.email) {\n <gn-ui-contact-pill [contact]=\"contact\"></gn-ui-contact-pill>\n }\n </div>\n </div>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n@if (\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceCreated ||\n metadata.resourcePublished ||\n metadata.resourceUpdated ||\n (metadata.kind === 'dataset' && metadata.updateFrequency) ||\n metadata.otherLanguages?.length ||\n (metadata.kind === 'dataset' && temporalExtent)\n) {\n <gn-ui-expandable-panel\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n >\n @if (metadata.kind === 'dataset' && metadata.lineage) {\n <div\n class=\"text-gray-900 flex flex-col mt-4 gap-2\"\n data-test=\"details-panel-lineage\"\n >\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n }\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n @if (metadata.resourceCreated) {\n <div data-test=\"details-panel-resource-created\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p\n class=\"text-primary font-medium mt-1 resource-created\"\n [gnUiHumanizeDate]=\"metadata.resourceCreated\"\n ></p>\n </div>\n }\n @if (metadata.resourcePublished) {\n <div data-test=\"details-panel-resource-published\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p\n class=\"text-primary font-medium mt-1 resource-published\"\n [gnUiHumanizeDate]=\"metadata.resourcePublished\"\n ></p>\n </div>\n }\n @if (metadata.resourceUpdated) {\n <div data-test=\"details-panel-resource-updated\">\n <p class=\"text-sm\" translate>record.metadata.update</p>\n <p\n class=\"text-primary font-medium mt-1 resource-updated\"\n [gnUiHumanizeDate]=\"metadata.resourceUpdated\"\n ></p>\n </div>\n }\n @if (metadata.kind === 'dataset' && metadata.updateFrequency) {\n <div data-test=\"details-panel-update-frequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n }\n @if (metadata.otherLanguages?.length) {\n <div data-test=\"details-panel-other-languages\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n @for (language of metadata.otherLanguages; track language) {\n <p class=\"text-primary font-medium other-languages\" translate>\n language.{{ language }}\n </p>\n }\n </div>\n </div>\n }\n @if (metadata.kind === 'dataset' && temporalExtent) {\n <div data-test=\"details-panel-temporal-extent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div\n class=\"flex flex-row gap-1 mb-1 text-primary font-medium temporal-extent\"\n >\n @if (temporalExtent.start && temporalExtent.end) {\n <p\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n }\n @if (temporalExtent.start && !temporalExtent.end) {\n <p translate [translateParams]=\"{ start: temporalExtent.start }\">\n record.metadata.temporalExtent.sinceDate\n </p>\n }\n @if (!temporalExtent.start && temporalExtent.end) {\n <p translate [translateParams]=\"{ end: temporalExtent.end }\">\n record.metadata.temporalExtent.untilDate\n </p>\n }\n </div>\n </div>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n@if (\n metadata.kind !== 'dataset' &&\n metadata.spatialExtents &&\n metadata.spatialExtents.length\n) {\n <gn-ui-expandable-panel\n [title]=\"'service.metadata.spatialExtent' | translate\"\n data-test=\"spatial-extent-panel\"\n >\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n </gn-ui-expandable-panel>\n}\n@if (metadata.landingPage) {\n <gn-ui-expandable-panel\n [title]=\"'service.metadata.other' | translate\"\n data-test=\"other-panel\"\n >\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n @if (metadata.recordUpdated) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p\n class=\"text-primary font-medium\"\n [gnUiHumanizeDate]=\"metadata.recordUpdated\"\n ></p>\n </div>\n }\n @if (metadata.landingPage) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{\n metadata.landingPage\n }}</span>\n </a>\n </p>\n </div>\n }\n @if (metadata.ownerOrganization) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n }\n @if (metadata.uniqueIdentifier) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n }\n @if (metadata.topics?.length) {\n <div>\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n @for (topic of metadata.topics; track topic) {\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n >{{ topic }}</gn-ui-badge\n >\n }\n </div>\n </div>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}\n"], dependencies: [{ kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "iconColor", "collapsed"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "directive", type: GnUiHumanizeDateDirective, selector: "[gnUiHumanizeDate]", inputs: ["gnUiHumanizeDate"] }, { kind: "component", type: SpatialExtentComponent, selector: "gn-ui-spatial-extent", inputs: ["spatialExtents"] }, { kind: "component", type: ContactPillComponent, selector: "gn-ui-contact-pill", inputs: ["contact"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], viewProviders: [
|
|
34690
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: MetadataInfoComponent, isStandalone: true, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n @if (metadata.abstract) {\n <gn-ui-max-lines [maxLines]=\"6\" data-test=\"metadata-info-abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n }\n </gn-ui-content-ghost>\n\n @if (!fieldReady('keywords') || metadata.keywords?.length) {\n <p class=\"mt-6 mb-3 font-medium text-black text-sm\" translate>\n record.metadata.keywords\n </p>\n }\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n @if (metadata.keywords?.length) {\n <gn-ui-max-lines [maxLines]=\"7\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n @for (keyword of metadata.keywords; track keyword) {\n <gn-ui-button\n type=\"primary-light\"\n class=\"inline-block opacity-70\"\n extraClass=\"lowercase text-sm py-1 px-2\"\n (buttonClick)=\"onKeywordClick(keyword)\"\n >{{ keyword.label }}</gn-ui-button\n >\n }\n </div>\n </gn-ui-max-lines>\n }\n </gn-ui-content-ghost>\n</div>\n\n@if (\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n) {\n <gn-ui-expandable-panel\n [title]=\"'record.metadata.usage' | translate\"\n data-test=\"usage-panel\"\n >\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n @for (license of licenses; track $index) {\n @if (license.url) {\n <div class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n } @else {\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n }\n }\n @if (legalConstraints.length) {\n <div class=\"mb-6\">\n @for (constraint of legalConstraints; track constraint) {\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n }\n </div>\n }\n @if (otherConstraints.length) {\n @for (constraint of otherConstraints; track constraint) {\n <div gnUiLinkify>\n <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n }\n }\n @if (!hasUsage) {\n <span class=\"noUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n@if (metadata.contactsForResource?.length) {\n <gn-ui-expandable-panel\n [title]=\"'record.metadata.resource.contacts' | translate\"\n data-test=\"contacts-panel\"\n >\n <div class=\"flex flex-col gap-1 pt-3 pb-4\">\n @for (group of contactGroups; track group.role) {\n <div class=\"flex flex-col gap-1 rounded py-4 px-2\">\n <p class=\"text-xs font-normal text-black\">\n {{ group.roleLabel | translate }}\n </p>\n <div class=\"grid gap-1 grid-cols-1 md:grid-cols-2\">\n @for (contact of group.contacts; track contact.email) {\n <gn-ui-contact-pill [contact]=\"contact\"></gn-ui-contact-pill>\n }\n </div>\n </div>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n@if (\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceCreated ||\n metadata.resourcePublished ||\n metadata.resourceUpdated ||\n (metadata.kind === 'dataset' && metadata.updateFrequency) ||\n metadata.otherLanguages?.length ||\n (metadata.kind === 'dataset' && temporalExtent)\n) {\n <gn-ui-expandable-panel\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n >\n @if (metadata.kind === 'dataset' && metadata.lineage) {\n <div\n class=\"text-gray-900 flex flex-col mt-4 gap-2\"\n data-test=\"details-panel-lineage\"\n >\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n }\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n @if (metadata.resourceCreated) {\n <div data-test=\"details-panel-resource-created\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p\n class=\"text-primary font-medium mt-1 resource-created\"\n [gnUiHumanizeDate]=\"metadata.resourceCreated\"\n ></p>\n </div>\n }\n @if (metadata.resourcePublished) {\n <div data-test=\"details-panel-resource-published\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p\n class=\"text-primary font-medium mt-1 resource-published\"\n [gnUiHumanizeDate]=\"metadata.resourcePublished\"\n ></p>\n </div>\n }\n @if (metadata.resourceUpdated) {\n <div data-test=\"details-panel-resource-updated\">\n <p class=\"text-sm\" translate>record.metadata.update</p>\n <p\n class=\"text-primary font-medium mt-1 resource-updated\"\n [gnUiHumanizeDate]=\"metadata.resourceUpdated\"\n ></p>\n </div>\n }\n @if (metadata.kind === 'dataset' && metadata.updateFrequency) {\n <div data-test=\"details-panel-update-frequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n }\n @if (metadata.otherLanguages?.length) {\n <div data-test=\"details-panel-other-languages\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n @for (language of metadata.otherLanguages; track language) {\n <p class=\"text-primary font-medium other-languages\" translate>\n language.{{ language }}\n </p>\n }\n </div>\n </div>\n }\n @if (metadata.kind === 'dataset' && temporalExtent) {\n <div data-test=\"details-panel-temporal-extent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div\n class=\"flex flex-row gap-1 mb-1 text-primary font-medium temporal-extent\"\n >\n @if (temporalExtent.start && temporalExtent.end) {\n <p\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n }\n @if (temporalExtent.start && !temporalExtent.end) {\n <p translate [translateParams]=\"{ start: temporalExtent.start }\">\n record.metadata.temporalExtent.sinceDate\n </p>\n }\n @if (!temporalExtent.start && temporalExtent.end) {\n <p translate [translateParams]=\"{ end: temporalExtent.end }\">\n record.metadata.temporalExtent.untilDate\n </p>\n }\n </div>\n </div>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n@if (\n metadata.kind !== 'dataset' &&\n metadata.spatialExtents &&\n metadata.spatialExtents.length\n) {\n <gn-ui-expandable-panel\n [title]=\"'service.metadata.spatialExtent' | translate\"\n data-test=\"spatial-extent-panel\"\n >\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n </gn-ui-expandable-panel>\n}\n@if (metadata.landingPage) {\n <gn-ui-expandable-panel\n [title]=\"'service.metadata.other' | translate\"\n data-test=\"other-panel\"\n >\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n @if (metadata.recordUpdated) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p\n class=\"text-primary font-medium\"\n [gnUiHumanizeDate]=\"metadata.recordUpdated\"\n ></p>\n </div>\n }\n @if (metadata.landingPage) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{\n metadata.landingPage\n }}</span>\n </a>\n </p>\n </div>\n }\n @if (metadata.ownerOrganization) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n }\n @if (metadata.uniqueIdentifier) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n }\n @if (metadata.topics?.length) {\n <div>\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n @for (topic of metadata.topics; track topic) {\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n >{{ topic }}</gn-ui-badge\n >\n }\n </div>\n </div>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}\n"], dependencies: [{ kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "iconColor", "collapsed"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "directive", type: GnUiHumanizeDateDirective, selector: "[gnUiHumanizeDate]", inputs: ["gnUiHumanizeDate"] }, { kind: "component", type: SpatialExtentComponent, selector: "gn-ui-spatial-extent", inputs: ["spatialExtents"] }, { kind: "component", type: ContactPillComponent, selector: "gn-ui-contact-pill", inputs: ["contact"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], viewProviders: [
|
|
34555
34691
|
provideIcons({
|
|
34556
34692
|
matOpenInNew,
|
|
34557
34693
|
matMailOutline: matMailOutline$1,
|
|
@@ -34580,7 +34716,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
34580
34716
|
matOpenInNew,
|
|
34581
34717
|
matMailOutline: matMailOutline$1,
|
|
34582
34718
|
}),
|
|
34583
|
-
], template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n @if (metadata.abstract) {\n <gn-ui-max-lines [maxLines]=\"6\" data-test=\"metadata-info-abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n }\n </gn-ui-content-ghost>\n\n @if (!fieldReady('keywords') || metadata.keywords?.length) {\n <p class=\"mt-6 mb-3 font-medium text-black text-sm\" translate>\n record.metadata.keywords\n </p>\n }\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n @if (metadata.keywords?.length) {\n <gn-ui-max-lines [maxLines]=\"7\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n @for (keyword of metadata.keywords; track keyword) {\n <gn-ui-button\n type=\"primary-light\"\n class=\"inline-block opacity-70\"\n extraClass=\"lowercase text-sm py-1 px-2\"\n (buttonClick)=\"onKeywordClick(keyword)\"\n >{{ keyword.label }}</gn-ui-button\n >\n }\n </div>\n </gn-ui-max-lines>\n }\n </gn-ui-content-ghost>\n</div>\n\n@if (\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n) {\n <gn-ui-expandable-panel\n [title]=\"'record.metadata.usage' | translate\"\n data-test=\"usage-panel\"\n >\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n @for (license of licenses; track $index) {\n @if (license.url) {\n <div class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n } @else {\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n }\n }\n @if (legalConstraints.length) {\n <div class=\"mb-6\">\n @for (constraint of legalConstraints; track constraint) {\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n }\n </div>\n }\n @if (otherConstraints.length) {\n @for (constraint of otherConstraints; track constraint) {\n <div gnUiLinkify>\n <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n }\n }\n @if (!hasUsage) {\n <span class=\"noUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n@if (metadata.contactsForResource?.length) {\n <gn-ui-expandable-panel\n [title]=\"'record.metadata.resource.contacts' | translate\"\n data-test=\"contacts-panel\"\n >\n <div class=\"flex flex-col gap-1 pt-3 pb-4\">\n @for (group of contactGroups; track group.role) {\n <div class=\"flex flex-col gap-1 rounded bg-gray-50 py-4 px-2\">\n <p class=\"text-xs font-normal text-black\">\n {{ group.roleLabel | translate }}\n </p>\n <div class=\"grid gap-1 grid-cols-1 md:grid-cols-2\">\n @for (contact of group.contacts; track contact.email) {\n <gn-ui-contact-pill [contact]=\"contact\"></gn-ui-contact-pill>\n }\n </div>\n </div>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n@if (\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceCreated ||\n metadata.resourcePublished ||\n metadata.resourceUpdated ||\n (metadata.kind === 'dataset' && metadata.updateFrequency) ||\n metadata.otherLanguages?.length ||\n (metadata.kind === 'dataset' && temporalExtent)\n) {\n <gn-ui-expandable-panel\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n >\n @if (metadata.kind === 'dataset' && metadata.lineage) {\n <div\n class=\"text-gray-900 flex flex-col mt-4 gap-2\"\n data-test=\"details-panel-lineage\"\n >\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n }\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n @if (metadata.resourceCreated) {\n <div data-test=\"details-panel-resource-created\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p\n class=\"text-primary font-medium mt-1 resource-created\"\n [gnUiHumanizeDate]=\"metadata.resourceCreated\"\n ></p>\n </div>\n }\n @if (metadata.resourcePublished) {\n <div data-test=\"details-panel-resource-published\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p\n class=\"text-primary font-medium mt-1 resource-published\"\n [gnUiHumanizeDate]=\"metadata.resourcePublished\"\n ></p>\n </div>\n }\n @if (metadata.resourceUpdated) {\n <div data-test=\"details-panel-resource-updated\">\n <p class=\"text-sm\" translate>record.metadata.update</p>\n <p\n class=\"text-primary font-medium mt-1 resource-updated\"\n [gnUiHumanizeDate]=\"metadata.resourceUpdated\"\n ></p>\n </div>\n }\n @if (metadata.kind === 'dataset' && metadata.updateFrequency) {\n <div data-test=\"details-panel-update-frequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n }\n @if (metadata.otherLanguages?.length) {\n <div data-test=\"details-panel-other-languages\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n @for (language of metadata.otherLanguages; track language) {\n <p class=\"text-primary font-medium other-languages\" translate>\n language.{{ language }}\n </p>\n }\n </div>\n </div>\n }\n @if (metadata.kind === 'dataset' && temporalExtent) {\n <div data-test=\"details-panel-temporal-extent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div\n class=\"flex flex-row gap-1 mb-1 text-primary font-medium temporal-extent\"\n >\n @if (temporalExtent.start && temporalExtent.end) {\n <p\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n }\n @if (temporalExtent.start && !temporalExtent.end) {\n <p translate [translateParams]=\"{ start: temporalExtent.start }\">\n record.metadata.temporalExtent.sinceDate\n </p>\n }\n @if (!temporalExtent.start && temporalExtent.end) {\n <p translate [translateParams]=\"{ end: temporalExtent.end }\">\n record.metadata.temporalExtent.untilDate\n </p>\n }\n </div>\n </div>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n@if (\n metadata.kind !== 'dataset' &&\n metadata.spatialExtents &&\n metadata.spatialExtents.length\n) {\n <gn-ui-expandable-panel\n [title]=\"'service.metadata.spatialExtent' | translate\"\n data-test=\"spatial-extent-panel\"\n >\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n </gn-ui-expandable-panel>\n}\n@if (metadata.landingPage) {\n <gn-ui-expandable-panel\n [title]=\"'service.metadata.other' | translate\"\n data-test=\"other-panel\"\n >\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n @if (metadata.recordUpdated) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p\n class=\"text-primary font-medium\"\n [gnUiHumanizeDate]=\"metadata.recordUpdated\"\n ></p>\n </div>\n }\n @if (metadata.landingPage) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{\n metadata.landingPage\n }}</span>\n </a>\n </p>\n </div>\n }\n @if (metadata.ownerOrganization) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n }\n @if (metadata.uniqueIdentifier) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n }\n @if (metadata.topics?.length) {\n <div>\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n @for (topic of metadata.topics; track topic) {\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n >{{ topic }}</gn-ui-badge\n >\n }\n </div>\n </div>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}\n"] }]
|
|
34719
|
+
], template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n @if (metadata.abstract) {\n <gn-ui-max-lines [maxLines]=\"6\" data-test=\"metadata-info-abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n }\n </gn-ui-content-ghost>\n\n @if (!fieldReady('keywords') || metadata.keywords?.length) {\n <p class=\"mt-6 mb-3 font-medium text-black text-sm\" translate>\n record.metadata.keywords\n </p>\n }\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n @if (metadata.keywords?.length) {\n <gn-ui-max-lines [maxLines]=\"7\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n @for (keyword of metadata.keywords; track keyword) {\n <gn-ui-button\n type=\"primary-light\"\n class=\"inline-block opacity-70\"\n extraClass=\"lowercase text-sm py-1 px-2\"\n (buttonClick)=\"onKeywordClick(keyword)\"\n >{{ keyword.label }}</gn-ui-button\n >\n }\n </div>\n </gn-ui-max-lines>\n }\n </gn-ui-content-ghost>\n</div>\n\n@if (\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n) {\n <gn-ui-expandable-panel\n [title]=\"'record.metadata.usage' | translate\"\n data-test=\"usage-panel\"\n >\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n @for (license of licenses; track $index) {\n @if (license.url) {\n <div class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n } @else {\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n }\n }\n @if (legalConstraints.length) {\n <div class=\"mb-6\">\n @for (constraint of legalConstraints; track constraint) {\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n }\n </div>\n }\n @if (otherConstraints.length) {\n @for (constraint of otherConstraints; track constraint) {\n <div gnUiLinkify>\n <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n }\n }\n @if (!hasUsage) {\n <span class=\"noUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n@if (metadata.contactsForResource?.length) {\n <gn-ui-expandable-panel\n [title]=\"'record.metadata.resource.contacts' | translate\"\n data-test=\"contacts-panel\"\n >\n <div class=\"flex flex-col gap-1 pt-3 pb-4\">\n @for (group of contactGroups; track group.role) {\n <div class=\"flex flex-col gap-1 rounded py-4 px-2\">\n <p class=\"text-xs font-normal text-black\">\n {{ group.roleLabel | translate }}\n </p>\n <div class=\"grid gap-1 grid-cols-1 md:grid-cols-2\">\n @for (contact of group.contacts; track contact.email) {\n <gn-ui-contact-pill [contact]=\"contact\"></gn-ui-contact-pill>\n }\n </div>\n </div>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n@if (\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceCreated ||\n metadata.resourcePublished ||\n metadata.resourceUpdated ||\n (metadata.kind === 'dataset' && metadata.updateFrequency) ||\n metadata.otherLanguages?.length ||\n (metadata.kind === 'dataset' && temporalExtent)\n) {\n <gn-ui-expandable-panel\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n >\n @if (metadata.kind === 'dataset' && metadata.lineage) {\n <div\n class=\"text-gray-900 flex flex-col mt-4 gap-2\"\n data-test=\"details-panel-lineage\"\n >\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n }\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n @if (metadata.resourceCreated) {\n <div data-test=\"details-panel-resource-created\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p\n class=\"text-primary font-medium mt-1 resource-created\"\n [gnUiHumanizeDate]=\"metadata.resourceCreated\"\n ></p>\n </div>\n }\n @if (metadata.resourcePublished) {\n <div data-test=\"details-panel-resource-published\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p\n class=\"text-primary font-medium mt-1 resource-published\"\n [gnUiHumanizeDate]=\"metadata.resourcePublished\"\n ></p>\n </div>\n }\n @if (metadata.resourceUpdated) {\n <div data-test=\"details-panel-resource-updated\">\n <p class=\"text-sm\" translate>record.metadata.update</p>\n <p\n class=\"text-primary font-medium mt-1 resource-updated\"\n [gnUiHumanizeDate]=\"metadata.resourceUpdated\"\n ></p>\n </div>\n }\n @if (metadata.kind === 'dataset' && metadata.updateFrequency) {\n <div data-test=\"details-panel-update-frequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n }\n @if (metadata.otherLanguages?.length) {\n <div data-test=\"details-panel-other-languages\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n @for (language of metadata.otherLanguages; track language) {\n <p class=\"text-primary font-medium other-languages\" translate>\n language.{{ language }}\n </p>\n }\n </div>\n </div>\n }\n @if (metadata.kind === 'dataset' && temporalExtent) {\n <div data-test=\"details-panel-temporal-extent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div\n class=\"flex flex-row gap-1 mb-1 text-primary font-medium temporal-extent\"\n >\n @if (temporalExtent.start && temporalExtent.end) {\n <p\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n }\n @if (temporalExtent.start && !temporalExtent.end) {\n <p translate [translateParams]=\"{ start: temporalExtent.start }\">\n record.metadata.temporalExtent.sinceDate\n </p>\n }\n @if (!temporalExtent.start && temporalExtent.end) {\n <p translate [translateParams]=\"{ end: temporalExtent.end }\">\n record.metadata.temporalExtent.untilDate\n </p>\n }\n </div>\n </div>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n@if (\n metadata.kind !== 'dataset' &&\n metadata.spatialExtents &&\n metadata.spatialExtents.length\n) {\n <gn-ui-expandable-panel\n [title]=\"'service.metadata.spatialExtent' | translate\"\n data-test=\"spatial-extent-panel\"\n >\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n </gn-ui-expandable-panel>\n}\n@if (metadata.landingPage) {\n <gn-ui-expandable-panel\n [title]=\"'service.metadata.other' | translate\"\n data-test=\"other-panel\"\n >\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n @if (metadata.recordUpdated) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p\n class=\"text-primary font-medium\"\n [gnUiHumanizeDate]=\"metadata.recordUpdated\"\n ></p>\n </div>\n }\n @if (metadata.landingPage) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{\n metadata.landingPage\n }}</span>\n </a>\n </p>\n </div>\n }\n @if (metadata.ownerOrganization) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n }\n @if (metadata.uniqueIdentifier) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n }\n @if (metadata.topics?.length) {\n <div>\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n @for (topic of metadata.topics; track topic) {\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n >{{ topic }}</gn-ui-badge\n >\n }\n </div>\n </div>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}\n"] }]
|
|
34584
34720
|
}], propDecorators: { metadata: [{
|
|
34585
34721
|
type: Input
|
|
34586
34722
|
}], incomplete: [{
|
|
@@ -40686,12 +40822,20 @@ class MapViewComponent {
|
|
|
40686
40822
|
layers: [],
|
|
40687
40823
|
view: null,
|
|
40688
40824
|
}), withLatestFrom$1(this.mdViewFacade.metadata$), map$1(([context, metadata]) => {
|
|
40825
|
+
// overlay the record's declared spatial extent on top of the data layers
|
|
40826
|
+
const extentLayer = this.mapUtils.getRecordExtentLayer(metadata);
|
|
40827
|
+
const layers = extentLayer
|
|
40828
|
+
? [...context.layers, extentLayer]
|
|
40829
|
+
: context.layers;
|
|
40830
|
+
// the view (initial zoom) is derived from the data layer or, as a
|
|
40831
|
+
// fallback, from the record extent — independently from the overlay above
|
|
40689
40832
|
if (context.view)
|
|
40690
|
-
return context;
|
|
40833
|
+
return { ...context, layers };
|
|
40691
40834
|
const extent = this.mapUtils.getRecordExtent(metadata);
|
|
40692
40835
|
const view = extent ? { extent } : null;
|
|
40693
40836
|
return {
|
|
40694
40837
|
...context,
|
|
40838
|
+
layers,
|
|
40695
40839
|
view,
|
|
40696
40840
|
};
|
|
40697
40841
|
}), shareReplay$1(1));
|
|
@@ -41820,76 +41964,86 @@ const SPATIAL_SCOPES = [
|
|
|
41820
41964
|
},
|
|
41821
41965
|
];
|
|
41822
41966
|
/************************************************************
|
|
41823
|
-
***************
|
|
41967
|
+
*************** ISO TOPICS **************
|
|
41824
41968
|
************************************************************
|
|
41825
41969
|
*/
|
|
41826
|
-
|
|
41827
|
-
|
|
41970
|
+
// label keys mirror the ISO MD_TopicCategoryCode value for consistency
|
|
41971
|
+
// TODO: correctly handle code lists; for instance, this code list is specific to ISO 19139
|
|
41972
|
+
const ISO_TOPICS = [
|
|
41973
|
+
{ value: 'biota', label: marker('editor.record.form.topics.iso.biota') },
|
|
41828
41974
|
{
|
|
41829
41975
|
value: 'boundaries',
|
|
41830
|
-
label: 'editor.record.form.topics.
|
|
41976
|
+
label: marker('editor.record.form.topics.iso.boundaries'),
|
|
41831
41977
|
},
|
|
41832
41978
|
{
|
|
41833
41979
|
value: 'climatologyMeteorologyAtmosphere',
|
|
41834
|
-
label: 'editor.record.form.topics.
|
|
41980
|
+
label: marker('editor.record.form.topics.iso.climatologyMeteorologyAtmosphere'),
|
|
41981
|
+
},
|
|
41982
|
+
{
|
|
41983
|
+
value: 'economy',
|
|
41984
|
+
label: marker('editor.record.form.topics.iso.economy'),
|
|
41985
|
+
},
|
|
41986
|
+
{
|
|
41987
|
+
value: 'elevation',
|
|
41988
|
+
label: marker('editor.record.form.topics.iso.elevation'),
|
|
41835
41989
|
},
|
|
41836
|
-
{ value: 'economy', label: 'editor.record.form.topics.inspire.economy' },
|
|
41837
|
-
{ value: 'elevation', label: 'editor.record.form.topics.inspire.elevation' },
|
|
41838
41990
|
{
|
|
41839
41991
|
value: 'environment',
|
|
41840
|
-
label: 'editor.record.form.topics.
|
|
41992
|
+
label: marker('editor.record.form.topics.iso.environment'),
|
|
41841
41993
|
},
|
|
41842
|
-
{ value: 'farming', label: 'editor.record.form.topics.inspire.farming' },
|
|
41843
41994
|
{
|
|
41844
|
-
value: '
|
|
41845
|
-
label: 'editor.record.form.topics.
|
|
41995
|
+
value: 'farming',
|
|
41996
|
+
label: marker('editor.record.form.topics.iso.farming'),
|
|
41997
|
+
},
|
|
41998
|
+
{
|
|
41999
|
+
value: 'geoscientificInformation',
|
|
42000
|
+
label: marker('editor.record.form.topics.iso.geoscientificInformation'),
|
|
42001
|
+
},
|
|
42002
|
+
{
|
|
42003
|
+
value: 'health',
|
|
42004
|
+
label: marker('editor.record.form.topics.iso.health'),
|
|
41846
42005
|
},
|
|
41847
|
-
{ value: 'health', label: 'editor.record.form.topics.inspire.health' },
|
|
41848
42006
|
{
|
|
41849
42007
|
value: 'imageryBaseMapsEarthCover',
|
|
41850
|
-
label: 'editor.record.form.topics.
|
|
42008
|
+
label: marker('editor.record.form.topics.iso.imageryBaseMapsEarthCover'),
|
|
42009
|
+
},
|
|
42010
|
+
{
|
|
42011
|
+
value: 'inlandWaters',
|
|
42012
|
+
label: marker('editor.record.form.topics.iso.inlandWaters'),
|
|
41851
42013
|
},
|
|
41852
|
-
{ value: 'inlandWaters', label: 'editor.record.form.topics.inspire.waters' },
|
|
41853
42014
|
{
|
|
41854
42015
|
value: 'intelligenceMilitary',
|
|
41855
|
-
label: 'editor.record.form.topics.
|
|
42016
|
+
label: marker('editor.record.form.topics.iso.intelligenceMilitary'),
|
|
42017
|
+
},
|
|
42018
|
+
{
|
|
42019
|
+
value: 'location',
|
|
42020
|
+
label: marker('editor.record.form.topics.iso.location'),
|
|
42021
|
+
},
|
|
42022
|
+
{
|
|
42023
|
+
value: 'oceans',
|
|
42024
|
+
label: marker('editor.record.form.topics.iso.oceans'),
|
|
41856
42025
|
},
|
|
41857
|
-
{ value: 'Location', label: 'editor.record.form.topics.inspire.location' },
|
|
41858
|
-
{ value: 'Oceans', label: 'editor.record.form.topics.inspire.oceans' },
|
|
41859
42026
|
{
|
|
41860
42027
|
value: 'planningCadastre',
|
|
41861
|
-
label: 'editor.record.form.topics.
|
|
42028
|
+
label: marker('editor.record.form.topics.iso.planningCadastre'),
|
|
42029
|
+
},
|
|
42030
|
+
{
|
|
42031
|
+
value: 'society',
|
|
42032
|
+
label: marker('editor.record.form.topics.iso.society'),
|
|
42033
|
+
},
|
|
42034
|
+
{
|
|
42035
|
+
value: 'structure',
|
|
42036
|
+
label: marker('editor.record.form.topics.iso.structure'),
|
|
41862
42037
|
},
|
|
41863
|
-
{ value: 'Society', label: 'editor.record.form.topics.inspire.society' },
|
|
41864
|
-
{ value: 'Structure', label: 'editor.record.form.topics.inspire.structure' },
|
|
41865
42038
|
{
|
|
41866
|
-
value: '
|
|
41867
|
-
label: 'editor.record.form.topics.
|
|
42039
|
+
value: 'transportation',
|
|
42040
|
+
label: marker('editor.record.form.topics.iso.transportation'),
|
|
41868
42041
|
},
|
|
41869
42042
|
{
|
|
41870
42043
|
value: 'utilitiesCommunication',
|
|
41871
|
-
label: 'editor.record.form.topics.
|
|
42044
|
+
label: marker('editor.record.form.topics.iso.utilitiesCommunication'),
|
|
41872
42045
|
},
|
|
41873
42046
|
];
|
|
41874
|
-
marker('editor.record.form.topics.inspire.biota');
|
|
41875
|
-
marker('editor.record.form.topics.inspire.boundaries');
|
|
41876
|
-
marker('editor.record.form.topics.inspire.climatology');
|
|
41877
|
-
marker('editor.record.form.topics.inspire.economy');
|
|
41878
|
-
marker('editor.record.form.topics.inspire.elevation');
|
|
41879
|
-
marker('editor.record.form.topics.inspire.environnement');
|
|
41880
|
-
marker('editor.record.form.topics.inspire.farming');
|
|
41881
|
-
marker('editor.record.form.topics.inspire.geoscientific');
|
|
41882
|
-
marker('editor.record.form.topics.inspire.health');
|
|
41883
|
-
marker('editor.record.form.topics.inspire.imagery');
|
|
41884
|
-
marker('editor.record.form.topics.inspire.intelligence');
|
|
41885
|
-
marker('editor.record.form.topics.inspire.location');
|
|
41886
|
-
marker('editor.record.form.topics.inspire.oceans');
|
|
41887
|
-
marker('editor.record.form.topics.inspire.planning');
|
|
41888
|
-
marker('editor.record.form.topics.inspire.society');
|
|
41889
|
-
marker('editor.record.form.topics.inspire.structure');
|
|
41890
|
-
marker('editor.record.form.topics.inspire.transportation');
|
|
41891
|
-
marker('editor.record.form.topics.inspire.utilities');
|
|
41892
|
-
marker('editor.record.form.topics.inspire.waters');
|
|
41893
42047
|
|
|
41894
42048
|
const EDITOR_FEATURE_KEY = 'editor';
|
|
41895
42049
|
const initialEditorState = {
|
|
@@ -44254,7 +44408,7 @@ class FormFieldTopicsComponent {
|
|
|
44254
44408
|
this.translateService = inject(TranslateService);
|
|
44255
44409
|
this.topics = [];
|
|
44256
44410
|
this.valueChange = new EventEmitter();
|
|
44257
|
-
this.availableTopics =
|
|
44411
|
+
this.availableTopics = ISO_TOPICS.map((topic) => {
|
|
44258
44412
|
return {
|
|
44259
44413
|
label: this.translateService.instant(topic.label),
|
|
44260
44414
|
value: topic.value,
|
|
@@ -45075,5 +45229,5 @@ const CHART_TYPE_VALUES = [
|
|
|
45075
45229
|
* Generated bundle index. Do not edit.
|
|
45076
45230
|
*/
|
|
45077
45231
|
|
|
45078
|
-
export { ABOUT_SECTION, ADD_RESULTS, ADD_SEARCH, ANNEXES_SECTION, ASSOCIATED_RESOURCES_SECTION, AVAILABLE_LICENSES, AbstractAction, AbstractSearchField, ActionMenuComponent, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CHART_TYPE_VALUES, CLASSIFICATION_SECTION, CLEAR_ERROR, CLEAR_RESULTS, CONSTRAINTS_SHORTCUTS, CONTACTS, CONTACTS_FOR_RESOURCE_FIELD, CarouselComponent, CatalogTitleComponent, CellPopinComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContactDetailsComponent, ContactPillComponent, ContentGhostComponent, CopyTextButtonComponent, DATA_MANAGERS_SECTION, DEFAULT_CONFIGURATION, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DISABLE_AUTH, DISABLE_DRAFT, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangeInputsComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalLinkCardComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetItemComponent, FacetListComponent, FacetsContainerComponent, FavoriteStarComponent, FavoritesService, FeatureCatalogListComponent, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldFocusDirective, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldTopicsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GEOGRAPHICAL_COVERAGE_SECTION, GEONETWORK_UI_TAG_NAME, GEONETWORK_UI_VERSION, GeoDataBadgeComponent, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GnUiHumanizeDateDirective, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, INSPIRE_TOPICS, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InlineFilterComponent, InteractiveTableColumnComponent, InteractiveTableComponent, InternalLinkCardComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, KindBadgeComponent, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LEGAL_CONSTRAINTS_FIELD, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, MAX_UPLOAD_SIZE_MB, METADATA_LANGUAGE, METADATA_POINT_OF_CONTACT_SECTION, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataDoiComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, MetadataQualityPanelComponent, ModalDialogComponent, MultilingualPanelComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NotificationComponent, NotificationsContainerComponent, NotificationsService, OPEN_DATA_LICENSE, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OTHER_CONSTRAINTS_FIELD, OnlineResourceCardComponent, OnlineServiceResourceInputComponent, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OrganizationsServiceInterface, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PlatformServiceInterface, PopoverComponent, PopupAlertComponent, PossibleResourceTypes, PossibleResourceTypesDefinition, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_ABSTRACT_FIELD, RECORD_DATASET_URL_TOKEN, RECORD_GRAPHICAL_OVERVIEW_FIELD, RECORD_KEYWORDS_FIELD, RECORD_LICENSE_FIELD, RECORD_ONLINE_LINK_RESOURCES, RECORD_ONLINE_RESOURCES, RECORD_RESOURCE_CREATED_FIELD, RECORD_RESOURCE_UPDATED_FIELD, RECORD_REUSE_URL_TOKEN, RECORD_SERVICE_URL_TOKEN, RECORD_SPATIAL_EXTENTS_FIELD, RECORD_SPATIAL_TOGGLE_FIELD, RECORD_TEMPORAL_EXTENTS_FIELD, RECORD_TITLE_FIELD, RECORD_TOPICS_FIELD, RECORD_UNIQUE_IDENTIFIER_FIELD, RECORD_UPDATED_FIELD, RECORD_UPDATE_FREQUENCY_FIELD, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESOURCE_IDENTIFIER_FIELD, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_REUSE, ROUTER_ROUTE_SEARCH, ROUTER_ROUTE_SERVICE, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordKindField, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordStatusValues, RecordsMetricsComponent, RecordsRepositoryInterface, RecordsService, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResourceTypeLegacyField, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsHitsSearchKindComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, ReusePresentationForms, RoleLabels, RoleValues, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SECURITY_CONSTRAINTS_FIELD, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SPATIAL_SCOPES, SearchEffects, SearchFacade, SearchFeatureCatalogComponent, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, ServiceCapabilitiesComponent, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortByEnum, SortableListComponent, SourceLabelComponent, SourcesService, SpatialExtentComponent, SpinningLoaderComponent, StacItemsResultGridComponent, StacViewComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TITLE_SECTION, TOPICS_SECTION, TRANSLATE_DEBUG_CONFIG, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, TruncatedTextComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, USE_AND_ACCESS_CONDITIONS_SECTION, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getAddressLines, getAllKeysValidator, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryBoundingBox, getGeometryFromGeoJSON, getGlobalConfig, getIndividualDisplayName, getIsMobile, getJsonDataItemsProxy, getLayers, getLinkId, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalEditorConfig, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getQualityValidators, getResourceType, getReusePresentationForm, getReuseType, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, handleScrollOnNavigation, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, kindToCodeListValue, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, organizationsServiceFactory, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideI18n, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setEditorConfiguration, setFieldVisibility, setFocusedField, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, toIndividual, toLang2, toLang3, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateFrequencyCodeValues, updateLanguages, updateRecordField, updateRecordLanguages, wmsLayerFlatten, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
|
|
45232
|
+
export { ABOUT_SECTION, ADD_RESULTS, ADD_SEARCH, ANNEXES_SECTION, ASSOCIATED_RESOURCES_SECTION, AVAILABLE_LICENSES, AbstractAction, AbstractSearchField, ActionMenuComponent, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CHART_TYPE_VALUES, CLASSIFICATION_SECTION, CLEAR_ERROR, CLEAR_RESULTS, CONSTRAINTS_SHORTCUTS, CONTACTS, CONTACTS_FOR_RESOURCE_FIELD, CarouselComponent, CatalogTitleComponent, CellPopinComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContactDetailsComponent, ContactPillComponent, ContentGhostComponent, CopyTextButtonComponent, DATA_MANAGERS_SECTION, DEFAULT_CONFIGURATION, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RECORD_CONVERTER, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_SPATIAL_EXTENT_STYLE, DISABLE_AUTH, DISABLE_DRAFT, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangeInputsComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalLinkCardComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetItemComponent, FacetListComponent, FacetsContainerComponent, FavoriteStarComponent, FavoritesService, FeatureCatalogListComponent, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldFocusDirective, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldTopicsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GEOGRAPHICAL_COVERAGE_SECTION, GEONETWORK_UI_TAG_NAME, GEONETWORK_UI_VERSION, GeoDataBadgeComponent, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GnUiHumanizeDateDirective, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ISO_TOPICS, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InlineFilterComponent, InteractiveTableColumnComponent, InteractiveTableComponent, InternalLinkCardComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, KindBadgeComponent, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LEGAL_CONSTRAINTS_FIELD, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, MAX_UPLOAD_SIZE_MB, METADATA_LANGUAGE, METADATA_POINT_OF_CONTACT_SECTION, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataDoiComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, MetadataQualityPanelComponent, ModalDialogComponent, MultilingualPanelComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NotificationComponent, NotificationsContainerComponent, NotificationsService, OPEN_DATA_LICENSE, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OTHER_CONSTRAINTS_FIELD, OnlineResourceCardComponent, OnlineServiceResourceInputComponent, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OrganizationsServiceInterface, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PlatformServiceInterface, PopoverComponent, PopupAlertComponent, PossibleResourceTypes, PossibleResourceTypesDefinition, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_ABSTRACT_FIELD, RECORD_DATASET_URL_TOKEN, RECORD_GRAPHICAL_OVERVIEW_FIELD, RECORD_KEYWORDS_FIELD, RECORD_LICENSE_FIELD, RECORD_ONLINE_LINK_RESOURCES, RECORD_ONLINE_RESOURCES, RECORD_RESOURCE_CREATED_FIELD, RECORD_RESOURCE_UPDATED_FIELD, RECORD_REUSE_URL_TOKEN, RECORD_SERVICE_URL_TOKEN, RECORD_SPATIAL_EXTENTS_FIELD, RECORD_SPATIAL_TOGGLE_FIELD, RECORD_TEMPORAL_EXTENTS_FIELD, RECORD_TITLE_FIELD, RECORD_TOPICS_FIELD, RECORD_UNIQUE_IDENTIFIER_FIELD, RECORD_UPDATED_FIELD, RECORD_UPDATE_FREQUENCY_FIELD, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESOURCE_IDENTIFIER_FIELD, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_REUSE, ROUTER_ROUTE_SEARCH, ROUTER_ROUTE_SERVICE, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordKindField, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordStatusValues, RecordsMetricsComponent, RecordsRepositoryInterface, RecordsService, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResourceTypeLegacyField, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsHitsSearchKindComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, ReusePresentationForms, RoleLabels, RoleValues, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SECURITY_CONSTRAINTS_FIELD, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SPATIAL_SCOPES, SearchEffects, SearchFacade, SearchFeatureCatalogComponent, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, ServiceCapabilitiesComponent, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortByEnum, SortableListComponent, SourceLabelComponent, SourcesService, SpatialExtentComponent, SpinningLoaderComponent, StacItemsResultGridComponent, StacViewComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TITLE_SECTION, TOPICS_SECTION, TRANSLATE_DEBUG_CONFIG, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, TruncatedTextComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, USE_AND_ACCESS_CONDITIONS_SECTION, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, bboxToPolygon, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, createSpatialExtentLayer, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getAddressLines, getAllKeysValidator, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryBoundingBox, getGeometryFromGeoJSON, getGlobalConfig, getIndividualDisplayName, getIsMobile, getJsonDataItemsProxy, getLayers, getLinkId, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalEditorConfig, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getQualityValidators, getResourceType, getReusePresentationForm, getReuseType, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, handleScrollOnNavigation, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, kindToCodeListValue, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, organizationsServiceFactory, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideI18n, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setEditorConfiguration, setFieldVisibility, setFocusedField, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, spatialExtentToGeometry, spatialExtentsToFeatureCollection, stripHtml, stripNamespace, tableItemsFixture, toDate, toIndividual, toLang2, toLang3, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateFrequencyCodeValues, updateLanguages, updateRecordField, updateRecordLanguages, wmsLayerFlatten, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
|
|
45079
45233
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|