geonetwork-ui 2.8.0-dev.398701d7f → 2.8.0-dev.5745b522e
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 +5 -1
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +3 -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.mapper.mjs +7 -3
- 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 +3 -1
- package/esm2022/libs/common/domain/src/lib/model/search/sort-by.model.mjs +6 -1
- package/esm2022/libs/data-access/gn4/src/openapi/model/user.api.model.mjs +1 -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/error/error.component.mjs +3 -3
- 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 +5 -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 +7 -2
- package/esm2022/translations/en.json +8 -4
- package/esm2022/translations/es.json +7 -2
- package/esm2022/translations/fr.json +8 -3
- package/esm2022/translations/it.json +8 -3
- package/esm2022/translations/nl.json +7 -2
- package/esm2022/translations/pt.json +7 -2
- package/esm2022/translations/sk.json +7 -2
- package/fesm2022/geonetwork-ui.mjs +147 -69
- 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.mapper.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/data-access/gn4/src/openapi/model/user.api.model.d.ts +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 +2 -2
- package/src/libs/api/metadata-converter/src/lib/common/distribution.mapper.ts +2 -0
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +2 -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.mapper.ts +12 -4
- 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 +4 -0
- package/src/libs/common/domain/src/lib/model/search/sort-by.model.ts +5 -0
- package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +5 -0
- package/src/libs/common/fixtures/src/lib/link.fixtures.ts +19 -0
- package/src/libs/data-access/gn4/src/openapi/model/user.api.model.ts +1 -1
- 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/error/error.component.html +5 -1
- 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 +4 -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 +7 -2
- package/translations/en.json +8 -4
- package/translations/es.json +7 -2
- package/translations/fr.json +8 -3
- package/translations/it.json +8 -3
- package/translations/nl.json +7 -2
- package/translations/pt.json +7 -2
- package/translations/sk.json +7 -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,10 @@ 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';
|
|
671
|
+
if (/stac\W*items/i.test(protocol))
|
|
672
|
+
return 'stac';
|
|
669
673
|
return 'other';
|
|
670
674
|
}
|
|
671
675
|
function matchMimeType(format) {
|
|
@@ -914,6 +918,8 @@ marker('record.metadata.api.accessServiceProtocol.ogcFeatures');
|
|
|
914
918
|
marker('record.metadata.api.accessServiceProtocol.GPFDL');
|
|
915
919
|
marker('record.metadata.api.accessServiceProtocol.tms');
|
|
916
920
|
marker('record.metadata.api.accessServiceProtocol.maplibre-style');
|
|
921
|
+
marker('record.metadata.api.accessServiceProtocol.postgis');
|
|
922
|
+
marker('record.metadata.api.accessServiceProtocol.stac');
|
|
917
923
|
marker('record.metadata.api.accessServiceProtocol.other');
|
|
918
924
|
|
|
919
925
|
function getUpdateFrequencyFromFrequencyCode(frequencyCode) {
|
|
@@ -19159,6 +19165,8 @@ var de = {
|
|
|
19159
19165
|
"record.metadata.api.accessServiceProtocol.maplibre-style": "",
|
|
19160
19166
|
"record.metadata.api.accessServiceProtocol.ogcFeatures": "",
|
|
19161
19167
|
"record.metadata.api.accessServiceProtocol.other": "",
|
|
19168
|
+
"record.metadata.api.accessServiceProtocol.postgis": "",
|
|
19169
|
+
"record.metadata.api.accessServiceProtocol.stac": "",
|
|
19162
19170
|
"record.metadata.api.accessServiceProtocol.tms": "",
|
|
19163
19171
|
"record.metadata.api.accessServiceProtocol.wfs": "",
|
|
19164
19172
|
"record.metadata.api.accessServiceProtocol.wms": "",
|
|
@@ -19206,7 +19214,8 @@ var de = {
|
|
|
19206
19214
|
"record.metadata.isGeographical": "Geographischer Datensatz",
|
|
19207
19215
|
"record.metadata.keywords": "Stichworte",
|
|
19208
19216
|
"record.metadata.languages": "Sprachen",
|
|
19209
|
-
"record.metadata.
|
|
19217
|
+
"record.metadata.link.postgis.table": "",
|
|
19218
|
+
"record.metadata.link.postgis.tooltip": "",
|
|
19210
19219
|
"record.metadata.linked.datasets": "Verknüpfte Datensätze",
|
|
19211
19220
|
"record.metadata.linked.records": "Verknüpfte Inhalte",
|
|
19212
19221
|
"record.metadata.linked.reuses": "Verknüpfte Wiederverwendungen",
|
|
@@ -19247,6 +19256,9 @@ var de = {
|
|
|
19247
19256
|
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
19248
19257
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
19249
19258
|
"record.metadata.related": "Entdecken Sie den Katalog",
|
|
19259
|
+
"record.metadata.resourceCreated": "Erstellt am {date}",
|
|
19260
|
+
"record.metadata.resourcePublished": "Veröffentlicht am {date}",
|
|
19261
|
+
"record.metadata.resourceUpdated": "Zuletzt aktualisiert am {date}",
|
|
19250
19262
|
"record.metadata.ressources.and.links": "Ressourcen und Links",
|
|
19251
19263
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
19252
19264
|
"record.metadata.status": "Status",
|
|
@@ -19283,7 +19295,6 @@ var de = {
|
|
|
19283
19295
|
"results.records.hits.found": "{hits, plural, =0{Keine Ressource entsprechen der angegebenen Suche.} one{1 Ressource gefunden.} other{{hits} Ressourcen gefunden.}}",
|
|
19284
19296
|
"results.records.hits.selected": "{ amount } ausgewählt",
|
|
19285
19297
|
"results.showMore": "Mehr Ergebnisse anzeigen...",
|
|
19286
|
-
"results.sortBy.changeDate": "",
|
|
19287
19298
|
"results.sortBy.dateStamp": "Neueste",
|
|
19288
19299
|
"results.sortBy.popularity": "Beliebtheit",
|
|
19289
19300
|
"results.sortBy.qualityScore": "Fertigstellungsanzeige",
|
|
@@ -19634,7 +19645,6 @@ var en = {
|
|
|
19634
19645
|
"editor.record.form.topics.inspire.intelligence": "Intelligence / Military",
|
|
19635
19646
|
"editor.record.form.topics.inspire.location": "Location",
|
|
19636
19647
|
"editor.record.form.topics.inspire.oceans": "Oceans",
|
|
19637
|
-
"editor.record.form.topics.inspire.placeholder": "Select an INSPIRE theme",
|
|
19638
19648
|
"editor.record.form.topics.inspire.planning": "Planning / Cadastre",
|
|
19639
19649
|
"editor.record.form.topics.inspire.society": "Society",
|
|
19640
19650
|
"editor.record.form.topics.inspire.structure": "Structure",
|
|
@@ -19812,6 +19822,8 @@ var en = {
|
|
|
19812
19822
|
"record.metadata.api.accessServiceProtocol.maplibre-style": "maplibre-style",
|
|
19813
19823
|
"record.metadata.api.accessServiceProtocol.ogcFeatures": "ogcFeatures",
|
|
19814
19824
|
"record.metadata.api.accessServiceProtocol.other": "other",
|
|
19825
|
+
"record.metadata.api.accessServiceProtocol.postgis": "PostGIS",
|
|
19826
|
+
"record.metadata.api.accessServiceProtocol.stac": "STAC",
|
|
19815
19827
|
"record.metadata.api.accessServiceProtocol.tms": "tms",
|
|
19816
19828
|
"record.metadata.api.accessServiceProtocol.wfs": "wfs",
|
|
19817
19829
|
"record.metadata.api.accessServiceProtocol.wms": "wms",
|
|
@@ -19859,7 +19871,8 @@ var en = {
|
|
|
19859
19871
|
"record.metadata.isGeographical": "Geographical dataset",
|
|
19860
19872
|
"record.metadata.keywords": "Keywords",
|
|
19861
19873
|
"record.metadata.languages": "Languages",
|
|
19862
|
-
"record.metadata.
|
|
19874
|
+
"record.metadata.link.postgis.table": "table :",
|
|
19875
|
+
"record.metadata.link.postgis.tooltip": "PostGIS resources do not have access links",
|
|
19863
19876
|
"record.metadata.linked.datasets": "Associated datasets",
|
|
19864
19877
|
"record.metadata.linked.records": "Associated content",
|
|
19865
19878
|
"record.metadata.linked.reuses": "Associated reuses",
|
|
@@ -19900,6 +19913,9 @@ var en = {
|
|
|
19900
19913
|
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
19901
19914
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
19902
19915
|
"record.metadata.related": "Explore the catalog",
|
|
19916
|
+
"record.metadata.resourceCreated": "Created on {date}",
|
|
19917
|
+
"record.metadata.resourcePublished": "Published on {date}",
|
|
19918
|
+
"record.metadata.resourceUpdated": "Last updated on {date}",
|
|
19903
19919
|
"record.metadata.ressources.and.links": "Resources and links",
|
|
19904
19920
|
"record.metadata.sheet": "Original metadata",
|
|
19905
19921
|
"record.metadata.status": "Status",
|
|
@@ -19936,7 +19952,6 @@ var en = {
|
|
|
19936
19952
|
"results.records.hits.found": "{hits, plural, =0{No record match the specified search.} one{1 record found.} other{{hits} records found.}}",
|
|
19937
19953
|
"results.records.hits.selected": "{ amount } selected",
|
|
19938
19954
|
"results.showMore": "Show more results...",
|
|
19939
|
-
"results.sortBy.changeDate": "Last modification",
|
|
19940
19955
|
"results.sortBy.dateStamp": "Newest",
|
|
19941
19956
|
"results.sortBy.popularity": "Popularity",
|
|
19942
19957
|
"results.sortBy.qualityScore": "Completion score",
|
|
@@ -19947,7 +19962,7 @@ var en = {
|
|
|
19947
19962
|
"search.error.organizationHasNoDataset": "This organization has no records yet.",
|
|
19948
19963
|
"search.error.organizationNotFound": "This organization could not be found.",
|
|
19949
19964
|
"search.error.receivedError": "An error was received",
|
|
19950
|
-
"search.error.recordHasnolink": "This record currently has no link
|
|
19965
|
+
"search.error.recordHasnolink": "This record currently has no link.",
|
|
19951
19966
|
"search.error.recordNotFound": "The record with identifier \"{ id }\" could not be found.",
|
|
19952
19967
|
"search.field.any.placeholder": "Search in the catalog ...",
|
|
19953
19968
|
"search.field.sortBy": "Sort by:",
|
|
@@ -20464,6 +20479,8 @@ var es = {
|
|
|
20464
20479
|
"record.metadata.api.accessServiceProtocol.maplibre-style": "",
|
|
20465
20480
|
"record.metadata.api.accessServiceProtocol.ogcFeatures": "",
|
|
20466
20481
|
"record.metadata.api.accessServiceProtocol.other": "",
|
|
20482
|
+
"record.metadata.api.accessServiceProtocol.postgis": "",
|
|
20483
|
+
"record.metadata.api.accessServiceProtocol.stac": "",
|
|
20467
20484
|
"record.metadata.api.accessServiceProtocol.tms": "",
|
|
20468
20485
|
"record.metadata.api.accessServiceProtocol.wfs": "",
|
|
20469
20486
|
"record.metadata.api.accessServiceProtocol.wms": "",
|
|
@@ -20511,7 +20528,8 @@ var es = {
|
|
|
20511
20528
|
"record.metadata.isGeographical": "",
|
|
20512
20529
|
"record.metadata.keywords": "",
|
|
20513
20530
|
"record.metadata.languages": "",
|
|
20514
|
-
"record.metadata.
|
|
20531
|
+
"record.metadata.link.postgis.table": "",
|
|
20532
|
+
"record.metadata.link.postgis.tooltip": "",
|
|
20515
20533
|
"record.metadata.linked.datasets": "",
|
|
20516
20534
|
"record.metadata.linked.records": "",
|
|
20517
20535
|
"record.metadata.linked.reuses": "",
|
|
@@ -20552,6 +20570,9 @@ var es = {
|
|
|
20552
20570
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
20553
20571
|
"record.metadata.quality.updateFrequency.success": "",
|
|
20554
20572
|
"record.metadata.related": "",
|
|
20573
|
+
"record.metadata.resourceCreated": "",
|
|
20574
|
+
"record.metadata.resourcePublished": "",
|
|
20575
|
+
"record.metadata.resourceUpdated": "",
|
|
20555
20576
|
"record.metadata.ressources.and.links": "Recursos y enlaces",
|
|
20556
20577
|
"record.metadata.sheet": "",
|
|
20557
20578
|
"record.metadata.status": "",
|
|
@@ -20588,7 +20609,6 @@ var es = {
|
|
|
20588
20609
|
"results.records.hits.found": "",
|
|
20589
20610
|
"results.records.hits.selected": "",
|
|
20590
20611
|
"results.showMore": "",
|
|
20591
|
-
"results.sortBy.changeDate": "",
|
|
20592
20612
|
"results.sortBy.dateStamp": "",
|
|
20593
20613
|
"results.sortBy.popularity": "",
|
|
20594
20614
|
"results.sortBy.qualityScore": "",
|
|
@@ -21116,6 +21136,8 @@ var fr = {
|
|
|
21116
21136
|
"record.metadata.api.accessServiceProtocol.maplibre-style": "",
|
|
21117
21137
|
"record.metadata.api.accessServiceProtocol.ogcFeatures": "",
|
|
21118
21138
|
"record.metadata.api.accessServiceProtocol.other": "autre",
|
|
21139
|
+
"record.metadata.api.accessServiceProtocol.postgis": "PostGIS",
|
|
21140
|
+
"record.metadata.api.accessServiceProtocol.stac": "STAC",
|
|
21119
21141
|
"record.metadata.api.accessServiceProtocol.tms": "",
|
|
21120
21142
|
"record.metadata.api.accessServiceProtocol.wfs": "",
|
|
21121
21143
|
"record.metadata.api.accessServiceProtocol.wms": "",
|
|
@@ -21163,7 +21185,8 @@ var fr = {
|
|
|
21163
21185
|
"record.metadata.isGeographical": "Donnée géographique",
|
|
21164
21186
|
"record.metadata.keywords": "Mots-clés",
|
|
21165
21187
|
"record.metadata.languages": "Langues",
|
|
21166
|
-
"record.metadata.
|
|
21188
|
+
"record.metadata.link.postgis.table": "table :",
|
|
21189
|
+
"record.metadata.link.postgis.tooltip": "Les ressources de type PostGIS n'ont pas de lien d'accès",
|
|
21167
21190
|
"record.metadata.linked.datasets": "Jeux de données associés",
|
|
21168
21191
|
"record.metadata.linked.records": "Contenus associés",
|
|
21169
21192
|
"record.metadata.linked.reuses": "Réutilisations associées",
|
|
@@ -21204,6 +21227,9 @@ var fr = {
|
|
|
21204
21227
|
"record.metadata.quality.updateFrequency.failed": "La fréquence de mise à jour n'est pas renseignée",
|
|
21205
21228
|
"record.metadata.quality.updateFrequency.success": "La fréquence de mise à jour est renseignée",
|
|
21206
21229
|
"record.metadata.related": "Explorez le catalogue",
|
|
21230
|
+
"record.metadata.resourceCreated": "Créé le {date}",
|
|
21231
|
+
"record.metadata.resourcePublished": "Publié le {date}",
|
|
21232
|
+
"record.metadata.resourceUpdated": "Mis à jour le {date}",
|
|
21207
21233
|
"record.metadata.ressources.and.links": "Ressources et liens",
|
|
21208
21234
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
21209
21235
|
"record.metadata.status": "Statut",
|
|
@@ -21240,7 +21266,6 @@ var fr = {
|
|
|
21240
21266
|
"results.records.hits.found": "{hits, plural, =0{Aucune correspondance.} one{1 ressource trouvée.} other{{hits} ressources.}}",
|
|
21241
21267
|
"results.records.hits.selected": "{amount, plural, one{1 selectionné} other{{ amount } sélectionnés}}",
|
|
21242
21268
|
"results.showMore": "Plus de résultats...",
|
|
21243
|
-
"results.sortBy.changeDate": "Dernière modification",
|
|
21244
21269
|
"results.sortBy.dateStamp": "Plus récent",
|
|
21245
21270
|
"results.sortBy.popularity": "Popularité",
|
|
21246
21271
|
"results.sortBy.qualityScore": "Indicateur de complétion",
|
|
@@ -21251,7 +21276,7 @@ var fr = {
|
|
|
21251
21276
|
"search.error.organizationHasNoDataset": "Cette organisation n'a pas encore de ressources.",
|
|
21252
21277
|
"search.error.organizationNotFound": "L'organisation n'a pas pu être trouvée.",
|
|
21253
21278
|
"search.error.receivedError": "Erreur retournée",
|
|
21254
|
-
"search.error.recordHasnolink": "Cette ressource n'a
|
|
21279
|
+
"search.error.recordHasnolink": "Cette ressource n'a actuellement aucun lien.",
|
|
21255
21280
|
"search.error.recordNotFound": "La ressource dont l'identifiant est \"{ id }\" n'a pas pu être trouvée.",
|
|
21256
21281
|
"search.field.any.placeholder": "Rechercher dans le catalogue...",
|
|
21257
21282
|
"search.field.sortBy": "Trier par :",
|
|
@@ -21768,6 +21793,8 @@ var it = {
|
|
|
21768
21793
|
"record.metadata.api.accessServiceProtocol.maplibre-style": "",
|
|
21769
21794
|
"record.metadata.api.accessServiceProtocol.ogcFeatures": "",
|
|
21770
21795
|
"record.metadata.api.accessServiceProtocol.other": "",
|
|
21796
|
+
"record.metadata.api.accessServiceProtocol.postgis": "",
|
|
21797
|
+
"record.metadata.api.accessServiceProtocol.stac": "",
|
|
21771
21798
|
"record.metadata.api.accessServiceProtocol.tms": "",
|
|
21772
21799
|
"record.metadata.api.accessServiceProtocol.wfs": "",
|
|
21773
21800
|
"record.metadata.api.accessServiceProtocol.wms": "",
|
|
@@ -21815,7 +21842,8 @@ var it = {
|
|
|
21815
21842
|
"record.metadata.isGeographical": "Dati geografici",
|
|
21816
21843
|
"record.metadata.keywords": "Parole chiave",
|
|
21817
21844
|
"record.metadata.languages": "Lingue",
|
|
21818
|
-
"record.metadata.
|
|
21845
|
+
"record.metadata.link.postgis.table": "",
|
|
21846
|
+
"record.metadata.link.postgis.tooltip": "",
|
|
21819
21847
|
"record.metadata.linked.datasets": "",
|
|
21820
21848
|
"record.metadata.linked.records": "",
|
|
21821
21849
|
"record.metadata.linked.reuses": "",
|
|
@@ -21856,6 +21884,9 @@ var it = {
|
|
|
21856
21884
|
"record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
|
|
21857
21885
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
21858
21886
|
"record.metadata.related": "Vedi anche",
|
|
21887
|
+
"record.metadata.resourceCreated": "Creato il {date}",
|
|
21888
|
+
"record.metadata.resourcePublished": "Pubblicato il {date}",
|
|
21889
|
+
"record.metadata.resourceUpdated": "Ultimo aggiornamento il {date}",
|
|
21859
21890
|
"record.metadata.ressources.and.links": "Risorse e collegamenti",
|
|
21860
21891
|
"record.metadata.sheet": "Origine del metadata",
|
|
21861
21892
|
"record.metadata.status": "Stato",
|
|
@@ -21892,7 +21923,6 @@ var it = {
|
|
|
21892
21923
|
"results.records.hits.found": "{hits, plural, =0{Nessuna corrispondenza.} one{1 record trovato.} other{{hits} risultati.}}",
|
|
21893
21924
|
"results.records.hits.selected": "{amount, plural, one{1 selezionato} other{{ amount } selezionati}}",
|
|
21894
21925
|
"results.showMore": "Altri risultati...",
|
|
21895
|
-
"results.sortBy.changeDate": "Ultima modifica",
|
|
21896
21926
|
"results.sortBy.dateStamp": "Più recente",
|
|
21897
21927
|
"results.sortBy.popularity": "Popolarità",
|
|
21898
21928
|
"results.sortBy.qualityScore": "Indicatore di completamento",
|
|
@@ -21903,7 +21933,7 @@ var it = {
|
|
|
21903
21933
|
"search.error.organizationHasNoDataset": "Questa organizzazione non ha ancora records.",
|
|
21904
21934
|
"search.error.organizationNotFound": "Impossibile trovare l'organizzazione.",
|
|
21905
21935
|
"search.error.receivedError": "Errore restituito",
|
|
21906
|
-
"search.error.recordHasnolink": "Questo record non ha
|
|
21936
|
+
"search.error.recordHasnolink": "Questo record non ha attualmente alcun collegamento.",
|
|
21907
21937
|
"search.error.recordNotFound": "Impossibile trovare questi record.",
|
|
21908
21938
|
"search.field.any.placeholder": "Cerca del catalogo...",
|
|
21909
21939
|
"search.field.sortBy": "Ordina per:",
|
|
@@ -22420,6 +22450,8 @@ var nl = {
|
|
|
22420
22450
|
"record.metadata.api.accessServiceProtocol.maplibre-style": "",
|
|
22421
22451
|
"record.metadata.api.accessServiceProtocol.ogcFeatures": "",
|
|
22422
22452
|
"record.metadata.api.accessServiceProtocol.other": "",
|
|
22453
|
+
"record.metadata.api.accessServiceProtocol.postgis": "",
|
|
22454
|
+
"record.metadata.api.accessServiceProtocol.stac": "",
|
|
22423
22455
|
"record.metadata.api.accessServiceProtocol.tms": "",
|
|
22424
22456
|
"record.metadata.api.accessServiceProtocol.wfs": "",
|
|
22425
22457
|
"record.metadata.api.accessServiceProtocol.wms": "",
|
|
@@ -22467,7 +22499,8 @@ var nl = {
|
|
|
22467
22499
|
"record.metadata.isGeographical": "",
|
|
22468
22500
|
"record.metadata.keywords": "",
|
|
22469
22501
|
"record.metadata.languages": "",
|
|
22470
|
-
"record.metadata.
|
|
22502
|
+
"record.metadata.link.postgis.table": "",
|
|
22503
|
+
"record.metadata.link.postgis.tooltip": "",
|
|
22471
22504
|
"record.metadata.linked.datasets": "",
|
|
22472
22505
|
"record.metadata.linked.records": "",
|
|
22473
22506
|
"record.metadata.linked.reuses": "",
|
|
@@ -22508,6 +22541,9 @@ var nl = {
|
|
|
22508
22541
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
22509
22542
|
"record.metadata.quality.updateFrequency.success": "",
|
|
22510
22543
|
"record.metadata.related": "",
|
|
22544
|
+
"record.metadata.resourceCreated": "",
|
|
22545
|
+
"record.metadata.resourcePublished": "",
|
|
22546
|
+
"record.metadata.resourceUpdated": "",
|
|
22511
22547
|
"record.metadata.ressources.and.links": "Bronnen en links",
|
|
22512
22548
|
"record.metadata.sheet": "",
|
|
22513
22549
|
"record.metadata.status": "",
|
|
@@ -22544,7 +22580,6 @@ var nl = {
|
|
|
22544
22580
|
"results.records.hits.found": "",
|
|
22545
22581
|
"results.records.hits.selected": "",
|
|
22546
22582
|
"results.showMore": "",
|
|
22547
|
-
"results.sortBy.changeDate": "",
|
|
22548
22583
|
"results.sortBy.dateStamp": "",
|
|
22549
22584
|
"results.sortBy.popularity": "",
|
|
22550
22585
|
"results.sortBy.qualityScore": "",
|
|
@@ -23072,6 +23107,8 @@ var pt = {
|
|
|
23072
23107
|
"record.metadata.api.accessServiceProtocol.maplibre-style": "",
|
|
23073
23108
|
"record.metadata.api.accessServiceProtocol.ogcFeatures": "",
|
|
23074
23109
|
"record.metadata.api.accessServiceProtocol.other": "",
|
|
23110
|
+
"record.metadata.api.accessServiceProtocol.postgis": "",
|
|
23111
|
+
"record.metadata.api.accessServiceProtocol.stac": "",
|
|
23075
23112
|
"record.metadata.api.accessServiceProtocol.tms": "",
|
|
23076
23113
|
"record.metadata.api.accessServiceProtocol.wfs": "",
|
|
23077
23114
|
"record.metadata.api.accessServiceProtocol.wms": "",
|
|
@@ -23119,7 +23156,8 @@ var pt = {
|
|
|
23119
23156
|
"record.metadata.isGeographical": "",
|
|
23120
23157
|
"record.metadata.keywords": "",
|
|
23121
23158
|
"record.metadata.languages": "",
|
|
23122
|
-
"record.metadata.
|
|
23159
|
+
"record.metadata.link.postgis.table": "",
|
|
23160
|
+
"record.metadata.link.postgis.tooltip": "",
|
|
23123
23161
|
"record.metadata.linked.datasets": "",
|
|
23124
23162
|
"record.metadata.linked.records": "",
|
|
23125
23163
|
"record.metadata.linked.reuses": "",
|
|
@@ -23160,6 +23198,9 @@ var pt = {
|
|
|
23160
23198
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
23161
23199
|
"record.metadata.quality.updateFrequency.success": "",
|
|
23162
23200
|
"record.metadata.related": "",
|
|
23201
|
+
"record.metadata.resourceCreated": "",
|
|
23202
|
+
"record.metadata.resourcePublished": "",
|
|
23203
|
+
"record.metadata.resourceUpdated": "",
|
|
23163
23204
|
"record.metadata.ressources.and.links": "Recursos e links",
|
|
23164
23205
|
"record.metadata.sheet": "",
|
|
23165
23206
|
"record.metadata.status": "",
|
|
@@ -23196,7 +23237,6 @@ var pt = {
|
|
|
23196
23237
|
"results.records.hits.found": "",
|
|
23197
23238
|
"results.records.hits.selected": "",
|
|
23198
23239
|
"results.showMore": "",
|
|
23199
|
-
"results.sortBy.changeDate": "",
|
|
23200
23240
|
"results.sortBy.dateStamp": "",
|
|
23201
23241
|
"results.sortBy.popularity": "",
|
|
23202
23242
|
"results.sortBy.qualityScore": "",
|
|
@@ -23724,6 +23764,8 @@ var sk = {
|
|
|
23724
23764
|
"record.metadata.api.accessServiceProtocol.maplibre-style": "",
|
|
23725
23765
|
"record.metadata.api.accessServiceProtocol.ogcFeatures": "",
|
|
23726
23766
|
"record.metadata.api.accessServiceProtocol.other": "",
|
|
23767
|
+
"record.metadata.api.accessServiceProtocol.postgis": "",
|
|
23768
|
+
"record.metadata.api.accessServiceProtocol.stac": "",
|
|
23727
23769
|
"record.metadata.api.accessServiceProtocol.tms": "",
|
|
23728
23770
|
"record.metadata.api.accessServiceProtocol.wfs": "",
|
|
23729
23771
|
"record.metadata.api.accessServiceProtocol.wms": "",
|
|
@@ -23771,7 +23813,8 @@ var sk = {
|
|
|
23771
23813
|
"record.metadata.isGeographical": "Súbor geografických údajov",
|
|
23772
23814
|
"record.metadata.keywords": "Kľúčové slová",
|
|
23773
23815
|
"record.metadata.languages": "",
|
|
23774
|
-
"record.metadata.
|
|
23816
|
+
"record.metadata.link.postgis.table": "",
|
|
23817
|
+
"record.metadata.link.postgis.tooltip": "",
|
|
23775
23818
|
"record.metadata.linked.datasets": "",
|
|
23776
23819
|
"record.metadata.linked.records": "",
|
|
23777
23820
|
"record.metadata.linked.reuses": "",
|
|
@@ -23812,6 +23855,9 @@ var sk = {
|
|
|
23812
23855
|
"record.metadata.quality.updateFrequency.failed": "Frekvencia aktualizácie nie je určená",
|
|
23813
23856
|
"record.metadata.quality.updateFrequency.success": "Frekvencia aktualizácie je určená",
|
|
23814
23857
|
"record.metadata.related": "Súvisiace záznamy",
|
|
23858
|
+
"record.metadata.resourceCreated": "",
|
|
23859
|
+
"record.metadata.resourcePublished": "",
|
|
23860
|
+
"record.metadata.resourceUpdated": "",
|
|
23815
23861
|
"record.metadata.ressources.and.links": "Prostředky a odkazy",
|
|
23816
23862
|
"record.metadata.sheet": "Ďalšie metadáta sú k dispozícii na:",
|
|
23817
23863
|
"record.metadata.status": "Stav",
|
|
@@ -23848,7 +23894,6 @@ var sk = {
|
|
|
23848
23894
|
"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
23895
|
"results.records.hits.selected": "{ amount } označených",
|
|
23850
23896
|
"results.showMore": "Zobraziť viac výsledkov...",
|
|
23851
|
-
"results.sortBy.changeDate": "",
|
|
23852
23897
|
"results.sortBy.dateStamp": "Najnovšie",
|
|
23853
23898
|
"results.sortBy.popularity": "Popularita",
|
|
23854
23899
|
"results.sortBy.qualityScore": "Indikátor dokončenia",
|
|
@@ -24337,6 +24382,8 @@ class Gn4FieldMapper {
|
|
|
24337
24382
|
/^OGC:WMTS/.test(protocol) ||
|
|
24338
24383
|
/TMS/i.test(protocol) ||
|
|
24339
24384
|
/ogc\W*api\W*features/i.test(protocol) ||
|
|
24385
|
+
/^DB:POSTGIS/i.test(protocol) ||
|
|
24386
|
+
/stac\W*items/i.test(protocol) ||
|
|
24340
24387
|
(/^WWW:DOWNLOAD-/.test(protocol) && /data.geopf.fr/.test(url)) // TO DO : change with the good protocol when decided
|
|
24341
24388
|
) {
|
|
24342
24389
|
return 'service';
|
|
@@ -24607,8 +24654,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
24607
24654
|
|
|
24608
24655
|
const PROXY_PATH = new InjectionToken('proxyPath');
|
|
24609
24656
|
class ProxyService {
|
|
24610
|
-
|
|
24611
|
-
this.
|
|
24657
|
+
get proxyPath() {
|
|
24658
|
+
return this.injector.get(PROXY_PATH, null);
|
|
24659
|
+
}
|
|
24660
|
+
constructor(injector, location) {
|
|
24661
|
+
this.injector = injector;
|
|
24612
24662
|
this.location = location;
|
|
24613
24663
|
}
|
|
24614
24664
|
/**
|
|
@@ -24631,7 +24681,7 @@ class ProxyService {
|
|
|
24631
24681
|
return url;
|
|
24632
24682
|
return new URL(`${this.proxyPath}${encodeURIComponent(url)}`, window.location.href).toString();
|
|
24633
24683
|
}
|
|
24634
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProxyService, deps: [{ token:
|
|
24684
|
+
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
24685
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProxyService, providedIn: 'root' }); }
|
|
24636
24686
|
}
|
|
24637
24687
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProxyService, decorators: [{
|
|
@@ -24639,12 +24689,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
24639
24689
|
args: [{
|
|
24640
24690
|
providedIn: 'root',
|
|
24641
24691
|
}]
|
|
24642
|
-
}], ctorParameters: () => [{ type:
|
|
24643
|
-
type: Optional
|
|
24644
|
-
}, {
|
|
24645
|
-
type: Inject,
|
|
24646
|
-
args: [PROXY_PATH]
|
|
24647
|
-
}] }, { type: i1$2.Location }] });
|
|
24692
|
+
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1$2.Location }] });
|
|
24648
24693
|
|
|
24649
24694
|
class DateService {
|
|
24650
24695
|
constructor(translateService) {
|
|
@@ -24983,13 +25028,16 @@ function sortByToStrings(sortBy) {
|
|
|
24983
25028
|
return array.map((param) => `${param[0] === 'desc' ? '-' : ''}${param[1]}`);
|
|
24984
25029
|
}
|
|
24985
25030
|
function sortByToString(sortBy) {
|
|
24986
|
-
return sortByToStrings(sortBy)
|
|
25031
|
+
return sortByToStrings(sortBy).join(',');
|
|
24987
25032
|
}
|
|
24988
25033
|
function sortByFromString(sortByString) {
|
|
24989
|
-
|
|
24990
|
-
|
|
24991
|
-
|
|
24992
|
-
|
|
25034
|
+
const fields = sortByString
|
|
25035
|
+
.split(',')
|
|
25036
|
+
.map((field) => [
|
|
25037
|
+
field.startsWith('-') ? 'desc' : 'asc',
|
|
25038
|
+
field.startsWith('-') ? field.substring(1) : field,
|
|
25039
|
+
]);
|
|
25040
|
+
return fields.length > 1 ? fields : fields[0];
|
|
24993
25041
|
}
|
|
24994
25042
|
|
|
24995
25043
|
const stripHtml = function (html) {
|
|
@@ -25187,6 +25235,12 @@ const FORMATS = {
|
|
|
25187
25235
|
color: '#5A9E6F',
|
|
25188
25236
|
mimeTypes: ['image/webp'],
|
|
25189
25237
|
},
|
|
25238
|
+
postgis: {
|
|
25239
|
+
extensions: ['postgis'],
|
|
25240
|
+
priority: 18,
|
|
25241
|
+
color: '#336791',
|
|
25242
|
+
mimeTypes: [],
|
|
25243
|
+
},
|
|
25190
25244
|
};
|
|
25191
25245
|
function getFormatPriority(linkFormat) {
|
|
25192
25246
|
for (const format in FORMATS) {
|
|
@@ -25217,6 +25271,11 @@ function getFileFormatFromServiceOutput(serviceOutput) {
|
|
|
25217
25271
|
return null;
|
|
25218
25272
|
}
|
|
25219
25273
|
function getFileFormat(link) {
|
|
25274
|
+
if ('accessServiceProtocol' in link) {
|
|
25275
|
+
if (link.accessServiceProtocol in FORMATS) {
|
|
25276
|
+
return link.accessServiceProtocol;
|
|
25277
|
+
}
|
|
25278
|
+
}
|
|
25220
25279
|
if ('mimeType' in link) {
|
|
25221
25280
|
const mimeTypeFormat = mimeTypeToFormat(link.mimeType);
|
|
25222
25281
|
if (mimeTypeFormat !== null) {
|
|
@@ -25382,6 +25441,10 @@ class LinkClassifierService {
|
|
|
25382
25441
|
return [LinkUsage.API, LinkUsage.DOWNLOAD, LinkUsage.GEODATA];
|
|
25383
25442
|
case 'GPFDL':
|
|
25384
25443
|
return [LinkUsage.API];
|
|
25444
|
+
case 'postgis':
|
|
25445
|
+
return [LinkUsage.UNKNOWN];
|
|
25446
|
+
case 'stac':
|
|
25447
|
+
return [LinkUsage.API];
|
|
25385
25448
|
default:
|
|
25386
25449
|
return [LinkUsage.UNKNOWN];
|
|
25387
25450
|
}
|
|
@@ -25445,7 +25508,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25445
25508
|
}] } });
|
|
25446
25509
|
|
|
25447
25510
|
var name = "geonetwork-ui";
|
|
25448
|
-
var version = "2.8.0-dev.
|
|
25511
|
+
var version = "2.8.0-dev.5745b522e";
|
|
25449
25512
|
var engines = {
|
|
25450
25513
|
node: ">=20"
|
|
25451
25514
|
};
|
|
@@ -25485,7 +25548,7 @@ var peerDependencies = {
|
|
|
25485
25548
|
};
|
|
25486
25549
|
var dependencies = {
|
|
25487
25550
|
"@biesbjerg/ngx-translate-extract-marker": "~1.0.0",
|
|
25488
|
-
"@camptocamp/ogc-client": "
|
|
25551
|
+
"@camptocamp/ogc-client": "1.3.1-dev.edb3244",
|
|
25489
25552
|
"@geospatial-sdk/core": "0.0.5-dev.37",
|
|
25490
25553
|
"@geospatial-sdk/geocoding": "0.0.5-dev.37",
|
|
25491
25554
|
"@geospatial-sdk/legend": "0.0.5-dev.37",
|
|
@@ -26197,7 +26260,7 @@ class Gn4SettingsService {
|
|
|
26197
26260
|
this.apiVersion$ = this.getSettingsSetValueByKey('system/platform/version');
|
|
26198
26261
|
}
|
|
26199
26262
|
getSettingsSetValueByKey(key) {
|
|
26200
|
-
return this.siteApiService.getSettingsSet(null, [key])
|
|
26263
|
+
return of(true).pipe(switchMap(() => this.siteApiService.getSettingsSet(null, [key])), map$1((v) => v[key]), shareReplay$1({ bufferSize: 1, refCount: true }));
|
|
26201
26264
|
}
|
|
26202
26265
|
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
26266
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, providedIn: 'root' }); }
|
|
@@ -26824,7 +26887,7 @@ class AuthService {
|
|
|
26824
26887
|
baseUrl = baseUrl.replace('?', '&');
|
|
26825
26888
|
}
|
|
26826
26889
|
return baseUrl
|
|
26827
|
-
.replace('${current_url}', new URL(this.location.path(), window.location.href).toString())
|
|
26890
|
+
.replace('${current_url}', new URL(this.location.prepareExternalUrl(this.location.path()), window.location.href).toString())
|
|
26828
26891
|
.replace('${lang2}', toLang2(this.translateService.currentLang))
|
|
26829
26892
|
.replace('${lang3}', toLang3(this.translateService.currentLang));
|
|
26830
26893
|
}
|
|
@@ -27025,8 +27088,12 @@ class Gn4PlatformMapper {
|
|
|
27025
27088
|
userFromApi(apiUser) {
|
|
27026
27089
|
if (!apiUser)
|
|
27027
27090
|
return null;
|
|
27028
|
-
const {
|
|
27029
|
-
return {
|
|
27091
|
+
const { addresses, emailAddresses, enabled, id, kind, lastLoginDate, security, primaryAddress, authorities, accountNonExpired, accountNonLocked, credentialsNonExpired, ...user } = apiUser;
|
|
27092
|
+
return {
|
|
27093
|
+
...user,
|
|
27094
|
+
id: id.toString(),
|
|
27095
|
+
email: emailAddresses ? emailAddresses[0] || '' : '',
|
|
27096
|
+
};
|
|
27030
27097
|
}
|
|
27031
27098
|
keywordsFromApi(keywords, thesaurus, lang3) {
|
|
27032
27099
|
return keywords.map((keyword) => {
|
|
@@ -27132,6 +27199,9 @@ class Gn4PlatformService {
|
|
|
27132
27199
|
console.warn('Error while loading gnui language package');
|
|
27133
27200
|
return of({});
|
|
27134
27201
|
}), shareReplay$1(1));
|
|
27202
|
+
this.me$ = this.disableAuth
|
|
27203
|
+
? of(null)
|
|
27204
|
+
: of(true).pipe(switchMap(() => this.meApi.getMe()), switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)), shareReplay$1({ bufferSize: 1, refCount: true }));
|
|
27135
27205
|
/**
|
|
27136
27206
|
* A map of already loaded thesauri (groups of keywords); the key is a URI
|
|
27137
27207
|
* @private
|
|
@@ -27142,9 +27212,6 @@ class Gn4PlatformService {
|
|
|
27142
27212
|
.pipe(map$1((thesaurus) => {
|
|
27143
27213
|
return thesaurus[0];
|
|
27144
27214
|
}), shareReplay$1(1));
|
|
27145
|
-
this.me$ = this.disableAuth
|
|
27146
|
-
? of(null)
|
|
27147
|
-
: this.meApi.getMe().pipe(switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)), shareReplay$1({ bufferSize: 1, refCount: true }));
|
|
27148
27215
|
this.isUserAnonymous$ = this.me$.pipe(map$1((user) => !user || !('id' in user)));
|
|
27149
27216
|
this.users$ = this.usersApi.getUsers().pipe(map$1((users) => users.map((user) => this.mapper.userFromApi(user))), shareReplay$1());
|
|
27150
27217
|
}
|
|
@@ -29757,8 +29824,7 @@ class DropdownSelectorComponent {
|
|
|
29757
29824
|
];
|
|
29758
29825
|
}
|
|
29759
29826
|
get selectedChoice() {
|
|
29760
|
-
return (this.choices.find((choice) => choice.value === this.selected) ??
|
|
29761
|
-
this.choices[0]);
|
|
29827
|
+
return (this.choices.find((choice) => JSON.stringify(choice.value) === JSON.stringify(this.selected)) ?? this.choices[0]);
|
|
29762
29828
|
}
|
|
29763
29829
|
get id() {
|
|
29764
29830
|
return this.title.toLowerCase().replace(/[^a-z]+/g, '-');
|
|
@@ -33238,7 +33304,7 @@ class ErrorComponent {
|
|
|
33238
33304
|
this.types = ErrorType;
|
|
33239
33305
|
}
|
|
33240
33306
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33241
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ErrorComponent, isStandalone: true, selector: "gn-ui-error", inputs: { type: "type", error: "error", recordId: "recordId" }, ngImport: i0, template: "<div\n class=\"p-[1.7em] bg-red-50 text-red-800
|
|
33307
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ErrorComponent, isStandalone: true, selector: "gn-ui-error", inputs: { type: "type", error: "error", recordId: "recordId" }, ngImport: i0, template: "<div\n class=\"p-[1.7em] text-[1.5em] text-center rounded-lg\"\n [ngClass]=\"{\n 'bg-red-50 text-red-800': type !== types.DATASET_HAS_NO_LINK,\n 'bg-gray-100 text-black': type === types.DATASET_HAS_NO_LINK,\n }\"\n>\n <div\n *ngIf=\"type === types.COULD_NOT_REACH_API\"\n data-test=\"could-not-reach-api-error\"\n >\n <div class=\"relative opacity-40\">\n <ng-icon name=\"matFace\" class=\"face\"></ng-icon>\n <ng-icon name=\"matQuestionMark\" class=\"question-mark1\"></ng-icon>\n <ng-icon name=\"matQuestionMark\" class=\"question-mark2\"></ng-icon>\n </div>\n <div translate>search.error.couldNotReachApi</div>\n </div>\n <div\n *ngIf=\"type === types.DATASET_HAS_NO_LINK\"\n data-test=\"dataset-has-no-link-error\"\n >\n <div class=\"relative opacity-40\">\n <ng-icon name=\"matComputerOutline\"></ng-icon>\n </div>\n <div translate>search.error.recordHasnolink</div>\n </div>\n <div *ngIf=\"type === types.RECEIVED_ERROR\" data-test=\"received-error-error\">\n <div class=\"relative opacity-40\">\n <ng-icon name=\"matMoodBad\" class=\"face\"></ng-icon>\n </div>\n <div translate>search.error.receivedError</div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n <div *ngIf=\"type === types.ORGANIZATION_HAS_NO_DATASET\">\n <div class=\"relative opacity-40\">\n <ng-icon name=\"matComputerOutline\" class=\"computer\"></ng-icon>\n <ng-icon name=\"matQuestionMark\" class=\"computer-question-mark\"> </ng-icon>\n </div>\n <div translate>search.error.organizationHasNoDataset</div>\n </div>\n <div\n *ngIf=\"type === types.RECORD_NOT_FOUND\"\n data-test=\"record-not-found-error\"\n >\n <div class=\"relative opacity-40\">\n <ng-icon name=\"matComputerOutline\" class=\"computer\"></ng-icon>\n <ng-icon name=\"matQuestionMark\" class=\"computer-question-mark\"> </ng-icon>\n </div>\n <div translate [translateParams]=\"{ id: recordId }\">\n search.error.recordNotFound\n </div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n <div\n *ngIf=\"type === types.ORGANIZATION_NOT_FOUND\"\n data-test=\"org-not-found-error\"\n >\n <div class=\"relative opacity-40\">\n <ng-icon name=\"matComputerOutline\" class=\"computer\"></ng-icon>\n <ng-icon name=\"matQuestionMark\" class=\"computer-question-mark\"> </ng-icon>\n </div>\n <div translate [translateParams]=\"{ id: recordId }\">\n search.error.organizationNotFound\n </div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n</div>\n", styles: ["ng-icon{width:5rem;height:5rem}ng-icon.face{width:3em;height:3em}ng-icon.question-mark1{position:absolute;bottom:1.9em;left:calc(50% + 1.2em);width:1.7em;height:1.7em}ng-icon.question-mark2{position:absolute;bottom:2.3em;left:calc(50% + 2.3em);width:1.4em;height:1.4em}ng-icon.computer{width:3em;height:3em}ng-icon.computer-question-mark{position:absolute;top:.7em;left:calc(50% - .6em);width:1.2em;height:1.2em}\n"], 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: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], viewProviders: [
|
|
33242
33308
|
provideIcons({
|
|
33243
33309
|
matFace,
|
|
33244
33310
|
matQuestionMark,
|
|
@@ -33256,7 +33322,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
33256
33322
|
matMoodBad,
|
|
33257
33323
|
matComputerOutline,
|
|
33258
33324
|
}),
|
|
33259
|
-
], template: "<div\n class=\"p-[1.7em] bg-red-50 text-red-800
|
|
33325
|
+
], template: "<div\n class=\"p-[1.7em] text-[1.5em] text-center rounded-lg\"\n [ngClass]=\"{\n 'bg-red-50 text-red-800': type !== types.DATASET_HAS_NO_LINK,\n 'bg-gray-100 text-black': type === types.DATASET_HAS_NO_LINK,\n }\"\n>\n <div\n *ngIf=\"type === types.COULD_NOT_REACH_API\"\n data-test=\"could-not-reach-api-error\"\n >\n <div class=\"relative opacity-40\">\n <ng-icon name=\"matFace\" class=\"face\"></ng-icon>\n <ng-icon name=\"matQuestionMark\" class=\"question-mark1\"></ng-icon>\n <ng-icon name=\"matQuestionMark\" class=\"question-mark2\"></ng-icon>\n </div>\n <div translate>search.error.couldNotReachApi</div>\n </div>\n <div\n *ngIf=\"type === types.DATASET_HAS_NO_LINK\"\n data-test=\"dataset-has-no-link-error\"\n >\n <div class=\"relative opacity-40\">\n <ng-icon name=\"matComputerOutline\"></ng-icon>\n </div>\n <div translate>search.error.recordHasnolink</div>\n </div>\n <div *ngIf=\"type === types.RECEIVED_ERROR\" data-test=\"received-error-error\">\n <div class=\"relative opacity-40\">\n <ng-icon name=\"matMoodBad\" class=\"face\"></ng-icon>\n </div>\n <div translate>search.error.receivedError</div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n <div *ngIf=\"type === types.ORGANIZATION_HAS_NO_DATASET\">\n <div class=\"relative opacity-40\">\n <ng-icon name=\"matComputerOutline\" class=\"computer\"></ng-icon>\n <ng-icon name=\"matQuestionMark\" class=\"computer-question-mark\"> </ng-icon>\n </div>\n <div translate>search.error.organizationHasNoDataset</div>\n </div>\n <div\n *ngIf=\"type === types.RECORD_NOT_FOUND\"\n data-test=\"record-not-found-error\"\n >\n <div class=\"relative opacity-40\">\n <ng-icon name=\"matComputerOutline\" class=\"computer\"></ng-icon>\n <ng-icon name=\"matQuestionMark\" class=\"computer-question-mark\"> </ng-icon>\n </div>\n <div translate [translateParams]=\"{ id: recordId }\">\n search.error.recordNotFound\n </div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n <div\n *ngIf=\"type === types.ORGANIZATION_NOT_FOUND\"\n data-test=\"org-not-found-error\"\n >\n <div class=\"relative opacity-40\">\n <ng-icon name=\"matComputerOutline\" class=\"computer\"></ng-icon>\n <ng-icon name=\"matQuestionMark\" class=\"computer-question-mark\"> </ng-icon>\n </div>\n <div translate [translateParams]=\"{ id: recordId }\">\n search.error.organizationNotFound\n </div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n</div>\n", styles: ["ng-icon{width:5rem;height:5rem}ng-icon.face{width:3em;height:3em}ng-icon.question-mark1{position:absolute;bottom:1.9em;left:calc(50% + 1.2em);width:1.7em;height:1.7em}ng-icon.question-mark2{position:absolute;bottom:2.3em;left:calc(50% + 2.3em);width:1.4em;height:1.4em}ng-icon.computer{width:3em;height:3em}ng-icon.computer-question-mark{position:absolute;top:.7em;left:calc(50% - .6em);width:1.2em;height:1.2em}\n"] }]
|
|
33260
33326
|
}], propDecorators: { type: [{
|
|
33261
33327
|
type: Input
|
|
33262
33328
|
}], error: [{
|
|
@@ -33735,7 +33801,7 @@ class ExternalLinkCardComponent {
|
|
|
33735
33801
|
}
|
|
33736
33802
|
set size(value) {
|
|
33737
33803
|
this._size = value;
|
|
33738
|
-
this.cardClass = this.sizeClassMap[value]
|
|
33804
|
+
this.cardClass = `group flex flex-row justify-between card-shadow rounded overflow-hidden ${this.sizeClassMap[value]}`;
|
|
33739
33805
|
}
|
|
33740
33806
|
get size() {
|
|
33741
33807
|
return this._size;
|
|
@@ -33746,6 +33812,10 @@ class ExternalLinkCardComponent {
|
|
|
33746
33812
|
}
|
|
33747
33813
|
return this.link.name || this.link.description || '';
|
|
33748
33814
|
}
|
|
33815
|
+
get isDatabase() {
|
|
33816
|
+
return (this.link.type === 'service' &&
|
|
33817
|
+
this.link.accessServiceProtocol === 'postgis');
|
|
33818
|
+
}
|
|
33749
33819
|
getLinkFormat(link) {
|
|
33750
33820
|
return getFileFormat(link);
|
|
33751
33821
|
}
|
|
@@ -33756,18 +33826,20 @@ class ExternalLinkCardComponent {
|
|
|
33756
33826
|
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: [
|
|
33757
33827
|
provideIcons({
|
|
33758
33828
|
matOpenInNew,
|
|
33829
|
+
iconoirDatabase,
|
|
33759
33830
|
}),
|
|
33760
33831
|
provideNgIconsConfig({ size: '1.5em' }),
|
|
33761
|
-
], ngImport: i0, template: "<
|
|
33832
|
+
], 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 }); }
|
|
33762
33833
|
}
|
|
33763
33834
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExternalLinkCardComponent, decorators: [{
|
|
33764
33835
|
type: Component,
|
|
33765
33836
|
args: [{ selector: 'gn-ui-external-link-card', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIconComponent, TranslatePipe], providers: [
|
|
33766
33837
|
provideIcons({
|
|
33767
33838
|
matOpenInNew,
|
|
33839
|
+
iconoirDatabase,
|
|
33768
33840
|
}),
|
|
33769
33841
|
provideNgIconsConfig({ size: '1.5em' }),
|
|
33770
|
-
], template: "<
|
|
33842
|
+
], 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" }]
|
|
33771
33843
|
}], propDecorators: { link: [{
|
|
33772
33844
|
type: Input
|
|
33773
33845
|
}], size: [{
|
|
@@ -34037,7 +34109,7 @@ class MetadataInfoComponent {
|
|
|
34037
34109
|
return this.dateService.formatDateTime(date);
|
|
34038
34110
|
}
|
|
34039
34111
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataInfoComponent, deps: [{ token: DateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34040
|
-
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: [
|
|
34112
|
+
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: [
|
|
34041
34113
|
provideIcons({
|
|
34042
34114
|
matOpenInNew,
|
|
34043
34115
|
matMailOutline: matMailOutline$1,
|
|
@@ -34065,7 +34137,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
34065
34137
|
matOpenInNew,
|
|
34066
34138
|
matMailOutline: matMailOutline$1,
|
|
34067
34139
|
}),
|
|
34068
|
-
], 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"] }]
|
|
34140
|
+
], 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"] }]
|
|
34069
34141
|
}], ctorParameters: () => [{ type: DateService }], propDecorators: { metadata: [{
|
|
34070
34142
|
type: Input
|
|
34071
34143
|
}], incomplete: [{
|
|
@@ -36453,6 +36525,11 @@ const SortByEnum = {
|
|
|
36453
36525
|
RELEVANCY: ['desc', '_score'],
|
|
36454
36526
|
QUALITY_SCORE: ['desc', 'qualityScore'],
|
|
36455
36527
|
CHANGE_DATE: ['desc', 'changeDate'],
|
|
36528
|
+
RESOURCE_DATES: [
|
|
36529
|
+
['desc', 'revisionDateForResource'],
|
|
36530
|
+
['desc', 'publicationDateForResource'],
|
|
36531
|
+
['desc', 'creationDateForResource'],
|
|
36532
|
+
],
|
|
36456
36533
|
};
|
|
36457
36534
|
|
|
36458
36535
|
class SortByComponent {
|
|
@@ -36462,33 +36539,29 @@ class SortByComponent {
|
|
|
36462
36539
|
this.choices = [
|
|
36463
36540
|
{
|
|
36464
36541
|
label: marker('results.sortBy.relevancy'),
|
|
36465
|
-
value: SortByEnum.RELEVANCY
|
|
36542
|
+
value: SortByEnum.RELEVANCY,
|
|
36466
36543
|
},
|
|
36467
36544
|
{
|
|
36468
36545
|
label: marker('results.sortBy.dateStamp'),
|
|
36469
|
-
value: SortByEnum.
|
|
36470
|
-
},
|
|
36471
|
-
{
|
|
36472
|
-
label: marker('results.sortBy.changeDate'),
|
|
36473
|
-
value: SortByEnum.CHANGE_DATE.join(','),
|
|
36546
|
+
value: SortByEnum.RESOURCE_DATES,
|
|
36474
36547
|
},
|
|
36475
36548
|
{
|
|
36476
36549
|
label: marker('results.sortBy.popularity'),
|
|
36477
|
-
value: SortByEnum.POPULARITY
|
|
36550
|
+
value: SortByEnum.POPULARITY,
|
|
36478
36551
|
},
|
|
36479
36552
|
];
|
|
36480
|
-
this.currentSortBy$ = this.facade.sortBy$.pipe(filter$1((sortBy) => !!sortBy), map$1((sortBy) => sortBy
|
|
36553
|
+
this.currentSortBy$ = this.facade.sortBy$.pipe(filter$1((sortBy) => !!sortBy), map$1((sortBy) => sortBy));
|
|
36481
36554
|
}
|
|
36482
36555
|
ngOnInit() {
|
|
36483
36556
|
if (this.isQualitySortable) {
|
|
36484
36557
|
this.choices.push({
|
|
36485
36558
|
label: marker('results.sortBy.qualityScore'),
|
|
36486
|
-
value: SortByEnum.QUALITY_SCORE
|
|
36559
|
+
value: SortByEnum.QUALITY_SCORE,
|
|
36487
36560
|
});
|
|
36488
36561
|
}
|
|
36489
36562
|
}
|
|
36490
|
-
changeSortBy(
|
|
36491
|
-
this.searchService.setSortBy(
|
|
36563
|
+
changeSortBy(criteria) {
|
|
36564
|
+
this.searchService.setSortBy(criteria);
|
|
36492
36565
|
}
|
|
36493
36566
|
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 }); }
|
|
36494
36567
|
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" }] }); }
|
|
@@ -40022,6 +40095,7 @@ class MapViewComponent {
|
|
|
40022
40095
|
set exceedsLimit(value) {
|
|
40023
40096
|
this.excludeWfs$.next(value);
|
|
40024
40097
|
}
|
|
40098
|
+
// FIXME the map view component should not need a selectedView
|
|
40025
40099
|
set selectedView(value) {
|
|
40026
40100
|
this.selectedView$.next(value);
|
|
40027
40101
|
}
|
|
@@ -43788,6 +43862,9 @@ class RouterService {
|
|
|
43788
43862
|
getOrganizationPageRoute() {
|
|
43789
43863
|
return ROUTER_ROUTE_ORGANIZATION;
|
|
43790
43864
|
}
|
|
43865
|
+
getDefaultSort() {
|
|
43866
|
+
return SortByEnum.RESOURCE_DATES;
|
|
43867
|
+
}
|
|
43791
43868
|
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 }); }
|
|
43792
43869
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, providedIn: 'root' }); }
|
|
43793
43870
|
}
|
|
@@ -43948,13 +44025,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
43948
44025
|
}], ctorParameters: () => [{ type: i1$3.Store }, { type: RouterService }] });
|
|
43949
44026
|
|
|
43950
44027
|
class RouterEffects {
|
|
43951
|
-
constructor(_actions$, _router, _location, facade, routerConfig, fieldsService) {
|
|
44028
|
+
constructor(_actions$, _router, _location, facade, routerConfig, fieldsService, routerService) {
|
|
43952
44029
|
this._actions$ = _actions$;
|
|
43953
44030
|
this._router = _router;
|
|
43954
44031
|
this._location = _location;
|
|
43955
44032
|
this.facade = facade;
|
|
43956
44033
|
this.routerConfig = routerConfig;
|
|
43957
44034
|
this.fieldsService = fieldsService;
|
|
44035
|
+
this.routerService = routerService;
|
|
43958
44036
|
this.navigate$ = createEffect(() => this._actions$.pipe(ofType(goAction), tap$1(({ path, query: queryParams, queryParamsHandling }) => {
|
|
43959
44037
|
this._router.navigate([path], {
|
|
43960
44038
|
queryParams,
|
|
@@ -43966,14 +44044,14 @@ class RouterEffects {
|
|
|
43966
44044
|
.pipe(map$1((filters) => [searchParams, filters]))), startWith([null, {}]), pairwise(), map$1(([[oldParams, oldFilters], [newParams, newFilters]]) => {
|
|
43967
44045
|
let sortBy = ROUTE_PARAMS.SORT in newParams
|
|
43968
44046
|
? sortByFromString(newParams[ROUTE_PARAMS.SORT])
|
|
43969
|
-
:
|
|
44047
|
+
: this.routerService.getDefaultSort();
|
|
43970
44048
|
let pageNumber = ROUTE_PARAMS.PAGE in newParams
|
|
43971
44049
|
? parseInt(newParams[ROUTE_PARAMS.PAGE])
|
|
43972
44050
|
: 1;
|
|
43973
44051
|
if (oldParams !== null) {
|
|
43974
44052
|
const oldSort = ROUTE_PARAMS.SORT in oldParams
|
|
43975
44053
|
? sortByFromString(oldParams[ROUTE_PARAMS.SORT])
|
|
43976
|
-
:
|
|
44054
|
+
: this.routerService.getDefaultSort();
|
|
43977
44055
|
if (JSON.stringify(sortBy) === JSON.stringify(oldSort)) {
|
|
43978
44056
|
sortBy = null;
|
|
43979
44057
|
}
|
|
@@ -44030,7 +44108,7 @@ class RouterEffects {
|
|
|
44030
44108
|
this.navigateBack$ = createEffect(() => this._actions$.pipe(ofType(backAction), tap$1(() => this._location.back())), { dispatch: false });
|
|
44031
44109
|
this.navigateForward$ = createEffect(() => this._actions$.pipe(ofType(forwardAction), tap$1(() => this._location.forward())), { dispatch: false });
|
|
44032
44110
|
}
|
|
44033
|
-
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 }); }
|
|
44111
|
+
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 }); }
|
|
44034
44112
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects }); }
|
|
44035
44113
|
}
|
|
44036
44114
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, decorators: [{
|
|
@@ -44038,7 +44116,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
44038
44116
|
}], ctorParameters: () => [{ type: i1$c.Actions }, { type: i1$d.Router }, { type: i1$2.Location }, { type: RouterFacade }, { type: undefined, decorators: [{
|
|
44039
44117
|
type: Inject,
|
|
44040
44118
|
args: [ROUTER_CONFIG]
|
|
44041
|
-
}] }, { type: FieldsService }] });
|
|
44119
|
+
}] }, { type: FieldsService }, { type: RouterService }] });
|
|
44042
44120
|
|
|
44043
44121
|
class DefaultRouterModule {
|
|
44044
44122
|
constructor(routerService) {
|