geonetwork-ui 2.4.0-dev.a2f3bb9f → 2.4.0-dev.cd525aa1
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/repository/src/lib/gn4/gn4-repository.mjs +57 -9
- package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
- package/esm2022/libs/data-access/gn4/src/openapi/api/records.api.service.mjs +2 -2
- package/esm2022/libs/feature/editor/src/lib/+state/editor.actions.mjs +1 -1
- package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +11 -3
- package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +5 -3
- package/esm2022/libs/feature/editor/src/lib/+state/editor.reducer.mjs +6 -2
- package/esm2022/libs/feature/editor/src/lib/+state/editor.selectors.mjs +3 -1
- package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +20 -40
- package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +2 -2
- package/esm2022/libs/feature/search/src/lib/results-table/results-table.component.mjs +18 -10
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +7 -7
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +7 -4
- package/esm2022/libs/ui/widgets/src/lib/badge/badge.component.mjs +4 -3
- package/esm2022/libs/ui/widgets/src/lib/ui-widgets.module.mjs +1 -6
- package/esm2022/translations/de.json +5 -1
- package/esm2022/translations/en.json +5 -1
- package/esm2022/translations/es.json +5 -1
- package/esm2022/translations/fr.json +5 -1
- package/esm2022/translations/it.json +5 -1
- package/esm2022/translations/nl.json +5 -1
- package/esm2022/translations/pt.json +5 -1
- package/fesm2022/geonetwork-ui.mjs +156 -77
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +15 -3
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +24 -1
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
- package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts +6 -6
- package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/+state/editor.actions.d.ts +4 -0
- package/libs/feature/editor/src/lib/+state/editor.actions.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/+state/editor.effects.d.ts +5 -0
- package/libs/feature/editor/src/lib/+state/editor.effects.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +9 -8
- package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts +10 -0
- package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts +2 -0
- package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/services/editor.service.d.ts +6 -9
- package/libs/feature/editor/src/lib/services/editor.service.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
- package/libs/feature/search/src/lib/results-table/results-table.component.d.ts +4 -1
- package/libs/feature/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +2 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
- package/libs/ui/widgets/src/lib/badge/badge.component.d.ts +2 -2
- package/libs/ui/widgets/src/lib/badge/badge.component.d.ts.map +1 -1
- package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts +10 -11
- package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +145 -7
- package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +36 -3
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +203 -0
- package/src/libs/data-access/gn4/src/openapi/api/records.api.service.ts +9 -9
- package/src/libs/data-access/gn4/src/spec.yaml +4 -5
- package/src/libs/feature/editor/src/lib/+state/editor.actions.ts +5 -1
- package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +31 -3
- package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +13 -3
- package/src/libs/feature/editor/src/lib/+state/editor.reducer.ts +22 -5
- package/src/libs/feature/editor/src/lib/+state/editor.selectors.ts +10 -0
- package/src/libs/feature/editor/src/lib/services/editor.service.ts +17 -52
- package/src/libs/feature/record/src/lib/state/mdview.effects.ts +1 -3
- package/src/libs/feature/search/src/lib/results-table/results-table.component.html +12 -1
- package/src/libs/feature/search/src/lib/results-table/results-table.component.ts +9 -1
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +2 -1
- package/src/libs/ui/widgets/src/lib/badge/badge.component.html +1 -1
- package/src/libs/ui/widgets/src/lib/badge/badge.component.ts +4 -1
- package/src/libs/ui/widgets/src/lib/ui-widgets.module.ts +0 -3
- package/tailwind.base.css +21 -1
- package/translations/de.json +5 -1
- package/translations/en.json +5 -1
- package/translations/es.json +5 -1
- package/translations/fr.json +5 -1
- package/translations/it.json +5 -1
- package/translations/nl.json +5 -1
- package/translations/pt.json +5 -1
- package/translations/sk.json +5 -1
|
@@ -8,11 +8,11 @@ import * as i1$1 from '@ngx-translate/core';
|
|
|
8
8
|
import { TranslateCompiler, TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
9
9
|
import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
|
|
10
10
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
11
|
-
import { map as map$1,
|
|
11
|
+
import { map as map$1, catchError, tap as tap$1, shareReplay, filter, startWith, withLatestFrom, switchMap as switchMap$1, take, delay, debounceTime, distinctUntilChanged, finalize, first, throttleTime, share, pairwise, mergeMap, defaultIfEmpty, scan } from 'rxjs/operators';
|
|
12
12
|
import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
13
13
|
import * as i1$3 from '@angular/common';
|
|
14
14
|
import { CommonModule, NgOptimizedImage, NgForOf } from '@angular/common';
|
|
15
|
-
import { of, map as map$2, lastValueFrom, switchMap, combineLatest, takeLast, forkJoin, firstValueFrom, Subject, merge,
|
|
15
|
+
import { of, map as map$2, lastValueFrom, switchMap, throwError, combineLatest, from, takeLast, forkJoin, firstValueFrom, Subject, merge, BehaviorSubject, fromEvent, timer, Subscription, ReplaySubject, distinctUntilChanged as distinctUntilChanged$1, debounceTime as debounceTime$1, filter as filter$1, animationFrameScheduler, tap as tap$2, Observable, buffer, combineLatestWith, catchError as catchError$1, takeUntil, EMPTY, exhaustMap, mergeMap as mergeMap$1, withLatestFrom as withLatestFrom$1, startWith as startWith$1, pairwise as pairwise$1 } from 'rxjs';
|
|
16
16
|
import { valid, coerce, satisfies, ltr } from 'semver';
|
|
17
17
|
import * as i1$2 from '@ngrx/store';
|
|
18
18
|
import { createAction, props, createReducer, on, createFeatureSelector, createSelector, select, StoreModule, Store } from '@ngrx/store';
|
|
@@ -7722,8 +7722,8 @@ class RecordsApiService {
|
|
|
7722
7722
|
if (httpHeaderAcceptSelected === undefined) {
|
|
7723
7723
|
// to determine the Accept header
|
|
7724
7724
|
const httpHeaderAccepts = [
|
|
7725
|
-
'application/json',
|
|
7726
7725
|
'application/xml',
|
|
7726
|
+
'application/json',
|
|
7727
7727
|
];
|
|
7728
7728
|
httpHeaderAcceptSelected =
|
|
7729
7729
|
this.configuration.selectHeaderAccept(httpHeaderAccepts);
|
|
@@ -17326,6 +17326,7 @@ var de = {
|
|
|
17326
17326
|
"dashboard.createRecord": "Neuer Eintrag",
|
|
17327
17327
|
"dashboard.labels.mySpace": "Mein Bereich",
|
|
17328
17328
|
"dashboard.records.all": "Katalog",
|
|
17329
|
+
"dashboard.records.hasDraft": "",
|
|
17329
17330
|
"dashboard.records.myDraft": "Meine Entwürfe",
|
|
17330
17331
|
"dashboard.records.myLibrary": "Meine Bibliothek",
|
|
17331
17332
|
"dashboard.records.myOrg": "Meine Organisation",
|
|
@@ -17473,6 +17474,9 @@ var de = {
|
|
|
17473
17474
|
"editor.record.publishError.title": "",
|
|
17474
17475
|
"editor.record.publishSuccess.body": "",
|
|
17475
17476
|
"editor.record.publishSuccess.title": "",
|
|
17477
|
+
"editor.record.saveStatus.asDraftOnly": "",
|
|
17478
|
+
"editor.record.saveStatus.draftWithChangesPending": "",
|
|
17479
|
+
"editor.record.saveStatus.recordUpToDate": "",
|
|
17476
17480
|
"editor.record.upToDate": "",
|
|
17477
17481
|
"externalviewer.dataset.unnamed": "Datensatz aus dem Datahub",
|
|
17478
17482
|
"facets.block.title.OrgForResource": "Organisation",
|
|
@@ -17640,8 +17644,8 @@ var de = {
|
|
|
17640
17644
|
"search.autocomplete.error": "Vorschläge konnten nicht abgerufen werden:",
|
|
17641
17645
|
"search.error.couldNotReachApi": "Die API konnte nicht erreicht werden",
|
|
17642
17646
|
"search.error.receivedError": "Ein Fehler ist aufgetreten",
|
|
17643
|
-
"search.error.recordNotFound": "Der Datensatz mit der Kennung \"{ id }\" konnte nicht gefunden werden.",
|
|
17644
17647
|
"search.error.recordHasnolink": "",
|
|
17648
|
+
"search.error.recordNotFound": "Der Datensatz mit der Kennung \"{ id }\" konnte nicht gefunden werden.",
|
|
17645
17649
|
"search.field.any.placeholder": "Suche Datensätze ...",
|
|
17646
17650
|
"search.field.sortBy": "Sortieren nach:",
|
|
17647
17651
|
"search.filters.clear": "Zurücksetzen",
|
|
@@ -17720,6 +17724,7 @@ var en = {
|
|
|
17720
17724
|
"dashboard.createRecord": "New record",
|
|
17721
17725
|
"dashboard.labels.mySpace": "My space",
|
|
17722
17726
|
"dashboard.records.all": "Metadata records",
|
|
17727
|
+
"dashboard.records.hasDraft": "draft",
|
|
17723
17728
|
"dashboard.records.myDraft": "My drafts",
|
|
17724
17729
|
"dashboard.records.myLibrary": "My library",
|
|
17725
17730
|
"dashboard.records.myOrg": "Organization",
|
|
@@ -17867,6 +17872,9 @@ var en = {
|
|
|
17867
17872
|
"editor.record.publishError.title": "Error publishing record",
|
|
17868
17873
|
"editor.record.publishSuccess.body": "The record was successfully published!",
|
|
17869
17874
|
"editor.record.publishSuccess.title": "Publish success",
|
|
17875
|
+
"editor.record.saveStatus.asDraftOnly": "Saved as draft only - not published yet",
|
|
17876
|
+
"editor.record.saveStatus.draftWithChangesPending": "Saved as draft - changes are pending",
|
|
17877
|
+
"editor.record.saveStatus.recordUpToDate": "Record is up to date",
|
|
17870
17878
|
"editor.record.upToDate": "This record is up to date",
|
|
17871
17879
|
"externalviewer.dataset.unnamed": "Datahub layer",
|
|
17872
17880
|
"facets.block.title.OrgForResource": "Organisation",
|
|
@@ -18034,8 +18042,8 @@ var en = {
|
|
|
18034
18042
|
"search.autocomplete.error": "Suggestions could not be fetched:",
|
|
18035
18043
|
"search.error.couldNotReachApi": "The API could not be reached",
|
|
18036
18044
|
"search.error.receivedError": "An error was received",
|
|
18037
|
-
"search.error.recordNotFound": "The record with identifier \"{ id }\" could not be found.",
|
|
18038
18045
|
"search.error.recordHasnolink": "This record currently has no link yet, please come back later.",
|
|
18046
|
+
"search.error.recordNotFound": "The record with identifier \"{ id }\" could not be found.",
|
|
18039
18047
|
"search.field.any.placeholder": "Search datasets ...",
|
|
18040
18048
|
"search.field.sortBy": "Sort by:",
|
|
18041
18049
|
"search.filters.clear": "Reset",
|
|
@@ -18114,6 +18122,7 @@ var es = {
|
|
|
18114
18122
|
"dashboard.createRecord": "",
|
|
18115
18123
|
"dashboard.labels.mySpace": "Mi espacio",
|
|
18116
18124
|
"dashboard.records.all": "Catálogo",
|
|
18125
|
+
"dashboard.records.hasDraft": "",
|
|
18117
18126
|
"dashboard.records.myDraft": "Mis borradores",
|
|
18118
18127
|
"dashboard.records.myLibrary": "Mi biblioteca",
|
|
18119
18128
|
"dashboard.records.myOrg": "Organización",
|
|
@@ -18261,6 +18270,9 @@ var es = {
|
|
|
18261
18270
|
"editor.record.publishError.title": "",
|
|
18262
18271
|
"editor.record.publishSuccess.body": "",
|
|
18263
18272
|
"editor.record.publishSuccess.title": "",
|
|
18273
|
+
"editor.record.saveStatus.asDraftOnly": "",
|
|
18274
|
+
"editor.record.saveStatus.draftWithChangesPending": "",
|
|
18275
|
+
"editor.record.saveStatus.recordUpToDate": "",
|
|
18264
18276
|
"editor.record.upToDate": "",
|
|
18265
18277
|
"externalviewer.dataset.unnamed": "",
|
|
18266
18278
|
"facets.block.title.OrgForResource": "",
|
|
@@ -18428,8 +18440,8 @@ var es = {
|
|
|
18428
18440
|
"search.autocomplete.error": "",
|
|
18429
18441
|
"search.error.couldNotReachApi": "",
|
|
18430
18442
|
"search.error.receivedError": "",
|
|
18431
|
-
"search.error.recordNotFound": "",
|
|
18432
18443
|
"search.error.recordHasnolink": "",
|
|
18444
|
+
"search.error.recordNotFound": "",
|
|
18433
18445
|
"search.field.any.placeholder": "",
|
|
18434
18446
|
"search.field.sortBy": "",
|
|
18435
18447
|
"search.filters.clear": "",
|
|
@@ -18508,6 +18520,7 @@ var fr = {
|
|
|
18508
18520
|
"dashboard.createRecord": "Nouvel enregistrement",
|
|
18509
18521
|
"dashboard.labels.mySpace": "Mon espace",
|
|
18510
18522
|
"dashboard.records.all": "Catalogue",
|
|
18523
|
+
"dashboard.records.hasDraft": "brouillon",
|
|
18511
18524
|
"dashboard.records.myDraft": "Mes brouillons",
|
|
18512
18525
|
"dashboard.records.myLibrary": "Ma bibliothèque",
|
|
18513
18526
|
"dashboard.records.myOrg": "Mon organisation",
|
|
@@ -18655,6 +18668,9 @@ var fr = {
|
|
|
18655
18668
|
"editor.record.publishError.title": "",
|
|
18656
18669
|
"editor.record.publishSuccess.body": "",
|
|
18657
18670
|
"editor.record.publishSuccess.title": "",
|
|
18671
|
+
"editor.record.saveStatus.asDraftOnly": "Brouillon enregistré - fiche non publiée",
|
|
18672
|
+
"editor.record.saveStatus.draftWithChangesPending": "Brouillon enregistré - modifications en cours",
|
|
18673
|
+
"editor.record.saveStatus.recordUpToDate": "La fiche publiée est à jour",
|
|
18658
18674
|
"editor.record.upToDate": "",
|
|
18659
18675
|
"externalviewer.dataset.unnamed": "Couche du datahub",
|
|
18660
18676
|
"facets.block.title.OrgForResource": "Organisation",
|
|
@@ -18822,8 +18838,8 @@ var fr = {
|
|
|
18822
18838
|
"search.autocomplete.error": "Les suggestions ne peuvent pas être récupérées",
|
|
18823
18839
|
"search.error.couldNotReachApi": "Problème de connexion à l'API",
|
|
18824
18840
|
"search.error.receivedError": "Erreur retournée",
|
|
18825
|
-
"search.error.recordNotFound": "Cette donnée n'a pu être trouvée.",
|
|
18826
18841
|
"search.error.recordHasnolink": "Ce dataset n'a pas encore de lien, réessayez plus tard s'il vous plaît.",
|
|
18842
|
+
"search.error.recordNotFound": "Cette donnée n'a pu être trouvée.",
|
|
18827
18843
|
"search.field.any.placeholder": "Rechercher une donnée...",
|
|
18828
18844
|
"search.field.sortBy": "Trier par :",
|
|
18829
18845
|
"search.filters.clear": "Réinitialiser",
|
|
@@ -18902,6 +18918,7 @@ var it = {
|
|
|
18902
18918
|
"dashboard.createRecord": "Crea un record",
|
|
18903
18919
|
"dashboard.labels.mySpace": "Il mio spazio",
|
|
18904
18920
|
"dashboard.records.all": "Catalogo",
|
|
18921
|
+
"dashboard.records.hasDraft": "",
|
|
18905
18922
|
"dashboard.records.myDraft": "Le mie bozze",
|
|
18906
18923
|
"dashboard.records.myLibrary": "La mia biblioteca",
|
|
18907
18924
|
"dashboard.records.myOrg": "La mia organizzazione",
|
|
@@ -19049,6 +19066,9 @@ var it = {
|
|
|
19049
19066
|
"editor.record.publishError.title": "",
|
|
19050
19067
|
"editor.record.publishSuccess.body": "",
|
|
19051
19068
|
"editor.record.publishSuccess.title": "",
|
|
19069
|
+
"editor.record.saveStatus.asDraftOnly": "",
|
|
19070
|
+
"editor.record.saveStatus.draftWithChangesPending": "",
|
|
19071
|
+
"editor.record.saveStatus.recordUpToDate": "",
|
|
19052
19072
|
"editor.record.upToDate": "",
|
|
19053
19073
|
"externalviewer.dataset.unnamed": "Layer del datahub",
|
|
19054
19074
|
"facets.block.title.OrgForResource": "Organizzazione",
|
|
@@ -19216,8 +19236,8 @@ var it = {
|
|
|
19216
19236
|
"search.autocomplete.error": "Impossibile recuperare le suggerimenti",
|
|
19217
19237
|
"search.error.couldNotReachApi": "Problema di connessione all'API",
|
|
19218
19238
|
"search.error.receivedError": "Errore ricevuto",
|
|
19219
|
-
"search.error.recordNotFound": "Impossibile trovare questo dato",
|
|
19220
19239
|
"search.error.recordHasnolink": "",
|
|
19240
|
+
"search.error.recordNotFound": "Impossibile trovare questo dato",
|
|
19221
19241
|
"search.field.any.placeholder": "Cerca un dato...",
|
|
19222
19242
|
"search.field.sortBy": "Ordina per:",
|
|
19223
19243
|
"search.filters.clear": "Ripristina",
|
|
@@ -19296,6 +19316,7 @@ var nl = {
|
|
|
19296
19316
|
"dashboard.createRecord": "",
|
|
19297
19317
|
"dashboard.labels.mySpace": "Mijn ruimte",
|
|
19298
19318
|
"dashboard.records.all": "Catalogus",
|
|
19319
|
+
"dashboard.records.hasDraft": "",
|
|
19299
19320
|
"dashboard.records.myDraft": "Mijn concepten",
|
|
19300
19321
|
"dashboard.records.myLibrary": "Mijn bibliotheek",
|
|
19301
19322
|
"dashboard.records.myOrg": "Organisatie",
|
|
@@ -19443,6 +19464,9 @@ var nl = {
|
|
|
19443
19464
|
"editor.record.publishError.title": "",
|
|
19444
19465
|
"editor.record.publishSuccess.body": "",
|
|
19445
19466
|
"editor.record.publishSuccess.title": "",
|
|
19467
|
+
"editor.record.saveStatus.asDraftOnly": "",
|
|
19468
|
+
"editor.record.saveStatus.draftWithChangesPending": "",
|
|
19469
|
+
"editor.record.saveStatus.recordUpToDate": "",
|
|
19446
19470
|
"editor.record.upToDate": "",
|
|
19447
19471
|
"externalviewer.dataset.unnamed": "",
|
|
19448
19472
|
"facets.block.title.OrgForResource": "",
|
|
@@ -19610,8 +19634,8 @@ var nl = {
|
|
|
19610
19634
|
"search.autocomplete.error": "",
|
|
19611
19635
|
"search.error.couldNotReachApi": "",
|
|
19612
19636
|
"search.error.receivedError": "",
|
|
19613
|
-
"search.error.recordNotFound": "",
|
|
19614
19637
|
"search.error.recordHasnolink": "",
|
|
19638
|
+
"search.error.recordNotFound": "",
|
|
19615
19639
|
"search.field.any.placeholder": "",
|
|
19616
19640
|
"search.field.sortBy": "",
|
|
19617
19641
|
"search.filters.clear": "",
|
|
@@ -19690,6 +19714,7 @@ var pt = {
|
|
|
19690
19714
|
"dashboard.createRecord": "",
|
|
19691
19715
|
"dashboard.labels.mySpace": "Meu espaço",
|
|
19692
19716
|
"dashboard.records.all": "Catálogo",
|
|
19717
|
+
"dashboard.records.hasDraft": "",
|
|
19693
19718
|
"dashboard.records.myDraft": "Meus rascunhos",
|
|
19694
19719
|
"dashboard.records.myLibrary": "Minha biblioteca",
|
|
19695
19720
|
"dashboard.records.myOrg": "Organização",
|
|
@@ -19837,6 +19862,9 @@ var pt = {
|
|
|
19837
19862
|
"editor.record.publishError.title": "",
|
|
19838
19863
|
"editor.record.publishSuccess.body": "",
|
|
19839
19864
|
"editor.record.publishSuccess.title": "",
|
|
19865
|
+
"editor.record.saveStatus.asDraftOnly": "",
|
|
19866
|
+
"editor.record.saveStatus.draftWithChangesPending": "",
|
|
19867
|
+
"editor.record.saveStatus.recordUpToDate": "",
|
|
19840
19868
|
"editor.record.upToDate": "",
|
|
19841
19869
|
"externalviewer.dataset.unnamed": "",
|
|
19842
19870
|
"facets.block.title.OrgForResource": "",
|
|
@@ -20004,8 +20032,8 @@ var pt = {
|
|
|
20004
20032
|
"search.autocomplete.error": "",
|
|
20005
20033
|
"search.error.couldNotReachApi": "",
|
|
20006
20034
|
"search.error.receivedError": "",
|
|
20007
|
-
"search.error.recordNotFound": "",
|
|
20008
20035
|
"search.error.recordHasnolink": "",
|
|
20036
|
+
"search.error.recordNotFound": "",
|
|
20009
20037
|
"search.field.any.placeholder": "",
|
|
20010
20038
|
"search.field.sortBy": "",
|
|
20011
20039
|
"search.filters.clear": "",
|
|
@@ -20964,10 +20992,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
20964
20992
|
}] }]; } });
|
|
20965
20993
|
|
|
20966
20994
|
class Gn4Repository {
|
|
20967
|
-
constructor(gn4SearchApi, gn4SearchHelper, gn4Mapper) {
|
|
20995
|
+
constructor(gn4SearchApi, gn4SearchHelper, gn4Mapper, gn4RecordsApi) {
|
|
20968
20996
|
this.gn4SearchApi = gn4SearchApi;
|
|
20969
20997
|
this.gn4SearchHelper = gn4SearchHelper;
|
|
20970
20998
|
this.gn4Mapper = gn4Mapper;
|
|
20999
|
+
this.gn4RecordsApi = gn4RecordsApi;
|
|
20971
21000
|
}
|
|
20972
21001
|
search({ filters, fields, offset, limit, sort, filterIds, filterGeometry, }) {
|
|
20973
21002
|
return this.gn4SearchApi
|
|
@@ -20985,7 +21014,7 @@ class Gn4Repository {
|
|
|
20985
21014
|
}))
|
|
20986
21015
|
.pipe(map$1((results) => results.hits.total?.value || 0));
|
|
20987
21016
|
}
|
|
20988
|
-
|
|
21017
|
+
getRecord(uniqueIdentifier) {
|
|
20989
21018
|
return this.gn4SearchApi
|
|
20990
21019
|
.search('bucket', null, JSON.stringify(this.gn4SearchHelper.getMetadataByIdPayload(uniqueIdentifier)))
|
|
20991
21020
|
.pipe(map$1((results) => results.hits.hits[0]), switchMap((record) => record ? this.gn4Mapper.readRecord(record) : of(null)));
|
|
@@ -21015,12 +21044,59 @@ class Gn4Repository {
|
|
|
21015
21044
|
records,
|
|
21016
21045
|
}))));
|
|
21017
21046
|
}
|
|
21018
|
-
|
|
21047
|
+
/**
|
|
21048
|
+
* Returns null if the record is not found
|
|
21049
|
+
*/
|
|
21050
|
+
loadRecordAsXml(uniqueIdentifier) {
|
|
21051
|
+
return this.gn4RecordsApi
|
|
21052
|
+
.getRecordAs(uniqueIdentifier, undefined, false, undefined, undefined, undefined, 'application/xml', 'response', undefined, { httpHeaderAccept: 'text/xml,application/xml' } // this is to make sure that the response is parsed as text
|
|
21053
|
+
)
|
|
21054
|
+
.pipe(map$1((response) => response.body), catchError((error) => error.status === 404 ? of(null) : throwError(() => error)));
|
|
21055
|
+
}
|
|
21056
|
+
getLocalStorageKeyForRecord(uniqueIdentifier) {
|
|
21057
|
+
return `geonetwork-ui-draft-${uniqueIdentifier}`;
|
|
21058
|
+
}
|
|
21059
|
+
openRecordForEdition(uniqueIdentifier) {
|
|
21060
|
+
const draft$ = of(window.localStorage.getItem(this.getLocalStorageKeyForRecord(uniqueIdentifier)));
|
|
21061
|
+
const recordAsXml$ = this.loadRecordAsXml(uniqueIdentifier);
|
|
21062
|
+
return combineLatest([draft$, recordAsXml$]).pipe(switchMap(([draft, recordAsXml]) => {
|
|
21063
|
+
const xml = draft ?? recordAsXml;
|
|
21064
|
+
const isSavedAlready = recordAsXml !== null;
|
|
21065
|
+
return findConverterForDocument(xml)
|
|
21066
|
+
.readRecord(xml)
|
|
21067
|
+
.then((record) => [record, xml, isSavedAlready]);
|
|
21068
|
+
}));
|
|
21069
|
+
}
|
|
21070
|
+
serializeRecordToXml(record, referenceRecordSource) {
|
|
21071
|
+
// if there's a reference record, use that standard; otherwise, use iso19139
|
|
21072
|
+
const converter = referenceRecordSource
|
|
21073
|
+
? findConverterForDocument(referenceRecordSource)
|
|
21074
|
+
: new Iso19139Converter();
|
|
21075
|
+
return from(converter.writeRecord(record, referenceRecordSource));
|
|
21076
|
+
}
|
|
21077
|
+
saveRecord(record, referenceRecordSource) {
|
|
21078
|
+
return this.serializeRecordToXml(record, referenceRecordSource).pipe(switchMap((recordXml) => this.gn4RecordsApi
|
|
21079
|
+
.insert('METADATA', undefined, undefined, undefined, true, undefined, 'OVERWRITE', undefined, undefined, undefined, '_none_', undefined, undefined, undefined, recordXml)
|
|
21080
|
+
.pipe(map$1(() => recordXml))), tap$1(() => {
|
|
21081
|
+
// if saving was successful, the associated draft can be discarded
|
|
21082
|
+
window.localStorage.removeItem(this.getLocalStorageKeyForRecord(record.uniqueIdentifier));
|
|
21083
|
+
}));
|
|
21084
|
+
}
|
|
21085
|
+
saveRecordAsDraft(record, referenceRecordSource) {
|
|
21086
|
+
return this.serializeRecordToXml(record, referenceRecordSource).pipe(tap$1((recordXml) => window.localStorage.setItem(this.getLocalStorageKeyForRecord(record.uniqueIdentifier), recordXml)));
|
|
21087
|
+
}
|
|
21088
|
+
clearRecordDraft(uniqueIdentifier) {
|
|
21089
|
+
window.localStorage.removeItem(this.getLocalStorageKeyForRecord(uniqueIdentifier));
|
|
21090
|
+
}
|
|
21091
|
+
recordHasDraft(uniqueIdentifier) {
|
|
21092
|
+
return (window.localStorage.getItem(this.getLocalStorageKeyForRecord(uniqueIdentifier)) !== null);
|
|
21093
|
+
}
|
|
21094
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4Repository, deps: [{ token: SearchApiService }, { token: ElasticsearchService }, { token: Gn4Converter }, { token: RecordsApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21019
21095
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4Repository }); }
|
|
21020
21096
|
}
|
|
21021
21097
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4Repository, decorators: [{
|
|
21022
21098
|
type: Injectable
|
|
21023
|
-
}], ctorParameters: function () { return [{ type: SearchApiService }, { type: ElasticsearchService }, { type: Gn4Converter }]; } });
|
|
21099
|
+
}], ctorParameters: function () { return [{ type: SearchApiService }, { type: ElasticsearchService }, { type: Gn4Converter }, { type: RecordsApiService }]; } });
|
|
21024
21100
|
|
|
21025
21101
|
class PlatformServiceInterface {
|
|
21026
21102
|
}
|
|
@@ -25266,20 +25342,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25266
25342
|
type: Input
|
|
25267
25343
|
}] } });
|
|
25268
25344
|
|
|
25269
|
-
class BadgeComponent {
|
|
25270
|
-
constructor() {
|
|
25271
|
-
this.clickable = false;
|
|
25272
|
-
}
|
|
25273
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: BadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25274
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: BadgeComponent, selector: "gn-ui-badge", inputs: { clickable: "clickable" }, ngImport: i0, template: "<div\n class=\"inline-block bg-black opacity-70 py-1.5 px-3 rounded font-medium text-gray-50 text-sm leading-none\"\n [ngClass]=\"\n clickable\n ? 'hover:bg-primary cursor-pointer transition-colors duration-100'\n : ''\n \"\n>\n <ng-content></ng-content>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25275
|
-
}
|
|
25276
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: BadgeComponent, decorators: [{
|
|
25277
|
-
type: Component,
|
|
25278
|
-
args: [{ selector: 'gn-ui-badge', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"inline-block bg-black opacity-70 py-1.5 px-3 rounded font-medium text-gray-50 text-sm leading-none\"\n [ngClass]=\"\n clickable\n ? 'hover:bg-primary cursor-pointer transition-colors duration-100'\n : ''\n \"\n>\n <ng-content></ng-content>\n</div>\n" }]
|
|
25279
|
-
}], propDecorators: { clickable: [{
|
|
25280
|
-
type: Input
|
|
25281
|
-
}] } });
|
|
25282
|
-
|
|
25283
25345
|
class SpinningLoaderComponent {
|
|
25284
25346
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SpinningLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25285
25347
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SpinningLoaderComponent, selector: "gn-ui-spinning-loader", ngImport: i0, template: "<span>\n <svg\n class=\"animate-spin h-8 w-8 text-primary\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n class=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n stroke-width=\"4\"\n ></circle>\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n</span>\n", styles: [""] }); }
|
|
@@ -25296,7 +25358,6 @@ class UiWidgetsModule {
|
|
|
25296
25358
|
StepBarComponent,
|
|
25297
25359
|
LoadingMaskComponent,
|
|
25298
25360
|
PopupAlertComponent,
|
|
25299
|
-
BadgeComponent,
|
|
25300
25361
|
SpinningLoaderComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
25301
25362
|
FormsModule,
|
|
25302
25363
|
ReactiveFormsModule,
|
|
@@ -25307,7 +25368,6 @@ class UiWidgetsModule {
|
|
|
25307
25368
|
StepBarComponent,
|
|
25308
25369
|
LoadingMaskComponent,
|
|
25309
25370
|
PopupAlertComponent,
|
|
25310
|
-
BadgeComponent,
|
|
25311
25371
|
SpinningLoaderComponent] }); }
|
|
25312
25372
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiWidgetsModule, imports: [CommonModule,
|
|
25313
25373
|
TranslateModule.forChild(),
|
|
@@ -25328,7 +25388,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25328
25388
|
StepBarComponent,
|
|
25329
25389
|
LoadingMaskComponent,
|
|
25330
25390
|
PopupAlertComponent,
|
|
25331
|
-
BadgeComponent,
|
|
25332
25391
|
SpinningLoaderComponent,
|
|
25333
25392
|
],
|
|
25334
25393
|
imports: [
|
|
@@ -25347,12 +25406,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25347
25406
|
StepBarComponent,
|
|
25348
25407
|
LoadingMaskComponent,
|
|
25349
25408
|
PopupAlertComponent,
|
|
25350
|
-
BadgeComponent,
|
|
25351
25409
|
SpinningLoaderComponent,
|
|
25352
25410
|
],
|
|
25353
25411
|
}]
|
|
25354
25412
|
}] });
|
|
25355
25413
|
|
|
25414
|
+
class BadgeComponent {
|
|
25415
|
+
constructor() {
|
|
25416
|
+
this.clickable = false;
|
|
25417
|
+
}
|
|
25418
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: BadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25419
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: BadgeComponent, isStandalone: true, selector: "gn-ui-badge", inputs: { clickable: "clickable" }, ngImport: i0, template: "<div\n class=\"gn-ui-badge\"\n [ngClass]=\"\n clickable\n ? 'hover:bg-primary cursor-pointer transition-colors duration-100'\n : ''\n \"\n>\n <ng-content></ng-content>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25420
|
+
}
|
|
25421
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: BadgeComponent, decorators: [{
|
|
25422
|
+
type: Component,
|
|
25423
|
+
args: [{ selector: 'gn-ui-badge', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div\n class=\"gn-ui-badge\"\n [ngClass]=\"\n clickable\n ? 'hover:bg-primary cursor-pointer transition-colors duration-100'\n : ''\n \"\n>\n <ng-content></ng-content>\n</div>\n" }]
|
|
25424
|
+
}], propDecorators: { clickable: [{
|
|
25425
|
+
type: Input
|
|
25426
|
+
}] } });
|
|
25427
|
+
|
|
25356
25428
|
class ViewportIntersectorComponent {
|
|
25357
25429
|
constructor(vcRef) {
|
|
25358
25430
|
this.vcRef = vcRef;
|
|
@@ -27153,7 +27225,7 @@ class MetadataInfoComponent {
|
|
|
27153
27225
|
this.keyword.emit(keyword);
|
|
27154
27226
|
}
|
|
27155
27227
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27156
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataInfoComponent, 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 ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"mt-6 mb-3 font-medium text-primary text-sm\" translate>\n record.metadata.keywords\n </p>\n <div class=\"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 [title]=\"'record.metadata.usage' | translate\">\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 <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\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 <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\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.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\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 <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\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.recordCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordCreated.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.recordPublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordPublished.toLocaleDateString() }}\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.languages\">\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.languages\"\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=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\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 && metadata.recordUpdated.toLocaleString() }}\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 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 mat-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27228
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataInfoComponent, 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 ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"mt-6 mb-3 font-medium text-primary text-sm\" translate>\n record.metadata.keywords\n </p>\n <div class=\"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 [title]=\"'record.metadata.usage' | translate\">\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 <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\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 <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\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.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\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 <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\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.recordCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordCreated.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.recordPublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordPublished.toLocaleDateString() }}\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.languages\">\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.languages\"\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=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\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 && metadata.recordUpdated.toLocaleString() }}\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 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 mat-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27157
27229
|
}
|
|
27158
27230
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataInfoComponent, decorators: [{
|
|
27159
27231
|
type: Component,
|
|
@@ -27962,7 +28034,8 @@ class UiElementsModule {
|
|
|
27962
28034
|
NgOptimizedImage,
|
|
27963
28035
|
MarkdownParserComponent,
|
|
27964
28036
|
ThumbnailComponent,
|
|
27965
|
-
TimeSincePipe
|
|
28037
|
+
TimeSincePipe,
|
|
28038
|
+
BadgeComponent], exports: [MetadataInfoComponent,
|
|
27966
28039
|
ContentGhostComponent,
|
|
27967
28040
|
DownloadItemComponent,
|
|
27968
28041
|
DownloadsListComponent,
|
|
@@ -27993,7 +28066,8 @@ class UiElementsModule {
|
|
|
27993
28066
|
RouterModule,
|
|
27994
28067
|
UiInputsModule,
|
|
27995
28068
|
FormsModule,
|
|
27996
|
-
ThumbnailComponent
|
|
28069
|
+
ThumbnailComponent,
|
|
28070
|
+
BadgeComponent] }); }
|
|
27997
28071
|
}
|
|
27998
28072
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiElementsModule, decorators: [{
|
|
27999
28073
|
type: NgModule,
|
|
@@ -28013,6 +28087,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28013
28087
|
MarkdownParserComponent,
|
|
28014
28088
|
ThumbnailComponent,
|
|
28015
28089
|
TimeSincePipe,
|
|
28090
|
+
BadgeComponent,
|
|
28016
28091
|
],
|
|
28017
28092
|
declarations: [
|
|
28018
28093
|
MetadataInfoComponent,
|
|
@@ -30153,10 +30228,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
30153
30228
|
}] });
|
|
30154
30229
|
|
|
30155
30230
|
class ResultsTableComponent {
|
|
30156
|
-
constructor(searchFacade, searchService, selectionService) {
|
|
30231
|
+
constructor(searchFacade, searchService, selectionService, recordsRepository) {
|
|
30157
30232
|
this.searchFacade = searchFacade;
|
|
30158
30233
|
this.searchService = searchService;
|
|
30159
30234
|
this.selectionService = selectionService;
|
|
30235
|
+
this.recordsRepository = recordsRepository;
|
|
30160
30236
|
this.recordClick = new EventEmitter();
|
|
30161
30237
|
this.records$ = this.searchFacade.results$;
|
|
30162
30238
|
this.selectedRecords$ = this.selectionService.selectedRecordsIdentifiers$;
|
|
@@ -30243,8 +30319,11 @@ class ResultsTableComponent {
|
|
|
30243
30319
|
return !allSelected && someSelected;
|
|
30244
30320
|
}));
|
|
30245
30321
|
}
|
|
30246
|
-
|
|
30247
|
-
|
|
30322
|
+
hasDraft(record) {
|
|
30323
|
+
return this.recordsRepository.recordHasDraft(record.uniqueIdentifier);
|
|
30324
|
+
}
|
|
30325
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsTableComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: SelectionService }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30326
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", outputs: { recordClick: "recordClick" }, ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records$ | async\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected() | async\"\n [indeterminate]=\"isSomeSelected() | async\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item) | async\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword') | async\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full\">\n <span class=\"overflow-hidden text-ellipsis\">{{ item.title }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.4em 0.6em'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner') | async\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate') | async\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable"] }] }); }
|
|
30248
30327
|
}
|
|
30249
30328
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
30250
30329
|
type: Component,
|
|
@@ -30255,8 +30334,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
30255
30334
|
InteractiveTableColumnComponent,
|
|
30256
30335
|
MatIconModule,
|
|
30257
30336
|
TranslateModule,
|
|
30258
|
-
|
|
30259
|
-
|
|
30337
|
+
BadgeComponent,
|
|
30338
|
+
], template: "<gn-ui-interactive-table\n [items]=\"records$ | async\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected() | async\"\n [indeterminate]=\"isSomeSelected() | async\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item) | async\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword') | async\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full\">\n <span class=\"overflow-hidden text-ellipsis\">{{ item.title }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.4em 0.6em'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner') | async\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate') | async\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
|
|
30339
|
+
}], ctorParameters: function () { return [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }, { type: RecordsRepositoryInterface }]; }, propDecorators: { recordClick: [{
|
|
30260
30340
|
type: Output
|
|
30261
30341
|
}] } });
|
|
30262
30342
|
|
|
@@ -32738,7 +32818,7 @@ class MdViewEffects {
|
|
|
32738
32818
|
/*
|
|
32739
32819
|
Metadata effects
|
|
32740
32820
|
*/
|
|
32741
|
-
this.loadFullMetadata$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadata), switchMap$1(({ uuid }) => this.recordsRepository.
|
|
32821
|
+
this.loadFullMetadata$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadata), switchMap$1(({ uuid }) => this.recordsRepository.getRecord(uuid)), map$1((record) => {
|
|
32742
32822
|
if (record === null) {
|
|
32743
32823
|
return loadFullMetadataFailure({ notFound: true });
|
|
32744
32824
|
}
|
|
@@ -33695,14 +33775,18 @@ const DEFAULT_FIELDS = [
|
|
|
33695
33775
|
const EDITOR_FEATURE_KEY = 'editor';
|
|
33696
33776
|
const initialEditorState = {
|
|
33697
33777
|
record: null,
|
|
33778
|
+
recordSource: null,
|
|
33779
|
+
alreadySavedOnce: false,
|
|
33698
33780
|
saving: false,
|
|
33699
33781
|
saveError: null,
|
|
33700
33782
|
changedSinceSave: false,
|
|
33701
33783
|
fieldsConfig: DEFAULT_FIELDS,
|
|
33702
33784
|
};
|
|
33703
|
-
const reducer = createReducer(initialEditorState, on(openRecord, (state, { record }) => ({
|
|
33785
|
+
const reducer = createReducer(initialEditorState, on(openRecord, (state, { record, recordSource, alreadySavedOnce }) => ({
|
|
33704
33786
|
...state,
|
|
33705
33787
|
changedSinceSave: false,
|
|
33788
|
+
recordSource: recordSource ?? null,
|
|
33789
|
+
alreadySavedOnce,
|
|
33706
33790
|
record,
|
|
33707
33791
|
})), on(saveRecord, (state) => ({
|
|
33708
33792
|
...state,
|
|
@@ -33733,9 +33817,11 @@ function editorReducer(state, action) {
|
|
|
33733
33817
|
|
|
33734
33818
|
const selectEditorState = createFeatureSelector(EDITOR_FEATURE_KEY);
|
|
33735
33819
|
const selectRecord = createSelector(selectEditorState, (state) => state.record);
|
|
33820
|
+
const selectRecordSource = createSelector(selectEditorState, (state) => state.recordSource);
|
|
33736
33821
|
const selectRecordSaving = createSelector(selectEditorState, (state) => state.saving);
|
|
33737
33822
|
const selectRecordSaveError = createSelector(selectEditorState, (state) => state.saveError);
|
|
33738
33823
|
const selectRecordChangedSinceSave = createSelector(selectEditorState, (state) => state.changedSinceSave);
|
|
33824
|
+
const selectRecordAlreadySavedOnce = createSelector(selectEditorState, (state) => state.alreadySavedOnce);
|
|
33739
33825
|
const selectRecordFieldsConfig = createSelector(selectEditorState, (state) => state.fieldsConfig);
|
|
33740
33826
|
const selectRecordFields = createSelector(selectEditorState, (state) => state.fieldsConfig.map((fieldConfig) => ({
|
|
33741
33827
|
config: fieldConfig,
|
|
@@ -33747,14 +33833,16 @@ class EditorFacade {
|
|
|
33747
33833
|
this.store = inject(Store);
|
|
33748
33834
|
this.actions$ = inject(Actions);
|
|
33749
33835
|
this.record$ = this.store.pipe(select(selectRecord));
|
|
33836
|
+
this.recordSource$ = this.store.pipe(select(selectRecordSource));
|
|
33837
|
+
this.alreadySavedOnce$ = this.store.pipe(select(selectRecordAlreadySavedOnce));
|
|
33750
33838
|
this.saving$ = this.store.pipe(select(selectRecordSaving));
|
|
33751
33839
|
this.saveError$ = this.store.pipe(select(selectRecordSaveError), filter$1((error) => !!error));
|
|
33752
33840
|
this.saveSuccess$ = this.actions$.pipe(ofType(saveRecordSuccess));
|
|
33753
33841
|
this.changedSinceSave$ = this.store.pipe(select(selectRecordChangedSinceSave));
|
|
33754
33842
|
this.recordFields$ = this.store.pipe(select(selectRecordFields));
|
|
33755
33843
|
}
|
|
33756
|
-
openRecord(record) {
|
|
33757
|
-
this.store.dispatch(openRecord({ record }));
|
|
33844
|
+
openRecord(record, recordSource, alreadySavedOnce) {
|
|
33845
|
+
this.store.dispatch(openRecord({ record, recordSource, alreadySavedOnce }));
|
|
33758
33846
|
}
|
|
33759
33847
|
saveRecord() {
|
|
33760
33848
|
this.store.dispatch(saveRecord());
|
|
@@ -33783,23 +33871,10 @@ function evaluate(expression) {
|
|
|
33783
33871
|
}
|
|
33784
33872
|
|
|
33785
33873
|
class EditorService {
|
|
33786
|
-
constructor(
|
|
33787
|
-
this.
|
|
33788
|
-
this.apiConfiguration = apiConfiguration;
|
|
33789
|
-
this.apiUrl = `${this.apiConfiguration?.basePath || '/geonetwork/srv/api'}`;
|
|
33790
|
-
}
|
|
33791
|
-
// TODO: use the catalog repository instead
|
|
33792
|
-
loadRecordByUuid(uuid) {
|
|
33793
|
-
return this.http
|
|
33794
|
-
.get(`${this.apiUrl}/records/${uuid}/formatters/xml`, {
|
|
33795
|
-
responseType: 'text',
|
|
33796
|
-
headers: {
|
|
33797
|
-
Accept: 'application/xml',
|
|
33798
|
-
},
|
|
33799
|
-
})
|
|
33800
|
-
.pipe(switchMap$1((response) => findConverterForDocument(response).readRecord(response.toString())));
|
|
33874
|
+
constructor(recordsRepository) {
|
|
33875
|
+
this.recordsRepository = recordsRepository;
|
|
33801
33876
|
}
|
|
33802
|
-
// returns the record as it was when saved
|
|
33877
|
+
// returns the record as it was when saved, alongside its source
|
|
33803
33878
|
saveRecord(record, fieldsConfig) {
|
|
33804
33879
|
const savedRecord = { ...record };
|
|
33805
33880
|
// run onSave processes
|
|
@@ -33812,16 +33887,18 @@ class EditorService {
|
|
|
33812
33887
|
});
|
|
33813
33888
|
}
|
|
33814
33889
|
}
|
|
33815
|
-
|
|
33816
|
-
|
|
33817
|
-
|
|
33818
|
-
|
|
33819
|
-
|
|
33820
|
-
|
|
33821
|
-
|
|
33822
|
-
|
|
33890
|
+
return this.recordsRepository
|
|
33891
|
+
.saveRecord(savedRecord)
|
|
33892
|
+
.pipe(map$1((recordSource) => [savedRecord, recordSource]));
|
|
33893
|
+
}
|
|
33894
|
+
// emits and completes once saving is done
|
|
33895
|
+
// note: onSave processes are not run for drafts
|
|
33896
|
+
saveRecordAsDraft(record) {
|
|
33897
|
+
return this.recordsRepository
|
|
33898
|
+
.saveRecordAsDraft(record)
|
|
33899
|
+
.pipe(map$1(() => undefined));
|
|
33823
33900
|
}
|
|
33824
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorService, deps: [{ token:
|
|
33901
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorService, deps: [{ token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
33825
33902
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorService, providedIn: 'root' }); }
|
|
33826
33903
|
}
|
|
33827
33904
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorService, decorators: [{
|
|
@@ -33829,22 +33906,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33829
33906
|
args: [{
|
|
33830
33907
|
providedIn: 'root',
|
|
33831
33908
|
}]
|
|
33832
|
-
}], ctorParameters: function () { return [{ type:
|
|
33833
|
-
type: Optional
|
|
33834
|
-
}, {
|
|
33835
|
-
type: Inject,
|
|
33836
|
-
args: [Configuration]
|
|
33837
|
-
}] }]; } });
|
|
33909
|
+
}], ctorParameters: function () { return [{ type: RecordsRepositoryInterface }]; } });
|
|
33838
33910
|
|
|
33839
33911
|
class EditorEffects {
|
|
33840
33912
|
constructor() {
|
|
33841
33913
|
this.actions$ = inject(Actions);
|
|
33842
33914
|
this.editorService = inject(EditorService);
|
|
33915
|
+
this.recordsRepository = inject(RecordsRepositoryInterface);
|
|
33843
33916
|
this.store = inject(Store);
|
|
33844
|
-
this.saveRecord$ = createEffect(() => this.actions$.pipe(ofType(saveRecord), withLatestFrom$1(this.store.select(selectRecord), this.store.select(selectRecordFieldsConfig)), switchMap$1(([, record, fieldsConfig]) => this.editorService.saveRecord(record, fieldsConfig).pipe(switchMap$1((
|
|
33917
|
+
this.saveRecord$ = createEffect(() => this.actions$.pipe(ofType(saveRecord), withLatestFrom$1(this.store.select(selectRecord), this.store.select(selectRecordFieldsConfig)), switchMap$1(([, record, fieldsConfig]) => this.editorService.saveRecord(record, fieldsConfig).pipe(switchMap$1(([record, recordSource]) => of(saveRecordSuccess(), openRecord({
|
|
33918
|
+
record,
|
|
33919
|
+
alreadySavedOnce: true,
|
|
33920
|
+
recordSource,
|
|
33921
|
+
}))), catchError((error) => of(saveRecordFailure({
|
|
33845
33922
|
error: error.message,
|
|
33846
33923
|
})))))));
|
|
33847
33924
|
this.markAsChanged$ = createEffect(() => this.actions$.pipe(ofType(updateRecordField), map$1(() => markRecordAsChanged())));
|
|
33925
|
+
this.saveRecordDraft$ = createEffect(() => this.actions$.pipe(ofType(updateRecordField), debounceTime$1(1000), withLatestFrom$1(this.store.select(selectRecord)), switchMap$1(([, record]) => this.editorService.saveRecordAsDraft(record))), { dispatch: false });
|
|
33926
|
+
this.checkHasChangesOnOpen$ = createEffect(() => this.actions$.pipe(ofType(openRecord), map$1(({ record }) => this.recordsRepository.recordHasDraft(record.uniqueIdentifier)), filter$1((hasDraft) => hasDraft), map$1(() => markRecordAsChanged())));
|
|
33848
33927
|
}
|
|
33849
33928
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorEffects, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
33850
33929
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditorEffects }); }
|
|
@@ -35061,5 +35140,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
35061
35140
|
* Generated bundle index. Do not edit.
|
|
35062
35141
|
*/
|
|
35063
35142
|
|
|
35064
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MultilingualSearchField, MyOrgService, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, downgradeImage, downsizeImage, dragPanCondition, dropEmptyTranslations, editorReducer, findConverterForDocument, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, openRecord, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$2 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, saveRecord, saveRecordFailure, saveRecordSuccess, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordChangedSinceSave, selectRecordFields, selectRecordFieldsConfig, selectRecordSaveError, selectRecordSaving, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, totalPages, updateLayer, updateRecordField };
|
|
35143
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MultilingualSearchField, MyOrgService, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, downgradeImage, downsizeImage, dragPanCondition, dropEmptyTranslations, editorReducer, findConverterForDocument, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, openRecord, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$2 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, saveRecord, saveRecordFailure, saveRecordSuccess, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordAlreadySavedOnce, selectRecordChangedSinceSave, selectRecordFields, selectRecordFieldsConfig, selectRecordSaveError, selectRecordSaving, selectRecordSource, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, totalPages, updateLayer, updateRecordField };
|
|
35065
35144
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|