geonetwork-ui 2.8.0-dev.5a12f5e98 → 2.8.0-dev.6ea037ab6
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/esm2022/libs/api/metadata-converter/src/lib/common/distribution.mapper.mjs +3 -1
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +2 -1
- package/esm2022/libs/api/repository/src/lib/gn4/auth/auth.service.mjs +2 -2
- package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +10 -10
- package/esm2022/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.mjs +3 -2
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +2 -1
- package/esm2022/libs/common/domain/src/lib/model/search/sort-by.model.mjs +6 -1
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +2 -1
- package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +5 -1
- package/esm2022/libs/feature/router/src/lib/default/state/router.effects.mjs +9 -7
- package/esm2022/libs/feature/search/src/lib/sort-by/sort-by.component.mjs +8 -12
- package/esm2022/libs/ui/elements/src/lib/external-link-card/external-link-card.component.mjs +11 -4
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +2 -3
- package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +3 -1
- package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +12 -1
- package/esm2022/libs/util/shared/src/lib/services/proxy.service.mjs +9 -11
- package/esm2022/libs/util/shared/src/lib/utils/sort-by.mjs +9 -6
- package/esm2022/translations/de.json +6 -2
- package/esm2022/translations/en.json +6 -3
- package/esm2022/translations/es.json +6 -2
- package/esm2022/translations/fr.json +6 -2
- package/esm2022/translations/it.json +6 -2
- package/esm2022/translations/nl.json +6 -2
- package/esm2022/translations/pt.json +6 -2
- package/esm2022/translations/sk.json +6 -2
- package/fesm2022/geonetwork-ui.mjs +121 -61
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/common/distribution.mapper.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/auth/auth.service.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +7 -7
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/search/sort-by.model.d.ts.map +1 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/router.service.d.ts +2 -0
- package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/state/router.effects.d.ts +3 -1
- package/libs/feature/router/src/lib/default/state/router.effects.d.ts.map +1 -1
- package/libs/feature/search/src/lib/sort-by/sort-by.component.d.ts +4 -3
- package/libs/feature/search/src/lib/sort-by/sort-by.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/external-link-card/external-link-card.component.d.ts +3 -2
- package/libs/ui/elements/src/lib/external-link-card/external-link-card.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts.map +1 -1
- package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
- package/libs/util/shared/src/lib/links/link-utils.d.ts +6 -0
- package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
- package/libs/util/shared/src/lib/services/proxy.service.d.ts +5 -4
- package/libs/util/shared/src/lib/services/proxy.service.d.ts.map +1 -1
- package/libs/util/shared/src/lib/utils/sort-by.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/lib/common/distribution.mapper.ts +1 -0
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +1 -0
- package/src/libs/api/repository/src/lib/gn4/auth/auth.service.ts +4 -1
- package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +37 -36
- package/src/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.ts +3 -2
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +2 -0
- package/src/libs/common/domain/src/lib/model/search/sort-by.model.ts +5 -0
- package/src/libs/common/fixtures/src/lib/link.fixtures.ts +9 -0
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +1 -0
- package/src/libs/feature/router/src/lib/default/router.service.ts +8 -0
- package/src/libs/feature/router/src/lib/default/state/router.effects.ts +6 -7
- package/src/libs/feature/search/src/lib/sort-by/sort-by.component.ts +8 -12
- package/src/libs/ui/elements/src/lib/external-link-card/external-link-card.component.html +43 -22
- package/src/libs/ui/elements/src/lib/external-link-card/external-link-card.component.ts +12 -3
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +2 -2
- package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +4 -2
- package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +2 -0
- package/src/libs/util/shared/src/lib/links/link-utils.ts +11 -0
- package/src/libs/util/shared/src/lib/services/proxy.service.ts +6 -2
- package/src/libs/util/shared/src/lib/utils/sort-by.ts +8 -5
- package/translations/de.json +6 -2
- package/translations/en.json +6 -3
- package/translations/es.json +6 -2
- package/translations/fr.json +6 -2
- package/translations/it.json +6 -2
- package/translations/nl.json +6 -2
- package/translations/pt.json +6 -2
- package/translations/sk.json +6 -2
|
@@ -15,7 +15,7 @@ import { TranslateCompiler, TranslateLoader, TranslateDefaultParser, TranslatePa
|
|
|
15
15
|
import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
|
|
16
16
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
17
17
|
import { map as map$1, shareReplay as shareReplay$1, catchError, tap as tap$1, filter as filter$1, startWith as startWith$1, withLatestFrom, switchMap as switchMap$1, take, mergeMap, delay, distinctUntilChanged, debounceTime, finalize, throttleTime, first as first$1, pairwise as pairwise$1, share, defaultIfEmpty, toArray } from 'rxjs/operators';
|
|
18
|
-
import { of, map as map$2, lastValueFrom, fromEvent, startWith, shareReplay, filter, pairwise,
|
|
18
|
+
import { of, map as map$2, lastValueFrom, fromEvent, startWith, shareReplay, filter, pairwise, switchMap, Subject, combineLatest, from, exhaustMap, throwError, forkJoin, takeLast, firstValueFrom, merge, BehaviorSubject, timer, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, animationFrameScheduler, debounceTime as debounceTime$1, Observable, buffer, tap as tap$2, combineLatestWith, take as take$1, catchError as catchError$1, takeUntil, EMPTY, mergeMap as mergeMap$1, withLatestFrom as withLatestFrom$1 } from 'rxjs';
|
|
19
19
|
import { lt, valid, coerce, satisfies, ltr } from 'semver';
|
|
20
20
|
import chroma from 'chroma-js';
|
|
21
21
|
import * as i1$2 from '@angular/common';
|
|
@@ -666,6 +666,8 @@ function matchProtocol(protocol) {
|
|
|
666
666
|
return 'esriRest';
|
|
667
667
|
if (/DOWNLOAD-1/i.test(protocol))
|
|
668
668
|
return 'GPFDL';
|
|
669
|
+
if (/DB:POSTGIS/i.test(protocol))
|
|
670
|
+
return 'postgis';
|
|
669
671
|
return 'other';
|
|
670
672
|
}
|
|
671
673
|
function matchMimeType(format) {
|
|
@@ -914,6 +916,7 @@ marker('record.metadata.api.accessServiceProtocol.ogcFeatures');
|
|
|
914
916
|
marker('record.metadata.api.accessServiceProtocol.GPFDL');
|
|
915
917
|
marker('record.metadata.api.accessServiceProtocol.tms');
|
|
916
918
|
marker('record.metadata.api.accessServiceProtocol.maplibre-style');
|
|
919
|
+
marker('record.metadata.api.accessServiceProtocol.postgis');
|
|
917
920
|
marker('record.metadata.api.accessServiceProtocol.other');
|
|
918
921
|
|
|
919
922
|
function getUpdateFrequencyFromFrequencyCode(frequencyCode) {
|
|
@@ -19159,6 +19162,7 @@ var de = {
|
|
|
19159
19162
|
"record.metadata.api.accessServiceProtocol.maplibre-style": "",
|
|
19160
19163
|
"record.metadata.api.accessServiceProtocol.ogcFeatures": "",
|
|
19161
19164
|
"record.metadata.api.accessServiceProtocol.other": "",
|
|
19165
|
+
"record.metadata.api.accessServiceProtocol.postgis": "",
|
|
19162
19166
|
"record.metadata.api.accessServiceProtocol.tms": "",
|
|
19163
19167
|
"record.metadata.api.accessServiceProtocol.wfs": "",
|
|
19164
19168
|
"record.metadata.api.accessServiceProtocol.wms": "",
|
|
@@ -19206,7 +19210,8 @@ var de = {
|
|
|
19206
19210
|
"record.metadata.isGeographical": "Geographischer Datensatz",
|
|
19207
19211
|
"record.metadata.keywords": "Stichworte",
|
|
19208
19212
|
"record.metadata.languages": "Sprachen",
|
|
19209
|
-
"record.metadata.
|
|
19213
|
+
"record.metadata.link.postgis.table": "",
|
|
19214
|
+
"record.metadata.link.postgis.tooltip": "",
|
|
19210
19215
|
"record.metadata.linked.datasets": "Verknüpfte Datensätze",
|
|
19211
19216
|
"record.metadata.linked.records": "Verknüpfte Inhalte",
|
|
19212
19217
|
"record.metadata.linked.reuses": "Verknüpfte Wiederverwendungen",
|
|
@@ -19247,6 +19252,9 @@ var de = {
|
|
|
19247
19252
|
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
19248
19253
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
19249
19254
|
"record.metadata.related": "Entdecken Sie den Katalog",
|
|
19255
|
+
"record.metadata.resourceCreated": "Erstellt am {date}",
|
|
19256
|
+
"record.metadata.resourcePublished": "Veröffentlicht am {date}",
|
|
19257
|
+
"record.metadata.resourceUpdated": "Zuletzt aktualisiert am {date}",
|
|
19250
19258
|
"record.metadata.ressources.and.links": "Ressourcen und Links",
|
|
19251
19259
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
19252
19260
|
"record.metadata.status": "Status",
|
|
@@ -19283,7 +19291,6 @@ var de = {
|
|
|
19283
19291
|
"results.records.hits.found": "{hits, plural, =0{Keine Ressource entsprechen der angegebenen Suche.} one{1 Ressource gefunden.} other{{hits} Ressourcen gefunden.}}",
|
|
19284
19292
|
"results.records.hits.selected": "{ amount } ausgewählt",
|
|
19285
19293
|
"results.showMore": "Mehr Ergebnisse anzeigen...",
|
|
19286
|
-
"results.sortBy.changeDate": "",
|
|
19287
19294
|
"results.sortBy.dateStamp": "Neueste",
|
|
19288
19295
|
"results.sortBy.popularity": "Beliebtheit",
|
|
19289
19296
|
"results.sortBy.qualityScore": "Fertigstellungsanzeige",
|
|
@@ -19634,7 +19641,6 @@ var en = {
|
|
|
19634
19641
|
"editor.record.form.topics.inspire.intelligence": "Intelligence / Military",
|
|
19635
19642
|
"editor.record.form.topics.inspire.location": "Location",
|
|
19636
19643
|
"editor.record.form.topics.inspire.oceans": "Oceans",
|
|
19637
|
-
"editor.record.form.topics.inspire.placeholder": "Select an INSPIRE theme",
|
|
19638
19644
|
"editor.record.form.topics.inspire.planning": "Planning / Cadastre",
|
|
19639
19645
|
"editor.record.form.topics.inspire.society": "Society",
|
|
19640
19646
|
"editor.record.form.topics.inspire.structure": "Structure",
|
|
@@ -19812,6 +19818,7 @@ var en = {
|
|
|
19812
19818
|
"record.metadata.api.accessServiceProtocol.maplibre-style": "maplibre-style",
|
|
19813
19819
|
"record.metadata.api.accessServiceProtocol.ogcFeatures": "ogcFeatures",
|
|
19814
19820
|
"record.metadata.api.accessServiceProtocol.other": "other",
|
|
19821
|
+
"record.metadata.api.accessServiceProtocol.postgis": "PostGIS",
|
|
19815
19822
|
"record.metadata.api.accessServiceProtocol.tms": "tms",
|
|
19816
19823
|
"record.metadata.api.accessServiceProtocol.wfs": "wfs",
|
|
19817
19824
|
"record.metadata.api.accessServiceProtocol.wms": "wms",
|
|
@@ -19859,7 +19866,8 @@ var en = {
|
|
|
19859
19866
|
"record.metadata.isGeographical": "Geographical dataset",
|
|
19860
19867
|
"record.metadata.keywords": "Keywords",
|
|
19861
19868
|
"record.metadata.languages": "Languages",
|
|
19862
|
-
"record.metadata.
|
|
19869
|
+
"record.metadata.link.postgis.table": "table :",
|
|
19870
|
+
"record.metadata.link.postgis.tooltip": "PostGIS resources do not have access links",
|
|
19863
19871
|
"record.metadata.linked.datasets": "Associated datasets",
|
|
19864
19872
|
"record.metadata.linked.records": "Associated content",
|
|
19865
19873
|
"record.metadata.linked.reuses": "Associated reuses",
|
|
@@ -19900,6 +19908,9 @@ var en = {
|
|
|
19900
19908
|
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
19901
19909
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
19902
19910
|
"record.metadata.related": "Explore the catalog",
|
|
19911
|
+
"record.metadata.resourceCreated": "Created on {date}",
|
|
19912
|
+
"record.metadata.resourcePublished": "Published on {date}",
|
|
19913
|
+
"record.metadata.resourceUpdated": "Last updated on {date}",
|
|
19903
19914
|
"record.metadata.ressources.and.links": "Resources and links",
|
|
19904
19915
|
"record.metadata.sheet": "Original metadata",
|
|
19905
19916
|
"record.metadata.status": "Status",
|
|
@@ -19936,7 +19947,6 @@ var en = {
|
|
|
19936
19947
|
"results.records.hits.found": "{hits, plural, =0{No record match the specified search.} one{1 record found.} other{{hits} records found.}}",
|
|
19937
19948
|
"results.records.hits.selected": "{ amount } selected",
|
|
19938
19949
|
"results.showMore": "Show more results...",
|
|
19939
|
-
"results.sortBy.changeDate": "Last modification",
|
|
19940
19950
|
"results.sortBy.dateStamp": "Newest",
|
|
19941
19951
|
"results.sortBy.popularity": "Popularity",
|
|
19942
19952
|
"results.sortBy.qualityScore": "Completion score",
|
|
@@ -20464,6 +20474,7 @@ var es = {
|
|
|
20464
20474
|
"record.metadata.api.accessServiceProtocol.maplibre-style": "",
|
|
20465
20475
|
"record.metadata.api.accessServiceProtocol.ogcFeatures": "",
|
|
20466
20476
|
"record.metadata.api.accessServiceProtocol.other": "",
|
|
20477
|
+
"record.metadata.api.accessServiceProtocol.postgis": "",
|
|
20467
20478
|
"record.metadata.api.accessServiceProtocol.tms": "",
|
|
20468
20479
|
"record.metadata.api.accessServiceProtocol.wfs": "",
|
|
20469
20480
|
"record.metadata.api.accessServiceProtocol.wms": "",
|
|
@@ -20511,7 +20522,8 @@ var es = {
|
|
|
20511
20522
|
"record.metadata.isGeographical": "",
|
|
20512
20523
|
"record.metadata.keywords": "",
|
|
20513
20524
|
"record.metadata.languages": "",
|
|
20514
|
-
"record.metadata.
|
|
20525
|
+
"record.metadata.link.postgis.table": "",
|
|
20526
|
+
"record.metadata.link.postgis.tooltip": "",
|
|
20515
20527
|
"record.metadata.linked.datasets": "",
|
|
20516
20528
|
"record.metadata.linked.records": "",
|
|
20517
20529
|
"record.metadata.linked.reuses": "",
|
|
@@ -20552,6 +20564,9 @@ var es = {
|
|
|
20552
20564
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
20553
20565
|
"record.metadata.quality.updateFrequency.success": "",
|
|
20554
20566
|
"record.metadata.related": "",
|
|
20567
|
+
"record.metadata.resourceCreated": "",
|
|
20568
|
+
"record.metadata.resourcePublished": "",
|
|
20569
|
+
"record.metadata.resourceUpdated": "",
|
|
20555
20570
|
"record.metadata.ressources.and.links": "Recursos y enlaces",
|
|
20556
20571
|
"record.metadata.sheet": "",
|
|
20557
20572
|
"record.metadata.status": "",
|
|
@@ -20588,7 +20603,6 @@ var es = {
|
|
|
20588
20603
|
"results.records.hits.found": "",
|
|
20589
20604
|
"results.records.hits.selected": "",
|
|
20590
20605
|
"results.showMore": "",
|
|
20591
|
-
"results.sortBy.changeDate": "",
|
|
20592
20606
|
"results.sortBy.dateStamp": "",
|
|
20593
20607
|
"results.sortBy.popularity": "",
|
|
20594
20608
|
"results.sortBy.qualityScore": "",
|
|
@@ -21116,6 +21130,7 @@ var fr = {
|
|
|
21116
21130
|
"record.metadata.api.accessServiceProtocol.maplibre-style": "",
|
|
21117
21131
|
"record.metadata.api.accessServiceProtocol.ogcFeatures": "",
|
|
21118
21132
|
"record.metadata.api.accessServiceProtocol.other": "autre",
|
|
21133
|
+
"record.metadata.api.accessServiceProtocol.postgis": "PostGIS",
|
|
21119
21134
|
"record.metadata.api.accessServiceProtocol.tms": "",
|
|
21120
21135
|
"record.metadata.api.accessServiceProtocol.wfs": "",
|
|
21121
21136
|
"record.metadata.api.accessServiceProtocol.wms": "",
|
|
@@ -21163,7 +21178,8 @@ var fr = {
|
|
|
21163
21178
|
"record.metadata.isGeographical": "Donnée géographique",
|
|
21164
21179
|
"record.metadata.keywords": "Mots-clés",
|
|
21165
21180
|
"record.metadata.languages": "Langues",
|
|
21166
|
-
"record.metadata.
|
|
21181
|
+
"record.metadata.link.postgis.table": "table :",
|
|
21182
|
+
"record.metadata.link.postgis.tooltip": "Les ressources de type PostGIS n'ont pas de lien d'accès",
|
|
21167
21183
|
"record.metadata.linked.datasets": "Jeux de données associés",
|
|
21168
21184
|
"record.metadata.linked.records": "Contenus associés",
|
|
21169
21185
|
"record.metadata.linked.reuses": "Réutilisations associées",
|
|
@@ -21204,6 +21220,9 @@ var fr = {
|
|
|
21204
21220
|
"record.metadata.quality.updateFrequency.failed": "La fréquence de mise à jour n'est pas renseignée",
|
|
21205
21221
|
"record.metadata.quality.updateFrequency.success": "La fréquence de mise à jour est renseignée",
|
|
21206
21222
|
"record.metadata.related": "Explorez le catalogue",
|
|
21223
|
+
"record.metadata.resourceCreated": "Créé le {date}",
|
|
21224
|
+
"record.metadata.resourcePublished": "Publié le {date}",
|
|
21225
|
+
"record.metadata.resourceUpdated": "Mis à jour le {date}",
|
|
21207
21226
|
"record.metadata.ressources.and.links": "Ressources et liens",
|
|
21208
21227
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
21209
21228
|
"record.metadata.status": "Statut",
|
|
@@ -21240,7 +21259,6 @@ var fr = {
|
|
|
21240
21259
|
"results.records.hits.found": "{hits, plural, =0{Aucune correspondance.} one{1 ressource trouvée.} other{{hits} ressources.}}",
|
|
21241
21260
|
"results.records.hits.selected": "{amount, plural, one{1 selectionné} other{{ amount } sélectionnés}}",
|
|
21242
21261
|
"results.showMore": "Plus de résultats...",
|
|
21243
|
-
"results.sortBy.changeDate": "Dernière modification",
|
|
21244
21262
|
"results.sortBy.dateStamp": "Plus récent",
|
|
21245
21263
|
"results.sortBy.popularity": "Popularité",
|
|
21246
21264
|
"results.sortBy.qualityScore": "Indicateur de complétion",
|
|
@@ -21768,6 +21786,7 @@ var it = {
|
|
|
21768
21786
|
"record.metadata.api.accessServiceProtocol.maplibre-style": "",
|
|
21769
21787
|
"record.metadata.api.accessServiceProtocol.ogcFeatures": "",
|
|
21770
21788
|
"record.metadata.api.accessServiceProtocol.other": "",
|
|
21789
|
+
"record.metadata.api.accessServiceProtocol.postgis": "",
|
|
21771
21790
|
"record.metadata.api.accessServiceProtocol.tms": "",
|
|
21772
21791
|
"record.metadata.api.accessServiceProtocol.wfs": "",
|
|
21773
21792
|
"record.metadata.api.accessServiceProtocol.wms": "",
|
|
@@ -21815,7 +21834,8 @@ var it = {
|
|
|
21815
21834
|
"record.metadata.isGeographical": "Dati geografici",
|
|
21816
21835
|
"record.metadata.keywords": "Parole chiave",
|
|
21817
21836
|
"record.metadata.languages": "Lingue",
|
|
21818
|
-
"record.metadata.
|
|
21837
|
+
"record.metadata.link.postgis.table": "",
|
|
21838
|
+
"record.metadata.link.postgis.tooltip": "",
|
|
21819
21839
|
"record.metadata.linked.datasets": "",
|
|
21820
21840
|
"record.metadata.linked.records": "",
|
|
21821
21841
|
"record.metadata.linked.reuses": "",
|
|
@@ -21856,6 +21876,9 @@ var it = {
|
|
|
21856
21876
|
"record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
|
|
21857
21877
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
21858
21878
|
"record.metadata.related": "Vedi anche",
|
|
21879
|
+
"record.metadata.resourceCreated": "Creato il {date}",
|
|
21880
|
+
"record.metadata.resourcePublished": "Pubblicato il {date}",
|
|
21881
|
+
"record.metadata.resourceUpdated": "Ultimo aggiornamento il {date}",
|
|
21859
21882
|
"record.metadata.ressources.and.links": "Risorse e collegamenti",
|
|
21860
21883
|
"record.metadata.sheet": "Origine del metadata",
|
|
21861
21884
|
"record.metadata.status": "Stato",
|
|
@@ -21892,7 +21915,6 @@ var it = {
|
|
|
21892
21915
|
"results.records.hits.found": "{hits, plural, =0{Nessuna corrispondenza.} one{1 record trovato.} other{{hits} risultati.}}",
|
|
21893
21916
|
"results.records.hits.selected": "{amount, plural, one{1 selezionato} other{{ amount } selezionati}}",
|
|
21894
21917
|
"results.showMore": "Altri risultati...",
|
|
21895
|
-
"results.sortBy.changeDate": "Ultima modifica",
|
|
21896
21918
|
"results.sortBy.dateStamp": "Più recente",
|
|
21897
21919
|
"results.sortBy.popularity": "Popolarità",
|
|
21898
21920
|
"results.sortBy.qualityScore": "Indicatore di completamento",
|
|
@@ -22420,6 +22442,7 @@ var nl = {
|
|
|
22420
22442
|
"record.metadata.api.accessServiceProtocol.maplibre-style": "",
|
|
22421
22443
|
"record.metadata.api.accessServiceProtocol.ogcFeatures": "",
|
|
22422
22444
|
"record.metadata.api.accessServiceProtocol.other": "",
|
|
22445
|
+
"record.metadata.api.accessServiceProtocol.postgis": "",
|
|
22423
22446
|
"record.metadata.api.accessServiceProtocol.tms": "",
|
|
22424
22447
|
"record.metadata.api.accessServiceProtocol.wfs": "",
|
|
22425
22448
|
"record.metadata.api.accessServiceProtocol.wms": "",
|
|
@@ -22467,7 +22490,8 @@ var nl = {
|
|
|
22467
22490
|
"record.metadata.isGeographical": "",
|
|
22468
22491
|
"record.metadata.keywords": "",
|
|
22469
22492
|
"record.metadata.languages": "",
|
|
22470
|
-
"record.metadata.
|
|
22493
|
+
"record.metadata.link.postgis.table": "",
|
|
22494
|
+
"record.metadata.link.postgis.tooltip": "",
|
|
22471
22495
|
"record.metadata.linked.datasets": "",
|
|
22472
22496
|
"record.metadata.linked.records": "",
|
|
22473
22497
|
"record.metadata.linked.reuses": "",
|
|
@@ -22508,6 +22532,9 @@ var nl = {
|
|
|
22508
22532
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
22509
22533
|
"record.metadata.quality.updateFrequency.success": "",
|
|
22510
22534
|
"record.metadata.related": "",
|
|
22535
|
+
"record.metadata.resourceCreated": "",
|
|
22536
|
+
"record.metadata.resourcePublished": "",
|
|
22537
|
+
"record.metadata.resourceUpdated": "",
|
|
22511
22538
|
"record.metadata.ressources.and.links": "Bronnen en links",
|
|
22512
22539
|
"record.metadata.sheet": "",
|
|
22513
22540
|
"record.metadata.status": "",
|
|
@@ -22544,7 +22571,6 @@ var nl = {
|
|
|
22544
22571
|
"results.records.hits.found": "",
|
|
22545
22572
|
"results.records.hits.selected": "",
|
|
22546
22573
|
"results.showMore": "",
|
|
22547
|
-
"results.sortBy.changeDate": "",
|
|
22548
22574
|
"results.sortBy.dateStamp": "",
|
|
22549
22575
|
"results.sortBy.popularity": "",
|
|
22550
22576
|
"results.sortBy.qualityScore": "",
|
|
@@ -23072,6 +23098,7 @@ var pt = {
|
|
|
23072
23098
|
"record.metadata.api.accessServiceProtocol.maplibre-style": "",
|
|
23073
23099
|
"record.metadata.api.accessServiceProtocol.ogcFeatures": "",
|
|
23074
23100
|
"record.metadata.api.accessServiceProtocol.other": "",
|
|
23101
|
+
"record.metadata.api.accessServiceProtocol.postgis": "",
|
|
23075
23102
|
"record.metadata.api.accessServiceProtocol.tms": "",
|
|
23076
23103
|
"record.metadata.api.accessServiceProtocol.wfs": "",
|
|
23077
23104
|
"record.metadata.api.accessServiceProtocol.wms": "",
|
|
@@ -23119,7 +23146,8 @@ var pt = {
|
|
|
23119
23146
|
"record.metadata.isGeographical": "",
|
|
23120
23147
|
"record.metadata.keywords": "",
|
|
23121
23148
|
"record.metadata.languages": "",
|
|
23122
|
-
"record.metadata.
|
|
23149
|
+
"record.metadata.link.postgis.table": "",
|
|
23150
|
+
"record.metadata.link.postgis.tooltip": "",
|
|
23123
23151
|
"record.metadata.linked.datasets": "",
|
|
23124
23152
|
"record.metadata.linked.records": "",
|
|
23125
23153
|
"record.metadata.linked.reuses": "",
|
|
@@ -23160,6 +23188,9 @@ var pt = {
|
|
|
23160
23188
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
23161
23189
|
"record.metadata.quality.updateFrequency.success": "",
|
|
23162
23190
|
"record.metadata.related": "",
|
|
23191
|
+
"record.metadata.resourceCreated": "",
|
|
23192
|
+
"record.metadata.resourcePublished": "",
|
|
23193
|
+
"record.metadata.resourceUpdated": "",
|
|
23163
23194
|
"record.metadata.ressources.and.links": "Recursos e links",
|
|
23164
23195
|
"record.metadata.sheet": "",
|
|
23165
23196
|
"record.metadata.status": "",
|
|
@@ -23196,7 +23227,6 @@ var pt = {
|
|
|
23196
23227
|
"results.records.hits.found": "",
|
|
23197
23228
|
"results.records.hits.selected": "",
|
|
23198
23229
|
"results.showMore": "",
|
|
23199
|
-
"results.sortBy.changeDate": "",
|
|
23200
23230
|
"results.sortBy.dateStamp": "",
|
|
23201
23231
|
"results.sortBy.popularity": "",
|
|
23202
23232
|
"results.sortBy.qualityScore": "",
|
|
@@ -23724,6 +23754,7 @@ var sk = {
|
|
|
23724
23754
|
"record.metadata.api.accessServiceProtocol.maplibre-style": "",
|
|
23725
23755
|
"record.metadata.api.accessServiceProtocol.ogcFeatures": "",
|
|
23726
23756
|
"record.metadata.api.accessServiceProtocol.other": "",
|
|
23757
|
+
"record.metadata.api.accessServiceProtocol.postgis": "",
|
|
23727
23758
|
"record.metadata.api.accessServiceProtocol.tms": "",
|
|
23728
23759
|
"record.metadata.api.accessServiceProtocol.wfs": "",
|
|
23729
23760
|
"record.metadata.api.accessServiceProtocol.wms": "",
|
|
@@ -23771,7 +23802,8 @@ var sk = {
|
|
|
23771
23802
|
"record.metadata.isGeographical": "Súbor geografických údajov",
|
|
23772
23803
|
"record.metadata.keywords": "Kľúčové slová",
|
|
23773
23804
|
"record.metadata.languages": "",
|
|
23774
|
-
"record.metadata.
|
|
23805
|
+
"record.metadata.link.postgis.table": "",
|
|
23806
|
+
"record.metadata.link.postgis.tooltip": "",
|
|
23775
23807
|
"record.metadata.linked.datasets": "",
|
|
23776
23808
|
"record.metadata.linked.records": "",
|
|
23777
23809
|
"record.metadata.linked.reuses": "",
|
|
@@ -23812,6 +23844,9 @@ var sk = {
|
|
|
23812
23844
|
"record.metadata.quality.updateFrequency.failed": "Frekvencia aktualizácie nie je určená",
|
|
23813
23845
|
"record.metadata.quality.updateFrequency.success": "Frekvencia aktualizácie je určená",
|
|
23814
23846
|
"record.metadata.related": "Súvisiace záznamy",
|
|
23847
|
+
"record.metadata.resourceCreated": "",
|
|
23848
|
+
"record.metadata.resourcePublished": "",
|
|
23849
|
+
"record.metadata.resourceUpdated": "",
|
|
23815
23850
|
"record.metadata.ressources.and.links": "Prostředky a odkazy",
|
|
23816
23851
|
"record.metadata.sheet": "Ďalšie metadáta sú k dispozícii na:",
|
|
23817
23852
|
"record.metadata.status": "Stav",
|
|
@@ -23848,7 +23883,6 @@ var sk = {
|
|
|
23848
23883
|
"results.records.hits.found": "{hits, plural, =0{Žiadne dokumenty nezodpovedajú zadanému vyhľadávaniu.} one{1 záznam nájdený.} other{{hits} záznamov nájdených.}}",
|
|
23849
23884
|
"results.records.hits.selected": "{ amount } označených",
|
|
23850
23885
|
"results.showMore": "Zobraziť viac výsledkov...",
|
|
23851
|
-
"results.sortBy.changeDate": "",
|
|
23852
23886
|
"results.sortBy.dateStamp": "Najnovšie",
|
|
23853
23887
|
"results.sortBy.popularity": "Popularita",
|
|
23854
23888
|
"results.sortBy.qualityScore": "Indikátor dokončenia",
|
|
@@ -24337,6 +24371,7 @@ class Gn4FieldMapper {
|
|
|
24337
24371
|
/^OGC:WMTS/.test(protocol) ||
|
|
24338
24372
|
/TMS/i.test(protocol) ||
|
|
24339
24373
|
/ogc\W*api\W*features/i.test(protocol) ||
|
|
24374
|
+
/^DB:POSTGIS/i.test(protocol) ||
|
|
24340
24375
|
(/^WWW:DOWNLOAD-/.test(protocol) && /data.geopf.fr/.test(url)) // TO DO : change with the good protocol when decided
|
|
24341
24376
|
) {
|
|
24342
24377
|
return 'service';
|
|
@@ -24607,8 +24642,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
24607
24642
|
|
|
24608
24643
|
const PROXY_PATH = new InjectionToken('proxyPath');
|
|
24609
24644
|
class ProxyService {
|
|
24610
|
-
|
|
24611
|
-
this.
|
|
24645
|
+
get proxyPath() {
|
|
24646
|
+
return this.injector.get(PROXY_PATH, null);
|
|
24647
|
+
}
|
|
24648
|
+
constructor(injector, location) {
|
|
24649
|
+
this.injector = injector;
|
|
24612
24650
|
this.location = location;
|
|
24613
24651
|
}
|
|
24614
24652
|
/**
|
|
@@ -24631,7 +24669,7 @@ class ProxyService {
|
|
|
24631
24669
|
return url;
|
|
24632
24670
|
return new URL(`${this.proxyPath}${encodeURIComponent(url)}`, window.location.href).toString();
|
|
24633
24671
|
}
|
|
24634
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProxyService, deps: [{ token:
|
|
24672
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProxyService, deps: [{ token: i0.Injector }, { token: i1$2.Location }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24635
24673
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProxyService, providedIn: 'root' }); }
|
|
24636
24674
|
}
|
|
24637
24675
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProxyService, decorators: [{
|
|
@@ -24639,12 +24677,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
24639
24677
|
args: [{
|
|
24640
24678
|
providedIn: 'root',
|
|
24641
24679
|
}]
|
|
24642
|
-
}], ctorParameters: () => [{ type:
|
|
24643
|
-
type: Optional
|
|
24644
|
-
}, {
|
|
24645
|
-
type: Inject,
|
|
24646
|
-
args: [PROXY_PATH]
|
|
24647
|
-
}] }, { type: i1$2.Location }] });
|
|
24680
|
+
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1$2.Location }] });
|
|
24648
24681
|
|
|
24649
24682
|
class DateService {
|
|
24650
24683
|
constructor(translateService) {
|
|
@@ -24983,13 +25016,16 @@ function sortByToStrings(sortBy) {
|
|
|
24983
25016
|
return array.map((param) => `${param[0] === 'desc' ? '-' : ''}${param[1]}`);
|
|
24984
25017
|
}
|
|
24985
25018
|
function sortByToString(sortBy) {
|
|
24986
|
-
return sortByToStrings(sortBy)
|
|
25019
|
+
return sortByToStrings(sortBy).join(',');
|
|
24987
25020
|
}
|
|
24988
25021
|
function sortByFromString(sortByString) {
|
|
24989
|
-
|
|
24990
|
-
|
|
24991
|
-
|
|
24992
|
-
|
|
25022
|
+
const fields = sortByString
|
|
25023
|
+
.split(',')
|
|
25024
|
+
.map((field) => [
|
|
25025
|
+
field.startsWith('-') ? 'desc' : 'asc',
|
|
25026
|
+
field.startsWith('-') ? field.substring(1) : field,
|
|
25027
|
+
]);
|
|
25028
|
+
return fields.length > 1 ? fields : fields[0];
|
|
24993
25029
|
}
|
|
24994
25030
|
|
|
24995
25031
|
const stripHtml = function (html) {
|
|
@@ -25187,6 +25223,12 @@ const FORMATS = {
|
|
|
25187
25223
|
color: '#5A9E6F',
|
|
25188
25224
|
mimeTypes: ['image/webp'],
|
|
25189
25225
|
},
|
|
25226
|
+
postgis: {
|
|
25227
|
+
extensions: ['postgis'],
|
|
25228
|
+
priority: 18,
|
|
25229
|
+
color: '#336791',
|
|
25230
|
+
mimeTypes: [],
|
|
25231
|
+
},
|
|
25190
25232
|
};
|
|
25191
25233
|
function getFormatPriority(linkFormat) {
|
|
25192
25234
|
for (const format in FORMATS) {
|
|
@@ -25217,6 +25259,11 @@ function getFileFormatFromServiceOutput(serviceOutput) {
|
|
|
25217
25259
|
return null;
|
|
25218
25260
|
}
|
|
25219
25261
|
function getFileFormat(link) {
|
|
25262
|
+
if ('accessServiceProtocol' in link) {
|
|
25263
|
+
if (link.accessServiceProtocol in FORMATS) {
|
|
25264
|
+
return link.accessServiceProtocol;
|
|
25265
|
+
}
|
|
25266
|
+
}
|
|
25220
25267
|
if ('mimeType' in link) {
|
|
25221
25268
|
const mimeTypeFormat = mimeTypeToFormat(link.mimeType);
|
|
25222
25269
|
if (mimeTypeFormat !== null) {
|
|
@@ -25382,6 +25429,8 @@ class LinkClassifierService {
|
|
|
25382
25429
|
return [LinkUsage.API, LinkUsage.DOWNLOAD, LinkUsage.GEODATA];
|
|
25383
25430
|
case 'GPFDL':
|
|
25384
25431
|
return [LinkUsage.API];
|
|
25432
|
+
case 'postgis':
|
|
25433
|
+
return [LinkUsage.UNKNOWN];
|
|
25385
25434
|
default:
|
|
25386
25435
|
return [LinkUsage.UNKNOWN];
|
|
25387
25436
|
}
|
|
@@ -25445,7 +25494,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25445
25494
|
}] } });
|
|
25446
25495
|
|
|
25447
25496
|
var name = "geonetwork-ui";
|
|
25448
|
-
var version = "2.8.0-dev.
|
|
25497
|
+
var version = "2.8.0-dev.6ea037ab6";
|
|
25449
25498
|
var engines = {
|
|
25450
25499
|
node: ">=20"
|
|
25451
25500
|
};
|
|
@@ -26197,7 +26246,7 @@ class Gn4SettingsService {
|
|
|
26197
26246
|
this.apiVersion$ = this.getSettingsSetValueByKey('system/platform/version');
|
|
26198
26247
|
}
|
|
26199
26248
|
getSettingsSetValueByKey(key) {
|
|
26200
|
-
return this.siteApiService.getSettingsSet(null, [key])
|
|
26249
|
+
return of(true).pipe(switchMap(() => this.siteApiService.getSettingsSet(null, [key])), map$1((v) => v[key]), shareReplay$1({ bufferSize: 1, refCount: true }));
|
|
26201
26250
|
}
|
|
26202
26251
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, deps: [{ token: SiteApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
26203
26252
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, providedIn: 'root' }); }
|
|
@@ -26824,7 +26873,7 @@ class AuthService {
|
|
|
26824
26873
|
baseUrl = baseUrl.replace('?', '&');
|
|
26825
26874
|
}
|
|
26826
26875
|
return baseUrl
|
|
26827
|
-
.replace('${current_url}', new URL(this.location.path(), window.location.href).toString())
|
|
26876
|
+
.replace('${current_url}', new URL(this.location.prepareExternalUrl(this.location.path()), window.location.href).toString())
|
|
26828
26877
|
.replace('${lang2}', toLang2(this.translateService.currentLang))
|
|
26829
26878
|
.replace('${lang3}', toLang3(this.translateService.currentLang));
|
|
26830
26879
|
}
|
|
@@ -27136,6 +27185,9 @@ class Gn4PlatformService {
|
|
|
27136
27185
|
console.warn('Error while loading gnui language package');
|
|
27137
27186
|
return of({});
|
|
27138
27187
|
}), shareReplay$1(1));
|
|
27188
|
+
this.me$ = this.disableAuth
|
|
27189
|
+
? of(null)
|
|
27190
|
+
: of(true).pipe(switchMap(() => this.meApi.getMe()), switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)), shareReplay$1({ bufferSize: 1, refCount: true }));
|
|
27139
27191
|
/**
|
|
27140
27192
|
* A map of already loaded thesauri (groups of keywords); the key is a URI
|
|
27141
27193
|
* @private
|
|
@@ -27146,9 +27198,6 @@ class Gn4PlatformService {
|
|
|
27146
27198
|
.pipe(map$1((thesaurus) => {
|
|
27147
27199
|
return thesaurus[0];
|
|
27148
27200
|
}), shareReplay$1(1));
|
|
27149
|
-
this.me$ = this.disableAuth
|
|
27150
|
-
? of(null)
|
|
27151
|
-
: this.meApi.getMe().pipe(switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)), shareReplay$1({ bufferSize: 1, refCount: true }));
|
|
27152
27201
|
this.isUserAnonymous$ = this.me$.pipe(map$1((user) => !user || !('id' in user)));
|
|
27153
27202
|
this.users$ = this.usersApi.getUsers().pipe(map$1((users) => users.map((user) => this.mapper.userFromApi(user))), shareReplay$1());
|
|
27154
27203
|
}
|
|
@@ -29761,8 +29810,7 @@ class DropdownSelectorComponent {
|
|
|
29761
29810
|
];
|
|
29762
29811
|
}
|
|
29763
29812
|
get selectedChoice() {
|
|
29764
|
-
return (this.choices.find((choice) => choice.value === this.selected) ??
|
|
29765
|
-
this.choices[0]);
|
|
29813
|
+
return (this.choices.find((choice) => JSON.stringify(choice.value) === JSON.stringify(this.selected)) ?? this.choices[0]);
|
|
29766
29814
|
}
|
|
29767
29815
|
get id() {
|
|
29768
29816
|
return this.title.toLowerCase().replace(/[^a-z]+/g, '-');
|
|
@@ -33739,7 +33787,7 @@ class ExternalLinkCardComponent {
|
|
|
33739
33787
|
}
|
|
33740
33788
|
set size(value) {
|
|
33741
33789
|
this._size = value;
|
|
33742
|
-
this.cardClass = this.sizeClassMap[value]
|
|
33790
|
+
this.cardClass = `group flex flex-row justify-between card-shadow rounded overflow-hidden ${this.sizeClassMap[value]}`;
|
|
33743
33791
|
}
|
|
33744
33792
|
get size() {
|
|
33745
33793
|
return this._size;
|
|
@@ -33750,6 +33798,10 @@ class ExternalLinkCardComponent {
|
|
|
33750
33798
|
}
|
|
33751
33799
|
return this.link.name || this.link.description || '';
|
|
33752
33800
|
}
|
|
33801
|
+
get isDatabase() {
|
|
33802
|
+
return (this.link.type === 'service' &&
|
|
33803
|
+
this.link.accessServiceProtocol === 'postgis');
|
|
33804
|
+
}
|
|
33753
33805
|
getLinkFormat(link) {
|
|
33754
33806
|
return getFileFormat(link);
|
|
33755
33807
|
}
|
|
@@ -33760,18 +33812,20 @@ class ExternalLinkCardComponent {
|
|
|
33760
33812
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ExternalLinkCardComponent, isStandalone: true, selector: "gn-ui-external-link-card", inputs: { link: "link", size: "size" }, providers: [
|
|
33761
33813
|
provideIcons({
|
|
33762
33814
|
matOpenInNew,
|
|
33815
|
+
iconoirDatabase,
|
|
33763
33816
|
}),
|
|
33764
33817
|
provideNgIconsConfig({ size: '1.5em' }),
|
|
33765
|
-
], ngImport: i0, template: "<
|
|
33818
|
+
], ngImport: i0, template: "<ng-container *ngIf=\"isDatabase; else clickableLink\">\n <div [ngClass]=\"cardClass\" [title]=\"title\">\n <ng-container *ngTemplateOutlet=\"cardContent\"></ng-container>\n <div\n class=\"flex min-w-[32px]\"\n [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\"\n >\n <div\n class=\"gn-ui-card-icon\"\n [title]=\"'record.metadata.link.postgis.tooltip' | translate\"\n >\n <ng-icon\n class=\"inline-block card-icon align-middle\"\n name=\"iconoirDatabase\"\n ></ng-icon>\n </div>\n </div>\n </div>\n</ng-container>\n\n<ng-template #clickableLink>\n <a [href]=\"link.url\" target=\"_blank\" [ngClass]=\"cardClass\" [title]=\"title\">\n <ng-container *ngTemplateOutlet=\"cardContent\"></ng-container>\n <div\n class=\"flex min-w-[32px]\"\n [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\"\n >\n <div class=\"gn-ui-card-icon\">\n <ng-icon\n class=\"inline-block card-icon align-middle\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </div>\n </div>\n </a>\n</ng-template>\n<ng-template #cardContent>\n <div class=\"flex flex-col justify-between flex-1 min-w-0\">\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n <ng-container *ngIf=\"isDatabase\">\n {{ 'record.metadata.link.postgis.table' | translate }}\n </ng-container>\n {{ link.name }}\n </div>\n <p *ngIf=\"!link.name && !link.description\" class=\"gn-ui-card-title\">\n {{ link.url }}\n </p>\n <div class=\"pt-1\">\n <span\n class=\"inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded transition-opacity opacity-70 group-hover:opacity-100\"\n [style.background-color]=\"getLinkColor(link)\"\n data-cy=\"download-format\"\n >\n {{ getLinkFormat(link) || ('downloads.format.unknown' | translate) }}\n </span>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33766
33819
|
}
|
|
33767
33820
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExternalLinkCardComponent, decorators: [{
|
|
33768
33821
|
type: Component,
|
|
33769
33822
|
args: [{ selector: 'gn-ui-external-link-card', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIconComponent, TranslatePipe], providers: [
|
|
33770
33823
|
provideIcons({
|
|
33771
33824
|
matOpenInNew,
|
|
33825
|
+
iconoirDatabase,
|
|
33772
33826
|
}),
|
|
33773
33827
|
provideNgIconsConfig({ size: '1.5em' }),
|
|
33774
|
-
], template: "<
|
|
33828
|
+
], template: "<ng-container *ngIf=\"isDatabase; else clickableLink\">\n <div [ngClass]=\"cardClass\" [title]=\"title\">\n <ng-container *ngTemplateOutlet=\"cardContent\"></ng-container>\n <div\n class=\"flex min-w-[32px]\"\n [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\"\n >\n <div\n class=\"gn-ui-card-icon\"\n [title]=\"'record.metadata.link.postgis.tooltip' | translate\"\n >\n <ng-icon\n class=\"inline-block card-icon align-middle\"\n name=\"iconoirDatabase\"\n ></ng-icon>\n </div>\n </div>\n </div>\n</ng-container>\n\n<ng-template #clickableLink>\n <a [href]=\"link.url\" target=\"_blank\" [ngClass]=\"cardClass\" [title]=\"title\">\n <ng-container *ngTemplateOutlet=\"cardContent\"></ng-container>\n <div\n class=\"flex min-w-[32px]\"\n [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\"\n >\n <div class=\"gn-ui-card-icon\">\n <ng-icon\n class=\"inline-block card-icon align-middle\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </div>\n </div>\n </a>\n</ng-template>\n<ng-template #cardContent>\n <div class=\"flex flex-col justify-between flex-1 min-w-0\">\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n <ng-container *ngIf=\"isDatabase\">\n {{ 'record.metadata.link.postgis.table' | translate }}\n </ng-container>\n {{ link.name }}\n </div>\n <p *ngIf=\"!link.name && !link.description\" class=\"gn-ui-card-title\">\n {{ link.url }}\n </p>\n <div class=\"pt-1\">\n <span\n class=\"inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded transition-opacity opacity-70 group-hover:opacity-100\"\n [style.background-color]=\"getLinkColor(link)\"\n data-cy=\"download-format\"\n >\n {{ getLinkFormat(link) || ('downloads.format.unknown' | translate) }}\n </span>\n </div>\n </div>\n</ng-template>\n" }]
|
|
33775
33829
|
}], propDecorators: { link: [{
|
|
33776
33830
|
type: Input
|
|
33777
33831
|
}], size: [{
|
|
@@ -34041,7 +34095,7 @@ class MetadataInfoComponent {
|
|
|
34041
34095
|
return this.dateService.formatDateTime(date);
|
|
34042
34096
|
}
|
|
34043
34097
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataInfoComponent, deps: [{ token: DateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34044
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", 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 <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.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 </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <div *ngIf=\"metadata.keywords?.length\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\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 <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" 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 <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\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 </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n (metadata.kind === 'dataset' && metadata.status)\n \"\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\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 <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\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 <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\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 <div *ngIf=\"metadata.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.kind !== 'dataset' &&\n metadata.spatialExtents &&\n metadata.spatialExtents.length\n \"\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<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\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 <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\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>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\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 <div *ngIf=\"metadata.uniqueIdentifier\">\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 <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\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)}:host .metadata-info-keywords ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { 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: 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: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { 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: "component", type: SpatialExtentComponent, selector: "gn-ui-spatial-extent", inputs: ["spatialExtents"] }], viewProviders: [
|
|
34098
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", 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 <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.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 </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <gn-ui-max-lines [maxLines]=\"7\" *ngIf=\"metadata.keywords?.length\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\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 <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" 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 <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\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 </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n (metadata.kind === 'dataset' && metadata.status)\n \"\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\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 <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\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 <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\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 <div *ngIf=\"metadata.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.kind !== 'dataset' &&\n metadata.spatialExtents &&\n metadata.spatialExtents.length\n \"\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<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\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 <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\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>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\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 <div *ngIf=\"metadata.uniqueIdentifier\">\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 <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\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)}:host .metadata-info-keywords ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { 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: 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: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { 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: "component", type: SpatialExtentComponent, selector: "gn-ui-spatial-extent", inputs: ["spatialExtents"] }], viewProviders: [
|
|
34045
34099
|
provideIcons({
|
|
34046
34100
|
matOpenInNew,
|
|
34047
34101
|
matMailOutline: matMailOutline$1,
|
|
@@ -34069,7 +34123,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
34069
34123
|
matOpenInNew,
|
|
34070
34124
|
matMailOutline: matMailOutline$1,
|
|
34071
34125
|
}),
|
|
34072
|
-
], 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 <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.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 </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <div *ngIf=\"metadata.keywords?.length\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\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 <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" 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 <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\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 </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n (metadata.kind === 'dataset' && metadata.status)\n \"\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\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 <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\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 <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\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 <div *ngIf=\"metadata.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.kind !== 'dataset' &&\n metadata.spatialExtents &&\n metadata.spatialExtents.length\n \"\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<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\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 <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\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>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\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 <div *ngIf=\"metadata.uniqueIdentifier\">\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 <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\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)}:host .metadata-info-keywords ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"] }]
|
|
34126
|
+
], 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 <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.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 </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <gn-ui-max-lines [maxLines]=\"7\" *ngIf=\"metadata.keywords?.length\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\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 <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" 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 <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\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 </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n (metadata.kind === 'dataset' && metadata.status)\n \"\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\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 <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\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 <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\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 <div *ngIf=\"metadata.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.kind !== 'dataset' &&\n metadata.spatialExtents &&\n metadata.spatialExtents.length\n \"\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<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\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 <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\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>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\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 <div *ngIf=\"metadata.uniqueIdentifier\">\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 <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\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)}:host .metadata-info-keywords ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"] }]
|
|
34073
34127
|
}], ctorParameters: () => [{ type: DateService }], propDecorators: { metadata: [{
|
|
34074
34128
|
type: Input
|
|
34075
34129
|
}], incomplete: [{
|
|
@@ -36457,6 +36511,11 @@ const SortByEnum = {
|
|
|
36457
36511
|
RELEVANCY: ['desc', '_score'],
|
|
36458
36512
|
QUALITY_SCORE: ['desc', 'qualityScore'],
|
|
36459
36513
|
CHANGE_DATE: ['desc', 'changeDate'],
|
|
36514
|
+
RESOURCE_DATES: [
|
|
36515
|
+
['desc', 'revisionDateForResource'],
|
|
36516
|
+
['desc', 'publicationDateForResource'],
|
|
36517
|
+
['desc', 'creationDateForResource'],
|
|
36518
|
+
],
|
|
36460
36519
|
};
|
|
36461
36520
|
|
|
36462
36521
|
class SortByComponent {
|
|
@@ -36466,33 +36525,29 @@ class SortByComponent {
|
|
|
36466
36525
|
this.choices = [
|
|
36467
36526
|
{
|
|
36468
36527
|
label: marker('results.sortBy.relevancy'),
|
|
36469
|
-
value: SortByEnum.RELEVANCY
|
|
36528
|
+
value: SortByEnum.RELEVANCY,
|
|
36470
36529
|
},
|
|
36471
36530
|
{
|
|
36472
36531
|
label: marker('results.sortBy.dateStamp'),
|
|
36473
|
-
value: SortByEnum.
|
|
36474
|
-
},
|
|
36475
|
-
{
|
|
36476
|
-
label: marker('results.sortBy.changeDate'),
|
|
36477
|
-
value: SortByEnum.CHANGE_DATE.join(','),
|
|
36532
|
+
value: SortByEnum.RESOURCE_DATES,
|
|
36478
36533
|
},
|
|
36479
36534
|
{
|
|
36480
36535
|
label: marker('results.sortBy.popularity'),
|
|
36481
|
-
value: SortByEnum.POPULARITY
|
|
36536
|
+
value: SortByEnum.POPULARITY,
|
|
36482
36537
|
},
|
|
36483
36538
|
];
|
|
36484
|
-
this.currentSortBy$ = this.facade.sortBy$.pipe(filter$1((sortBy) => !!sortBy), map$1((sortBy) => sortBy
|
|
36539
|
+
this.currentSortBy$ = this.facade.sortBy$.pipe(filter$1((sortBy) => !!sortBy), map$1((sortBy) => sortBy));
|
|
36485
36540
|
}
|
|
36486
36541
|
ngOnInit() {
|
|
36487
36542
|
if (this.isQualitySortable) {
|
|
36488
36543
|
this.choices.push({
|
|
36489
36544
|
label: marker('results.sortBy.qualityScore'),
|
|
36490
|
-
value: SortByEnum.QUALITY_SCORE
|
|
36545
|
+
value: SortByEnum.QUALITY_SCORE,
|
|
36491
36546
|
});
|
|
36492
36547
|
}
|
|
36493
36548
|
}
|
|
36494
|
-
changeSortBy(
|
|
36495
|
-
this.searchService.setSortBy(
|
|
36549
|
+
changeSortBy(criteria) {
|
|
36550
|
+
this.searchService.setSortBy(criteria);
|
|
36496
36551
|
}
|
|
36497
36552
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SortByComponent, deps: [{ token: SearchFacade }, { token: SearchService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36498
36553
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SortByComponent, isStandalone: true, selector: "gn-ui-sort-by", inputs: { isQualitySortable: "isQualitySortable" }, ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'search.field.sortBy' | translate\"\n [choices]=\"choices\"\n (selectValue)=\"changeSortBy($event)\"\n [selected]=\"currentSortBy$ | async\"\n ariaName=\"search-sort-by\"\n></gn-ui-dropdown-selector>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
@@ -40026,6 +40081,7 @@ class MapViewComponent {
|
|
|
40026
40081
|
set exceedsLimit(value) {
|
|
40027
40082
|
this.excludeWfs$.next(value);
|
|
40028
40083
|
}
|
|
40084
|
+
// FIXME the map view component should not need a selectedView
|
|
40029
40085
|
set selectedView(value) {
|
|
40030
40086
|
this.selectedView$.next(value);
|
|
40031
40087
|
}
|
|
@@ -43792,6 +43848,9 @@ class RouterService {
|
|
|
43792
43848
|
getOrganizationPageRoute() {
|
|
43793
43849
|
return ROUTER_ROUTE_ORGANIZATION;
|
|
43794
43850
|
}
|
|
43851
|
+
getDefaultSort() {
|
|
43852
|
+
return SortByEnum.RESOURCE_DATES;
|
|
43853
|
+
}
|
|
43795
43854
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$d.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
43796
43855
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, providedIn: 'root' }); }
|
|
43797
43856
|
}
|
|
@@ -43952,13 +44011,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
43952
44011
|
}], ctorParameters: () => [{ type: i1$3.Store }, { type: RouterService }] });
|
|
43953
44012
|
|
|
43954
44013
|
class RouterEffects {
|
|
43955
|
-
constructor(_actions$, _router, _location, facade, routerConfig, fieldsService) {
|
|
44014
|
+
constructor(_actions$, _router, _location, facade, routerConfig, fieldsService, routerService) {
|
|
43956
44015
|
this._actions$ = _actions$;
|
|
43957
44016
|
this._router = _router;
|
|
43958
44017
|
this._location = _location;
|
|
43959
44018
|
this.facade = facade;
|
|
43960
44019
|
this.routerConfig = routerConfig;
|
|
43961
44020
|
this.fieldsService = fieldsService;
|
|
44021
|
+
this.routerService = routerService;
|
|
43962
44022
|
this.navigate$ = createEffect(() => this._actions$.pipe(ofType(goAction), tap$1(({ path, query: queryParams, queryParamsHandling }) => {
|
|
43963
44023
|
this._router.navigate([path], {
|
|
43964
44024
|
queryParams,
|
|
@@ -43970,14 +44030,14 @@ class RouterEffects {
|
|
|
43970
44030
|
.pipe(map$1((filters) => [searchParams, filters]))), startWith([null, {}]), pairwise(), map$1(([[oldParams, oldFilters], [newParams, newFilters]]) => {
|
|
43971
44031
|
let sortBy = ROUTE_PARAMS.SORT in newParams
|
|
43972
44032
|
? sortByFromString(newParams[ROUTE_PARAMS.SORT])
|
|
43973
|
-
:
|
|
44033
|
+
: this.routerService.getDefaultSort();
|
|
43974
44034
|
let pageNumber = ROUTE_PARAMS.PAGE in newParams
|
|
43975
44035
|
? parseInt(newParams[ROUTE_PARAMS.PAGE])
|
|
43976
44036
|
: 1;
|
|
43977
44037
|
if (oldParams !== null) {
|
|
43978
44038
|
const oldSort = ROUTE_PARAMS.SORT in oldParams
|
|
43979
44039
|
? sortByFromString(oldParams[ROUTE_PARAMS.SORT])
|
|
43980
|
-
:
|
|
44040
|
+
: this.routerService.getDefaultSort();
|
|
43981
44041
|
if (JSON.stringify(sortBy) === JSON.stringify(oldSort)) {
|
|
43982
44042
|
sortBy = null;
|
|
43983
44043
|
}
|
|
@@ -44034,7 +44094,7 @@ class RouterEffects {
|
|
|
44034
44094
|
this.navigateBack$ = createEffect(() => this._actions$.pipe(ofType(backAction), tap$1(() => this._location.back())), { dispatch: false });
|
|
44035
44095
|
this.navigateForward$ = createEffect(() => this._actions$.pipe(ofType(forwardAction), tap$1(() => this._location.forward())), { dispatch: false });
|
|
44036
44096
|
}
|
|
44037
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, deps: [{ token: i1$c.Actions }, { token: i1$d.Router }, { token: i1$2.Location }, { token: RouterFacade }, { token: ROUTER_CONFIG }, { token: FieldsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
44097
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, deps: [{ token: i1$c.Actions }, { token: i1$d.Router }, { token: i1$2.Location }, { token: RouterFacade }, { token: ROUTER_CONFIG }, { token: FieldsService }, { token: RouterService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
44038
44098
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects }); }
|
|
44039
44099
|
}
|
|
44040
44100
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, decorators: [{
|
|
@@ -44042,7 +44102,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
44042
44102
|
}], ctorParameters: () => [{ type: i1$c.Actions }, { type: i1$d.Router }, { type: i1$2.Location }, { type: RouterFacade }, { type: undefined, decorators: [{
|
|
44043
44103
|
type: Inject,
|
|
44044
44104
|
args: [ROUTER_CONFIG]
|
|
44045
|
-
}] }, { type: FieldsService }] });
|
|
44105
|
+
}] }, { type: FieldsService }, { type: RouterService }] });
|
|
44046
44106
|
|
|
44047
44107
|
class DefaultRouterModule {
|
|
44048
44108
|
constructor(routerService) {
|