geonetwork-ui 2.7.0-dev.d500b08cc → 2.7.0-dev.d6c0958d7
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/iso19139/utils/status.mapper.mjs +4 -1
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +5 -1
- package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +4 -6
- package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +28 -4
- package/esm2022/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +5 -1
- package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
- package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +10 -2
- package/esm2022/libs/feature/editor/src/index.mjs +2 -1
- package/esm2022/libs/feature/editor/src/lib/components/metadata-quality-panel/metadata-quality-panel.component.mjs +80 -0
- package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +3 -3
- package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +1 -3
- package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +31 -12
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +76 -27
- package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +4 -2
- package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +4 -3
- package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +5 -4
- package/esm2022/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.mjs +5 -4
- package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +4 -4
- package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +21 -43
- package/esm2022/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.mjs +5 -4
- package/esm2022/libs/ui/map/src/lib/components/map-legend/map-legend.component.mjs +2 -2
- package/esm2022/libs/util/app-config/src/lib/app-config.mjs +3 -1
- package/esm2022/libs/util/app-config/src/lib/model.mjs +1 -1
- package/esm2022/libs/util/shared/src/index.mjs +2 -2
- package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +12 -2
- package/esm2022/libs/util/shared/src/lib/record/index.mjs +3 -0
- package/esm2022/libs/util/shared/src/lib/record/quality-score.util.mjs +45 -0
- package/esm2022/libs/util/shared/src/lib/record/record.util.mjs +56 -0
- package/esm2022/libs/util/shared/src/lib/utils/index.mjs +2 -1
- package/esm2022/libs/util/shared/src/lib/utils/mobile-screen.mjs +9 -0
- package/esm2022/translations/de.json +9 -1
- package/esm2022/translations/en.json +9 -1
- package/esm2022/translations/es.json +9 -1
- package/esm2022/translations/fr.json +10 -2
- package/esm2022/translations/it.json +9 -1
- package/esm2022/translations/nl.json +9 -1
- package/esm2022/translations/pt.json +9 -1
- package/esm2022/translations/sk.json +9 -1
- package/fesm2022/geonetwork-ui.mjs +403 -114
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/utils/status.mapper.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +2 -0
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.d.ts +1 -0
- package/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/platform.service.interface.d.ts +1 -0
- package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +3 -2
- package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
- package/libs/feature/editor/src/index.d.ts +1 -0
- package/libs/feature/editor/src/index.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/metadata-quality-panel/metadata-quality-panel.component.d.ts +19 -0
- package/libs/feature/editor/src/lib/components/metadata-quality-panel/metadata-quality-panel.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +8 -4
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +12 -5
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
- package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -0
- package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts +1 -0
- package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts +7 -6
- package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts +1 -0
- package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts.map +1 -1
- package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
- package/libs/util/app-config/src/lib/model.d.ts +1 -0
- package/libs/util/app-config/src/lib/model.d.ts.map +1 -1
- package/libs/util/shared/src/index.d.ts +1 -1
- package/libs/util/shared/src/index.d.ts.map +1 -1
- package/libs/util/shared/src/lib/links/link-utils.d.ts +2 -1
- package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
- package/libs/util/shared/src/lib/record/index.d.ts +3 -0
- package/libs/util/shared/src/lib/record/index.d.ts.map +1 -0
- package/libs/util/shared/src/lib/record/quality-score.util.d.ts +13 -0
- package/libs/util/shared/src/lib/record/quality-score.util.d.ts.map +1 -0
- package/libs/util/shared/src/lib/record/record.util.d.ts +3 -0
- package/libs/util/shared/src/lib/record/record.util.d.ts.map +1 -0
- package/libs/util/shared/src/lib/utils/index.d.ts +1 -0
- package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
- package/libs/util/shared/src/lib/utils/mobile-screen.d.ts +2 -0
- package/libs/util/shared/src/lib/utils/mobile-screen.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/status.mapper.ts +3 -0
- package/src/libs/api/metadata-converter/src/lib/iso19139/utils/status.mapper.ts +3 -0
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +4 -0
- package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +3 -5
- package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +36 -4
- package/src/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.ts +1 -0
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +4 -0
- package/src/libs/common/domain/src/lib/platform.service.interface.ts +2 -0
- package/src/libs/common/fixtures/src/lib/editor/editor.fixtures.ts +0 -3
- package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +10 -1
- package/src/libs/feature/editor/src/index.ts +1 -0
- package/src/libs/feature/editor/src/lib/components/metadata-quality-panel/metadata-quality-panel.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/metadata-quality-panel/metadata-quality-panel.component.html +37 -0
- package/src/libs/feature/editor/src/lib/components/metadata-quality-panel/metadata-quality-panel.component.ts +90 -0
- package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +2 -1
- package/src/libs/feature/editor/src/lib/fields.config.ts +0 -2
- package/src/libs/feature/record/src/lib/data-view/data-view.component.html +2 -0
- package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +34 -15
- package/src/libs/feature/record/src/lib/map-view/map-view.component.html +5 -2
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +70 -23
- package/src/libs/feature/record/src/lib/state/mdview.effects.ts +5 -1
- package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +6 -1
- package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +12 -11
- package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +7 -1
- package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.html +4 -1
- package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.ts +7 -1
- package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +1 -0
- package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +5 -1
- package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +1 -0
- package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +21 -54
- package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.html +7 -1
- package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.ts +3 -1
- package/src/libs/ui/map/src/lib/components/map-legend/map-legend.component.ts +1 -1
- package/src/libs/util/app-config/src/lib/app-config.ts +2 -0
- package/src/libs/util/app-config/src/lib/model.ts +1 -0
- package/src/libs/util/shared/src/index.ts +1 -1
- package/src/libs/util/shared/src/lib/links/link-utils.ts +11 -1
- package/src/libs/util/shared/src/lib/record/index.ts +2 -0
- package/src/libs/util/shared/src/lib/record/quality-score.util.ts +69 -0
- package/src/libs/util/shared/src/lib/{record.util.ts → record/record.util.ts} +1 -1
- package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
- package/src/libs/util/shared/src/lib/utils/mobile-screen.ts +14 -0
- package/translations/de.json +9 -1
- package/translations/en.json +9 -1
- package/translations/es.json +9 -1
- package/translations/fr.json +10 -2
- package/translations/it.json +9 -1
- package/translations/nl.json +9 -1
- package/translations/pt.json +9 -1
- package/translations/sk.json +9 -1
- package/esm2022/libs/util/shared/src/lib/record.util.mjs +0 -56
- package/libs/util/shared/src/lib/record.util.d.ts +0 -3
- package/libs/util/shared/src/lib/record.util.d.ts.map +0 -1
|
@@ -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, catchError, tap as tap$1, filter, startWith, withLatestFrom, switchMap as switchMap$1, take, mergeMap, delay, distinctUntilChanged, debounceTime, finalize, throttleTime, share, pairwise, first as first$1, defaultIfEmpty, toArray } from 'rxjs/operators';
|
|
18
|
-
import { of, map as map$2, lastValueFrom, Subject, switchMap, combineLatest, from, exhaustMap, throwError, forkJoin, takeLast, firstValueFrom, merge, BehaviorSubject, fromEvent, timer, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, animationFrameScheduler, debounceTime as debounceTime$1, filter as filter$1, take as take$1, tap as tap$2, Observable, buffer, combineLatestWith,
|
|
18
|
+
import { of, map as map$2, lastValueFrom, Subject, switchMap, combineLatest, from, exhaustMap, throwError, forkJoin, takeLast, firstValueFrom, merge, BehaviorSubject, fromEvent, startWith as startWith$1, shareReplay as shareReplay$1, timer, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, animationFrameScheduler, debounceTime as debounceTime$1, filter as filter$1, take as take$1, tap as tap$2, Observable, buffer, combineLatestWith, catchError as catchError$1, takeUntil, EMPTY, mergeMap as mergeMap$1, withLatestFrom as withLatestFrom$1, pairwise as pairwise$1 } from 'rxjs';
|
|
19
19
|
import { lt, valid, coerce, satisfies, ltr } from 'semver';
|
|
20
20
|
import * as i1$2 from '@angular/common';
|
|
21
21
|
import { CommonModule, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault, NgClass, NgTemplateOutlet, DatePipe } from '@angular/common';
|
|
@@ -38,7 +38,7 @@ import * as TOML from '@ltd/j-toml';
|
|
|
38
38
|
import { Style, Fill, Stroke, Circle } from 'ol/style';
|
|
39
39
|
import CircleStyle from 'ol/style/Circle';
|
|
40
40
|
import EmblaCarousel from 'embla-carousel';
|
|
41
|
-
import { iconoirNavArrowRight, iconoirNavArrowLeft, iconoirSearch, iconoirLongArrowDownLeft, iconoirCalendar, iconoirLink, iconoirArrowUp, iconoirCloudUpload, iconoirFramePlusIn, iconoirReduce, iconoirNavArrowDown, iconoirNavArrowUp, iconoirExpand, iconoirAppleWallet, iconoirDatabase, iconoirCode, iconoirAppWindow, iconoirBank, iconoirSettings, iconoirDownload, iconoirMediaImage, iconoirMediaImageXmark, iconoirBin, iconoirPlus, iconoirList, iconoirUser, iconoirLock, iconoirTranslate, iconoirImport, iconoirLightBulbOn, iconoirArrowLeft, iconoirAttachment, iconoirRefresh, iconoirCheckCircle, iconoirCircle } from '@ng-icons/iconoir';
|
|
41
|
+
import { iconoirNavArrowRight, iconoirNavArrowLeft, iconoirSearch, iconoirLongArrowDownLeft, iconoirCalendar, iconoirLink, iconoirArrowUp, iconoirCloudUpload, iconoirFramePlusIn, iconoirReduce, iconoirNavArrowDown, iconoirNavArrowUp, iconoirExpand, iconoirAppleWallet, iconoirDatabase, iconoirCode, iconoirAppWindow, iconoirBank, iconoirSettings, iconoirDownload, iconoirMediaImage, iconoirMediaImageXmark, iconoirBin, iconoirPlus, iconoirList, iconoirUser, iconoirLock, iconoirTranslate, iconoirImport, iconoirLightBulbOn, iconoirArrowLeft, iconoirAttachment, iconoirRefresh, iconoirCheckCircle, iconoirCircle, iconoirSystemShut, iconoirBadgeCheck } from '@ng-icons/iconoir';
|
|
42
42
|
import { MatButtonModule } from '@angular/material/button';
|
|
43
43
|
import * as i1$8 from '@angular/cdk/overlay';
|
|
44
44
|
import { CdkConnectedOverlay, OverlayModule, CdkOverlayOrigin } from '@angular/cdk/overlay';
|
|
@@ -795,8 +795,11 @@ function getStatusFromStatusCode(statusCode) {
|
|
|
795
795
|
case 'onGoing':
|
|
796
796
|
return 'ongoing';
|
|
797
797
|
case 'planned':
|
|
798
|
+
return 'planned';
|
|
798
799
|
case 'required':
|
|
800
|
+
return 'required';
|
|
799
801
|
case 'underDevelopment':
|
|
802
|
+
return 'under_development';
|
|
800
803
|
default:
|
|
801
804
|
return 'under_development';
|
|
802
805
|
}
|
|
@@ -893,12 +896,16 @@ marker('domain.record.status.ongoing');
|
|
|
893
896
|
marker('domain.record.status.under_development');
|
|
894
897
|
marker('domain.record.status.deprecated');
|
|
895
898
|
marker('domain.record.status.removed');
|
|
899
|
+
marker('domain.record.status.planned');
|
|
900
|
+
marker('domain.record.status.required');
|
|
896
901
|
const RecordStatusValues = [
|
|
897
902
|
'completed',
|
|
898
903
|
'ongoing',
|
|
899
904
|
'under_development',
|
|
900
905
|
'deprecated',
|
|
901
906
|
'removed',
|
|
907
|
+
'planned',
|
|
908
|
+
'required',
|
|
902
909
|
];
|
|
903
910
|
|
|
904
911
|
function getUpdateFrequencyFromFrequencyCode(frequencyCode) {
|
|
@@ -1565,6 +1572,10 @@ function getProgressCode(status) {
|
|
|
1565
1572
|
return 'removed';
|
|
1566
1573
|
case 'under_development':
|
|
1567
1574
|
return 'underDevelopment';
|
|
1575
|
+
case 'planned':
|
|
1576
|
+
return 'planned';
|
|
1577
|
+
case 'required':
|
|
1578
|
+
return 'required';
|
|
1568
1579
|
default:
|
|
1569
1580
|
throw new Error(`Could not determine progress code from status: ${status}`);
|
|
1570
1581
|
}
|
|
@@ -18770,7 +18781,9 @@ var de = {
|
|
|
18770
18781
|
"domain.record.status.completed": "Abgeschlossen",
|
|
18771
18782
|
"domain.record.status.deprecated": "Veraltet",
|
|
18772
18783
|
"domain.record.status.ongoing": "Kontinuierliche Aktualisierung",
|
|
18784
|
+
"domain.record.status.planned": "",
|
|
18773
18785
|
"domain.record.status.removed": "Entfernt",
|
|
18786
|
+
"domain.record.status.required": "",
|
|
18774
18787
|
"domain.record.status.under_development": "In Erstellung",
|
|
18775
18788
|
"domain.record.updateFrequency.annually": "Daten werden jedes Jahr aktualisiert",
|
|
18776
18789
|
"domain.record.updateFrequency.asNeeded": "Daten werden nach Bedarf aktualisiert",
|
|
@@ -18826,6 +18839,7 @@ var de = {
|
|
|
18826
18839
|
"editor.record.form.draft.updateAlert": "",
|
|
18827
18840
|
"editor.record.form.field.abstract": "Kurzbeschreibung",
|
|
18828
18841
|
"editor.record.form.field.constraintsShortcuts": "",
|
|
18842
|
+
"editor.record.form.field.contacts": "Ansprechpartner - Email",
|
|
18829
18843
|
"editor.record.form.field.contacts.noContact": "",
|
|
18830
18844
|
"editor.record.form.field.contacts.placeholder": "",
|
|
18831
18845
|
"editor.record.form.field.contactsForResource.noContact": "",
|
|
@@ -18850,6 +18864,7 @@ var de = {
|
|
|
18850
18864
|
"editor.record.form.field.onlineResource.toggle.dataset": "",
|
|
18851
18865
|
"editor.record.form.field.onlineResource.toggle.service": "",
|
|
18852
18866
|
"editor.record.form.field.onlineResources": "",
|
|
18867
|
+
"editor.record.form.field.organisation": "Ansprechpartner - Organisation",
|
|
18853
18868
|
"editor.record.form.field.otherConstraints": "Allgemeine Einschränkung",
|
|
18854
18869
|
"editor.record.form.field.overviews": "",
|
|
18855
18870
|
"editor.record.form.field.recordUpdated": "Datensatz zuletzt aktualisiert",
|
|
@@ -18861,6 +18876,7 @@ var de = {
|
|
|
18861
18876
|
"editor.record.form.field.temporalExtents": "Zeitlicher Umfang",
|
|
18862
18877
|
"editor.record.form.field.title": "Metadaten-Titel",
|
|
18863
18878
|
"editor.record.form.field.title.placeholder": "Geben Sie einen Titel ein",
|
|
18879
|
+
"editor.record.form.field.topics": "Kategorien",
|
|
18864
18880
|
"editor.record.form.field.uniqueIdentifier": "Eindeutige Kennung (ID)",
|
|
18865
18881
|
"editor.record.form.field.updateFrequency": "Aktualisierungshäufigkeit",
|
|
18866
18882
|
"editor.record.form.keywords.place.placeholder": "",
|
|
@@ -18875,6 +18891,8 @@ var de = {
|
|
|
18875
18891
|
"editor.record.form.license.odc-by": "",
|
|
18876
18892
|
"editor.record.form.license.pddl": "",
|
|
18877
18893
|
"editor.record.form.license.unknown": "",
|
|
18894
|
+
"editor.record.form.metadataQuality.open": "Öffnen Sie das Panel zur Metadatenqualität",
|
|
18895
|
+
"editor.record.form.metadataQuality.title": "Vollständigkeit",
|
|
18878
18896
|
"editor.record.form.multilingual.activate": "",
|
|
18879
18897
|
"editor.record.form.multilingual.default": "",
|
|
18880
18898
|
"editor.record.form.multilingual.enable": "",
|
|
@@ -19024,6 +19042,7 @@ var de = {
|
|
|
19024
19042
|
"map.layer.add": "Hinzufügen",
|
|
19025
19043
|
"map.layers.available": "Verfügbare Layer",
|
|
19026
19044
|
"map.layers.list": "Ebenen",
|
|
19045
|
+
"map.legend.title": "Legende",
|
|
19027
19046
|
"map.loading.data": "Kartendaten werden geladen...",
|
|
19028
19047
|
"map.loading.service": "Dienst wird geladen...",
|
|
19029
19048
|
"map.navigation.message": "Bitte verwenden Sie STRG + Maus (oder zwei Finger auf einem Mobilgerät), um die Karte zu navigieren",
|
|
@@ -19057,7 +19076,6 @@ var de = {
|
|
|
19057
19076
|
"record.action.rollback": "",
|
|
19058
19077
|
"record.action.switchLang": "",
|
|
19059
19078
|
"record.action.view": "Anzeigen",
|
|
19060
|
-
"record.card.metadata.contact": "",
|
|
19061
19079
|
"record.externalViewer.open": "In externem Kartenviewer öffnen",
|
|
19062
19080
|
"record.feature.catalog.number.total.attribute": "",
|
|
19063
19081
|
"record.feature.catalog.number.total.object": "",
|
|
@@ -19263,6 +19281,7 @@ var de = {
|
|
|
19263
19281
|
"service.metadata.filter.noLayers": "",
|
|
19264
19282
|
"service.metadata.other": "",
|
|
19265
19283
|
"service.metadata.question": "",
|
|
19284
|
+
"service.metadata.reuse": "",
|
|
19266
19285
|
"service.metadata.search": "",
|
|
19267
19286
|
"service.metadata.search.clear": "",
|
|
19268
19287
|
"service.metadata.spatialExtent": "",
|
|
@@ -19380,7 +19399,9 @@ var en = {
|
|
|
19380
19399
|
"domain.record.status.completed": "Completed",
|
|
19381
19400
|
"domain.record.status.deprecated": "Deprecated",
|
|
19382
19401
|
"domain.record.status.ongoing": "Ongoing",
|
|
19402
|
+
"domain.record.status.planned": "Planned",
|
|
19383
19403
|
"domain.record.status.removed": "Removed",
|
|
19404
|
+
"domain.record.status.required": "Required",
|
|
19384
19405
|
"domain.record.status.under_development": "Under development",
|
|
19385
19406
|
"domain.record.updateFrequency.annually": "Data is updated every year",
|
|
19386
19407
|
"domain.record.updateFrequency.asNeeded": "Data is updated as deemed necessary",
|
|
@@ -19436,6 +19457,7 @@ var en = {
|
|
|
19436
19457
|
"editor.record.form.draft.updateAlert": "Since you created this draft, the dataset has been updated on { date } by { user }. Publishing your draft might erase their edits. To avoid this, you need to either cancel your changes or knowingly publish your own version.",
|
|
19437
19458
|
"editor.record.form.field.abstract": "Abstract",
|
|
19438
19459
|
"editor.record.form.field.constraintsShortcuts": "",
|
|
19460
|
+
"editor.record.form.field.contacts": "Point of contact - Email",
|
|
19439
19461
|
"editor.record.form.field.contacts.noContact": "Please provide at least one point of contact.",
|
|
19440
19462
|
"editor.record.form.field.contacts.placeholder": "Choose a contact",
|
|
19441
19463
|
"editor.record.form.field.contactsForResource.noContact": "Please provide at least one point of contact responsible for the data.",
|
|
@@ -19460,6 +19482,7 @@ var en = {
|
|
|
19460
19482
|
"editor.record.form.field.onlineResource.toggle.dataset": "Link to a file",
|
|
19461
19483
|
"editor.record.form.field.onlineResource.toggle.service": "Link to a service",
|
|
19462
19484
|
"editor.record.form.field.onlineResources": "Distribution",
|
|
19485
|
+
"editor.record.form.field.organisation": "Point of contact - Organization",
|
|
19463
19486
|
"editor.record.form.field.otherConstraints": "Other constraint",
|
|
19464
19487
|
"editor.record.form.field.overviews": "Overview",
|
|
19465
19488
|
"editor.record.form.field.recordUpdated": "Record updated",
|
|
@@ -19471,6 +19494,7 @@ var en = {
|
|
|
19471
19494
|
"editor.record.form.field.temporalExtents": "Temporal extents",
|
|
19472
19495
|
"editor.record.form.field.title": "Metadata title",
|
|
19473
19496
|
"editor.record.form.field.title.placeholder": "Enter a title",
|
|
19497
|
+
"editor.record.form.field.topics": "Categories",
|
|
19474
19498
|
"editor.record.form.field.uniqueIdentifier": "Unique identifier",
|
|
19475
19499
|
"editor.record.form.field.updateFrequency": "Update frequency",
|
|
19476
19500
|
"editor.record.form.keywords.place.placeholder": "Search for place keywords",
|
|
@@ -19485,6 +19509,8 @@ var en = {
|
|
|
19485
19509
|
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
19486
19510
|
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
19487
19511
|
"editor.record.form.license.unknown": "Unknown or absent",
|
|
19512
|
+
"editor.record.form.metadataQuality.open": "Open the metadata quality panel",
|
|
19513
|
+
"editor.record.form.metadataQuality.title": "Completeness",
|
|
19488
19514
|
"editor.record.form.multilingual.activate": "Activate the languages",
|
|
19489
19515
|
"editor.record.form.multilingual.default": "Default",
|
|
19490
19516
|
"editor.record.form.multilingual.enable": "Multilingual Mode",
|
|
@@ -19634,6 +19660,7 @@ var en = {
|
|
|
19634
19660
|
"map.layer.add": "Add",
|
|
19635
19661
|
"map.layers.available": "Available Layers",
|
|
19636
19662
|
"map.layers.list": "Layers",
|
|
19663
|
+
"map.legend.title": "Legend",
|
|
19637
19664
|
"map.loading.data": "Loading map data...",
|
|
19638
19665
|
"map.loading.service": "Loading service...",
|
|
19639
19666
|
"map.navigation.message": "Please use CTRL + mouse (or two fingers on mobile) to navigate the map",
|
|
@@ -19667,7 +19694,6 @@ var en = {
|
|
|
19667
19694
|
"record.action.rollback": "Rollback",
|
|
19668
19695
|
"record.action.switchLang": "Switch to default",
|
|
19669
19696
|
"record.action.view": "View",
|
|
19670
|
-
"record.card.metadata.contact": "Metadata Contact",
|
|
19671
19697
|
"record.externalViewer.open": "Open in the external map viewer",
|
|
19672
19698
|
"record.feature.catalog.number.total.attribute": "Total amount of objects",
|
|
19673
19699
|
"record.feature.catalog.number.total.object": "Total amount of attributes",
|
|
@@ -19873,6 +19899,7 @@ var en = {
|
|
|
19873
19899
|
"service.metadata.filter.noLayers": "No layer matches your search",
|
|
19874
19900
|
"service.metadata.other": "Other information",
|
|
19875
19901
|
"service.metadata.question": "Ask a question",
|
|
19902
|
+
"service.metadata.reuse": "Declare a reuse",
|
|
19876
19903
|
"service.metadata.search": "Search through the layer list",
|
|
19877
19904
|
"service.metadata.search.clear": "Clear the layer search",
|
|
19878
19905
|
"service.metadata.spatialExtent": "Spatial extent",
|
|
@@ -19990,7 +20017,9 @@ var es = {
|
|
|
19990
20017
|
"domain.record.status.completed": "",
|
|
19991
20018
|
"domain.record.status.deprecated": "",
|
|
19992
20019
|
"domain.record.status.ongoing": "",
|
|
20020
|
+
"domain.record.status.planned": "",
|
|
19993
20021
|
"domain.record.status.removed": "",
|
|
20022
|
+
"domain.record.status.required": "",
|
|
19994
20023
|
"domain.record.status.under_development": "",
|
|
19995
20024
|
"domain.record.updateFrequency.annually": "Los datos se actualizan cada año",
|
|
19996
20025
|
"domain.record.updateFrequency.asNeeded": "Los datos se actualizan según sea necesario",
|
|
@@ -20046,6 +20075,7 @@ var es = {
|
|
|
20046
20075
|
"editor.record.form.draft.updateAlert": "",
|
|
20047
20076
|
"editor.record.form.field.abstract": "",
|
|
20048
20077
|
"editor.record.form.field.constraintsShortcuts": "",
|
|
20078
|
+
"editor.record.form.field.contacts": "Punto de contacto - Correo ",
|
|
20049
20079
|
"editor.record.form.field.contacts.noContact": "",
|
|
20050
20080
|
"editor.record.form.field.contacts.placeholder": "",
|
|
20051
20081
|
"editor.record.form.field.contactsForResource.noContact": "",
|
|
@@ -20070,6 +20100,7 @@ var es = {
|
|
|
20070
20100
|
"editor.record.form.field.onlineResource.toggle.dataset": "",
|
|
20071
20101
|
"editor.record.form.field.onlineResource.toggle.service": "",
|
|
20072
20102
|
"editor.record.form.field.onlineResources": "",
|
|
20103
|
+
"editor.record.form.field.organisation": "Punto de contacto - Organización",
|
|
20073
20104
|
"editor.record.form.field.otherConstraints": "",
|
|
20074
20105
|
"editor.record.form.field.overviews": "",
|
|
20075
20106
|
"editor.record.form.field.recordUpdated": "",
|
|
@@ -20081,6 +20112,7 @@ var es = {
|
|
|
20081
20112
|
"editor.record.form.field.temporalExtents": "",
|
|
20082
20113
|
"editor.record.form.field.title": "",
|
|
20083
20114
|
"editor.record.form.field.title.placeholder": "Introduzca un título",
|
|
20115
|
+
"editor.record.form.field.topics": "Categorías",
|
|
20084
20116
|
"editor.record.form.field.uniqueIdentifier": "",
|
|
20085
20117
|
"editor.record.form.field.updateFrequency": "",
|
|
20086
20118
|
"editor.record.form.keywords.place.placeholder": "",
|
|
@@ -20095,6 +20127,8 @@ var es = {
|
|
|
20095
20127
|
"editor.record.form.license.odc-by": "",
|
|
20096
20128
|
"editor.record.form.license.pddl": "",
|
|
20097
20129
|
"editor.record.form.license.unknown": "",
|
|
20130
|
+
"editor.record.form.metadataQuality.open": "Abrir el panel de calidad de los metadatos",
|
|
20131
|
+
"editor.record.form.metadataQuality.title": "Completitud",
|
|
20098
20132
|
"editor.record.form.multilingual.activate": "",
|
|
20099
20133
|
"editor.record.form.multilingual.default": "",
|
|
20100
20134
|
"editor.record.form.multilingual.enable": "",
|
|
@@ -20244,6 +20278,7 @@ var es = {
|
|
|
20244
20278
|
"map.layer.add": "",
|
|
20245
20279
|
"map.layers.available": "",
|
|
20246
20280
|
"map.layers.list": "",
|
|
20281
|
+
"map.legend.title": "",
|
|
20247
20282
|
"map.loading.data": "",
|
|
20248
20283
|
"map.loading.service": "",
|
|
20249
20284
|
"map.navigation.message": "",
|
|
@@ -20277,7 +20312,6 @@ var es = {
|
|
|
20277
20312
|
"record.action.rollback": "",
|
|
20278
20313
|
"record.action.switchLang": "",
|
|
20279
20314
|
"record.action.view": "",
|
|
20280
|
-
"record.card.metadata.contact": "",
|
|
20281
20315
|
"record.externalViewer.open": "",
|
|
20282
20316
|
"record.feature.catalog.number.total.attribute": "",
|
|
20283
20317
|
"record.feature.catalog.number.total.object": "",
|
|
@@ -20483,6 +20517,7 @@ var es = {
|
|
|
20483
20517
|
"service.metadata.filter.noLayers": "",
|
|
20484
20518
|
"service.metadata.other": "",
|
|
20485
20519
|
"service.metadata.question": "",
|
|
20520
|
+
"service.metadata.reuse": "",
|
|
20486
20521
|
"service.metadata.search": "",
|
|
20487
20522
|
"service.metadata.search.clear": "",
|
|
20488
20523
|
"service.metadata.spatialExtent": "",
|
|
@@ -20600,7 +20635,9 @@ var fr = {
|
|
|
20600
20635
|
"domain.record.status.completed": "Finalisé",
|
|
20601
20636
|
"domain.record.status.deprecated": "Obsolète",
|
|
20602
20637
|
"domain.record.status.ongoing": "Mise à jour continue",
|
|
20638
|
+
"domain.record.status.planned": "Planifié",
|
|
20603
20639
|
"domain.record.status.removed": "Supprimé",
|
|
20640
|
+
"domain.record.status.required": "Obligatoire",
|
|
20604
20641
|
"domain.record.status.under_development": "En cours de création",
|
|
20605
20642
|
"domain.record.updateFrequency.annually": "Les données sont mises à jour chaque année",
|
|
20606
20643
|
"domain.record.updateFrequency.asNeeded": "Les données sont mises à jour selon les besoins",
|
|
@@ -20613,7 +20650,7 @@ var fr = {
|
|
|
20613
20650
|
"domain.record.updateFrequency.irregular": "Les données sont mises à jour à intervalles irréguliers",
|
|
20614
20651
|
"domain.record.updateFrequency.month": "{count, plural, =0{0 fois} one{Une fois} other{{count} fois}} par mois",
|
|
20615
20652
|
"domain.record.updateFrequency.monthly": "Les données sont mises à jour chaque mois",
|
|
20616
|
-
"domain.record.updateFrequency.notPlanned": "
|
|
20653
|
+
"domain.record.updateFrequency.notPlanned": "La mise à jour des données n’est pas planifiée",
|
|
20617
20654
|
"domain.record.updateFrequency.periodic": "Les données sont mises à jour à intervalles réguliers",
|
|
20618
20655
|
"domain.record.updateFrequency.quarterly": "Les données sont mises à jour tous les trois mois",
|
|
20619
20656
|
"domain.record.updateFrequency.semimonthly": "Les données sont mises à jour deux fois par mois",
|
|
@@ -20656,6 +20693,7 @@ var fr = {
|
|
|
20656
20693
|
"editor.record.form.draft.updateAlert": "Depuis la création de ce brouillon, ce jeu de données a été modifié le { date } par { user }. Publier votre version peut supprimer ses modifications. Pour éviter cela, vous pouvez annuler vos changements, ou publier votre version en connaissance de cause.",
|
|
20657
20694
|
"editor.record.form.field.abstract": "Description",
|
|
20658
20695
|
"editor.record.form.field.constraintsShortcuts": "",
|
|
20696
|
+
"editor.record.form.field.contacts": "Point de contact - Email",
|
|
20659
20697
|
"editor.record.form.field.contacts.noContact": "Veuillez renseigner au moins un point de contact.",
|
|
20660
20698
|
"editor.record.form.field.contacts.placeholder": "Choisissez un contact",
|
|
20661
20699
|
"editor.record.form.field.contactsForResource.noContact": "Veuillez renseigner au moins un point de contact responsable de la donnée.",
|
|
@@ -20680,6 +20718,7 @@ var fr = {
|
|
|
20680
20718
|
"editor.record.form.field.onlineResource.toggle.dataset": "Lier un fichier",
|
|
20681
20719
|
"editor.record.form.field.onlineResource.toggle.service": "Lier un service",
|
|
20682
20720
|
"editor.record.form.field.onlineResources": "Distribution",
|
|
20721
|
+
"editor.record.form.field.organisation": "Point de contact - Organisation",
|
|
20683
20722
|
"editor.record.form.field.otherConstraints": "Contrainte générale",
|
|
20684
20723
|
"editor.record.form.field.overviews": "Aperçu",
|
|
20685
20724
|
"editor.record.form.field.recordUpdated": "Date de mise à jour",
|
|
@@ -20691,6 +20730,7 @@ var fr = {
|
|
|
20691
20730
|
"editor.record.form.field.temporalExtents": "Étendue temporelle",
|
|
20692
20731
|
"editor.record.form.field.title": "Titre",
|
|
20693
20732
|
"editor.record.form.field.title.placeholder": "Saisir un titre",
|
|
20733
|
+
"editor.record.form.field.topics": "Thèmes",
|
|
20694
20734
|
"editor.record.form.field.uniqueIdentifier": "Identifiant unique",
|
|
20695
20735
|
"editor.record.form.field.updateFrequency": "Fréquence de mise à jour",
|
|
20696
20736
|
"editor.record.form.keywords.place.placeholder": "Rechercher une localisation par mot-clé",
|
|
@@ -20705,6 +20745,8 @@ var fr = {
|
|
|
20705
20745
|
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
20706
20746
|
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
20707
20747
|
"editor.record.form.license.unknown": "Inconnue ou absente",
|
|
20748
|
+
"editor.record.form.metadataQuality.open": "Ouvrir le menu de qualité des métadonnées",
|
|
20749
|
+
"editor.record.form.metadataQuality.title": "Complétion",
|
|
20708
20750
|
"editor.record.form.multilingual.activate": "Activez les langues",
|
|
20709
20751
|
"editor.record.form.multilingual.default": "Par défaut",
|
|
20710
20752
|
"editor.record.form.multilingual.enable": "Mode Multilingue",
|
|
@@ -20854,6 +20896,7 @@ var fr = {
|
|
|
20854
20896
|
"map.layer.add": "Ajouter",
|
|
20855
20897
|
"map.layers.available": "Couches disponibles",
|
|
20856
20898
|
"map.layers.list": "Couches",
|
|
20899
|
+
"map.legend.title": "Légende",
|
|
20857
20900
|
"map.loading.data": "Chargement des données...",
|
|
20858
20901
|
"map.loading.service": "Chargement du service...",
|
|
20859
20902
|
"map.navigation.message": "Veuillez utiliser CTRL + souris (ou deux doigts sur mobile) pour naviguer sur la carte",
|
|
@@ -20887,7 +20930,6 @@ var fr = {
|
|
|
20887
20930
|
"record.action.rollback": "Restaurer",
|
|
20888
20931
|
"record.action.switchLang": "Marquer par défaut",
|
|
20889
20932
|
"record.action.view": "Voir",
|
|
20890
|
-
"record.card.metadata.contact": "Contact de la métadonnée ",
|
|
20891
20933
|
"record.externalViewer.open": "Ouvrir dans le visualiseur externe",
|
|
20892
20934
|
"record.feature.catalog.number.total.attribute": "Nombre total d'attributs",
|
|
20893
20935
|
"record.feature.catalog.number.total.object": "Nombre total d'objets",
|
|
@@ -21093,6 +21135,7 @@ var fr = {
|
|
|
21093
21135
|
"service.metadata.filter.noLayers": "Aucune couche ne correspond à votre recherche",
|
|
21094
21136
|
"service.metadata.other": "Autres informations",
|
|
21095
21137
|
"service.metadata.question": "Poser une question",
|
|
21138
|
+
"service.metadata.reuse": "Déclarer une réutilisation",
|
|
21096
21139
|
"service.metadata.search": "Rechercher dans la liste des couches",
|
|
21097
21140
|
"service.metadata.search.clear": "Effacer la recherche des couches",
|
|
21098
21141
|
"service.metadata.spatialExtent": "Etendue spatiale",
|
|
@@ -21210,7 +21253,9 @@ var it = {
|
|
|
21210
21253
|
"domain.record.status.completed": "Completato",
|
|
21211
21254
|
"domain.record.status.deprecated": "Deprecato",
|
|
21212
21255
|
"domain.record.status.ongoing": "Aggiornamento continuo",
|
|
21256
|
+
"domain.record.status.planned": "",
|
|
21213
21257
|
"domain.record.status.removed": "Rimosso",
|
|
21258
|
+
"domain.record.status.required": "",
|
|
21214
21259
|
"domain.record.status.under_development": "In fase di creazione",
|
|
21215
21260
|
"domain.record.updateFrequency.annually": "I dati vengono aggiornati ogni anno",
|
|
21216
21261
|
"domain.record.updateFrequency.asNeeded": "I dati vengono aggiornati secondo necessità",
|
|
@@ -21266,6 +21311,7 @@ var it = {
|
|
|
21266
21311
|
"editor.record.form.draft.updateAlert": "Da quando è stata creata questa bozza, questo dataset è stato modificato il { date } da { user }. La pubblicazione della sua versione potrebbe rimuovere le loro modifiche. Per evitarlo, puoi annullare le sue modifiche o pubblicare la sua versione consapevolmente.",
|
|
21267
21312
|
"editor.record.form.field.abstract": "Riassunto",
|
|
21268
21313
|
"editor.record.form.field.constraintsShortcuts": "",
|
|
21314
|
+
"editor.record.form.field.contacts": "",
|
|
21269
21315
|
"editor.record.form.field.contacts.noContact": "Inserisci almeno un punto di contatto.",
|
|
21270
21316
|
"editor.record.form.field.contacts.placeholder": "Scegli un contatto",
|
|
21271
21317
|
"editor.record.form.field.contactsForResource.noContact": "Inserisci almeno un punto di contatto responsabile dei dati.",
|
|
@@ -21290,6 +21336,7 @@ var it = {
|
|
|
21290
21336
|
"editor.record.form.field.onlineResource.toggle.dataset": "Collega un file",
|
|
21291
21337
|
"editor.record.form.field.onlineResource.toggle.service": "Collega un servizio",
|
|
21292
21338
|
"editor.record.form.field.onlineResources": "Distribuzione",
|
|
21339
|
+
"editor.record.form.field.organisation": "",
|
|
21293
21340
|
"editor.record.form.field.otherConstraints": "Vincolo generale",
|
|
21294
21341
|
"editor.record.form.field.overviews": "Panoramica",
|
|
21295
21342
|
"editor.record.form.field.recordUpdated": "Data di aggiornamento",
|
|
@@ -21301,6 +21348,7 @@ var it = {
|
|
|
21301
21348
|
"editor.record.form.field.temporalExtents": "Estensioni temporali",
|
|
21302
21349
|
"editor.record.form.field.title": "Titolo",
|
|
21303
21350
|
"editor.record.form.field.title.placeholder": "Inserisci un titolo",
|
|
21351
|
+
"editor.record.form.field.topics": "",
|
|
21304
21352
|
"editor.record.form.field.uniqueIdentifier": "Identificatore univoco",
|
|
21305
21353
|
"editor.record.form.field.updateFrequency": "Frequenza di aggiornamento",
|
|
21306
21354
|
"editor.record.form.keywords.place.placeholder": "Cerca una posizione per parola chiave",
|
|
@@ -21315,6 +21363,8 @@ var it = {
|
|
|
21315
21363
|
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
21316
21364
|
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
21317
21365
|
"editor.record.form.license.unknown": "Sconosciuto o assente",
|
|
21366
|
+
"editor.record.form.metadataQuality.open": "",
|
|
21367
|
+
"editor.record.form.metadataQuality.title": "",
|
|
21318
21368
|
"editor.record.form.multilingual.activate": "",
|
|
21319
21369
|
"editor.record.form.multilingual.default": "",
|
|
21320
21370
|
"editor.record.form.multilingual.enable": "Aprire il pannello multilingue",
|
|
@@ -21464,6 +21514,7 @@ var it = {
|
|
|
21464
21514
|
"map.layer.add": "Aggiungi",
|
|
21465
21515
|
"map.layers.available": "Layer disponibili",
|
|
21466
21516
|
"map.layers.list": "Layers",
|
|
21517
|
+
"map.legend.title": "",
|
|
21467
21518
|
"map.loading.data": "Caricamento dati...",
|
|
21468
21519
|
"map.loading.service": "Caricamento del servizio...",
|
|
21469
21520
|
"map.navigation.message": "Si prega di utilizzare CTRL + mouse (o due dita su mobile) per navigare sulla mappa",
|
|
@@ -21497,7 +21548,6 @@ var it = {
|
|
|
21497
21548
|
"record.action.rollback": "Annulla",
|
|
21498
21549
|
"record.action.switchLang": "",
|
|
21499
21550
|
"record.action.view": "Visualizza",
|
|
21500
|
-
"record.card.metadata.contact": "Contatto del metadata",
|
|
21501
21551
|
"record.externalViewer.open": "Aprire nel visualizzatore esterno",
|
|
21502
21552
|
"record.feature.catalog.number.total.attribute": "Quantità totale di oggetti",
|
|
21503
21553
|
"record.feature.catalog.number.total.object": "Quantità totale di attributi",
|
|
@@ -21703,6 +21753,7 @@ var it = {
|
|
|
21703
21753
|
"service.metadata.filter.noLayers": "Nessun layer abbina la ricerca",
|
|
21704
21754
|
"service.metadata.other": "Altri informazioni",
|
|
21705
21755
|
"service.metadata.question": "Fare una domanda",
|
|
21756
|
+
"service.metadata.reuse": "",
|
|
21706
21757
|
"service.metadata.search": "Cerca nella lista del layers",
|
|
21707
21758
|
"service.metadata.search.clear": "Cancella la ricerca del layers",
|
|
21708
21759
|
"service.metadata.spatialExtent": "Estensione spaziale",
|
|
@@ -21820,7 +21871,9 @@ var nl = {
|
|
|
21820
21871
|
"domain.record.status.completed": "",
|
|
21821
21872
|
"domain.record.status.deprecated": "",
|
|
21822
21873
|
"domain.record.status.ongoing": "",
|
|
21874
|
+
"domain.record.status.planned": "",
|
|
21823
21875
|
"domain.record.status.removed": "",
|
|
21876
|
+
"domain.record.status.required": "",
|
|
21824
21877
|
"domain.record.status.under_development": "",
|
|
21825
21878
|
"domain.record.updateFrequency.annually": "Gegevens worden elk jaar bijgewerkt",
|
|
21826
21879
|
"domain.record.updateFrequency.asNeeded": "Gegevens worden bijgewerkt naar behoefte",
|
|
@@ -21876,6 +21929,7 @@ var nl = {
|
|
|
21876
21929
|
"editor.record.form.draft.updateAlert": "",
|
|
21877
21930
|
"editor.record.form.field.abstract": "",
|
|
21878
21931
|
"editor.record.form.field.constraintsShortcuts": "",
|
|
21932
|
+
"editor.record.form.field.contacts": "",
|
|
21879
21933
|
"editor.record.form.field.contacts.noContact": "",
|
|
21880
21934
|
"editor.record.form.field.contacts.placeholder": "",
|
|
21881
21935
|
"editor.record.form.field.contactsForResource.noContact": "",
|
|
@@ -21900,6 +21954,7 @@ var nl = {
|
|
|
21900
21954
|
"editor.record.form.field.onlineResource.toggle.dataset": "",
|
|
21901
21955
|
"editor.record.form.field.onlineResource.toggle.service": "",
|
|
21902
21956
|
"editor.record.form.field.onlineResources": "",
|
|
21957
|
+
"editor.record.form.field.organisation": "",
|
|
21903
21958
|
"editor.record.form.field.otherConstraints": "",
|
|
21904
21959
|
"editor.record.form.field.overviews": "",
|
|
21905
21960
|
"editor.record.form.field.recordUpdated": "",
|
|
@@ -21911,6 +21966,7 @@ var nl = {
|
|
|
21911
21966
|
"editor.record.form.field.temporalExtents": "",
|
|
21912
21967
|
"editor.record.form.field.title": "",
|
|
21913
21968
|
"editor.record.form.field.title.placeholder": "Voer een titel in",
|
|
21969
|
+
"editor.record.form.field.topics": "",
|
|
21914
21970
|
"editor.record.form.field.uniqueIdentifier": "",
|
|
21915
21971
|
"editor.record.form.field.updateFrequency": "",
|
|
21916
21972
|
"editor.record.form.keywords.place.placeholder": "",
|
|
@@ -21925,6 +21981,8 @@ var nl = {
|
|
|
21925
21981
|
"editor.record.form.license.odc-by": "",
|
|
21926
21982
|
"editor.record.form.license.pddl": "",
|
|
21927
21983
|
"editor.record.form.license.unknown": "",
|
|
21984
|
+
"editor.record.form.metadataQuality.open": "",
|
|
21985
|
+
"editor.record.form.metadataQuality.title": "",
|
|
21928
21986
|
"editor.record.form.multilingual.activate": "",
|
|
21929
21987
|
"editor.record.form.multilingual.default": "",
|
|
21930
21988
|
"editor.record.form.multilingual.enable": "",
|
|
@@ -22074,6 +22132,7 @@ var nl = {
|
|
|
22074
22132
|
"map.layer.add": "",
|
|
22075
22133
|
"map.layers.available": "",
|
|
22076
22134
|
"map.layers.list": "",
|
|
22135
|
+
"map.legend.title": "",
|
|
22077
22136
|
"map.loading.data": "",
|
|
22078
22137
|
"map.loading.service": "",
|
|
22079
22138
|
"map.navigation.message": "",
|
|
@@ -22107,7 +22166,6 @@ var nl = {
|
|
|
22107
22166
|
"record.action.rollback": "",
|
|
22108
22167
|
"record.action.switchLang": "",
|
|
22109
22168
|
"record.action.view": "",
|
|
22110
|
-
"record.card.metadata.contact": "",
|
|
22111
22169
|
"record.externalViewer.open": "",
|
|
22112
22170
|
"record.feature.catalog.number.total.attribute": "",
|
|
22113
22171
|
"record.feature.catalog.number.total.object": "",
|
|
@@ -22313,6 +22371,7 @@ var nl = {
|
|
|
22313
22371
|
"service.metadata.filter.noLayers": "",
|
|
22314
22372
|
"service.metadata.other": "",
|
|
22315
22373
|
"service.metadata.question": "",
|
|
22374
|
+
"service.metadata.reuse": "",
|
|
22316
22375
|
"service.metadata.search": "",
|
|
22317
22376
|
"service.metadata.search.clear": "",
|
|
22318
22377
|
"service.metadata.spatialExtent": "",
|
|
@@ -22430,7 +22489,9 @@ var pt = {
|
|
|
22430
22489
|
"domain.record.status.completed": "",
|
|
22431
22490
|
"domain.record.status.deprecated": "",
|
|
22432
22491
|
"domain.record.status.ongoing": "",
|
|
22492
|
+
"domain.record.status.planned": "",
|
|
22433
22493
|
"domain.record.status.removed": "",
|
|
22494
|
+
"domain.record.status.required": "",
|
|
22434
22495
|
"domain.record.status.under_development": "",
|
|
22435
22496
|
"domain.record.updateFrequency.annually": "Os dados são atualizados anualmente",
|
|
22436
22497
|
"domain.record.updateFrequency.asNeeded": "Os dados são atualizados conforme necessário",
|
|
@@ -22486,6 +22547,7 @@ var pt = {
|
|
|
22486
22547
|
"editor.record.form.draft.updateAlert": "",
|
|
22487
22548
|
"editor.record.form.field.abstract": "",
|
|
22488
22549
|
"editor.record.form.field.constraintsShortcuts": "",
|
|
22550
|
+
"editor.record.form.field.contacts": "",
|
|
22489
22551
|
"editor.record.form.field.contacts.noContact": "",
|
|
22490
22552
|
"editor.record.form.field.contacts.placeholder": "",
|
|
22491
22553
|
"editor.record.form.field.contactsForResource.noContact": "",
|
|
@@ -22510,6 +22572,7 @@ var pt = {
|
|
|
22510
22572
|
"editor.record.form.field.onlineResource.toggle.dataset": "",
|
|
22511
22573
|
"editor.record.form.field.onlineResource.toggle.service": "",
|
|
22512
22574
|
"editor.record.form.field.onlineResources": "",
|
|
22575
|
+
"editor.record.form.field.organisation": "",
|
|
22513
22576
|
"editor.record.form.field.otherConstraints": "",
|
|
22514
22577
|
"editor.record.form.field.overviews": "",
|
|
22515
22578
|
"editor.record.form.field.recordUpdated": "",
|
|
@@ -22521,6 +22584,7 @@ var pt = {
|
|
|
22521
22584
|
"editor.record.form.field.temporalExtents": "",
|
|
22522
22585
|
"editor.record.form.field.title": "",
|
|
22523
22586
|
"editor.record.form.field.title.placeholder": "Insira um título",
|
|
22587
|
+
"editor.record.form.field.topics": "",
|
|
22524
22588
|
"editor.record.form.field.uniqueIdentifier": "",
|
|
22525
22589
|
"editor.record.form.field.updateFrequency": "",
|
|
22526
22590
|
"editor.record.form.keywords.place.placeholder": "",
|
|
@@ -22535,6 +22599,8 @@ var pt = {
|
|
|
22535
22599
|
"editor.record.form.license.odc-by": "",
|
|
22536
22600
|
"editor.record.form.license.pddl": "",
|
|
22537
22601
|
"editor.record.form.license.unknown": "",
|
|
22602
|
+
"editor.record.form.metadataQuality.open": "",
|
|
22603
|
+
"editor.record.form.metadataQuality.title": "",
|
|
22538
22604
|
"editor.record.form.multilingual.activate": "",
|
|
22539
22605
|
"editor.record.form.multilingual.default": "",
|
|
22540
22606
|
"editor.record.form.multilingual.enable": "",
|
|
@@ -22684,6 +22750,7 @@ var pt = {
|
|
|
22684
22750
|
"map.layer.add": "",
|
|
22685
22751
|
"map.layers.available": "",
|
|
22686
22752
|
"map.layers.list": "",
|
|
22753
|
+
"map.legend.title": "",
|
|
22687
22754
|
"map.loading.data": "",
|
|
22688
22755
|
"map.loading.service": "",
|
|
22689
22756
|
"map.navigation.message": "",
|
|
@@ -22717,7 +22784,6 @@ var pt = {
|
|
|
22717
22784
|
"record.action.rollback": "",
|
|
22718
22785
|
"record.action.switchLang": "",
|
|
22719
22786
|
"record.action.view": "",
|
|
22720
|
-
"record.card.metadata.contact": "",
|
|
22721
22787
|
"record.externalViewer.open": "",
|
|
22722
22788
|
"record.feature.catalog.number.total.attribute": "",
|
|
22723
22789
|
"record.feature.catalog.number.total.object": "",
|
|
@@ -22923,6 +22989,7 @@ var pt = {
|
|
|
22923
22989
|
"service.metadata.filter.noLayers": "",
|
|
22924
22990
|
"service.metadata.other": "",
|
|
22925
22991
|
"service.metadata.question": "",
|
|
22992
|
+
"service.metadata.reuse": "",
|
|
22926
22993
|
"service.metadata.search": "",
|
|
22927
22994
|
"service.metadata.search.clear": "",
|
|
22928
22995
|
"service.metadata.spatialExtent": "",
|
|
@@ -23040,7 +23107,9 @@ var sk = {
|
|
|
23040
23107
|
"domain.record.status.completed": "Dokončené",
|
|
23041
23108
|
"domain.record.status.deprecated": "Zastarané",
|
|
23042
23109
|
"domain.record.status.ongoing": "Prebiehajúce",
|
|
23110
|
+
"domain.record.status.planned": "",
|
|
23043
23111
|
"domain.record.status.removed": "Odstránené",
|
|
23112
|
+
"domain.record.status.required": "",
|
|
23044
23113
|
"domain.record.status.under_development": "Vo vývoji",
|
|
23045
23114
|
"domain.record.updateFrequency.annually": "Údaje sa aktualizujú každý rok",
|
|
23046
23115
|
"domain.record.updateFrequency.asNeeded": "Údaje sa aktualizujú podľa potreby",
|
|
@@ -23096,6 +23165,7 @@ var sk = {
|
|
|
23096
23165
|
"editor.record.form.draft.updateAlert": "",
|
|
23097
23166
|
"editor.record.form.field.abstract": "",
|
|
23098
23167
|
"editor.record.form.field.constraintsShortcuts": "",
|
|
23168
|
+
"editor.record.form.field.contacts": "",
|
|
23099
23169
|
"editor.record.form.field.contacts.noContact": "",
|
|
23100
23170
|
"editor.record.form.field.contacts.placeholder": "",
|
|
23101
23171
|
"editor.record.form.field.contactsForResource.noContact": "",
|
|
@@ -23120,6 +23190,7 @@ var sk = {
|
|
|
23120
23190
|
"editor.record.form.field.onlineResource.toggle.dataset": "",
|
|
23121
23191
|
"editor.record.form.field.onlineResource.toggle.service": "",
|
|
23122
23192
|
"editor.record.form.field.onlineResources": "",
|
|
23193
|
+
"editor.record.form.field.organisation": "",
|
|
23123
23194
|
"editor.record.form.field.otherConstraints": "",
|
|
23124
23195
|
"editor.record.form.field.overviews": "",
|
|
23125
23196
|
"editor.record.form.field.recordUpdated": "",
|
|
@@ -23131,6 +23202,7 @@ var sk = {
|
|
|
23131
23202
|
"editor.record.form.field.temporalExtents": "",
|
|
23132
23203
|
"editor.record.form.field.title": "",
|
|
23133
23204
|
"editor.record.form.field.title.placeholder": "Zadajte názov",
|
|
23205
|
+
"editor.record.form.field.topics": "",
|
|
23134
23206
|
"editor.record.form.field.uniqueIdentifier": "",
|
|
23135
23207
|
"editor.record.form.field.updateFrequency": "",
|
|
23136
23208
|
"editor.record.form.keywords.place.placeholder": "",
|
|
@@ -23145,6 +23217,8 @@ var sk = {
|
|
|
23145
23217
|
"editor.record.form.license.odc-by": "",
|
|
23146
23218
|
"editor.record.form.license.pddl": "",
|
|
23147
23219
|
"editor.record.form.license.unknown": "",
|
|
23220
|
+
"editor.record.form.metadataQuality.open": "",
|
|
23221
|
+
"editor.record.form.metadataQuality.title": "",
|
|
23148
23222
|
"editor.record.form.multilingual.activate": "",
|
|
23149
23223
|
"editor.record.form.multilingual.default": "",
|
|
23150
23224
|
"editor.record.form.multilingual.enable": "",
|
|
@@ -23294,6 +23368,7 @@ var sk = {
|
|
|
23294
23368
|
"map.layer.add": "Pridať",
|
|
23295
23369
|
"map.layers.available": "Dostupné vrsty",
|
|
23296
23370
|
"map.layers.list": "Vrstvy",
|
|
23371
|
+
"map.legend.title": "",
|
|
23297
23372
|
"map.loading.data": "Načítavanie dát mapy...",
|
|
23298
23373
|
"map.loading.service": "Načítavanie služieb...",
|
|
23299
23374
|
"map.navigation.message": "Použite prosím CTRL + myš (alebo dva prsty na mobilnom zariadení) na navigáciu po mape",
|
|
@@ -23327,7 +23402,6 @@ var sk = {
|
|
|
23327
23402
|
"record.action.rollback": "",
|
|
23328
23403
|
"record.action.switchLang": "",
|
|
23329
23404
|
"record.action.view": "Zobraziť",
|
|
23330
|
-
"record.card.metadata.contact": "",
|
|
23331
23405
|
"record.externalViewer.open": "Otvoriť v externom mapovom prehliadači",
|
|
23332
23406
|
"record.feature.catalog.number.total.attribute": "",
|
|
23333
23407
|
"record.feature.catalog.number.total.object": "",
|
|
@@ -23533,6 +23607,7 @@ var sk = {
|
|
|
23533
23607
|
"service.metadata.filter.noLayers": "",
|
|
23534
23608
|
"service.metadata.other": "",
|
|
23535
23609
|
"service.metadata.question": "",
|
|
23610
|
+
"service.metadata.reuse": "",
|
|
23536
23611
|
"service.metadata.search": "",
|
|
23537
23612
|
"service.metadata.search.clear": "",
|
|
23538
23613
|
"service.metadata.spatialExtent": "",
|
|
@@ -24068,14 +24143,12 @@ const ES_SOURCE_SUMMARY = [
|
|
|
24068
24143
|
'codelist_status_text',
|
|
24069
24144
|
'link',
|
|
24070
24145
|
'linkProtocol',
|
|
24071
|
-
'contactForResource
|
|
24072
|
-
'contact
|
|
24073
|
-
'contact
|
|
24146
|
+
'contactForResource*.organisation*',
|
|
24147
|
+
'contact*.organisation*',
|
|
24148
|
+
'contact*.email',
|
|
24074
24149
|
'userSavedCount',
|
|
24075
|
-
'updateFrequency',
|
|
24076
24150
|
'cl_topic',
|
|
24077
24151
|
'cl_maintenanceAndUpdateFrequency',
|
|
24078
|
-
'tag',
|
|
24079
24152
|
'MD_LegalConstraints*Object',
|
|
24080
24153
|
'qualityScore',
|
|
24081
24154
|
'allKeywords',
|
|
@@ -25838,6 +25911,14 @@ function downgradeImage(blob, maxSizeBytes) {
|
|
|
25838
25911
|
});
|
|
25839
25912
|
}
|
|
25840
25913
|
|
|
25914
|
+
/**
|
|
25915
|
+
* This returns true when the screen size is under 768px, which is the mobile threshold.
|
|
25916
|
+
*/
|
|
25917
|
+
const MOBILE_MAX_WIDTH = 768;
|
|
25918
|
+
function getIsMobile() {
|
|
25919
|
+
return fromEvent(window, 'resize').pipe(startWith$1(window.innerWidth), map$2(() => window.innerWidth < MOBILE_MAX_WIDTH), shareReplay$1({ bufferSize: 1, refCount: true }));
|
|
25920
|
+
}
|
|
25921
|
+
|
|
25841
25922
|
function noDuplicateFileName(fileName, fileNameList) {
|
|
25842
25923
|
if (fileNameList.includes(fileName)) {
|
|
25843
25924
|
const fileNameParts = fileName.split('.');
|
|
@@ -25976,8 +26057,8 @@ const FORMATS = {
|
|
|
25976
26057
|
excel: {
|
|
25977
26058
|
extensions: [
|
|
25978
26059
|
'excel',
|
|
25979
|
-
'xls',
|
|
25980
26060
|
'xlsx',
|
|
26061
|
+
'xls',
|
|
25981
26062
|
'ms-excel',
|
|
25982
26063
|
'openxmlformats-officedocument',
|
|
25983
26064
|
],
|
|
@@ -26126,6 +26207,8 @@ function getFileFormat(link) {
|
|
|
26126
26207
|
}
|
|
26127
26208
|
function isFormatInQueryParam(link, alias) {
|
|
26128
26209
|
const queryParams = link.url.searchParams;
|
|
26210
|
+
if (!queryParams)
|
|
26211
|
+
return false;
|
|
26129
26212
|
for (const [key, value] of queryParams.entries()) {
|
|
26130
26213
|
if (key === 'format' || key === 'f') {
|
|
26131
26214
|
return value === alias;
|
|
@@ -26158,6 +26241,14 @@ function getBadgeColor(linkFormat) {
|
|
|
26158
26241
|
}
|
|
26159
26242
|
return 'var(--color-gray-700)'; // Default color ?
|
|
26160
26243
|
}
|
|
26244
|
+
function getLinkId(link) {
|
|
26245
|
+
const href = link.url.href ?? link.url;
|
|
26246
|
+
return `${getLinkLabel(link)
|
|
26247
|
+
.replace(/é/g, 'e')
|
|
26248
|
+
.replace(/è/g, 'e')
|
|
26249
|
+
.normalize('NFD')
|
|
26250
|
+
.replace(/[\u0300-\u036f]/g, '')}-${href}`;
|
|
26251
|
+
}
|
|
26161
26252
|
function getLinkLabel(link) {
|
|
26162
26253
|
let format = '';
|
|
26163
26254
|
switch (link.type) {
|
|
@@ -26326,7 +26417,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
26326
26417
|
}] } });
|
|
26327
26418
|
|
|
26328
26419
|
var name = "geonetwork-ui";
|
|
26329
|
-
var version = "2.7.0-dev.
|
|
26420
|
+
var version = "2.7.0-dev.d6c0958d7";
|
|
26330
26421
|
var engines = {
|
|
26331
26422
|
node: ">=20"
|
|
26332
26423
|
};
|
|
@@ -26425,6 +26516,51 @@ const GEONETWORK_UI_TAG_NAME = GEONETWORK_UI_VERSION.split('-')[1] === 'dev'
|
|
|
26425
26516
|
? 'main'
|
|
26426
26517
|
: `v${packageJson.version}`;
|
|
26427
26518
|
|
|
26519
|
+
const ValidatorMapper = {
|
|
26520
|
+
title: (record) => !!record?.title,
|
|
26521
|
+
abstract: (record) => !!record?.abstract,
|
|
26522
|
+
keywords: (record) => (record?.keywords?.length ?? 0) > 0,
|
|
26523
|
+
legalConstraints: (record) => (record?.legalConstraints?.length ?? 0) > 0,
|
|
26524
|
+
contacts: (record) => !!record?.contacts?.[0]?.email,
|
|
26525
|
+
updateFrequency: (record) => !!record?.updateFrequency,
|
|
26526
|
+
topics: (record) => (record?.topics?.length ?? 0) > 0,
|
|
26527
|
+
organisation: (record) => !!record?.contacts?.[0]?.organization?.name,
|
|
26528
|
+
capabilities: (record) => record?.onlineResources?.some((resource) => resource?.url?.href.toLowerCase().includes('capabilities')),
|
|
26529
|
+
source: (record) => !!record?.extras?.sourcesIdentifiers,
|
|
26530
|
+
};
|
|
26531
|
+
function getAllKeysValidator() {
|
|
26532
|
+
return Object.keys(ValidatorMapper);
|
|
26533
|
+
}
|
|
26534
|
+
function getMappersFromKind(kind) {
|
|
26535
|
+
let kindKeys = [];
|
|
26536
|
+
const commonsKeys = [
|
|
26537
|
+
'title',
|
|
26538
|
+
'abstract',
|
|
26539
|
+
'keywords',
|
|
26540
|
+
'legalConstraints',
|
|
26541
|
+
'contacts',
|
|
26542
|
+
];
|
|
26543
|
+
switch (kind) {
|
|
26544
|
+
case 'service':
|
|
26545
|
+
kindKeys = ['capabilities'];
|
|
26546
|
+
break;
|
|
26547
|
+
case 'reuse':
|
|
26548
|
+
kindKeys = ['topics', 'organisation', 'source'];
|
|
26549
|
+
break;
|
|
26550
|
+
case 'dataset':
|
|
26551
|
+
default:
|
|
26552
|
+
kindKeys = ['updateFrequency', 'topics', 'organisation'];
|
|
26553
|
+
}
|
|
26554
|
+
return [...commonsKeys, ...kindKeys];
|
|
26555
|
+
}
|
|
26556
|
+
function getQualityValidators(record, propsToValidate) {
|
|
26557
|
+
const filteredProps = propsToValidate.filter((prop) => getMappersFromKind(record.kind).includes(prop));
|
|
26558
|
+
return filteredProps.map((name) => ({
|
|
26559
|
+
name,
|
|
26560
|
+
validator: () => ValidatorMapper[name](record),
|
|
26561
|
+
}));
|
|
26562
|
+
}
|
|
26563
|
+
|
|
26428
26564
|
function updateLanguages(record, defaultLanguage, otherLanguages) {
|
|
26429
26565
|
function updateFieldTranslations(target, fieldName) {
|
|
26430
26566
|
const fieldTranslations = {};
|
|
@@ -26631,9 +26767,13 @@ class Gn4PlatformService {
|
|
|
26631
26767
|
...(Array.isArray(onlines) ? onlines : []),
|
|
26632
26768
|
...(Array.isArray(thumbnails) ? thumbnails : []),
|
|
26633
26769
|
].map((resource) => Object.values(resource.url)[0]);
|
|
26634
|
-
const fileToDelete = attachments
|
|
26635
|
-
|
|
26636
|
-
|
|
26770
|
+
const fileToDelete = attachments.reduce((acc, attachment) => {
|
|
26771
|
+
if (!urlsToKeep.includes(attachment.url) &&
|
|
26772
|
+
attachment.filename !== 'datavizConfig.json') {
|
|
26773
|
+
acc.push(attachment.filename);
|
|
26774
|
+
}
|
|
26775
|
+
return acc;
|
|
26776
|
+
}, []);
|
|
26637
26777
|
return fileToDelete;
|
|
26638
26778
|
}), mergeMap((filesToDelete) => filesToDelete.length
|
|
26639
26779
|
? forkJoin(filesToDelete.map((filename) => this.recordsApiService.delResource(record.uniqueIdentifier, filename))).pipe(map$1(() => undefined))
|
|
@@ -26671,6 +26811,26 @@ class Gn4PlatformService {
|
|
|
26671
26811
|
return throwError(() => new Error(error.error?.message ?? error.message));
|
|
26672
26812
|
}));
|
|
26673
26813
|
}
|
|
26814
|
+
getFileContent(url) {
|
|
26815
|
+
return this.httpClient.get(url.toString(), { responseType: 'text' }).pipe(map$1((text) => {
|
|
26816
|
+
const parsed = JSON.parse(text);
|
|
26817
|
+
if (typeof parsed === 'object') {
|
|
26818
|
+
return parsed;
|
|
26819
|
+
}
|
|
26820
|
+
const decoded = this.decodeBase64(parsed);
|
|
26821
|
+
return JSON.parse(decoded);
|
|
26822
|
+
}));
|
|
26823
|
+
}
|
|
26824
|
+
decodeBase64(base64) {
|
|
26825
|
+
const text = atob(base64);
|
|
26826
|
+
const length = text.length;
|
|
26827
|
+
const bytes = new Uint8Array(length);
|
|
26828
|
+
for (let i = 0; i < length; i++) {
|
|
26829
|
+
bytes[i] = text.charCodeAt(i);
|
|
26830
|
+
}
|
|
26831
|
+
const decoder = new TextDecoder();
|
|
26832
|
+
return decoder.decode(bytes);
|
|
26833
|
+
}
|
|
26674
26834
|
attachFileToRecord(recordUuid, file, removeDuplicate = false) {
|
|
26675
26835
|
return this.getRecordAttachments(recordUuid).pipe(map$1((recordAttachments) => recordAttachments.map((r) => r.fileName)), switchMap((fileNames) => {
|
|
26676
26836
|
const fileName = file.name;
|
|
@@ -27048,7 +27208,7 @@ class MapLegendComponent {
|
|
|
27048
27208
|
async ngOnChanges(changes) {
|
|
27049
27209
|
if ('context' in changes) {
|
|
27050
27210
|
const mapContext = changes['context'].currentValue;
|
|
27051
|
-
if (mapContext
|
|
27211
|
+
if (mapContext?.layers && mapContext.layers.length > 0) {
|
|
27052
27212
|
const mapContextLayer = mapContext.layers[0];
|
|
27053
27213
|
this.legendHTML = await createLegendFromLayer(mapContextLayer);
|
|
27054
27214
|
if (this.legendHTML) {
|
|
@@ -27833,6 +27993,7 @@ function loadAppConfig() {
|
|
|
27833
27993
|
'web_component_embedder_url',
|
|
27834
27994
|
'languages',
|
|
27835
27995
|
'contact_email',
|
|
27996
|
+
'reuse_form_url',
|
|
27836
27997
|
], warnings, errors);
|
|
27837
27998
|
if (parsedGlobalSection?.metadata_language) {
|
|
27838
27999
|
parsedGlobalSection = checkMetadataLanguage(parsedGlobalSection, warnings);
|
|
@@ -27853,6 +28014,7 @@ function loadAppConfig() {
|
|
|
27853
28014
|
WEB_COMPONENT_EMBEDDER_URL: parsedGlobalSection.web_component_embedder_url,
|
|
27854
28015
|
LANGUAGES: parsedGlobalSection.languages,
|
|
27855
28016
|
CONTACT_EMAIL: parsedGlobalSection.contact_email,
|
|
28017
|
+
REUSE_FORM_URL: parsedGlobalSection.reuse_form_url,
|
|
27856
28018
|
};
|
|
27857
28019
|
const parsedLayersSections = parseMultiConfigSection(parsed, 'map_layer', ['type'], ['name', 'url', 'data', 'styleUrl', 'accessToken'], warnings, errors);
|
|
27858
28020
|
const parsedMapSection = parseConfigSection(parsed, 'map', [], [
|
|
@@ -30239,6 +30401,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30239
30401
|
|
|
30240
30402
|
class SearchFeatureCatalogComponent {
|
|
30241
30403
|
constructor() {
|
|
30404
|
+
this.isMobile$ = getIsMobile();
|
|
30242
30405
|
this.filteredFeatureCatalogChange = new EventEmitter();
|
|
30243
30406
|
this.filterAction = (searchTerm) => {
|
|
30244
30407
|
of(searchTerm)
|
|
@@ -30271,7 +30434,7 @@ class SearchFeatureCatalogComponent {
|
|
|
30271
30434
|
return (this.filteredFeatureCatalog?.featureTypes?.reduce((total, featureType) => total + (featureType.attributes?.length || 0), 0) || 0);
|
|
30272
30435
|
}
|
|
30273
30436
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchFeatureCatalogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30274
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchFeatureCatalogComponent, isStandalone: true, selector: "gn-ui-search-feature-catalog", inputs: { featureCatalog: "featureCatalog" }, outputs: { filteredFeatureCatalogChange: "filteredFeatureCatalogChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between p-3 mt-8 bg-white rounded-lg border-b solid border-gray-300\"\n>\n <div\n class=\"relative shrink-0\"\n *ngIf=\"featureCatalog?.featureTypes?.length > 1\"\n >\n <input\n type=\"text\"\n [placeholder]=\"'search.filter.into.feature.catalog' | translate\"\n class=\"w-[220px] h-8 pl-3 pr-10 py-2 border rounded-md\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"filterAction(searchTerm)\"\n />\n <ng-icon\n class=\"absolute right-2.5 top-1 w-6 h-6 text-black\"\n name=\"iconoirSearch\"\n ></ng-icon>\n </div>\n <div class=\"text-sm px-1 ml-auto
|
|
30437
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchFeatureCatalogComponent, isStandalone: true, selector: "gn-ui-search-feature-catalog", inputs: { featureCatalog: "featureCatalog" }, outputs: { filteredFeatureCatalogChange: "filteredFeatureCatalogChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between p-3 mt-8 bg-white rounded-lg border-b solid border-gray-300\"\n *ngIf=\"\n (isMobile$ | async) === false || featureCatalog?.featureTypes?.length > 1\n \"\n>\n <div\n class=\"relative shrink-0\"\n *ngIf=\"featureCatalog?.featureTypes?.length > 1\"\n >\n <input\n type=\"text\"\n [placeholder]=\"'search.filter.into.feature.catalog' | translate\"\n class=\"w-[220px] h-8 pl-3 pr-10 py-2 border rounded-md\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"filterAction(searchTerm)\"\n />\n <ng-icon\n class=\"absolute right-2.5 top-1 w-6 h-6 text-black\"\n name=\"iconoirSearch\"\n ></ng-icon>\n </div>\n <div\n *ngIf=\"(isMobile$ | async) === false\"\n class=\"text-sm px-1 ml-auto inline\"\n >\n <ng-container *ngIf=\"featureCatalog?.featureTypes?.length > 1\">\n <span\n class=\"text-sm font-medium text-gray-900\"\n data-cy=\"total-objects-label\"\n translate\n >record.feature.catalog.number.total.object</span\n ><span\n class=\"text-sm font-bold px-1 text-gray-900\"\n data-cy=\"total-objects\"\n >{{ totalObjects }}</span\n >\n <span class=\"px-1.5\">|</span>\n </ng-container>\n <span\n class=\"text-sm font-medium px-1 text-gray-900\"\n data-cy=\"total-attributes-label\"\n translate\n >record.feature.catalog.number.total.attribute</span\n ><span class=\"text-sm font-bold text-gray-900\" data-cy=\"total-attributes\">{{\n totalAttributes\n }}</span>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], viewProviders: [
|
|
30275
30438
|
provideIcons({ iconoirSearch }),
|
|
30276
30439
|
provideNgIconsConfig({
|
|
30277
30440
|
size: '1.5rem',
|
|
@@ -30291,7 +30454,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30291
30454
|
provideNgIconsConfig({
|
|
30292
30455
|
size: '1.5rem',
|
|
30293
30456
|
}),
|
|
30294
|
-
], template: "<div\n class=\"flex items-center justify-between p-3 mt-8 bg-white rounded-lg border-b solid border-gray-300\"\n>\n <div\n class=\"relative shrink-0\"\n *ngIf=\"featureCatalog?.featureTypes?.length > 1\"\n >\n <input\n type=\"text\"\n [placeholder]=\"'search.filter.into.feature.catalog' | translate\"\n class=\"w-[220px] h-8 pl-3 pr-10 py-2 border rounded-md\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"filterAction(searchTerm)\"\n />\n <ng-icon\n class=\"absolute right-2.5 top-1 w-6 h-6 text-black\"\n name=\"iconoirSearch\"\n ></ng-icon>\n </div>\n <div class=\"text-sm px-1 ml-auto
|
|
30457
|
+
], template: "<div\n class=\"flex items-center justify-between p-3 mt-8 bg-white rounded-lg border-b solid border-gray-300\"\n *ngIf=\"\n (isMobile$ | async) === false || featureCatalog?.featureTypes?.length > 1\n \"\n>\n <div\n class=\"relative shrink-0\"\n *ngIf=\"featureCatalog?.featureTypes?.length > 1\"\n >\n <input\n type=\"text\"\n [placeholder]=\"'search.filter.into.feature.catalog' | translate\"\n class=\"w-[220px] h-8 pl-3 pr-10 py-2 border rounded-md\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"filterAction(searchTerm)\"\n />\n <ng-icon\n class=\"absolute right-2.5 top-1 w-6 h-6 text-black\"\n name=\"iconoirSearch\"\n ></ng-icon>\n </div>\n <div\n *ngIf=\"(isMobile$ | async) === false\"\n class=\"text-sm px-1 ml-auto inline\"\n >\n <ng-container *ngIf=\"featureCatalog?.featureTypes?.length > 1\">\n <span\n class=\"text-sm font-medium text-gray-900\"\n data-cy=\"total-objects-label\"\n translate\n >record.feature.catalog.number.total.object</span\n ><span\n class=\"text-sm font-bold px-1 text-gray-900\"\n data-cy=\"total-objects\"\n >{{ totalObjects }}</span\n >\n <span class=\"px-1.5\">|</span>\n </ng-container>\n <span\n class=\"text-sm font-medium px-1 text-gray-900\"\n data-cy=\"total-attributes-label\"\n translate\n >record.feature.catalog.number.total.attribute</span\n ><span class=\"text-sm font-bold text-gray-900\" data-cy=\"total-attributes\">{{\n totalAttributes\n }}</span>\n </div>\n</div>\n" }]
|
|
30295
30458
|
}], propDecorators: { featureCatalog: [{
|
|
30296
30459
|
type: Input
|
|
30297
30460
|
}], filteredFeatureCatalogChange: [{
|
|
@@ -31889,58 +32052,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31889
32052
|
class MetadataQualityComponent {
|
|
31890
32053
|
constructor() {
|
|
31891
32054
|
this.smaller = false;
|
|
32055
|
+
this.popoverDisplay = true;
|
|
32056
|
+
this.forceComputeScore = false; // Instead of returning es' quality score
|
|
31892
32057
|
this.items = [];
|
|
31893
|
-
this.COMMON_CHECKS = {
|
|
31894
|
-
title: (metadata) => !!metadata?.title,
|
|
31895
|
-
description: (metadata) => !!metadata?.abstract,
|
|
31896
|
-
keywords: (metadata) => (metadata?.keywords?.length ?? 0) > 0,
|
|
31897
|
-
legalConstraints: (metadata) => (metadata?.legalConstraints?.length ?? 0) > 0,
|
|
31898
|
-
contact: (metadata) => !!metadata?.contacts?.[0]?.email,
|
|
31899
|
-
};
|
|
31900
|
-
this.SPECIFIC_CHECKS = {
|
|
31901
|
-
dataset: {
|
|
31902
|
-
updateFrequency: (metadata) => !!metadata?.updateFrequency,
|
|
31903
|
-
topic: (metadata) => (metadata?.topics?.length ?? 0) > 0,
|
|
31904
|
-
organisation: (metadata) => !!metadata?.contacts?.[0]?.organization?.name,
|
|
31905
|
-
},
|
|
31906
|
-
service: {
|
|
31907
|
-
capabilities: (metadata) => (metadata?.onlineResources ?? []).some((resource) => this.hasGetCapabilities(resource?.url?.href ?? '')),
|
|
31908
|
-
},
|
|
31909
|
-
reuse: {
|
|
31910
|
-
topic: (metadata) => (metadata?.topics?.length ?? 0) > 0,
|
|
31911
|
-
organisation: (metadata) => !!metadata?.contacts?.[0]?.organization?.name,
|
|
31912
|
-
source: (metadata) => !!metadata?.extras?.sourcesIdentifiers,
|
|
31913
|
-
},
|
|
31914
|
-
};
|
|
31915
32058
|
}
|
|
31916
32059
|
get qualityScore() {
|
|
31917
|
-
const qualityScore = this.
|
|
32060
|
+
const qualityScore = !this.forceComputeScore
|
|
32061
|
+
? this.metadata?.extras?.qualityScore
|
|
32062
|
+
: this.computedQualityScore;
|
|
31918
32063
|
return typeof qualityScore === 'number'
|
|
31919
32064
|
? qualityScore
|
|
31920
|
-
: this.
|
|
32065
|
+
: this.computedQualityScore;
|
|
31921
32066
|
}
|
|
31922
|
-
get
|
|
32067
|
+
get computedQualityScore() {
|
|
31923
32068
|
return Math.round((this.items.filter(({ value }) => value).length * 100) / this.items.length);
|
|
31924
32069
|
}
|
|
31925
|
-
add(name, value) {
|
|
31926
|
-
if (this.metadataQualityDisplay?.[name] !== false) {
|
|
31927
|
-
this.items.push({ name, value });
|
|
31928
|
-
}
|
|
31929
|
-
}
|
|
31930
32070
|
hasGetCapabilities(url) {
|
|
31931
32071
|
return url.toLowerCase().includes('capabilities');
|
|
31932
32072
|
}
|
|
31933
32073
|
initialize() {
|
|
31934
|
-
this.
|
|
31935
|
-
|
|
31936
|
-
this.add(name, check(this.metadata));
|
|
31937
|
-
});
|
|
31938
|
-
const datasetType = this.metadata?.kind;
|
|
31939
|
-
if (datasetType && this.SPECIFIC_CHECKS[datasetType]) {
|
|
31940
|
-
Object.entries(this.SPECIFIC_CHECKS[datasetType]).forEach(([name, check]) => {
|
|
31941
|
-
this.add(name, check(this.metadata));
|
|
31942
|
-
});
|
|
32074
|
+
if (!this.propsToValidate) {
|
|
32075
|
+
this.propsToValidate = getAllKeysValidator();
|
|
31943
32076
|
}
|
|
32077
|
+
this.items = getQualityValidators(this.metadata, this.propsToValidate).map(({ name, validator }) => ({ name, value: validator() }));
|
|
31944
32078
|
}
|
|
31945
32079
|
ngOnChanges(changes) {
|
|
31946
32080
|
if (changes['metadata'] || changes['metadataQualityDisplay']) {
|
|
@@ -31948,7 +32082,7 @@ class MetadataQualityComponent {
|
|
|
31948
32082
|
}
|
|
31949
32083
|
}
|
|
31950
32084
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataQualityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31951
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataQualityComponent, isStandalone: true, selector: "gn-ui-metadata-quality", inputs: { metadata: "metadata", smaller: "smaller", metadataQualityDisplay: "metadataQualityDisplay" }, providers: [
|
|
32085
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataQualityComponent, isStandalone: true, selector: "gn-ui-metadata-quality", inputs: { metadata: "metadata", smaller: "smaller", metadataQualityDisplay: "metadataQualityDisplay", popoverDisplay: "popoverDisplay", propsToValidate: "propsToValidate", forceComputeScore: "forceComputeScore" }, providers: [
|
|
31952
32086
|
provideIcons({
|
|
31953
32087
|
matInfoOutline,
|
|
31954
32088
|
}),
|
|
@@ -31956,7 +32090,7 @@ class MetadataQualityComponent {
|
|
|
31956
32090
|
size: '1.2em',
|
|
31957
32091
|
strokeWidth: '1.5px',
|
|
31958
32092
|
}),
|
|
31959
|
-
], usesOnChanges: true, ngImport: i0, template: "<div\n *ngIf=\"metadataQualityDisplay\"\n class=\"flex items-center metadata-quality min-w-0\"\n [ngClass]=\"{ 'text-xs leading-[8px] m-h-[120px]': smaller }\"\n>\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n [type]=\"'light'\"\n class=\"flex-grow\"\n ></gn-ui-progress-bar>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light-border\"\n [class]=\"smaller ? 'ml-2' : 'ml-2 mt-1'\"\n >\n <ng-icon\n name=\"matInfoOutline\"\n class=\"flex-shrink-0 text-gray-600\"\n ></ng-icon>\n </gn-ui-popover>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div class=\"mb-4 font-bold\" translate>record.metadata.quality.details</div>\n <gn-ui-metadata-quality-item\n *ngFor=\"let e of items\"\n [name]=\"e.name\"\n [value]=\"e.value\"\n ></gn-ui-metadata-quality-item>\n </div>\n</ng-template>\n", styles: [":host gn-ui-progress-bar{--progress-bar-font-weight: \"normal\"}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: "component", type: PopoverComponent, selector: "gn-ui-popover", inputs: ["content", "theme"] }, { kind: "component", type: ProgressBarComponent, selector: "gn-ui-progress-bar", inputs: ["value", "type"] }, { kind: "component", type: MetadataQualityItemComponent, selector: "gn-ui-metadata-quality-item", inputs: ["name", "value"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32093
|
+
], usesOnChanges: true, ngImport: i0, template: "<div\n *ngIf=\"metadataQualityDisplay\"\n class=\"flex items-center metadata-quality min-w-0\"\n [ngClass]=\"{ 'text-xs leading-[8px] m-h-[120px]': smaller }\"\n>\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n [type]=\"'light'\"\n class=\"flex-grow\"\n ></gn-ui-progress-bar>\n <gn-ui-popover\n *ngIf=\"popoverDisplay\"\n [content]=\"popoverItems\"\n theme=\"light-border\"\n [class]=\"smaller ? 'ml-2' : 'ml-2 mt-1'\"\n >\n <ng-icon\n name=\"matInfoOutline\"\n class=\"flex-shrink-0 text-gray-600\"\n ></ng-icon>\n </gn-ui-popover>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div class=\"mb-4 font-bold\" translate>record.metadata.quality.details</div>\n <gn-ui-metadata-quality-item\n *ngFor=\"let e of items\"\n [name]=\"e.name\"\n [value]=\"e.value\"\n ></gn-ui-metadata-quality-item>\n </div>\n</ng-template>\n", styles: [":host gn-ui-progress-bar{--progress-bar-font-weight: \"normal\"}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: "component", type: PopoverComponent, selector: "gn-ui-popover", inputs: ["content", "theme"] }, { kind: "component", type: ProgressBarComponent, selector: "gn-ui-progress-bar", inputs: ["value", "type"] }, { kind: "component", type: MetadataQualityItemComponent, selector: "gn-ui-metadata-quality-item", inputs: ["name", "value"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31960
32094
|
}
|
|
31961
32095
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataQualityComponent, decorators: [{
|
|
31962
32096
|
type: Component,
|
|
@@ -31975,13 +32109,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31975
32109
|
size: '1.2em',
|
|
31976
32110
|
strokeWidth: '1.5px',
|
|
31977
32111
|
}),
|
|
31978
|
-
], template: "<div\n *ngIf=\"metadataQualityDisplay\"\n class=\"flex items-center metadata-quality min-w-0\"\n [ngClass]=\"{ 'text-xs leading-[8px] m-h-[120px]': smaller }\"\n>\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n [type]=\"'light'\"\n class=\"flex-grow\"\n ></gn-ui-progress-bar>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light-border\"\n [class]=\"smaller ? 'ml-2' : 'ml-2 mt-1'\"\n >\n <ng-icon\n name=\"matInfoOutline\"\n class=\"flex-shrink-0 text-gray-600\"\n ></ng-icon>\n </gn-ui-popover>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div class=\"mb-4 font-bold\" translate>record.metadata.quality.details</div>\n <gn-ui-metadata-quality-item\n *ngFor=\"let e of items\"\n [name]=\"e.name\"\n [value]=\"e.value\"\n ></gn-ui-metadata-quality-item>\n </div>\n</ng-template>\n", styles: [":host gn-ui-progress-bar{--progress-bar-font-weight: \"normal\"}\n"] }]
|
|
32112
|
+
], template: "<div\n *ngIf=\"metadataQualityDisplay\"\n class=\"flex items-center metadata-quality min-w-0\"\n [ngClass]=\"{ 'text-xs leading-[8px] m-h-[120px]': smaller }\"\n>\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n [type]=\"'light'\"\n class=\"flex-grow\"\n ></gn-ui-progress-bar>\n <gn-ui-popover\n *ngIf=\"popoverDisplay\"\n [content]=\"popoverItems\"\n theme=\"light-border\"\n [class]=\"smaller ? 'ml-2' : 'ml-2 mt-1'\"\n >\n <ng-icon\n name=\"matInfoOutline\"\n class=\"flex-shrink-0 text-gray-600\"\n ></ng-icon>\n </gn-ui-popover>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div class=\"mb-4 font-bold\" translate>record.metadata.quality.details</div>\n <gn-ui-metadata-quality-item\n *ngFor=\"let e of items\"\n [name]=\"e.name\"\n [value]=\"e.value\"\n ></gn-ui-metadata-quality-item>\n </div>\n</ng-template>\n", styles: [":host gn-ui-progress-bar{--progress-bar-font-weight: \"normal\"}\n"] }]
|
|
31979
32113
|
}], propDecorators: { metadata: [{
|
|
31980
32114
|
type: Input
|
|
31981
32115
|
}], smaller: [{
|
|
31982
32116
|
type: Input
|
|
31983
32117
|
}], metadataQualityDisplay: [{
|
|
31984
32118
|
type: Input
|
|
32119
|
+
}], popoverDisplay: [{
|
|
32120
|
+
type: Input
|
|
32121
|
+
}], propsToValidate: [{
|
|
32122
|
+
type: Input
|
|
32123
|
+
}], forceComputeScore: [{
|
|
32124
|
+
type: Input
|
|
31985
32125
|
}] } });
|
|
31986
32126
|
|
|
31987
32127
|
class InternalLinkCardComponent {
|
|
@@ -32023,7 +32163,7 @@ class InternalLinkCardComponent {
|
|
|
32023
32163
|
provideNgIconsConfig({
|
|
32024
32164
|
size: '1.2em',
|
|
32025
32165
|
}),
|
|
32026
|
-
], ngImport: i0, template: "<a\n [attr.href]=\"linkHref\"\n [target]=\"linkTarget\"\n class=\"record-card\"\n [ngClass]=\"cardClass\"\n>\n <div *ngIf=\"shouldShowThumbnail\" class=\"record-card__thumbnail\">\n <gn-ui-thumbnail\n class=\"w-full h-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url?.toString() || ''\"\n [fit]=\"'cover'\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grow pt-1\" [ngClass]=\"shouldShowThumbnail ? 'sm:w-0' : ''\">\n <div class=\"flex flex-col gap-2 h-full\">\n <h4\n class=\"record-card__title\"\n data-cy=\"recordTitle\"\n [title]=\"record.title\"\n >\n {{ record.title }}\n </h4>\n <div class=\"grow\">\n <gn-ui-markdown-parser\n data-cy=\"recordAbstract\"\n [textContent]=\"abstract\"\n [whitoutStyles]=\"true\"\n class=\"record-card__abstract\"\n [title]=\"abstract\"\n ></gn-ui-markdown-parser>\n </div>\n <div class=\"record-card__footer\">\n <div\n data-cy=\"recordOrg\"\n *ngIf=\"record.ownerOrganization?.name\"\n class=\"grow flex flex-row gap-1 items-center text-primary-lighter\"\n [ngClass]=\"displayContactIconOnly ? 'justify-center' : ''\"\n >\n <ng-icon\n name=\"iconoirBank\"\n class=\"text-primary -translate-y-[0.5px] shrink-0\"\n [title]=\"record.ownerOrganization.name\"\n ></ng-icon>\n <span\n *ngIf=\"!displayContactIconOnly\"\n data-cy=\"recordOrgName\"\n class=\"line-clamp-1\"\n [title]=\"record.ownerOrganization.name\"\n >{{ record.ownerOrganization.name }}</span\n >\n </div>\n <div class=\"record-card__footer__other\">\n <div\n class=\"xs:border-r last:border-r-0 flex grow gap-4 px-4 last:pr-0\"\n >\n <gn-ui-kind-badge\n [extraClass]=\"'text-[1.2em]'\"\n [styling]=\"'gray'\"\n [kind]=\"record?.kind\"\n [contentTemplate]=\"customTemplate\"\n class=\"pt-1\"\n >\n <ng-template #customTemplate></ng-template\n ></gn-ui-kind-badge>\n <gn-ui-metadata-quality\n *ngIf=\"metadataQualityDisplay\"\n class=\"flex items-center min-w-[113px]\"\n [smaller]=\"true\"\n [metadata]=\"record\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n ></gn-ui-metadata-quality>\n </div>\n <div\n class=\"flex justify-center\"\n data-cy=\"recordFav\"\n [ngClass]=\"displayContactIconOnly ? 'px-1' : 'px-4'\"\n >\n <ng-container\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n </div>\n </div>\n </div>\n </div>\n</a>\n", styles: [".record-card{@apply rounded-md bg-white hover:cursor-pointer hover:bg-slate-50 overflow-hidden items-stretch flex flex-row md:gap-0 justify-between py-3 pl-3 pr-5;}.record-card.size-L{@apply w-full md:h-[208px] gap-5;}.record-card.size-M{@apply max-w-[940px] md:h-[231px] gap-4;}.record-card.size-S{@apply max-w-[572px] md:h-[315px] gap-4;}.record-card.size-XS{@apply max-w-[280px] md:h-[315px] gap-4;}.record-card:hover .record-card__title{@apply text-primary;}.record-card__thumbnail{@apply border rounded-lg overflow-hidden shrink-0;}.size-L .record-card__thumbnail{@apply w-full w-[190px] h-[184px];}.size-M .record-card__thumbnail{@apply w-full w-[138px] h-[207px];}.record-card__title{@apply text-xl font-medium text-title leading-6;}.size-L .record-card__title{@apply line-clamp-2;}.size-M .record-card__title{@apply line-clamp-2 ml-2;}.size-S .record-card__title,.size-XS .record-card__title{@apply line-clamp-3 ml-2;}.record-card__abstract{@apply text-gray-900 overflow-hidden;}.size-L .record-card__abstract{@apply line-clamp-3;}.size-M .record-card__abstract{@apply line-clamp-3 ml-2;}.size-S .record-card__abstract,.size-XS .record-card__abstract{@apply line-clamp-4 ml-2;}.record-card__footer{@apply flex sm:flex-row flex-col flex-nowrap gap-3 justify-end items-center w-full border-t pt-1 overflow-hidden;}@media (max-width: 450px){.size-S .record-card__footer{@apply flex-col items-stretch;}}.size-XS .record-card__footer{@apply flex-col items-stretch gap-2;}.record-card__footer__other{@apply flex flex-col xs:flex-row flex-nowrap gap-3 xs:border-l first:border-l-0;}.record-card__footer__other>div{@apply py-1;}@media (max-width: 450px){.size-S .record-card__footer__other,.size-S .record-card__footer__other>div{@apply border-0 px-0 py-0;}}.size-XS .record-card__footer__other,.size-XS .record-card__footer__other>div{@apply border-0;}.size-XS .record-card__footer__other>div{@apply px-0 py-0;}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: MetadataQualityComponent, selector: "gn-ui-metadata-quality", inputs: ["metadata", "smaller", "metadataQualityDisplay"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: KindBadgeComponent, selector: "gn-ui-kind-badge", inputs: ["styling", "contentTemplate", "kind", "extraClass"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }] }); }
|
|
32166
|
+
], ngImport: i0, template: "<a\n [attr.href]=\"linkHref\"\n [target]=\"linkTarget\"\n class=\"record-card\"\n [ngClass]=\"cardClass\"\n>\n <div *ngIf=\"shouldShowThumbnail\" class=\"record-card__thumbnail\">\n <gn-ui-thumbnail\n class=\"w-full h-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url?.toString() || ''\"\n [fit]=\"'cover'\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grow pt-1\" [ngClass]=\"shouldShowThumbnail ? 'sm:w-0' : ''\">\n <div class=\"flex flex-col gap-2 h-full\">\n <h4\n class=\"record-card__title\"\n data-cy=\"recordTitle\"\n [title]=\"record.title\"\n >\n {{ record.title }}\n </h4>\n <div class=\"grow\">\n <gn-ui-markdown-parser\n data-cy=\"recordAbstract\"\n [textContent]=\"abstract\"\n [whitoutStyles]=\"true\"\n class=\"record-card__abstract\"\n [title]=\"abstract\"\n ></gn-ui-markdown-parser>\n </div>\n <div class=\"record-card__footer\">\n <div\n data-cy=\"recordOrg\"\n *ngIf=\"record.ownerOrganization?.name\"\n class=\"grow flex flex-row gap-1 items-center text-primary-lighter\"\n [ngClass]=\"displayContactIconOnly ? 'justify-center' : ''\"\n >\n <ng-icon\n name=\"iconoirBank\"\n class=\"text-primary -translate-y-[0.5px] shrink-0\"\n [title]=\"record.ownerOrganization.name\"\n ></ng-icon>\n <span\n *ngIf=\"!displayContactIconOnly\"\n data-cy=\"recordOrgName\"\n class=\"line-clamp-1\"\n [title]=\"record.ownerOrganization.name\"\n >{{ record.ownerOrganization.name }}</span\n >\n </div>\n <div class=\"record-card__footer__other\">\n <div\n class=\"xs:border-r last:border-r-0 flex grow gap-4 px-4 last:pr-0\"\n >\n <gn-ui-kind-badge\n [extraClass]=\"'text-[1.2em]'\"\n [styling]=\"'gray'\"\n [kind]=\"record?.kind\"\n [contentTemplate]=\"customTemplate\"\n class=\"pt-1\"\n >\n <ng-template #customTemplate></ng-template\n ></gn-ui-kind-badge>\n <gn-ui-metadata-quality\n *ngIf=\"metadataQualityDisplay\"\n class=\"flex items-center min-w-[113px]\"\n [smaller]=\"true\"\n [metadata]=\"record\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n [popoverDisplay]=\"true\"\n ></gn-ui-metadata-quality>\n </div>\n <div\n class=\"flex justify-center\"\n data-cy=\"recordFav\"\n [ngClass]=\"displayContactIconOnly ? 'px-1' : 'px-4'\"\n >\n <ng-container\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n </div>\n </div>\n </div>\n </div>\n</a>\n", styles: [".record-card{@apply rounded-md bg-white hover:cursor-pointer hover:bg-slate-50 overflow-hidden items-stretch flex flex-row md:gap-0 justify-between py-3 pl-3 pr-5;}.record-card.size-L{@apply w-full md:h-[208px] gap-5;}.record-card.size-M{@apply max-w-[940px] md:h-[231px] gap-4;}.record-card.size-S{@apply max-w-[572px] md:h-[315px] gap-4;}.record-card.size-XS{@apply max-w-[280px] md:h-[315px] gap-4;}.record-card:hover .record-card__title{@apply text-primary;}.record-card__thumbnail{@apply border rounded-lg overflow-hidden shrink-0;}.size-L .record-card__thumbnail{@apply w-full w-[190px] h-[184px];}.size-M .record-card__thumbnail{@apply w-full w-[138px] h-[207px];}.record-card__title{@apply text-xl font-medium text-title leading-6;}.size-L .record-card__title{@apply line-clamp-2;}.size-M .record-card__title{@apply line-clamp-2 ml-2;}.size-S .record-card__title,.size-XS .record-card__title{@apply line-clamp-3 ml-2;}.record-card__abstract{@apply text-gray-900 overflow-hidden;}.size-L .record-card__abstract{@apply line-clamp-3;}.size-M .record-card__abstract{@apply line-clamp-3 ml-2;}.size-S .record-card__abstract,.size-XS .record-card__abstract{@apply line-clamp-4 ml-2;}.record-card__footer{@apply flex sm:flex-row flex-col flex-nowrap gap-3 justify-end items-center w-full border-t pt-1 overflow-hidden;}@media (max-width: 450px){.size-S .record-card__footer{@apply flex-col items-stretch;}}.size-XS .record-card__footer{@apply flex-col items-stretch gap-2;}.record-card__footer__other{@apply flex flex-col xs:flex-row flex-nowrap gap-3 xs:border-l first:border-l-0;}.record-card__footer__other>div{@apply py-1;}@media (max-width: 450px){.size-S .record-card__footer__other,.size-S .record-card__footer__other>div{@apply border-0 px-0 py-0;}}.size-XS .record-card__footer__other,.size-XS .record-card__footer__other>div{@apply border-0;}.size-XS .record-card__footer__other>div{@apply px-0 py-0;}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: MetadataQualityComponent, selector: "gn-ui-metadata-quality", inputs: ["metadata", "smaller", "metadataQualityDisplay", "popoverDisplay", "propsToValidate", "forceComputeScore"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: KindBadgeComponent, selector: "gn-ui-kind-badge", inputs: ["styling", "contentTemplate", "kind", "extraClass"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }] }); }
|
|
32027
32167
|
}
|
|
32028
32168
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternalLinkCardComponent, decorators: [{
|
|
32029
32169
|
type: Component,
|
|
@@ -32044,7 +32184,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
32044
32184
|
provideNgIconsConfig({
|
|
32045
32185
|
size: '1.2em',
|
|
32046
32186
|
}),
|
|
32047
|
-
], template: "<a\n [attr.href]=\"linkHref\"\n [target]=\"linkTarget\"\n class=\"record-card\"\n [ngClass]=\"cardClass\"\n>\n <div *ngIf=\"shouldShowThumbnail\" class=\"record-card__thumbnail\">\n <gn-ui-thumbnail\n class=\"w-full h-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url?.toString() || ''\"\n [fit]=\"'cover'\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grow pt-1\" [ngClass]=\"shouldShowThumbnail ? 'sm:w-0' : ''\">\n <div class=\"flex flex-col gap-2 h-full\">\n <h4\n class=\"record-card__title\"\n data-cy=\"recordTitle\"\n [title]=\"record.title\"\n >\n {{ record.title }}\n </h4>\n <div class=\"grow\">\n <gn-ui-markdown-parser\n data-cy=\"recordAbstract\"\n [textContent]=\"abstract\"\n [whitoutStyles]=\"true\"\n class=\"record-card__abstract\"\n [title]=\"abstract\"\n ></gn-ui-markdown-parser>\n </div>\n <div class=\"record-card__footer\">\n <div\n data-cy=\"recordOrg\"\n *ngIf=\"record.ownerOrganization?.name\"\n class=\"grow flex flex-row gap-1 items-center text-primary-lighter\"\n [ngClass]=\"displayContactIconOnly ? 'justify-center' : ''\"\n >\n <ng-icon\n name=\"iconoirBank\"\n class=\"text-primary -translate-y-[0.5px] shrink-0\"\n [title]=\"record.ownerOrganization.name\"\n ></ng-icon>\n <span\n *ngIf=\"!displayContactIconOnly\"\n data-cy=\"recordOrgName\"\n class=\"line-clamp-1\"\n [title]=\"record.ownerOrganization.name\"\n >{{ record.ownerOrganization.name }}</span\n >\n </div>\n <div class=\"record-card__footer__other\">\n <div\n class=\"xs:border-r last:border-r-0 flex grow gap-4 px-4 last:pr-0\"\n >\n <gn-ui-kind-badge\n [extraClass]=\"'text-[1.2em]'\"\n [styling]=\"'gray'\"\n [kind]=\"record?.kind\"\n [contentTemplate]=\"customTemplate\"\n class=\"pt-1\"\n >\n <ng-template #customTemplate></ng-template\n ></gn-ui-kind-badge>\n <gn-ui-metadata-quality\n *ngIf=\"metadataQualityDisplay\"\n class=\"flex items-center min-w-[113px]\"\n [smaller]=\"true\"\n [metadata]=\"record\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n ></gn-ui-metadata-quality>\n </div>\n <div\n class=\"flex justify-center\"\n data-cy=\"recordFav\"\n [ngClass]=\"displayContactIconOnly ? 'px-1' : 'px-4'\"\n >\n <ng-container\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n </div>\n </div>\n </div>\n </div>\n</a>\n", styles: [".record-card{@apply rounded-md bg-white hover:cursor-pointer hover:bg-slate-50 overflow-hidden items-stretch flex flex-row md:gap-0 justify-between py-3 pl-3 pr-5;}.record-card.size-L{@apply w-full md:h-[208px] gap-5;}.record-card.size-M{@apply max-w-[940px] md:h-[231px] gap-4;}.record-card.size-S{@apply max-w-[572px] md:h-[315px] gap-4;}.record-card.size-XS{@apply max-w-[280px] md:h-[315px] gap-4;}.record-card:hover .record-card__title{@apply text-primary;}.record-card__thumbnail{@apply border rounded-lg overflow-hidden shrink-0;}.size-L .record-card__thumbnail{@apply w-full w-[190px] h-[184px];}.size-M .record-card__thumbnail{@apply w-full w-[138px] h-[207px];}.record-card__title{@apply text-xl font-medium text-title leading-6;}.size-L .record-card__title{@apply line-clamp-2;}.size-M .record-card__title{@apply line-clamp-2 ml-2;}.size-S .record-card__title,.size-XS .record-card__title{@apply line-clamp-3 ml-2;}.record-card__abstract{@apply text-gray-900 overflow-hidden;}.size-L .record-card__abstract{@apply line-clamp-3;}.size-M .record-card__abstract{@apply line-clamp-3 ml-2;}.size-S .record-card__abstract,.size-XS .record-card__abstract{@apply line-clamp-4 ml-2;}.record-card__footer{@apply flex sm:flex-row flex-col flex-nowrap gap-3 justify-end items-center w-full border-t pt-1 overflow-hidden;}@media (max-width: 450px){.size-S .record-card__footer{@apply flex-col items-stretch;}}.size-XS .record-card__footer{@apply flex-col items-stretch gap-2;}.record-card__footer__other{@apply flex flex-col xs:flex-row flex-nowrap gap-3 xs:border-l first:border-l-0;}.record-card__footer__other>div{@apply py-1;}@media (max-width: 450px){.size-S .record-card__footer__other,.size-S .record-card__footer__other>div{@apply border-0 px-0 py-0;}}.size-XS .record-card__footer__other,.size-XS .record-card__footer__other>div{@apply border-0;}.size-XS .record-card__footer__other>div{@apply px-0 py-0;}\n"] }]
|
|
32187
|
+
], template: "<a\n [attr.href]=\"linkHref\"\n [target]=\"linkTarget\"\n class=\"record-card\"\n [ngClass]=\"cardClass\"\n>\n <div *ngIf=\"shouldShowThumbnail\" class=\"record-card__thumbnail\">\n <gn-ui-thumbnail\n class=\"w-full h-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url?.toString() || ''\"\n [fit]=\"'cover'\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grow pt-1\" [ngClass]=\"shouldShowThumbnail ? 'sm:w-0' : ''\">\n <div class=\"flex flex-col gap-2 h-full\">\n <h4\n class=\"record-card__title\"\n data-cy=\"recordTitle\"\n [title]=\"record.title\"\n >\n {{ record.title }}\n </h4>\n <div class=\"grow\">\n <gn-ui-markdown-parser\n data-cy=\"recordAbstract\"\n [textContent]=\"abstract\"\n [whitoutStyles]=\"true\"\n class=\"record-card__abstract\"\n [title]=\"abstract\"\n ></gn-ui-markdown-parser>\n </div>\n <div class=\"record-card__footer\">\n <div\n data-cy=\"recordOrg\"\n *ngIf=\"record.ownerOrganization?.name\"\n class=\"grow flex flex-row gap-1 items-center text-primary-lighter\"\n [ngClass]=\"displayContactIconOnly ? 'justify-center' : ''\"\n >\n <ng-icon\n name=\"iconoirBank\"\n class=\"text-primary -translate-y-[0.5px] shrink-0\"\n [title]=\"record.ownerOrganization.name\"\n ></ng-icon>\n <span\n *ngIf=\"!displayContactIconOnly\"\n data-cy=\"recordOrgName\"\n class=\"line-clamp-1\"\n [title]=\"record.ownerOrganization.name\"\n >{{ record.ownerOrganization.name }}</span\n >\n </div>\n <div class=\"record-card__footer__other\">\n <div\n class=\"xs:border-r last:border-r-0 flex grow gap-4 px-4 last:pr-0\"\n >\n <gn-ui-kind-badge\n [extraClass]=\"'text-[1.2em]'\"\n [styling]=\"'gray'\"\n [kind]=\"record?.kind\"\n [contentTemplate]=\"customTemplate\"\n class=\"pt-1\"\n >\n <ng-template #customTemplate></ng-template\n ></gn-ui-kind-badge>\n <gn-ui-metadata-quality\n *ngIf=\"metadataQualityDisplay\"\n class=\"flex items-center min-w-[113px]\"\n [smaller]=\"true\"\n [metadata]=\"record\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n [popoverDisplay]=\"true\"\n ></gn-ui-metadata-quality>\n </div>\n <div\n class=\"flex justify-center\"\n data-cy=\"recordFav\"\n [ngClass]=\"displayContactIconOnly ? 'px-1' : 'px-4'\"\n >\n <ng-container\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n </div>\n </div>\n </div>\n </div>\n</a>\n", styles: [".record-card{@apply rounded-md bg-white hover:cursor-pointer hover:bg-slate-50 overflow-hidden items-stretch flex flex-row md:gap-0 justify-between py-3 pl-3 pr-5;}.record-card.size-L{@apply w-full md:h-[208px] gap-5;}.record-card.size-M{@apply max-w-[940px] md:h-[231px] gap-4;}.record-card.size-S{@apply max-w-[572px] md:h-[315px] gap-4;}.record-card.size-XS{@apply max-w-[280px] md:h-[315px] gap-4;}.record-card:hover .record-card__title{@apply text-primary;}.record-card__thumbnail{@apply border rounded-lg overflow-hidden shrink-0;}.size-L .record-card__thumbnail{@apply w-full w-[190px] h-[184px];}.size-M .record-card__thumbnail{@apply w-full w-[138px] h-[207px];}.record-card__title{@apply text-xl font-medium text-title leading-6;}.size-L .record-card__title{@apply line-clamp-2;}.size-M .record-card__title{@apply line-clamp-2 ml-2;}.size-S .record-card__title,.size-XS .record-card__title{@apply line-clamp-3 ml-2;}.record-card__abstract{@apply text-gray-900 overflow-hidden;}.size-L .record-card__abstract{@apply line-clamp-3;}.size-M .record-card__abstract{@apply line-clamp-3 ml-2;}.size-S .record-card__abstract,.size-XS .record-card__abstract{@apply line-clamp-4 ml-2;}.record-card__footer{@apply flex sm:flex-row flex-col flex-nowrap gap-3 justify-end items-center w-full border-t pt-1 overflow-hidden;}@media (max-width: 450px){.size-S .record-card__footer{@apply flex-col items-stretch;}}.size-XS .record-card__footer{@apply flex-col items-stretch gap-2;}.record-card__footer__other{@apply flex flex-col xs:flex-row flex-nowrap gap-3 xs:border-l first:border-l-0;}.record-card__footer__other>div{@apply py-1;}@media (max-width: 450px){.size-S .record-card__footer__other,.size-S .record-card__footer__other>div{@apply border-0 px-0 py-0;}}.size-XS .record-card__footer__other,.size-XS .record-card__footer__other>div{@apply border-0;}.size-XS .record-card__footer__other>div{@apply px-0 py-0;}\n"] }]
|
|
32048
32188
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { record: [{
|
|
32049
32189
|
type: Input
|
|
32050
32190
|
}], linkTarget: [{
|
|
@@ -32468,6 +32608,7 @@ class DownloadsListComponent {
|
|
|
32468
32608
|
constructor(translateService, changeDetector) {
|
|
32469
32609
|
this.translateService = translateService;
|
|
32470
32610
|
this.changeDetector = changeDetector;
|
|
32611
|
+
this.isMobile$ = getIsMobile();
|
|
32471
32612
|
this.activeFilterFormats = ['all'];
|
|
32472
32613
|
}
|
|
32473
32614
|
get linksCount() {
|
|
@@ -32555,7 +32696,7 @@ class DownloadsListComponent {
|
|
|
32555
32696
|
link.accessServiceProtocol === 'ogcFeatures'));
|
|
32556
32697
|
}
|
|
32557
32698
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DownloadsListComponent, deps: [{ token: i1$1.TranslateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32558
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DownloadsListComponent, isStandalone: true, selector: "gn-ui-downloads-list", inputs: { links: "links" }, ngImport: i0, template: "<div\n class=\"flex flex-wrap justify-between items-center pb-4\"\n *ngIf=\"links && links.length > 0\"\n>\n <div class=\"flex flex-row items-center gap-x-4\">\n <div>\n <h3\n class=\"inline-block font-title text-xl text-title font-medium mr-4\"\n translate\n >\n record.metadata.download\n </h3>\n <span class=\"px-3\">({{ linksCount }})</span>\n </div>\n <gn-ui-previous-next-buttons\n
|
|
32699
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DownloadsListComponent, isStandalone: true, selector: "gn-ui-downloads-list", inputs: { links: "links" }, ngImport: i0, template: "<div\n class=\"flex flex-wrap justify-between items-center pb-4\"\n *ngIf=\"links && links.length > 0\"\n>\n <div class=\"flex flex-row items-center gap-x-4\">\n <div>\n <h3\n class=\"inline-block font-title text-xl text-title font-medium mr-4\"\n translate\n >\n record.metadata.download\n </h3>\n <span class=\"px-3\">({{ linksCount }})</span>\n </div>\n <gn-ui-previous-next-buttons\n *ngIf=\"(isMobile$ | async) === false && _list?.pagesCount > 1\"\n [listComponent]=\"_list\"\n ></gn-ui-previous-next-buttons>\n </div>\n\n <div\n class=\"flex flex-wrap justify-start sm:justify-end\"\n data-cy=\"download-format-filters\"\n >\n <gn-ui-button\n class=\"m-1 format-filter\"\n [extraClass]=\"\n '!px-[12px] !py-[8px] !text-[15px]' +\n (isFilterActive(format) ? ' opacity-100' : ' opacity-60')\n \"\n (buttonClick)=\"toggleFilterFormat(format)\"\n [attr.data-format]=\"format\"\n *ngFor=\"let format of visibleFormats\"\n >\n {{ getFilterFormatTitle(format) }}\n </gn-ui-button>\n </div>\n</div>\n\n<ng-container>\n <gn-ui-block-list\n *ngIf=\"(isMobile$ | async) === false\"\n #blockList\n (listChanges)=\"updateList($event)\"\n containerClass=\"gap-4 pt-5 pb-7\"\n >\n <gn-ui-download-item\n #block\n *ngFor=\"let link of filteredLinks\"\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromApi]=\"isFromApi(link)\"\n [size]=\"blockList.subComponentSize\"\n ></gn-ui-download-item>\n </gn-ui-block-list>\n</ng-container>\n\n<div class=\"mb-5\" *ngFor=\"let link of filteredLinks\">\n <ng-container *ngIf=\"(isMobile$ | async) === true\">\n <gn-ui-download-item\n size=\"M\"\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromApi]=\"isFromApi(link)\"\n ></gn-ui-download-item>\n </ng-container>\n</div>\n", styles: [""], 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: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: BlockListComponent, selector: "gn-ui-block-list", inputs: ["containerClass", "paginationContainerClass"], outputs: ["listChanges"] }, { kind: "component", type: DownloadItemComponent, selector: "gn-ui-download-item", inputs: ["link", "color", "format", "isFromApi", "size"], outputs: ["exportUrl"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: PreviousNextButtonsComponent, selector: "gn-ui-previous-next-buttons", inputs: ["listComponent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32559
32700
|
}
|
|
32560
32701
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DownloadsListComponent, decorators: [{
|
|
32561
32702
|
type: Component,
|
|
@@ -32566,7 +32707,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
32566
32707
|
DownloadItemComponent,
|
|
32567
32708
|
TranslateDirective,
|
|
32568
32709
|
PreviousNextButtonsComponent,
|
|
32569
|
-
], template: "<div\n class=\"flex flex-wrap justify-between items-center pb-4\"\n *ngIf=\"links && links.length > 0\"\n>\n <div class=\"flex flex-row items-center gap-x-4\">\n <div>\n <h3\n class=\"inline-block font-title text-xl text-title font-medium mr-4\"\n translate\n >\n record.metadata.download\n </h3>\n <span class=\"px-3\">({{ linksCount }})</span>\n </div>\n <gn-ui-previous-next-buttons\n
|
|
32710
|
+
], template: "<div\n class=\"flex flex-wrap justify-between items-center pb-4\"\n *ngIf=\"links && links.length > 0\"\n>\n <div class=\"flex flex-row items-center gap-x-4\">\n <div>\n <h3\n class=\"inline-block font-title text-xl text-title font-medium mr-4\"\n translate\n >\n record.metadata.download\n </h3>\n <span class=\"px-3\">({{ linksCount }})</span>\n </div>\n <gn-ui-previous-next-buttons\n *ngIf=\"(isMobile$ | async) === false && _list?.pagesCount > 1\"\n [listComponent]=\"_list\"\n ></gn-ui-previous-next-buttons>\n </div>\n\n <div\n class=\"flex flex-wrap justify-start sm:justify-end\"\n data-cy=\"download-format-filters\"\n >\n <gn-ui-button\n class=\"m-1 format-filter\"\n [extraClass]=\"\n '!px-[12px] !py-[8px] !text-[15px]' +\n (isFilterActive(format) ? ' opacity-100' : ' opacity-60')\n \"\n (buttonClick)=\"toggleFilterFormat(format)\"\n [attr.data-format]=\"format\"\n *ngFor=\"let format of visibleFormats\"\n >\n {{ getFilterFormatTitle(format) }}\n </gn-ui-button>\n </div>\n</div>\n\n<ng-container>\n <gn-ui-block-list\n *ngIf=\"(isMobile$ | async) === false\"\n #blockList\n (listChanges)=\"updateList($event)\"\n containerClass=\"gap-4 pt-5 pb-7\"\n >\n <gn-ui-download-item\n #block\n *ngFor=\"let link of filteredLinks\"\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromApi]=\"isFromApi(link)\"\n [size]=\"blockList.subComponentSize\"\n ></gn-ui-download-item>\n </gn-ui-block-list>\n</ng-container>\n\n<div class=\"mb-5\" *ngFor=\"let link of filteredLinks\">\n <ng-container *ngIf=\"(isMobile$ | async) === true\">\n <gn-ui-download-item\n size=\"M\"\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromApi]=\"isFromApi(link)\"\n ></gn-ui-download-item>\n </ng-container>\n</div>\n" }]
|
|
32570
32711
|
}], ctorParameters: () => [{ type: i1$1.TranslateService }, { type: i0.ChangeDetectorRef }], propDecorators: { links: [{
|
|
32571
32712
|
type: Input
|
|
32572
32713
|
}] } });
|
|
@@ -32634,9 +32775,10 @@ class GeoDataBadgeComponent {
|
|
|
32634
32775
|
this.linkClassifier = linkClassifier;
|
|
32635
32776
|
this.showLabel = true;
|
|
32636
32777
|
this.styling = 'default';
|
|
32778
|
+
this.isMobile$ = getIsMobile();
|
|
32637
32779
|
}
|
|
32638
32780
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GeoDataBadgeComponent, deps: [{ token: LinkClassifierService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32639
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: GeoDataBadgeComponent, isStandalone: true, selector: "gn-ui-geo-data-badge", inputs: { showLabel: "showLabel", styling: "styling", record: "record" }, ngImport: i0, template: "<div\n [class]=\"badgeClasses\"\n [title]=\"'record.metadata.isGeographical' | translate\"\n *ngIf=\"isGeodata()\"\n>\n <ng-icon\n class=\"shrink-0 text-[0.75em]\"\n name=\"matLocationSearchingOutline\"\n ></ng-icon>\n <span
|
|
32781
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: GeoDataBadgeComponent, isStandalone: true, selector: "gn-ui-geo-data-badge", inputs: { showLabel: "showLabel", styling: "styling", record: "record" }, ngImport: i0, template: "<div\n [class]=\"badgeClasses\"\n [title]=\"'record.metadata.isGeographical' | translate\"\n *ngIf=\"isGeodata()\"\n>\n <ng-icon\n class=\"shrink-0 text-[0.75em]\"\n name=\"matLocationSearchingOutline\"\n ></ng-icon>\n <span\n class=\"ml-1 inline-block shrink-0\"\n *ngIf=\"(isMobile$ | async) === false && showLabel\"\n translate\n >record.metadata.isGeographical</span\n >\n</div>\n", styles: [":host{--gn-ui-geo-data-badge-background-color: var(--color-primary-white);--gn-ui-geo-data-badge-text-color: var(--color-primary-darkest)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], viewProviders: [
|
|
32640
32782
|
provideIcons({
|
|
32641
32783
|
matLocationSearchingOutline,
|
|
32642
32784
|
}),
|
|
@@ -32648,7 +32790,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
32648
32790
|
provideIcons({
|
|
32649
32791
|
matLocationSearchingOutline,
|
|
32650
32792
|
}),
|
|
32651
|
-
], template: "<div\n [class]=\"badgeClasses\"\n [title]=\"'record.metadata.isGeographical' | translate\"\n *ngIf=\"isGeodata()\"\n>\n <ng-icon\n class=\"shrink-0 text-[0.75em]\"\n name=\"matLocationSearchingOutline\"\n ></ng-icon>\n <span
|
|
32793
|
+
], template: "<div\n [class]=\"badgeClasses\"\n [title]=\"'record.metadata.isGeographical' | translate\"\n *ngIf=\"isGeodata()\"\n>\n <ng-icon\n class=\"shrink-0 text-[0.75em]\"\n name=\"matLocationSearchingOutline\"\n ></ng-icon>\n <span\n class=\"ml-1 inline-block shrink-0\"\n *ngIf=\"(isMobile$ | async) === false && showLabel\"\n translate\n >record.metadata.isGeographical</span\n >\n</div>\n", styles: [":host{--gn-ui-geo-data-badge-background-color: var(--color-primary-white);--gn-ui-geo-data-badge-text-color: var(--color-primary-darkest)}\n"] }]
|
|
32652
32794
|
}], ctorParameters: () => [{ type: LinkClassifierService }], propDecorators: { showLabel: [{
|
|
32653
32795
|
type: Input
|
|
32654
32796
|
}], styling: [{
|
|
@@ -38632,7 +38774,7 @@ class DataTableComponent {
|
|
|
38632
38774
|
}
|
|
38633
38775
|
}
|
|
38634
38776
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataTableComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
38635
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataTableComponent, isStandalone: true, selector: "gn-ui-data-table", inputs: { featureAttributes: "featureAttributes", dataset: "dataset", activeId: "activeId" }, outputs: { selected: "selected" }, providers: [{ provide: MatPaginatorIntl, useClass: CustomMatPaginatorIntl }], viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col border border-gray-300 rounded-lg bg-white h-full\">\n <div class=\"flex-1 overflow-y-hidden overflow-x-auto rounded-lg relative\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"setSort($event)\"\n [matSortDisableClear]=\"true\"\n *ngrxLet=\"properties$ as properties\"\n >\n <ng-container\n *ngFor=\"let attr of _featureAttributes\"\n [matColumnDef]=\"attr.value\"\n >\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ attr.label }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[attr.value] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"\n activeId !== undefined && activeId !== null && row.id === activeId\n \"\n ></tr>\n </table>\n <gn-ui-loading-mask\n *ngIf=\"loading$ | async\"\n class=\"sticky inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0 z-[100]\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n <div class=\"flex justify-between items-center overflow-hidden\">\n <div class=\"text-gray-900 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n > <span translate>table.object.count</span>.\n </div>\n\n <mat-paginator\n class=\"my-[-16px]\"\n (page)=\"setPagination()\"\n [length]=\"count\"\n [pageSize]=\"10\"\n [showFirstLastButtons]=\"true\"\n [hidePageSize]=\"true\"\n ></mat-paginator>\n </div>\n</div>\n", styles: ["table{width:100%;background:#fff}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:#f5f5f5}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}.mat-mdc-paginator{background:none}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i2$5.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2$5.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2$5.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2$5.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2$5.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2$5.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2$5.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2$5.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2$5.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2$5.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i3$1.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i3$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i4.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: ScrollingModule }, { 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: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "directive", type: LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
38777
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataTableComponent, isStandalone: true, selector: "gn-ui-data-table", inputs: { featureAttributes: "featureAttributes", dataset: "dataset", activeId: "activeId" }, outputs: { selected: "selected" }, providers: [{ provide: MatPaginatorIntl, useClass: CustomMatPaginatorIntl }], viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col border border-gray-300 rounded-lg bg-white h-full\">\n <div class=\"flex-1 overflow-y-hidden overflow-x-auto rounded-lg relative\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"setSort($event)\"\n [matSortDisableClear]=\"true\"\n *ngrxLet=\"properties$ as properties\"\n >\n <ng-container\n *ngFor=\"let attr of _featureAttributes\"\n [matColumnDef]=\"attr.value\"\n >\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ attr.label }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[attr.value] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"\n activeId !== undefined && activeId !== null && row.id === activeId\n \"\n ></tr>\n </table>\n <gn-ui-loading-mask\n *ngIf=\"loading$ | async\"\n class=\"sticky inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0 z-[100]\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n <div class=\"flex justify-between items-center overflow-hidden\">\n <div class=\"text-gray-900 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n > <span translate>table.object.count</span>.\n </div>\n\n <mat-paginator\n class=\"my-[-16px]\"\n (page)=\"setPagination()\"\n [length]=\"count\"\n [pageSize]=\"10\"\n [showFirstLastButtons]=\"true\"\n [hidePageSize]=\"true\"\n ></mat-paginator>\n </div>\n</div>\n", styles: ["table{width:100%;background:#fff}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:#f5f5f5}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}.mat-mdc-paginator{background:none}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i2$5.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2$5.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2$5.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2$5.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2$5.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2$5.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2$5.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2$5.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2$5.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2$5.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i3$1.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i3$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i4.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: ScrollingModule }, { 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: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "directive", type: LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
38636
38778
|
}
|
|
38637
38779
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataTableComponent, decorators: [{
|
|
38638
38780
|
type: Component,
|
|
@@ -38646,6 +38788,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
38646
38788
|
PopupAlertComponent,
|
|
38647
38789
|
LetDirective,
|
|
38648
38790
|
TranslatePipe,
|
|
38791
|
+
TranslateDirective,
|
|
38649
38792
|
], providers: [{ provide: MatPaginatorIntl, useClass: CustomMatPaginatorIntl }], selector: 'gn-ui-data-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col border border-gray-300 rounded-lg bg-white h-full\">\n <div class=\"flex-1 overflow-y-hidden overflow-x-auto rounded-lg relative\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"setSort($event)\"\n [matSortDisableClear]=\"true\"\n *ngrxLet=\"properties$ as properties\"\n >\n <ng-container\n *ngFor=\"let attr of _featureAttributes\"\n [matColumnDef]=\"attr.value\"\n >\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ attr.label }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[attr.value] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"\n activeId !== undefined && activeId !== null && row.id === activeId\n \"\n ></tr>\n </table>\n <gn-ui-loading-mask\n *ngIf=\"loading$ | async\"\n class=\"sticky inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0 z-[100]\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n <div class=\"flex justify-between items-center overflow-hidden\">\n <div class=\"text-gray-900 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n > <span translate>table.object.count</span>.\n </div>\n\n <mat-paginator\n class=\"my-[-16px]\"\n (page)=\"setPagination()\"\n [length]=\"count\"\n [pageSize]=\"10\"\n [showFirstLastButtons]=\"true\"\n [hidePageSize]=\"true\"\n ></mat-paginator>\n </div>\n</div>\n", styles: ["table{width:100%;background:#fff}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:#f5f5f5}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}.mat-mdc-paginator{background:none}\n"] }]
|
|
38650
38793
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { featureAttributes: [{
|
|
38651
38794
|
type: Input
|
|
@@ -38806,6 +38949,12 @@ class ChartViewComponent {
|
|
|
38806
38949
|
set chartType(value) {
|
|
38807
38950
|
this.chartType$.next(value);
|
|
38808
38951
|
}
|
|
38952
|
+
set userChartConfig(config) {
|
|
38953
|
+
this.aggregation$.next(config.aggregation);
|
|
38954
|
+
this.xProperty$.next(config.xProperty);
|
|
38955
|
+
this.yProperty$.next(config.yProperty);
|
|
38956
|
+
this.chartType$.next(config.chartType);
|
|
38957
|
+
}
|
|
38809
38958
|
get aggregationChoices() {
|
|
38810
38959
|
if (!this.yProperty$.value) {
|
|
38811
38960
|
return [{ label: 'chart.aggregation.count', value: 'count' }];
|
|
@@ -38966,7 +39115,7 @@ class ChartViewComponent {
|
|
|
38966
39115
|
this.changeDetector.detectChanges();
|
|
38967
39116
|
}
|
|
38968
39117
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChartViewComponent, deps: [{ token: DataService }, { token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
38969
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChartViewComponent, isStandalone: true, selector: "gn-ui-chart-view", inputs: { featureCatalog: "featureCatalog", cacheActive: "cacheActive", link: "link", aggregation: "aggregation", xProperty: "xProperty", yProperty: "yProperty", chartType: "chartType" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div\n class=\"flex flex-col space-y-2 sm:flex-row sm:space-y-0 sm:space-x-2 justify-between text-[13px]\"\n >\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"typeChoices\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"chartType$.next($event)\"\n [selected]=\"chartType$.value\"\n [title]=\"'chart.dropdown.type' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"xChoices$ | async\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"xProperty$.next($event)\"\n [selected]=\"xProperty$.value\"\n [title]=\"'chart.dropdown.xProperty' | translate\"\n ></gn-ui-dropdown-selector>\n <ng-container *ngIf=\"yChoices$ | async as yChoices\">\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices\"\n (selectValue)=\"yProperty$.next($event)\"\n [selected]=\"yProperty$.value\"\n [title]=\"'chart.dropdown.yProperty' | translate\"\n class=\"select-y-prop\"\n ></gn-ui-dropdown-selector>\n </ng-container>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"aggregationChoices\"\n class=\"aggregation-choices\"\n (selectValue)=\"aggregation$.next($event)\"\n [selected]=\"aggregation$.value\"\n [title]=\"'chart.dropdown.aggregation' | translate\"\n ></gn-ui-dropdown-selector>\n </div>\n <div\n class=\"relative h-full mt-2 bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-chart\n *ngIf=\"!error\"\n [data]=\"chartData$ | async\"\n [type]=\"chartType$.value\"\n [prettyLabel]=\"prettyLabel$ | async\"\n [labelProperty]=\"labelProperty\"\n [valueProperty]=\"valueProperty\"\n ></gn-ui-chart>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'chart.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "component", type: ChartComponent, selector: "gn-ui-chart", inputs: ["data", "labelProperty", "prettyLabel", "valueProperty", "secondaryValueProperty", "type"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39118
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChartViewComponent, isStandalone: true, selector: "gn-ui-chart-view", inputs: { featureCatalog: "featureCatalog", cacheActive: "cacheActive", link: "link", aggregation: "aggregation", xProperty: "xProperty", yProperty: "yProperty", chartType: "chartType", userChartConfig: "userChartConfig" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div\n class=\"flex flex-col space-y-2 sm:flex-row sm:space-y-0 sm:space-x-2 justify-between text-[13px]\"\n >\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"typeChoices\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"chartType$.next($event)\"\n [selected]=\"chartType$.value\"\n [title]=\"'chart.dropdown.type' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"xChoices$ | async\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"xProperty$.next($event)\"\n [selected]=\"xProperty$.value\"\n [title]=\"'chart.dropdown.xProperty' | translate\"\n ></gn-ui-dropdown-selector>\n <ng-container *ngIf=\"yChoices$ | async as yChoices\">\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices\"\n (selectValue)=\"yProperty$.next($event)\"\n [selected]=\"yProperty$.value\"\n [title]=\"'chart.dropdown.yProperty' | translate\"\n class=\"select-y-prop\"\n ></gn-ui-dropdown-selector>\n </ng-container>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"aggregationChoices\"\n class=\"aggregation-choices\"\n (selectValue)=\"aggregation$.next($event)\"\n [selected]=\"aggregation$.value\"\n [title]=\"'chart.dropdown.aggregation' | translate\"\n ></gn-ui-dropdown-selector>\n </div>\n <div\n class=\"relative h-full mt-2 bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-chart\n *ngIf=\"!error\"\n [data]=\"chartData$ | async\"\n [type]=\"chartType$.value\"\n [prettyLabel]=\"prettyLabel$ | async\"\n [labelProperty]=\"labelProperty\"\n [valueProperty]=\"valueProperty\"\n ></gn-ui-chart>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'chart.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "component", type: ChartComponent, selector: "gn-ui-chart", inputs: ["data", "labelProperty", "prettyLabel", "valueProperty", "secondaryValueProperty", "type"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
38970
39119
|
}
|
|
38971
39120
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChartViewComponent, decorators: [{
|
|
38972
39121
|
type: Component,
|
|
@@ -38992,6 +39141,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
38992
39141
|
type: Input
|
|
38993
39142
|
}], chartType: [{
|
|
38994
39143
|
type: Input
|
|
39144
|
+
}], userChartConfig: [{
|
|
39145
|
+
type: Input
|
|
38995
39146
|
}], chartConfig$: [{
|
|
38996
39147
|
type: Output
|
|
38997
39148
|
}] } });
|
|
@@ -39349,7 +39500,9 @@ class MdViewEffects {
|
|
|
39349
39500
|
Metadata effects
|
|
39350
39501
|
*/
|
|
39351
39502
|
this.loadFullMetadata$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadata), switchMap$1(({ uuid }) => this.recordsRepository.getRecord(uuid)), map$1((record) => {
|
|
39352
|
-
if (record === null ||
|
|
39503
|
+
if (record === null ||
|
|
39504
|
+
(this.router.url !== '/' && // FIXME: special case for WC, find a better way
|
|
39505
|
+
!this.router.url.includes(record.kind))) {
|
|
39353
39506
|
return loadFullMetadataFailure({ notFound: true });
|
|
39354
39507
|
}
|
|
39355
39508
|
return loadFullMetadataSuccess({ full: record });
|
|
@@ -39918,14 +40071,30 @@ class DataViewComponent {
|
|
|
39918
40071
|
}
|
|
39919
40072
|
set selectedView(value) {
|
|
39920
40073
|
this._selectedView = value;
|
|
39921
|
-
if (
|
|
40074
|
+
if (this.mode === value) {
|
|
39922
40075
|
this.linkSelected.emit(this.selectedLink$.value);
|
|
39923
40076
|
}
|
|
39924
40077
|
}
|
|
40078
|
+
set datavizConfig(value) {
|
|
40079
|
+
this._selectedView = value.view;
|
|
40080
|
+
if (this.mode === value.view) {
|
|
40081
|
+
if (!value.source) {
|
|
40082
|
+
this.linkSelected.emit(this.selectedLink$.value);
|
|
40083
|
+
}
|
|
40084
|
+
else {
|
|
40085
|
+
this._chartConfig = value.chartConfig;
|
|
40086
|
+
this._selectedChoice = getLinkId(value.source);
|
|
40087
|
+
this.selectedLink$.next(value.source);
|
|
40088
|
+
}
|
|
40089
|
+
}
|
|
40090
|
+
}
|
|
39925
40091
|
constructor(mdViewFacade) {
|
|
39926
40092
|
this.mdViewFacade = mdViewFacade;
|
|
39927
40093
|
this.displaySource = true;
|
|
40094
|
+
this.linkMap = new Map();
|
|
39928
40095
|
this._selectedView = '';
|
|
40096
|
+
this._chartConfig = null;
|
|
40097
|
+
this._selectedChoice = null;
|
|
39929
40098
|
this.chartConfig$ = new BehaviorSubject(null);
|
|
39930
40099
|
this.linkSelected = new EventEmitter();
|
|
39931
40100
|
this.cacheActive$ = this.mdViewFacade.isHighUpdateFrequency$.pipe(map$1((highF) => !highF));
|
|
@@ -39939,12 +40108,14 @@ class DataViewComponent {
|
|
|
39939
40108
|
return a;
|
|
39940
40109
|
}));
|
|
39941
40110
|
this.dropdownChoices$ = this.compatibleDataLinks$.pipe(tap$1((links) => {
|
|
39942
|
-
|
|
39943
|
-
|
|
40111
|
+
this.linkMap.clear();
|
|
40112
|
+
links.forEach((link) => this.linkMap.set(getLinkId(link), link));
|
|
40113
|
+
if (!links.some((l) => l.url === this.selectedLink$.value?.url)) {
|
|
40114
|
+
this.selectLink(getLinkId(links[0]));
|
|
39944
40115
|
}
|
|
39945
40116
|
}), map$1((links) => links.map((link) => ({
|
|
39946
40117
|
label: getLinkLabel(link),
|
|
39947
|
-
value:
|
|
40118
|
+
value: getLinkId(link),
|
|
39948
40119
|
}))));
|
|
39949
40120
|
this.selectedLink$ = new BehaviorSubject(null);
|
|
39950
40121
|
this.hidePreview$ = this.excludeWfs$.pipe(map$1((excludeWfs) => this.mode === 'chart' && excludeWfs));
|
|
@@ -39952,16 +40123,15 @@ class DataViewComponent {
|
|
|
39952
40123
|
setChartConfig(event) {
|
|
39953
40124
|
this.mdViewFacade.setChartConfig(event);
|
|
39954
40125
|
}
|
|
39955
|
-
selectLink(
|
|
39956
|
-
const link =
|
|
39957
|
-
if (this._selectedView && this._selectedView
|
|
40126
|
+
selectLink(linkId) {
|
|
40127
|
+
const link = this.linkMap.get(linkId);
|
|
40128
|
+
if (this._selectedView && this._selectedView === this.mode) {
|
|
39958
40129
|
this.linkSelected.emit(link);
|
|
39959
40130
|
}
|
|
39960
|
-
link.url = new URL(link.url);
|
|
39961
40131
|
this.selectedLink$.next(link);
|
|
39962
40132
|
}
|
|
39963
40133
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewComponent, deps: [{ token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39964
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewComponent, isStandalone: true, selector: "gn-ui-data-view", inputs: { mode: "mode", displaySource: "displaySource", exceedsLimit: "exceedsLimit", selectedView: "selectedView" }, outputs: { chartConfig$: "chartConfig$", linkSelected: "linkSelected" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"w-full py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"h-[44px] w-full\"\n extraBtnClass=\"font-sans font-bold\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n </div>\n <ng-container *ngIf=\"hidePreview$ | async; else dataView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #dataView>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n [featureCatalog]=\"mdViewFacade.featureCatalog$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n [featureCatalog]=\"mdViewFacade.featureCatalog$ | async\"\n ></gn-ui-chart-view>\n </div>\n </ng-template>\n</div>\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: "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: "component", type: TableViewComponent, selector: "gn-ui-table-view", inputs: ["featureCatalog", "cacheActive", "link"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: ["featureCatalog", "cacheActive", "link", "aggregation", "xProperty", "yProperty", "chartType"], outputs: ["chartConfig$"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
40134
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewComponent, isStandalone: true, selector: "gn-ui-data-view", inputs: { mode: "mode", displaySource: "displaySource", exceedsLimit: "exceedsLimit", selectedView: "selectedView", datavizConfig: "datavizConfig" }, outputs: { chartConfig$: "chartConfig$", linkSelected: "linkSelected" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"w-full py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"h-[44px] w-full\"\n extraBtnClass=\"font-sans font-bold\"\n [choices]=\"choices\"\n [selected]=\"_selectedChoice\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n </div>\n <ng-container *ngIf=\"hidePreview$ | async; else dataView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #dataView>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n [featureCatalog]=\"mdViewFacade.featureCatalog$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n [featureCatalog]=\"mdViewFacade.featureCatalog$ | async\"\n [userChartConfig]=\"_chartConfig\"\n ></gn-ui-chart-view>\n </div>\n </ng-template>\n</div>\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: "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: "component", type: TableViewComponent, selector: "gn-ui-table-view", inputs: ["featureCatalog", "cacheActive", "link"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: ["featureCatalog", "cacheActive", "link", "aggregation", "xProperty", "yProperty", "chartType", "userChartConfig"], outputs: ["chartConfig$"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39965
40135
|
}
|
|
39966
40136
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewComponent, decorators: [{
|
|
39967
40137
|
type: Component,
|
|
@@ -39973,7 +40143,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
39973
40143
|
TranslatePipe,
|
|
39974
40144
|
ChartViewComponent,
|
|
39975
40145
|
PopupAlertComponent,
|
|
39976
|
-
], template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"w-full py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"h-[44px] w-full\"\n extraBtnClass=\"font-sans font-bold\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n </div>\n <ng-container *ngIf=\"hidePreview$ | async; else dataView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #dataView>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n [featureCatalog]=\"mdViewFacade.featureCatalog$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n [featureCatalog]=\"mdViewFacade.featureCatalog$ | async\"\n ></gn-ui-chart-view>\n </div>\n </ng-template>\n</div>\n" }]
|
|
40146
|
+
], template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"w-full py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"h-[44px] w-full\"\n extraBtnClass=\"font-sans font-bold\"\n [choices]=\"choices\"\n [selected]=\"_selectedChoice\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n </div>\n <ng-container *ngIf=\"hidePreview$ | async; else dataView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #dataView>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n [featureCatalog]=\"mdViewFacade.featureCatalog$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n [featureCatalog]=\"mdViewFacade.featureCatalog$ | async\"\n [userChartConfig]=\"_chartConfig\"\n ></gn-ui-chart-view>\n </div>\n </ng-template>\n</div>\n" }]
|
|
39977
40147
|
}], ctorParameters: () => [{ type: MdViewFacade }], propDecorators: { mode: [{
|
|
39978
40148
|
type: Input
|
|
39979
40149
|
}], displaySource: [{
|
|
@@ -39982,6 +40152,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
39982
40152
|
type: Input
|
|
39983
40153
|
}], selectedView: [{
|
|
39984
40154
|
type: Input
|
|
40155
|
+
}], datavizConfig: [{
|
|
40156
|
+
type: Input
|
|
39985
40157
|
}], chartConfig$: [{
|
|
39986
40158
|
type: Output
|
|
39987
40159
|
}], linkSelected: [{
|
|
@@ -40360,17 +40532,25 @@ class MapViewComponent {
|
|
|
40360
40532
|
this.excludeWfs$.next(value);
|
|
40361
40533
|
}
|
|
40362
40534
|
set selectedView(value) {
|
|
40363
|
-
|
|
40364
|
-
|
|
40365
|
-
|
|
40366
|
-
|
|
40535
|
+
this.selectedView$.next(value);
|
|
40536
|
+
}
|
|
40537
|
+
set datavizConfig(value) {
|
|
40538
|
+
if (value.view === 'map') {
|
|
40539
|
+
this.selectedView$.next(value.view);
|
|
40540
|
+
if (value.styleTMSIndex) {
|
|
40541
|
+
this._styleFromConfig = value.styleTMSIndex;
|
|
40542
|
+
}
|
|
40543
|
+
if (value.source) {
|
|
40544
|
+
this.linkFromConfig$.next(value.source);
|
|
40545
|
+
}
|
|
40367
40546
|
}
|
|
40368
40547
|
}
|
|
40369
|
-
selectLinkToDisplay(
|
|
40370
|
-
this.
|
|
40548
|
+
selectLinkToDisplay(id) {
|
|
40549
|
+
this.selectedLinkId$.next(id);
|
|
40371
40550
|
}
|
|
40372
40551
|
selectStyleToDisplay(i) {
|
|
40373
|
-
this.
|
|
40552
|
+
this.selectedStyleId$.next(i);
|
|
40553
|
+
this.styleSelected.emit(i);
|
|
40374
40554
|
}
|
|
40375
40555
|
toggleLegend() {
|
|
40376
40556
|
this.showLegend = !this.showLegend;
|
|
@@ -40384,8 +40564,13 @@ class MapViewComponent {
|
|
|
40384
40564
|
this.dataService = dataService;
|
|
40385
40565
|
this.changeRef = changeRef;
|
|
40386
40566
|
this.translateService = translateService;
|
|
40567
|
+
this.linkFromConfig$ = new BehaviorSubject(null);
|
|
40568
|
+
this._selectedChoice = null;
|
|
40569
|
+
this._styleFromConfig = null;
|
|
40570
|
+
this.linkMap = new Map();
|
|
40387
40571
|
this.displaySource = true;
|
|
40388
40572
|
this.linkSelected = new EventEmitter();
|
|
40573
|
+
this.styleSelected = new EventEmitter();
|
|
40389
40574
|
this.excludeWfs$ = new BehaviorSubject(false);
|
|
40390
40575
|
this.hidePreview = false;
|
|
40391
40576
|
this.showLegend = true;
|
|
@@ -40399,22 +40584,45 @@ class MapViewComponent {
|
|
|
40399
40584
|
...mapApiLinks,
|
|
40400
40585
|
...geoDataLinksWithGeometry,
|
|
40401
40586
|
]), shareReplay(1));
|
|
40402
|
-
this.dropdownChoices$ = this.compatibleMapLinks$.pipe(map$1((links) =>
|
|
40403
|
-
|
|
40404
|
-
|
|
40405
|
-
|
|
40406
|
-
|
|
40407
|
-
|
|
40408
|
-
|
|
40409
|
-
|
|
40587
|
+
this.dropdownChoices$ = this.compatibleMapLinks$.pipe(map$1((links) => {
|
|
40588
|
+
this.linkMap.clear();
|
|
40589
|
+
links.forEach((link) => this.linkMap.set(getLinkId(link), link));
|
|
40590
|
+
return links.length
|
|
40591
|
+
? links.map((link) => ({
|
|
40592
|
+
label: getLinkLabel(link),
|
|
40593
|
+
value: getLinkId(link),
|
|
40594
|
+
}))
|
|
40595
|
+
: [{ label: 'map.dropdown.placeholder', value: '' }];
|
|
40596
|
+
}));
|
|
40597
|
+
this.selectedView$ = new BehaviorSubject(null);
|
|
40598
|
+
this.selectedLinkId$ = new BehaviorSubject(null);
|
|
40599
|
+
this.selectedStyleId$ = new BehaviorSubject(null);
|
|
40410
40600
|
this.selectedSourceLink$ = combineLatest([
|
|
40411
40601
|
this.compatibleMapLinks$,
|
|
40412
|
-
this.
|
|
40602
|
+
this.linkFromConfig$,
|
|
40603
|
+
this.selectedLinkId$.pipe(distinctUntilChanged()),
|
|
40604
|
+
this.selectedView$,
|
|
40413
40605
|
]).pipe(tap$1(() => {
|
|
40414
40606
|
this.error = null;
|
|
40415
|
-
}), map$1(([
|
|
40416
|
-
|
|
40417
|
-
|
|
40607
|
+
}), map$1(([compatibleLinks, configLink, id, view]) => {
|
|
40608
|
+
if (view === 'map') {
|
|
40609
|
+
if (configLink &&
|
|
40610
|
+
!id &&
|
|
40611
|
+
compatibleLinks.some((link) => getLinkId(link) === getLinkId(configLink))) {
|
|
40612
|
+
this._selectedChoice = getLinkId(configLink);
|
|
40613
|
+
this.linkSelected.emit(configLink);
|
|
40614
|
+
return configLink;
|
|
40615
|
+
}
|
|
40616
|
+
else if (id) {
|
|
40617
|
+
this._selectedChoice = id;
|
|
40618
|
+
this.linkSelected.emit(this.linkMap.get(id));
|
|
40619
|
+
return this.linkMap.get(id);
|
|
40620
|
+
}
|
|
40621
|
+
else {
|
|
40622
|
+
this.linkSelected.emit(compatibleLinks[0]);
|
|
40623
|
+
return compatibleLinks[0];
|
|
40624
|
+
}
|
|
40625
|
+
}
|
|
40418
40626
|
}));
|
|
40419
40627
|
this.styleLinks$ = this.selectedSourceLink$.pipe(switchMap$1((src) => {
|
|
40420
40628
|
if (src &&
|
|
@@ -40433,7 +40641,14 @@ class MapViewComponent {
|
|
|
40433
40641
|
}));
|
|
40434
40642
|
}
|
|
40435
40643
|
return of([]);
|
|
40436
|
-
}), tap$1(() =>
|
|
40644
|
+
}), tap$1((styles) => {
|
|
40645
|
+
if (this._styleFromConfig && this._styleFromConfig <= styles.length) {
|
|
40646
|
+
this.selectedStyleId$.next(this._styleFromConfig);
|
|
40647
|
+
}
|
|
40648
|
+
else {
|
|
40649
|
+
this.selectedStyleId$.next(0);
|
|
40650
|
+
}
|
|
40651
|
+
}), shareReplay(1));
|
|
40437
40652
|
this.styleDropdownChoices$ = this.styleLinks$.pipe(map$1((links) => links.length
|
|
40438
40653
|
? links.map((link, index) => ({
|
|
40439
40654
|
label: getLinkLabel(link),
|
|
@@ -40448,7 +40663,7 @@ class MapViewComponent {
|
|
|
40448
40663
|
this.selectedLink$ = combineLatest([
|
|
40449
40664
|
this.selectedSourceLink$,
|
|
40450
40665
|
this.styleLinks$,
|
|
40451
|
-
this.
|
|
40666
|
+
this.selectedStyleId$.pipe(distinctUntilChanged()),
|
|
40452
40667
|
]).pipe(map$1(([src, styles, styleIdx]) => (styles.length ? styles[styleIdx] : src)), shareReplay(1));
|
|
40453
40668
|
this.currentLayers$ = combineLatest([this.selectedLink$, this.excludeWfs$]).pipe(switchMap$1(([link, excludeWfs]) => {
|
|
40454
40669
|
if (!link) {
|
|
@@ -40531,7 +40746,9 @@ class MapViewComponent {
|
|
|
40531
40746
|
link.accessServiceProtocol === 'tms') {
|
|
40532
40747
|
// FIXME: here we're assuming that the TMS serves vector tiles only; should be checked with ogc-client first
|
|
40533
40748
|
return of({
|
|
40534
|
-
url: link.url
|
|
40749
|
+
url: link.url
|
|
40750
|
+
.toString()
|
|
40751
|
+
.replace(/\/?$/, `/${link.name}/{z}/{x}/{y}.pbf`),
|
|
40535
40752
|
type: 'xyz',
|
|
40536
40753
|
tileFormat: 'application/vnd.mapbox-vector-tile',
|
|
40537
40754
|
name: link.name,
|
|
@@ -40585,7 +40802,7 @@ class MapViewComponent {
|
|
|
40585
40802
|
this.changeRef.detectChanges();
|
|
40586
40803
|
}
|
|
40587
40804
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapViewComponent, deps: [{ token: MdViewFacade }, { token: MapUtilsService }, { token: DataService }, { token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
40588
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapViewComponent, isStandalone: true, selector: "gn-ui-map-view", inputs: { exceedsLimit: "exceedsLimit", selectedView: "selectedView", displaySource: "displaySource" }, outputs: { linkSelected: "linkSelected" }, viewQueries: [{ propertyName: "mapContainer", first: true, predicate: ["mapContainer"], descendants: true }], ngImport: i0, template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"flex flex-col md:flex-row gap-4 py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <gn-ui-dropdown-selector\n *ngIf=\"displaySource\"\n class=\"w-full md:flex-1 md:min-w-0\"\n extraBtnClass=\"font-sans font-bold\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n\n <ng-container *ngIf=\"(styleLinks$ | async)?.length > 0; else styleDisabled\">\n <gn-ui-dropdown-selector\n class=\"w-full md:flex-1 md:min-w-0\"\n extraBtnClass=\"font-sans font-bold\"\n [title]=\"'map.select.style' | translate\"\n [choices]=\"styleDropdownChoices$ | async\"\n (selectValue)=\"selectStyleToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n </ng-container>\n <ng-template #styleDisabled>\n <gn-ui-dropdown-selector\n class=\"w-full md:flex-1 md:min-w-0 text-gray-400\"\n extraBtnClass=\"font-sans font-bold text-gray-400\"\n [title]=\"'map.select.style' | translate\"\n [choices]=\"styleDropdownChoices$ | async\"\n [disabled]=\"true\"\n ></gn-ui-dropdown-selector>\n </ng-template>\n\n <div class=\"self-end md:ml-2\">\n <gn-ui-external-viewer-button\n extraClass=\"w-[44px] h-[44px]\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\n </div>\n </div>\n <ng-container *ngIf=\"hidePreview; else mapView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #mapView>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-container\n #mapContainer\n [context]=\"mapContext$ | async\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n (sourceLoadError)=\"onSourceLoadError($event)\"\n ></gn-ui-map-container>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"resetSelection()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"absolute right-[0.5em] ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n <gn-ui-feature-detail\n [featureCatalog]=\"mdViewFacade.featureCatalog$ | async\"\n [feature]=\"selection\"\n ></gn-ui-feature-detail>\n </div>\n\n <div\n class=\"top-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [ngClass]=\"{ 'right-[1em]': !selection, 'right-[16em]': selection }\"\n [hidden]=\"!showLegend || !legendExists\"\n >\n <div class=\"flex justify-between items-center mb-2\">\n <div class=\"text-primary font-bold\">
|
|
40805
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapViewComponent, isStandalone: true, selector: "gn-ui-map-view", inputs: { exceedsLimit: "exceedsLimit", selectedView: "selectedView", datavizConfig: "datavizConfig", displaySource: "displaySource" }, outputs: { linkSelected: "linkSelected", styleSelected: "styleSelected" }, viewQueries: [{ propertyName: "mapContainer", first: true, predicate: ["mapContainer"], descendants: true }], ngImport: i0, template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"flex flex-col md:flex-row gap-4 py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <gn-ui-dropdown-selector\n *ngIf=\"displaySource\"\n class=\"w-full md:flex-1 md:min-w-0\"\n extraBtnClass=\"font-sans font-bold\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n [selected]=\"_selectedChoice\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n\n <ng-container *ngIf=\"(styleLinks$ | async)?.length > 0; else styleDisabled\">\n <gn-ui-dropdown-selector\n class=\"w-full md:flex-1 md:min-w-0\"\n extraBtnClass=\"font-sans font-bold\"\n [title]=\"'map.select.style' | translate\"\n [choices]=\"styleDropdownChoices$ | async\"\n [selected]=\"_styleFromConfig\"\n (selectValue)=\"selectStyleToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n </ng-container>\n <ng-template #styleDisabled>\n <gn-ui-dropdown-selector\n class=\"w-full md:flex-1 md:min-w-0 text-gray-400\"\n extraBtnClass=\"font-sans font-bold text-gray-400\"\n [title]=\"'map.select.style' | translate\"\n [choices]=\"styleDropdownChoices$ | async\"\n [disabled]=\"true\"\n ></gn-ui-dropdown-selector>\n </ng-template>\n\n <div class=\"self-end md:ml-2\">\n <gn-ui-external-viewer-button\n extraClass=\"w-[44px] h-[44px]\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\n </div>\n </div>\n <ng-container *ngIf=\"hidePreview; else mapView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #mapView>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-container\n #mapContainer\n [context]=\"mapContext$ | async\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n (sourceLoadError)=\"onSourceLoadError($event)\"\n ></gn-ui-map-container>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"resetSelection()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"absolute right-[0.5em] ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n <gn-ui-feature-detail\n [featureCatalog]=\"mdViewFacade.featureCatalog$ | async\"\n [feature]=\"selection\"\n ></gn-ui-feature-detail>\n </div>\n\n <div\n class=\"top-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [ngClass]=\"{ 'right-[1em]': !selection, 'right-[16em]': selection }\"\n [hidden]=\"!showLegend || !legendExists\"\n >\n <div class=\"flex justify-between items-center mb-2\">\n <div class=\"text-primary font-bold\" translate>map.legend.title</div>\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"toggleLegend()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n </div>\n <gn-ui-map-legend\n [context]=\"mapContext$ | async\"\n (legendStatusChange)=\"onLegendStatusChange($event)\"\n ></gn-ui-map-legend>\n </div>\n\n <gn-ui-button\n *ngIf=\"!showLegend && legendExists && !selection\"\n type=\"outline\"\n (buttonClick)=\"toggleLegend()\"\n extraClass=\"absolute top-[1em] right-[1em] rounded p-1 text-xs bg-white\"\n translate\n >\n map.legend.title\n </gn-ui-button>\n\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n </ng-template>\n</div>\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: "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: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick", "sourceLoadError"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature", "featureCatalog"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ExternalViewerButtonComponent, selector: "gn-ui-external-viewer-button", inputs: ["link", "extraClass"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: MapLegendComponent, selector: "gn-ui-map-legend", inputs: ["context"], outputs: ["legendStatusChange"] }], viewProviders: [provideIcons({ matClose })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
40589
40806
|
}
|
|
40590
40807
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapViewComponent, decorators: [{
|
|
40591
40808
|
type: Component,
|
|
@@ -40602,15 +40819,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
40602
40819
|
ExternalViewerButtonComponent,
|
|
40603
40820
|
ButtonComponent,
|
|
40604
40821
|
MapLegendComponent,
|
|
40605
|
-
], viewProviders: [provideIcons({ matClose })], template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"flex flex-col md:flex-row gap-4 py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <gn-ui-dropdown-selector\n *ngIf=\"displaySource\"\n class=\"w-full md:flex-1 md:min-w-0\"\n extraBtnClass=\"font-sans font-bold\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n\n <ng-container *ngIf=\"(styleLinks$ | async)?.length > 0; else styleDisabled\">\n <gn-ui-dropdown-selector\n class=\"w-full md:flex-1 md:min-w-0\"\n extraBtnClass=\"font-sans font-bold\"\n [title]=\"'map.select.style' | translate\"\n [choices]=\"styleDropdownChoices$ | async\"\n (selectValue)=\"selectStyleToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n </ng-container>\n <ng-template #styleDisabled>\n <gn-ui-dropdown-selector\n class=\"w-full md:flex-1 md:min-w-0 text-gray-400\"\n extraBtnClass=\"font-sans font-bold text-gray-400\"\n [title]=\"'map.select.style' | translate\"\n [choices]=\"styleDropdownChoices$ | async\"\n [disabled]=\"true\"\n ></gn-ui-dropdown-selector>\n </ng-template>\n\n <div class=\"self-end md:ml-2\">\n <gn-ui-external-viewer-button\n extraClass=\"w-[44px] h-[44px]\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\n </div>\n </div>\n <ng-container *ngIf=\"hidePreview; else mapView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #mapView>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-container\n #mapContainer\n [context]=\"mapContext$ | async\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n (sourceLoadError)=\"onSourceLoadError($event)\"\n ></gn-ui-map-container>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"resetSelection()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"absolute right-[0.5em] ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n <gn-ui-feature-detail\n [featureCatalog]=\"mdViewFacade.featureCatalog$ | async\"\n [feature]=\"selection\"\n ></gn-ui-feature-detail>\n </div>\n\n <div\n class=\"top-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [ngClass]=\"{ 'right-[1em]': !selection, 'right-[16em]': selection }\"\n [hidden]=\"!showLegend || !legendExists\"\n >\n <div class=\"flex justify-between items-center mb-2\">\n <div class=\"text-primary font-bold\">
|
|
40822
|
+
], viewProviders: [provideIcons({ matClose })], template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"flex flex-col md:flex-row gap-4 py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <gn-ui-dropdown-selector\n *ngIf=\"displaySource\"\n class=\"w-full md:flex-1 md:min-w-0\"\n extraBtnClass=\"font-sans font-bold\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n [selected]=\"_selectedChoice\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n\n <ng-container *ngIf=\"(styleLinks$ | async)?.length > 0; else styleDisabled\">\n <gn-ui-dropdown-selector\n class=\"w-full md:flex-1 md:min-w-0\"\n extraBtnClass=\"font-sans font-bold\"\n [title]=\"'map.select.style' | translate\"\n [choices]=\"styleDropdownChoices$ | async\"\n [selected]=\"_styleFromConfig\"\n (selectValue)=\"selectStyleToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n </ng-container>\n <ng-template #styleDisabled>\n <gn-ui-dropdown-selector\n class=\"w-full md:flex-1 md:min-w-0 text-gray-400\"\n extraBtnClass=\"font-sans font-bold text-gray-400\"\n [title]=\"'map.select.style' | translate\"\n [choices]=\"styleDropdownChoices$ | async\"\n [disabled]=\"true\"\n ></gn-ui-dropdown-selector>\n </ng-template>\n\n <div class=\"self-end md:ml-2\">\n <gn-ui-external-viewer-button\n extraClass=\"w-[44px] h-[44px]\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\n </div>\n </div>\n <ng-container *ngIf=\"hidePreview; else mapView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #mapView>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-container\n #mapContainer\n [context]=\"mapContext$ | async\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n (sourceLoadError)=\"onSourceLoadError($event)\"\n ></gn-ui-map-container>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"resetSelection()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"absolute right-[0.5em] ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n <gn-ui-feature-detail\n [featureCatalog]=\"mdViewFacade.featureCatalog$ | async\"\n [feature]=\"selection\"\n ></gn-ui-feature-detail>\n </div>\n\n <div\n class=\"top-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [ngClass]=\"{ 'right-[1em]': !selection, 'right-[16em]': selection }\"\n [hidden]=\"!showLegend || !legendExists\"\n >\n <div class=\"flex justify-between items-center mb-2\">\n <div class=\"text-primary font-bold\" translate>map.legend.title</div>\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"toggleLegend()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n </div>\n <gn-ui-map-legend\n [context]=\"mapContext$ | async\"\n (legendStatusChange)=\"onLegendStatusChange($event)\"\n ></gn-ui-map-legend>\n </div>\n\n <gn-ui-button\n *ngIf=\"!showLegend && legendExists && !selection\"\n type=\"outline\"\n (buttonClick)=\"toggleLegend()\"\n extraClass=\"absolute top-[1em] right-[1em] rounded p-1 text-xs bg-white\"\n translate\n >\n map.legend.title\n </gn-ui-button>\n\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n </ng-template>\n</div>\n" }]
|
|
40606
40823
|
}], ctorParameters: () => [{ type: MdViewFacade }, { type: MapUtilsService }, { type: DataService }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { exceedsLimit: [{
|
|
40607
40824
|
type: Input
|
|
40608
40825
|
}], selectedView: [{
|
|
40609
40826
|
type: Input
|
|
40827
|
+
}], datavizConfig: [{
|
|
40828
|
+
type: Input
|
|
40610
40829
|
}], displaySource: [{
|
|
40611
40830
|
type: Input
|
|
40612
40831
|
}], linkSelected: [{
|
|
40613
40832
|
type: Output
|
|
40833
|
+
}], styleSelected: [{
|
|
40834
|
+
type: Output
|
|
40614
40835
|
}], mapContainer: [{
|
|
40615
40836
|
type: ViewChild,
|
|
40616
40837
|
args: ['mapContainer']
|
|
@@ -40724,8 +40945,6 @@ const RECORD_KEYWORDS_FIELD = {
|
|
|
40724
40945
|
model: 'keywords',
|
|
40725
40946
|
formFieldConfig: {},
|
|
40726
40947
|
};
|
|
40727
|
-
// keeping track of the label to not lose existing translation
|
|
40728
|
-
marker('editor.record.form.field.keywords');
|
|
40729
40948
|
const RECORD_RESOURCE_CREATED_FIELD = {
|
|
40730
40949
|
model: 'resourceCreated',
|
|
40731
40950
|
formFieldConfig: {
|
|
@@ -43433,7 +43652,7 @@ class MultilingualPanelComponent {
|
|
|
43433
43652
|
provideNgIconsConfig({
|
|
43434
43653
|
size: '1.25em',
|
|
43435
43654
|
}),
|
|
43436
|
-
], viewQueries: [{ propertyName: "actionMenuButtons", predicate: ["actionMenuButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n class=\"flex flex-col h-full w-[302px]
|
|
43655
|
+
], viewQueries: [{ propertyName: "actionMenuButtons", predicate: ["actionMenuButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n class=\"flex flex-col h-full w-[302px] border-l border-gray-300 py-8 px-3 gap-6 overflow-auto\"\n style=\"background-color: #fafaf9\"\n>\n <div class=\"flex flex-row px-2 justify-between\">\n <span class=\"text-3xl font-title text-black/80\" translate\n >editor.record.form.multilingual.title</span\n >\n <button\n [title]=\"'editor.record.form.multilingual.open' | translate\"\n (click)=\"toggleLanguageSelection()\"\n *ngIf=\"isMultilingual\"\n data-test=\"activateSelection\"\n >\n <ng-icon class=\"mt-1\" name=\"iconoirSettings\"></ng-icon>\n </button>\n </div>\n <div class=\"flex flex-col gap-2\" *ngIf=\"editTranslations || !isMultilingual\">\n <gn-ui-check-toggle\n class=\"p-2\"\n [label]=\"'editor.record.form.multilingual.enable' | translate\"\n [color]=\"'primary'\"\n [(value)]=\"isMultilingual\"\n (toggled)=\"switchMultilingual($event)\"\n ></gn-ui-check-toggle>\n <div *ngIf=\"isMultilingual\" class=\"flex flex-col gap-2\">\n <div class=\"flex flex-row justify-between border-t border-gray-300 p-3\">\n <span class=\"mt-2 text-sm text-gray-600\" translate\n >editor.record.form.multilingual.activate</span\n >\n <gn-ui-button\n extraClass=\"w-16 h-8 font-bold\"\n type=\"gray\"\n (buttonClick)=\"validateTranslations()\"\n data-test=\"validateSelection\"\n >{{ 'editor.record.form.multilingual.validate' | translate }}\n </gn-ui-button>\n </div>\n <ng-container *ngIf=\"supportedLanguages$ | async as languages\">\n <div\n class=\"flex flex-col gap-2 w-full px-2\"\n data-test=\"langAvailable\"\n *ngFor=\"let lang of languages\"\n >\n <gn-ui-button\n [extraClass]=\"getExtraClass(lang)\"\n type=\"gray\"\n (buttonClick)=\"toggleLanguage(lang)\"\n [disabled]=\"lang === _record.defaultLanguage\"\n [title]=\"getToggleTitle(lang)\"\n >\n <span [class]=\"getIconClass(lang)\"></span>\n <span class=\"ml-2\">{{ 'language.' + lang | translate }}</span>\n </gn-ui-button>\n </div>\n </ng-container>\n </div>\n </div>\n <div *ngIf=\"!editTranslations && isMultilingual\" class=\"flex flex-col gap-2\">\n <gn-ui-button\n *ngFor=\"let recordLang of sortLanguages(recordLanguages); let i = index\"\n extraClass=\"flex flex-row justify-between bg-white border border-white rounded mb-1 h-[34px] w-full\"\n [ngClass]=\"{\n 'mt-8': isFirstUnsupported(i),\n '': true,\n }\"\n (buttonClick)=\"switchFormLang(recordLang)\"\n type=\"outline\"\n data-test=\"langSwitch\"\n >\n <div class=\"flex flex-row gap-2 items-center\">\n <ng-icon\n *ngIf=\"recordLang === formLanguage\"\n class=\"text-primary mt-1\"\n name=\"iconoirCheckCircle\"\n ></ng-icon>\n <ng-icon\n *ngIf=\"recordLang !== formLanguage\"\n class=\"text-gray-800 mt-1\"\n name=\"iconoirCircle\"\n ></ng-icon>\n <span\n *ngIf=\"recordLang.length === 2\"\n [class]=\"getIconClass(recordLang) + 'mt-1'\"\n ></span>\n <span [ngClass]=\"recordLang === formLanguage ? 'text-black' : ''\">{{\n isLangSupported(recordLang)\n ? ('language.' + recordLang | translate)\n : recordLang.toUpperCase()\n }}</span>\n </div>\n <div class=\"flex flex-row gap-2 items-center\">\n <span\n *ngIf=\"recordLang === formLanguage\"\n class=\"text-xs text-base\"\n translate\n >editor.record.form.multilingual.default</span\n >\n <button\n (click)=\"\n openActionMenu(recordLang, template); $event.stopPropagation()\n \"\n cdkOverlayOrigin\n #actionMenuButton\n >\n <ng-icon class=\"pb-5\" name=\"matMoreHorizOutline\"></ng-icon>\n </button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDelete]=\"recordLang !== _record.defaultLanguage\"\n page=\"record\"\n (delete)=\"confirmDeleteAction(recordLang)\"\n (closeActionMenu)=\"closeActionMenu()\"\n (switch)=\"switchDefaultLang(recordLang)\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </div>\n </gn-ui-button>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: CheckToggleComponent, selector: "gn-ui-check-toggle", inputs: ["title", "label", "value", "color"], outputs: ["toggled"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ActionMenuComponent, selector: "gn-ui-action-menu", inputs: ["canDuplicate", "isDuplicating", "canDelete", "page"], outputs: ["duplicate", "delete", "closeActionMenu", "rollback", "switch"] }] }); }
|
|
43437
43656
|
}
|
|
43438
43657
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MultilingualPanelComponent, decorators: [{
|
|
43439
43658
|
type: Component,
|
|
@@ -43455,7 +43674,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
43455
43674
|
provideNgIconsConfig({
|
|
43456
43675
|
size: '1.25em',
|
|
43457
43676
|
}),
|
|
43458
|
-
], template: "<div\n class=\"flex flex-col h-full w-[302px]
|
|
43677
|
+
], template: "<div\n class=\"flex flex-col h-full w-[302px] border-l border-gray-300 py-8 px-3 gap-6 overflow-auto\"\n style=\"background-color: #fafaf9\"\n>\n <div class=\"flex flex-row px-2 justify-between\">\n <span class=\"text-3xl font-title text-black/80\" translate\n >editor.record.form.multilingual.title</span\n >\n <button\n [title]=\"'editor.record.form.multilingual.open' | translate\"\n (click)=\"toggleLanguageSelection()\"\n *ngIf=\"isMultilingual\"\n data-test=\"activateSelection\"\n >\n <ng-icon class=\"mt-1\" name=\"iconoirSettings\"></ng-icon>\n </button>\n </div>\n <div class=\"flex flex-col gap-2\" *ngIf=\"editTranslations || !isMultilingual\">\n <gn-ui-check-toggle\n class=\"p-2\"\n [label]=\"'editor.record.form.multilingual.enable' | translate\"\n [color]=\"'primary'\"\n [(value)]=\"isMultilingual\"\n (toggled)=\"switchMultilingual($event)\"\n ></gn-ui-check-toggle>\n <div *ngIf=\"isMultilingual\" class=\"flex flex-col gap-2\">\n <div class=\"flex flex-row justify-between border-t border-gray-300 p-3\">\n <span class=\"mt-2 text-sm text-gray-600\" translate\n >editor.record.form.multilingual.activate</span\n >\n <gn-ui-button\n extraClass=\"w-16 h-8 font-bold\"\n type=\"gray\"\n (buttonClick)=\"validateTranslations()\"\n data-test=\"validateSelection\"\n >{{ 'editor.record.form.multilingual.validate' | translate }}\n </gn-ui-button>\n </div>\n <ng-container *ngIf=\"supportedLanguages$ | async as languages\">\n <div\n class=\"flex flex-col gap-2 w-full px-2\"\n data-test=\"langAvailable\"\n *ngFor=\"let lang of languages\"\n >\n <gn-ui-button\n [extraClass]=\"getExtraClass(lang)\"\n type=\"gray\"\n (buttonClick)=\"toggleLanguage(lang)\"\n [disabled]=\"lang === _record.defaultLanguage\"\n [title]=\"getToggleTitle(lang)\"\n >\n <span [class]=\"getIconClass(lang)\"></span>\n <span class=\"ml-2\">{{ 'language.' + lang | translate }}</span>\n </gn-ui-button>\n </div>\n </ng-container>\n </div>\n </div>\n <div *ngIf=\"!editTranslations && isMultilingual\" class=\"flex flex-col gap-2\">\n <gn-ui-button\n *ngFor=\"let recordLang of sortLanguages(recordLanguages); let i = index\"\n extraClass=\"flex flex-row justify-between bg-white border border-white rounded mb-1 h-[34px] w-full\"\n [ngClass]=\"{\n 'mt-8': isFirstUnsupported(i),\n '': true,\n }\"\n (buttonClick)=\"switchFormLang(recordLang)\"\n type=\"outline\"\n data-test=\"langSwitch\"\n >\n <div class=\"flex flex-row gap-2 items-center\">\n <ng-icon\n *ngIf=\"recordLang === formLanguage\"\n class=\"text-primary mt-1\"\n name=\"iconoirCheckCircle\"\n ></ng-icon>\n <ng-icon\n *ngIf=\"recordLang !== formLanguage\"\n class=\"text-gray-800 mt-1\"\n name=\"iconoirCircle\"\n ></ng-icon>\n <span\n *ngIf=\"recordLang.length === 2\"\n [class]=\"getIconClass(recordLang) + 'mt-1'\"\n ></span>\n <span [ngClass]=\"recordLang === formLanguage ? 'text-black' : ''\">{{\n isLangSupported(recordLang)\n ? ('language.' + recordLang | translate)\n : recordLang.toUpperCase()\n }}</span>\n </div>\n <div class=\"flex flex-row gap-2 items-center\">\n <span\n *ngIf=\"recordLang === formLanguage\"\n class=\"text-xs text-base\"\n translate\n >editor.record.form.multilingual.default</span\n >\n <button\n (click)=\"\n openActionMenu(recordLang, template); $event.stopPropagation()\n \"\n cdkOverlayOrigin\n #actionMenuButton\n >\n <ng-icon class=\"pb-5\" name=\"matMoreHorizOutline\"></ng-icon>\n </button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDelete]=\"recordLang !== _record.defaultLanguage\"\n page=\"record\"\n (delete)=\"confirmDeleteAction(recordLang)\"\n (closeActionMenu)=\"closeActionMenu()\"\n (switch)=\"switchDefaultLang(recordLang)\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </div>\n </gn-ui-button>\n </div>\n</div>\n" }]
|
|
43459
43678
|
}], ctorParameters: () => [{ type: EditorFacade }, { type: i1$b.MatDialog }, { type: i1$1.TranslateService }, { type: RecordsRepositoryInterface }, { type: i1$8.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }], propDecorators: { record: [{
|
|
43460
43679
|
type: Input
|
|
43461
43680
|
}], actionMenuButtons: [{
|
|
@@ -43463,6 +43682,76 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
43463
43682
|
args: ['actionMenuButton', { read: ElementRef }]
|
|
43464
43683
|
}] } });
|
|
43465
43684
|
|
|
43685
|
+
//forced translations that are not available in fields.config.ts
|
|
43686
|
+
marker('editor.record.form.field.keywords');
|
|
43687
|
+
marker('editor.record.form.field.topics');
|
|
43688
|
+
marker('editor.record.form.field.contacts');
|
|
43689
|
+
marker('editor.record.form.field.organisation');
|
|
43690
|
+
class MetadataQualityPanelComponent {
|
|
43691
|
+
constructor() {
|
|
43692
|
+
this.propsToValidate = getAllKeysValidator();
|
|
43693
|
+
this.propertiesByPage = [];
|
|
43694
|
+
}
|
|
43695
|
+
ngOnChanges() {
|
|
43696
|
+
if (this.editorConfig && this.record) {
|
|
43697
|
+
const fieldsByPage = this.editorConfig.pages.map((page) => page.sections.flatMap((section) => section.fields
|
|
43698
|
+
.filter((field) => this.propsToValidate.includes(field.model))
|
|
43699
|
+
.map((field) => field.model)));
|
|
43700
|
+
// FIXME: temporarily add topics and organisation to the first and third page
|
|
43701
|
+
// as long as they are not handled by the editor
|
|
43702
|
+
if (fieldsByPage.length > 0) {
|
|
43703
|
+
fieldsByPage[0].includes('topics') || fieldsByPage[0].push('topics');
|
|
43704
|
+
fieldsByPage[2].includes('organisation') ||
|
|
43705
|
+
fieldsByPage[2].push('organisation');
|
|
43706
|
+
}
|
|
43707
|
+
this.propertiesByPage = fieldsByPage
|
|
43708
|
+
.map((fields) => getQualityValidators(this.record, fields).map(({ name, validator }) => ({
|
|
43709
|
+
label: `editor.record.form.field.${name}`, // use same translations as in fields.config.ts
|
|
43710
|
+
value: validator(),
|
|
43711
|
+
})))
|
|
43712
|
+
.filter((arr) => arr.length > 0);
|
|
43713
|
+
}
|
|
43714
|
+
}
|
|
43715
|
+
getExtraClass(checked) {
|
|
43716
|
+
const baseClasses = 'flex flex-row justify-between rounded mb-1 h-[34px] w-full focus:ring-0 hover:border-none border-none hover:text-black text-black cursor-default';
|
|
43717
|
+
return checked
|
|
43718
|
+
? `${baseClasses} bg-neutral-100 hover:bg-neutral-100`
|
|
43719
|
+
: `${baseClasses} bg-transparent hover:bg-transparent`;
|
|
43720
|
+
}
|
|
43721
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataQualityPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
43722
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataQualityPanelComponent, isStandalone: true, selector: "gn-ui-metadata-quality-panel", inputs: { editorConfig: "editorConfig", record: "record" }, providers: [
|
|
43723
|
+
provideIcons({
|
|
43724
|
+
iconoirSystemShut,
|
|
43725
|
+
iconoirBadgeCheck,
|
|
43726
|
+
}),
|
|
43727
|
+
provideNgIconsConfig({
|
|
43728
|
+
size: '1.25em',
|
|
43729
|
+
}),
|
|
43730
|
+
], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"flex flex-col h-full w-[302px] border-l border-gray-300 py-8 px-3 gap-3 overflow-auto\"\n style=\"background-color: #fafaf9\"\n>\n <div class=\"flex flex-row px-2 justify-between\">\n <span class=\"text-3xl font-title text-black/80\" translate\n >editor.record.form.metadataQuality.title</span\n >\n </div>\n <div\n *ngFor=\"let properties of propertiesByPage; let i = index\"\n class=\"flex flex-col gap-2\"\n >\n <gn-ui-button\n *ngFor=\"let property of properties\"\n [extraClass]=\"getExtraClass(property.value)\"\n type=\"outline\"\n attr.data-cy=\"md-quality-btn-{{ property.label }}\"\n >\n <span>{{ property.label | translate }}</span>\n <div class=\"flex flex-row gap-2 items-center\">\n <ng-icon\n *ngIf=\"property.value; else notChecked\"\n class=\"text-primary\"\n name=\"iconoirBadgeCheck\"\n ></ng-icon>\n <ng-template #notChecked>\n <ng-icon class=\"text-neutral-300\" name=\"iconoirSystemShut\"></ng-icon>\n </ng-template>\n </div>\n </gn-ui-button>\n <hr\n *ngIf=\"i !== propertiesByPage.length - 1\"\n class=\"border-gray-300 w-11/12 mx-auto\"\n />\n </div>\n</div>\n", styles: [""], 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: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }] }); }
|
|
43731
|
+
}
|
|
43732
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataQualityPanelComponent, decorators: [{
|
|
43733
|
+
type: Component,
|
|
43734
|
+
args: [{ selector: 'gn-ui-metadata-quality-panel', standalone: true, imports: [
|
|
43735
|
+
CommonModule,
|
|
43736
|
+
TranslateDirective,
|
|
43737
|
+
TranslatePipe,
|
|
43738
|
+
ButtonComponent,
|
|
43739
|
+
NgIconComponent,
|
|
43740
|
+
], providers: [
|
|
43741
|
+
provideIcons({
|
|
43742
|
+
iconoirSystemShut,
|
|
43743
|
+
iconoirBadgeCheck,
|
|
43744
|
+
}),
|
|
43745
|
+
provideNgIconsConfig({
|
|
43746
|
+
size: '1.25em',
|
|
43747
|
+
}),
|
|
43748
|
+
], template: "<div\n class=\"flex flex-col h-full w-[302px] border-l border-gray-300 py-8 px-3 gap-3 overflow-auto\"\n style=\"background-color: #fafaf9\"\n>\n <div class=\"flex flex-row px-2 justify-between\">\n <span class=\"text-3xl font-title text-black/80\" translate\n >editor.record.form.metadataQuality.title</span\n >\n </div>\n <div\n *ngFor=\"let properties of propertiesByPage; let i = index\"\n class=\"flex flex-col gap-2\"\n >\n <gn-ui-button\n *ngFor=\"let property of properties\"\n [extraClass]=\"getExtraClass(property.value)\"\n type=\"outline\"\n attr.data-cy=\"md-quality-btn-{{ property.label }}\"\n >\n <span>{{ property.label | translate }}</span>\n <div class=\"flex flex-row gap-2 items-center\">\n <ng-icon\n *ngIf=\"property.value; else notChecked\"\n class=\"text-primary\"\n name=\"iconoirBadgeCheck\"\n ></ng-icon>\n <ng-template #notChecked>\n <ng-icon class=\"text-neutral-300\" name=\"iconoirSystemShut\"></ng-icon>\n </ng-template>\n </div>\n </gn-ui-button>\n <hr\n *ngIf=\"i !== propertiesByPage.length - 1\"\n class=\"border-gray-300 w-11/12 mx-auto\"\n />\n </div>\n</div>\n" }]
|
|
43749
|
+
}], propDecorators: { editorConfig: [{
|
|
43750
|
+
type: Input
|
|
43751
|
+
}], record: [{
|
|
43752
|
+
type: Input
|
|
43753
|
+
}] } });
|
|
43754
|
+
|
|
43466
43755
|
const ROUTER_STATE_KEY = 'router';
|
|
43467
43756
|
const ROUTER_ROUTE_SEARCH = 'search';
|
|
43468
43757
|
const ROUTER_ROUTE_DATASET = 'dataset';
|
|
@@ -43907,5 +44196,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
43907
44196
|
* Generated bundle index. Do not edit.
|
|
43908
44197
|
*/
|
|
43909
44198
|
|
|
43910
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, ActionMenuComponent, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, CellPopinComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalLinkCardComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogListComponent, FeatureCatalogModule, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GEONETWORK_UI_TAG_NAME, GEONETWORK_UI_VERSION, GeoDataBadgeComponent, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InlineFilterComponent, InteractiveTableColumnComponent, InteractiveTableComponent, InternalLinkCardComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, KindBadgeComponent, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, ModalDialogComponent, MultilingualPanelComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PossibleResourceTypes, PossibleResourceTypesDefinition, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_DATASET_URL_TOKEN, RECORD_REUSE_URL_TOKEN, RECORD_SERVICE_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_REUSE, ROUTER_ROUTE_SEARCH, ROUTER_ROUTE_SERVICE, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordKindField, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResourceTypeLegacyField, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsHitsSearchKindComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFeatureCatalogComponent, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, ServiceCapabilitiesComponent, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpatialExtentComponent, SpinningLoaderComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEBUG_CONFIG, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, TruncatedTextComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, FacetsModule$1 as UiFacetsModule, UiSearchModule, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLang2FromLang3, getLang3FromLang2, getLayers, getLinkLabel, getLinkPriority, getLocalizedIndexKey, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getResourceType, getReuseType, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, kindToCodeListValue, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideI18n, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateLanguages, updateRecordField, updateRecordLanguages, wmsLayerFlatten, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
|
|
44199
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, ActionMenuComponent, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, CellPopinComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalLinkCardComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogListComponent, FeatureCatalogModule, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GEONETWORK_UI_TAG_NAME, GEONETWORK_UI_VERSION, GeoDataBadgeComponent, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InlineFilterComponent, InteractiveTableColumnComponent, InteractiveTableComponent, InternalLinkCardComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, KindBadgeComponent, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, MetadataQualityPanelComponent, ModalDialogComponent, MultilingualPanelComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PossibleResourceTypes, PossibleResourceTypesDefinition, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_DATASET_URL_TOKEN, RECORD_REUSE_URL_TOKEN, RECORD_SERVICE_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_REUSE, ROUTER_ROUTE_SEARCH, ROUTER_ROUTE_SERVICE, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordKindField, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResourceTypeLegacyField, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsHitsSearchKindComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFeatureCatalogComponent, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, ServiceCapabilitiesComponent, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpatialExtentComponent, SpinningLoaderComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEBUG_CONFIG, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, TruncatedTextComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, FacetsModule$1 as UiFacetsModule, UiSearchModule, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getAllKeysValidator, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getIsMobile, getJsonDataItemsProxy, getLang2FromLang3, getLang3FromLang2, getLayers, getLinkId, getLinkLabel, getLinkPriority, getLocalizedIndexKey, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getQualityValidators, getResourceType, getReuseType, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, kindToCodeListValue, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideI18n, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateLanguages, updateRecordField, updateRecordLanguages, wmsLayerFlatten, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
|
|
43911
44200
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|