geonetwork-ui 2.6.0-dev.01d2b5fc0 → 2.6.0-dev.0716b5712
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +18 -11
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +3 -3
- package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +2 -2
- package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +2 -1
- package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +3 -3
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.mjs +1 -1
- package/esm2022/libs/feature/map/src/lib/map-state-container/map-state-container.component.mjs +2 -2
- package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +2 -4
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +40 -14
- package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +27 -6
- package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +22 -6
- package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +29 -7
- package/esm2022/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +3 -2
- package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +3 -3
- package/esm2022/libs/ui/map/src/lib/components/map-container/map-container.component.mjs +14 -3
- package/esm2022/libs/ui/map/src/lib/components/map-legend/map-legend.component.mjs +5 -1
- package/esm2022/libs/util/data-fetcher/src/lib/data-fetcher.mjs +6 -2
- package/esm2022/libs/util/data-fetcher/src/lib/model.mjs +4 -1
- package/esm2022/libs/util/data-fetcher/src/lib/readers/wfs.mjs +30 -2
- package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +21 -19
- package/esm2022/translations/de.json +3 -0
- package/esm2022/translations/en.json +4 -1
- package/esm2022/translations/es.json +3 -0
- package/esm2022/translations/fr.json +3 -0
- package/esm2022/translations/it.json +3 -1
- package/esm2022/translations/nl.json +3 -0
- package/esm2022/translations/pt.json +3 -0
- package/fesm2022/geonetwork-ui.mjs +237 -78
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +1 -0
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +18 -2
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +1 -1
- package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +7 -2
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts +9 -1
- package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts +8 -1
- package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +10 -2
- package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
- package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts +4 -2
- package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts.map +1 -1
- package/libs/ui/map/src/lib/components/map-legend/map-legend.component.d.ts.map +1 -1
- package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts.map +1 -1
- package/libs/util/data-fetcher/src/lib/model.d.ts +3 -2
- package/libs/util/data-fetcher/src/lib/model.d.ts.map +1 -1
- package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts +1 -0
- package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts.map +1 -1
- package/libs/util/shared/src/lib/links/link-utils.d.ts +16 -16
- package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +20 -12
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +17 -1
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +18 -2
- package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.html +1 -0
- package/src/libs/feature/dataviz/src/lib/service/data.service.ts +1 -0
- package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +10 -8
- package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +1 -3
- package/src/libs/feature/record/src/lib/map-view/map-view.component.html +1 -0
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +36 -7
- package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +64 -38
- package/src/libs/ui/elements/src/lib/api-card/api-card.component.ts +26 -2
- package/src/libs/ui/elements/src/lib/download-item/download-item.component.html +17 -17
- package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +20 -2
- package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +7 -6
- package/src/libs/ui/elements/src/lib/link-card/link-card.component.html +27 -29
- package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +33 -3
- package/src/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.html +1 -1
- package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +2 -1
- package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +0 -4
- package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +14 -0
- package/src/libs/ui/map/src/lib/components/map-legend/map-legend.component.ts +3 -0
- package/src/libs/util/data-fetcher/src/lib/data-fetcher.ts +3 -1
- package/src/libs/util/data-fetcher/src/lib/model.ts +11 -1
- package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +29 -3
- package/src/libs/util/shared/src/lib/links/link-utils.ts +20 -18
- package/tailwind.base.css +34 -1
- package/translations/de.json +3 -0
- package/translations/en.json +4 -1
- package/translations/es.json +3 -0
- package/translations/fr.json +3 -0
- package/translations/it.json +3 -1
- package/translations/nl.json +3 -0
- package/translations/pt.json +3 -0
- package/translations/sk.json +3 -0
|
@@ -26,8 +26,8 @@ import { createAction, props, createReducer, on, createFeatureSelector, createSe
|
|
|
26
26
|
import EmblaCarousel from 'embla-carousel';
|
|
27
27
|
import * as i2$2 from '@ng-icons/core';
|
|
28
28
|
import { provideIcons, NgIcon, NgIconComponent, provideNgIconsConfig, NgIconsModule } from '@ng-icons/core';
|
|
29
|
-
import { iconoirNavArrowRight, iconoirNavArrowLeft, iconoirNavArrowDown, iconoirNavArrowUp, iconoirSearch, iconoirLongArrowDownLeft, iconoirCalendar, iconoirLink, iconoirArrowUp, iconoirCloudUpload, iconoirFramePlusIn, iconoirMediaImage, iconoirMediaImageXmark, iconoirBin, iconoirPlus, iconoirUser, iconoirLock, iconoirImport, iconoirLightBulbOn, iconoirArrowLeft, iconoirAttachment, iconoirRefresh } from '@ng-icons/iconoir';
|
|
30
|
-
import { matExpandMore, matExpandLess, matAdd, matRemove, matClose, matContentCopy, matSearch, matStar, matStarBorder, matChevronLeft, matChevronRight, matArrowForward, matArrowBack, matCheck, matWarningAmber,
|
|
29
|
+
import { iconoirNavArrowRight, iconoirNavArrowLeft, iconoirNavArrowDown, iconoirNavArrowUp, iconoirSearch, iconoirLongArrowDownLeft, iconoirCalendar, iconoirLink, iconoirArrowUp, iconoirCloudUpload, iconoirFramePlusIn, iconoirSettings, iconoirDownload, iconoirMediaImage, iconoirMediaImageXmark, iconoirBin, iconoirPlus, iconoirUser, iconoirLock, iconoirImport, iconoirLightBulbOn, iconoirArrowLeft, iconoirAttachment, iconoirRefresh } from '@ng-icons/iconoir';
|
|
30
|
+
import { matExpandMore, matExpandLess, matAdd, matRemove, matClose, matContentCopy, matSearch, matStar, matStarBorder, matChevronLeft, matChevronRight, matArrowForward, matArrowBack, matCheck, matWarningAmber, matFace, matQuestionMark, matMoodBad, matZoomOutMap, matOpenInNew, matMailOutline, matPersonOutline, matCheckCircleOutline, matWarning, matMoreVert, matCorporateFare } from '@ng-icons/material-icons/baseline';
|
|
31
31
|
import * as i1$4 from '@angular/material/tooltip';
|
|
32
32
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
33
33
|
import { moveItemInArray, CdkDropList, CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';
|
|
@@ -41,7 +41,7 @@ import { TagInputModule } from 'ngx-chips';
|
|
|
41
41
|
import * as i1$5 from '@angular/material/progress-spinner';
|
|
42
42
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
43
43
|
import tippy from 'tippy.js';
|
|
44
|
-
import { matErrorOutlineOutline, matInfoOutline,
|
|
44
|
+
import { matErrorOutlineOutline, matInfoOutline, matComputerOutline, matCallOutline, matLocationOnOutline, matMailOutline as matMailOutline$1, matWarningAmberOutline, matCloseOutline, matSendOutline, matMapOutline, matCloudDownloadOutline, matHomeWorkOutline, matSwipeOutline, matLayersOutline, matAddCircleOutlineOutline } from '@ng-icons/material-icons/outline';
|
|
45
45
|
import * as i2 from '@angular/material/core';
|
|
46
46
|
import { MatNativeDateModule, MAT_DATE_LOCALE, DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
47
47
|
import * as i1$7 from '@angular/material/checkbox';
|
|
@@ -72,13 +72,12 @@ import { createEffect, ofType, EffectsModule, Actions } from '@ngrx/effects';
|
|
|
72
72
|
import { valid as valid$1 } from 'geojson-validation';
|
|
73
73
|
import { trigger, transition, animate, keyframes, style } from '@angular/animations';
|
|
74
74
|
import { queryDataGouvFr, queryGeonames, queryGeoadmin } from '@geospatial-sdk/geocoding';
|
|
75
|
-
import { FeaturesClickEventType, FeaturesHoverEventType, MapClickEventType, computeMapContextDiff, createViewFromLayer } from '@geospatial-sdk/core';
|
|
75
|
+
import { FeaturesClickEventType, FeaturesHoverEventType, MapClickEventType, SourceLoadErrorType, computeMapContextDiff, createViewFromLayer } from '@geospatial-sdk/core';
|
|
76
76
|
import { listen, createMapFromContext, applyContextDiffToMap } from '@geospatial-sdk/openlayers';
|
|
77
77
|
import { createLegendFromLayer } from '@geospatial-sdk/legend';
|
|
78
78
|
import { defaults, DragPan, MouseWheelZoom } from 'ol/interaction';
|
|
79
79
|
import { mouseOnly, noModifierKeys, primaryAction, platformModifierKeyOnly } from 'ol/events/condition';
|
|
80
80
|
import { extend } from 'ol/extent';
|
|
81
|
-
import { transformExtent } from 'ol/proj';
|
|
82
81
|
import * as TOML from '@ltd/j-toml';
|
|
83
82
|
import { Style, Fill, Stroke, Circle } from 'ol/style';
|
|
84
83
|
import CircleStyle from 'ol/style/Circle';
|
|
@@ -18670,6 +18669,7 @@ var de = {
|
|
|
18670
18669
|
"datahub.search.filter.generatedByAPI": "Generiert durch eine API",
|
|
18671
18670
|
"datahub.search.filter.generatedByWfs": "",
|
|
18672
18671
|
"datahub.search.filter.others": "Andere",
|
|
18672
|
+
"dataset.error.forbidden": "Der Zugriff auf diese Ressource ist eingeschränkt",
|
|
18673
18673
|
"dataset.error.http": "Die Daten konnten aufgrund eines HTTP-Fehlers nicht geladen werden: \"{ info }\"",
|
|
18674
18674
|
"dataset.error.network": "Die Daten konnten aufgrund eines Netzwerkfehlers oder CORS-Beschränkungen nicht geladen werden: \"{ info }\"",
|
|
18675
18675
|
"dataset.error.parse": "Die Daten wurden geladen, konnten aber nicht gelesen werden: \"{ info }\"",
|
|
@@ -19026,6 +19026,8 @@ var de = {
|
|
|
19026
19026
|
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
19027
19027
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
19028
19028
|
"record.metadata.related": "Ähnliche Datensätze",
|
|
19029
|
+
"record.metadata.related.contents": "Verwandte Inhalte",
|
|
19030
|
+
"record.metadata.ressources.and.links": "Ressourcen und Links",
|
|
19029
19031
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
19030
19032
|
"record.metadata.status": "Status",
|
|
19031
19033
|
"record.metadata.status.notPublished": "",
|
|
@@ -19213,8 +19215,9 @@ var en = {
|
|
|
19213
19215
|
"datahub.search.back": "Back",
|
|
19214
19216
|
"datahub.search.filter.all": "All",
|
|
19215
19217
|
"datahub.search.filter.generatedByAPI": "Generated by an API",
|
|
19216
|
-
"datahub.search.filter.generatedByWfs": "",
|
|
19218
|
+
"datahub.search.filter.generatedByWfs": "Generated by a WFS",
|
|
19217
19219
|
"datahub.search.filter.others": "Others",
|
|
19220
|
+
"dataset.error.forbidden": "Access to this resource is restricted",
|
|
19218
19221
|
"dataset.error.http": "The data could not be loaded because of an HTTP error: \"{ info }\"",
|
|
19219
19222
|
"dataset.error.network": "The data could not be loaded because of a network error or CORS limitations: \"{ info }\"",
|
|
19220
19223
|
"dataset.error.parse": "The data was loaded but could not be parsed: \"{ info }\"",
|
|
@@ -19571,6 +19574,8 @@ var en = {
|
|
|
19571
19574
|
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
19572
19575
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
19573
19576
|
"record.metadata.related": "Related datasets",
|
|
19577
|
+
"record.metadata.related.contents": "Related contents",
|
|
19578
|
+
"record.metadata.ressources.and.links": "Resources and links",
|
|
19574
19579
|
"record.metadata.sheet": "Original metadata",
|
|
19575
19580
|
"record.metadata.status": "Status",
|
|
19576
19581
|
"record.metadata.status.notPublished": "Not published",
|
|
@@ -19760,6 +19765,7 @@ var es = {
|
|
|
19760
19765
|
"datahub.search.filter.generatedByAPI": "",
|
|
19761
19766
|
"datahub.search.filter.generatedByWfs": "",
|
|
19762
19767
|
"datahub.search.filter.others": "",
|
|
19768
|
+
"dataset.error.forbidden": "El acceso a este recurso está restringido",
|
|
19763
19769
|
"dataset.error.http": "",
|
|
19764
19770
|
"dataset.error.network": "",
|
|
19765
19771
|
"dataset.error.parse": "",
|
|
@@ -20116,6 +20122,8 @@ var es = {
|
|
|
20116
20122
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
20117
20123
|
"record.metadata.quality.updateFrequency.success": "",
|
|
20118
20124
|
"record.metadata.related": "",
|
|
20125
|
+
"record.metadata.related.contents": "Contenidos relacionados",
|
|
20126
|
+
"record.metadata.ressources.and.links": "Recursos y enlaces",
|
|
20119
20127
|
"record.metadata.sheet": "",
|
|
20120
20128
|
"record.metadata.status": "",
|
|
20121
20129
|
"record.metadata.status.notPublished": "",
|
|
@@ -20305,6 +20313,7 @@ var fr = {
|
|
|
20305
20313
|
"datahub.search.filter.generatedByAPI": "généré par une API",
|
|
20306
20314
|
"datahub.search.filter.generatedByWfs": "généré par un WFS",
|
|
20307
20315
|
"datahub.search.filter.others": "Autres",
|
|
20316
|
+
"dataset.error.forbidden": "L’accès à cette ressource est restreint",
|
|
20308
20317
|
"dataset.error.http": "Le chargement des données a échoué en raison d'une erreur HTTP: \"{ info }\"",
|
|
20309
20318
|
"dataset.error.network": "Le chargement des données a échoué en raison d'une erreur réseau ou de limitations CORS: \"{ info }\"",
|
|
20310
20319
|
"dataset.error.parse": "Les données ont été chargées mais leur décodage a échoué: \"{ info }\"",
|
|
@@ -20661,6 +20670,8 @@ var fr = {
|
|
|
20661
20670
|
"record.metadata.quality.updateFrequency.failed": "La fréquence de mise à jour n'est pas renseignée",
|
|
20662
20671
|
"record.metadata.quality.updateFrequency.success": "La fréquence de mise à jour est renseignée",
|
|
20663
20672
|
"record.metadata.related": "Voir aussi",
|
|
20673
|
+
"record.metadata.related.contents": "Contenus associés",
|
|
20674
|
+
"record.metadata.ressources.and.links": "Ressources et liens",
|
|
20664
20675
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
20665
20676
|
"record.metadata.status": "Statut",
|
|
20666
20677
|
"record.metadata.status.notPublished": "Non publié",
|
|
@@ -20850,6 +20861,7 @@ var it = {
|
|
|
20850
20861
|
"datahub.search.filter.generatedByAPI": "generato da un'API",
|
|
20851
20862
|
"datahub.search.filter.generatedByWfs": "generato da un WFS",
|
|
20852
20863
|
"datahub.search.filter.others": "Altri",
|
|
20864
|
+
"dataset.error.forbidden": "L'accesso a questa risorsa è limitato",
|
|
20853
20865
|
"dataset.error.http": "Il caricamento dei dati non è riuscito a causa di un errore HTTP: \"{info}\"",
|
|
20854
20866
|
"dataset.error.network": "Il caricamento dei dati non è riuscito a causa di un errore di rete o di limitazioni CORS: \"{info}\"",
|
|
20855
20867
|
"dataset.error.parse": "I dati sono stati caricati ma la decodifica non è riuscita: \"{info}\"",
|
|
@@ -21206,6 +21218,8 @@ var it = {
|
|
|
21206
21218
|
"record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
|
|
21207
21219
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
21208
21220
|
"record.metadata.related": "Vedi anche",
|
|
21221
|
+
"record.metadata.related.contents": "Contenuti correlati",
|
|
21222
|
+
"record.metadata.ressources.and.links": "Risorse e collegamenti",
|
|
21209
21223
|
"record.metadata.sheet": "Origine del metadata",
|
|
21210
21224
|
"record.metadata.status": "Stato",
|
|
21211
21225
|
"record.metadata.status.notPublished": "Non pubblicato",
|
|
@@ -21313,7 +21327,6 @@ var it = {
|
|
|
21313
21327
|
"tooltip.url.open": "Aprire l'URL",
|
|
21314
21328
|
"ui.readLess": "Ridurre",
|
|
21315
21329
|
"ui.readMore": "Leggere di più",
|
|
21316
|
-
"wfs.aggregations.notsupported": "Aggregazioni non supportate per i servizi WFS",
|
|
21317
21330
|
"wfs.feature.limit": "Troppi oggetti per visualizzare il WFS layer!",
|
|
21318
21331
|
"wfs.featuretype.notfound": "La classe di oggetto non è stata trovata nel servizio",
|
|
21319
21332
|
"wfs.geojsongml.notsupported": "Il servizio non supporta il formato GeoJSON o GML",
|
|
@@ -21396,6 +21409,7 @@ var nl = {
|
|
|
21396
21409
|
"datahub.search.filter.generatedByAPI": "",
|
|
21397
21410
|
"datahub.search.filter.generatedByWfs": "",
|
|
21398
21411
|
"datahub.search.filter.others": "",
|
|
21412
|
+
"dataset.error.forbidden": "",
|
|
21399
21413
|
"dataset.error.http": "",
|
|
21400
21414
|
"dataset.error.network": "",
|
|
21401
21415
|
"dataset.error.parse": "",
|
|
@@ -21752,6 +21766,8 @@ var nl = {
|
|
|
21752
21766
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
21753
21767
|
"record.metadata.quality.updateFrequency.success": "",
|
|
21754
21768
|
"record.metadata.related": "",
|
|
21769
|
+
"record.metadata.related.contents": "Gerelateerde inhoud",
|
|
21770
|
+
"record.metadata.ressources.and.links": "Bronnen en links",
|
|
21755
21771
|
"record.metadata.sheet": "",
|
|
21756
21772
|
"record.metadata.status": "",
|
|
21757
21773
|
"record.metadata.status.notPublished": "",
|
|
@@ -21941,6 +21957,7 @@ var pt = {
|
|
|
21941
21957
|
"datahub.search.filter.generatedByAPI": "",
|
|
21942
21958
|
"datahub.search.filter.generatedByWfs": "",
|
|
21943
21959
|
"datahub.search.filter.others": "",
|
|
21960
|
+
"dataset.error.forbidden": "",
|
|
21944
21961
|
"dataset.error.http": "",
|
|
21945
21962
|
"dataset.error.network": "",
|
|
21946
21963
|
"dataset.error.parse": "",
|
|
@@ -22297,6 +22314,8 @@ var pt = {
|
|
|
22297
22314
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
22298
22315
|
"record.metadata.quality.updateFrequency.success": "",
|
|
22299
22316
|
"record.metadata.related": "",
|
|
22317
|
+
"record.metadata.related.contents": "Conteúdos relacionados",
|
|
22318
|
+
"record.metadata.ressources.and.links": "Recursos e links",
|
|
22300
22319
|
"record.metadata.sheet": "",
|
|
22301
22320
|
"record.metadata.status": "",
|
|
22302
22321
|
"record.metadata.status.notPublished": "",
|
|
@@ -23450,18 +23469,25 @@ class Gn4Repository {
|
|
|
23450
23469
|
.search('bucket', ['fcats'], JSON.stringify(this.gn4SearchHelper.getMetadataByIdPayload(uniqueIdentifier)))
|
|
23451
23470
|
.pipe(map$1((results) => results.hits.hits[0]), switchMap((record) => record ? this.gn4Mapper.readRecord(record) : of(null)));
|
|
23452
23471
|
}
|
|
23472
|
+
mapEmbeddedFeatureCatalog(featureTypes) {
|
|
23473
|
+
return {
|
|
23474
|
+
featureTypes: featureTypes.map((featureType) => ({
|
|
23475
|
+
name: featureType.typeName || '',
|
|
23476
|
+
definition: featureType.definition || '',
|
|
23477
|
+
attributes: Array.isArray(featureType.attributeTable)
|
|
23478
|
+
? featureType.attributeTable.map((attr) => ({
|
|
23479
|
+
name: attr.name,
|
|
23480
|
+
title: attr.definition,
|
|
23481
|
+
}))
|
|
23482
|
+
: [],
|
|
23483
|
+
})),
|
|
23484
|
+
};
|
|
23485
|
+
}
|
|
23453
23486
|
getFeatureCatalog(record, visited = new Set() // prevent looping
|
|
23454
23487
|
) {
|
|
23455
|
-
if (record.extras &&
|
|
23456
|
-
record.extras['featureTypes']
|
|
23457
|
-
record.extras['featureTypes']
|
|
23458
|
-
Array.isArray(record.extras['featureTypes'][0].attributeTable)) {
|
|
23459
|
-
return of({
|
|
23460
|
-
attributes: record.extras['featureTypes'][0]?.attributeTable?.map((attr) => ({
|
|
23461
|
-
name: attr.name,
|
|
23462
|
-
title: attr.definition,
|
|
23463
|
-
})),
|
|
23464
|
-
});
|
|
23488
|
+
if (record.extras?.['featureTypes'] &&
|
|
23489
|
+
Array.isArray(record.extras['featureTypes'])) {
|
|
23490
|
+
return of(this.mapEmbeddedFeatureCatalog(record.extras['featureTypes']));
|
|
23465
23491
|
}
|
|
23466
23492
|
const featureCatalogIdentifier = record.extras['featureCatalogIdentifier'];
|
|
23467
23493
|
if (featureCatalogIdentifier && !visited.has(featureCatalogIdentifier)) {
|
|
@@ -24752,7 +24778,7 @@ const FORMATS = {
|
|
|
24752
24778
|
csv: {
|
|
24753
24779
|
extensions: ['csv'],
|
|
24754
24780
|
priority: 1,
|
|
24755
|
-
color: '#
|
|
24781
|
+
color: '#F6A924',
|
|
24756
24782
|
mimeTypes: ['text/csv', 'application/csv'],
|
|
24757
24783
|
},
|
|
24758
24784
|
excel: {
|
|
@@ -24764,7 +24790,7 @@ const FORMATS = {
|
|
|
24764
24790
|
'openxmlformats-officedocument',
|
|
24765
24791
|
],
|
|
24766
24792
|
priority: 2,
|
|
24767
|
-
color: '#
|
|
24793
|
+
color: '#FFDE10',
|
|
24768
24794
|
mimeTypes: [
|
|
24769
24795
|
'application/vnd.ms-excel',
|
|
24770
24796
|
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
|
@@ -24773,31 +24799,31 @@ const FORMATS = {
|
|
|
24773
24799
|
geojson: {
|
|
24774
24800
|
extensions: ['geojson'],
|
|
24775
24801
|
priority: 3,
|
|
24776
|
-
color: '#
|
|
24802
|
+
color: '#293C6F',
|
|
24777
24803
|
mimeTypes: ['application/geo+json', 'application/vnd.geo+json'],
|
|
24778
24804
|
},
|
|
24779
24805
|
json: {
|
|
24780
24806
|
extensions: ['json'],
|
|
24781
24807
|
priority: 3,
|
|
24782
|
-
color: '#
|
|
24808
|
+
color: '#84D0F0',
|
|
24783
24809
|
mimeTypes: ['application/json'],
|
|
24784
24810
|
},
|
|
24785
24811
|
shp: {
|
|
24786
24812
|
extensions: ['shp', 'shape', 'zipped-shapefile'],
|
|
24787
24813
|
priority: 4,
|
|
24788
|
-
color: '#
|
|
24814
|
+
color: '#009036',
|
|
24789
24815
|
mimeTypes: ['x-gis/x-shapefile'],
|
|
24790
24816
|
},
|
|
24791
24817
|
gml: {
|
|
24792
24818
|
extensions: ['gml'],
|
|
24793
24819
|
priority: 5,
|
|
24794
|
-
color: '#
|
|
24820
|
+
color: '#E75113',
|
|
24795
24821
|
mimeTypes: ['application/gml+xml', 'text/xml; subtype=gml'],
|
|
24796
24822
|
},
|
|
24797
24823
|
kml: {
|
|
24798
24824
|
extensions: ['kml', 'kmz'],
|
|
24799
24825
|
priority: 6,
|
|
24800
|
-
color: '#
|
|
24826
|
+
color: '#F4B5D0',
|
|
24801
24827
|
mimeTypes: [
|
|
24802
24828
|
'application/vnd.google-earth.kml+xml',
|
|
24803
24829
|
'application/vnd.google-earth.kmz',
|
|
@@ -24806,55 +24832,55 @@ const FORMATS = {
|
|
|
24806
24832
|
gpkg: {
|
|
24807
24833
|
extensions: ['gpkg', 'geopackage'],
|
|
24808
24834
|
priority: 7,
|
|
24809
|
-
color: '#
|
|
24835
|
+
color: '#7D5D9F',
|
|
24810
24836
|
mimeTypes: ['application/geopackage+sqlite3'],
|
|
24811
24837
|
},
|
|
24812
24838
|
zip: {
|
|
24813
24839
|
extensions: ['zip', 'tar.gz'],
|
|
24814
24840
|
priority: 8,
|
|
24815
|
-
color: '#
|
|
24841
|
+
color: '#B0CB52',
|
|
24816
24842
|
mimeTypes: ['application/zip', 'application/x-zip'],
|
|
24817
24843
|
},
|
|
24818
24844
|
pdf: {
|
|
24819
24845
|
extensions: ['pdf'],
|
|
24820
24846
|
priority: 9,
|
|
24821
|
-
color: '#
|
|
24847
|
+
color: '#49579E',
|
|
24822
24848
|
mimeTypes: ['application/pdf'],
|
|
24823
24849
|
},
|
|
24824
24850
|
jpg: {
|
|
24825
24851
|
extensions: ['jpg', 'jpeg', 'jfif', 'pjpeg', 'pjp'],
|
|
24826
24852
|
priority: 9,
|
|
24827
|
-
color: '#
|
|
24853
|
+
color: '#C4A98F',
|
|
24828
24854
|
mimeTypes: ['image/jpg'],
|
|
24829
24855
|
},
|
|
24830
24856
|
svg: {
|
|
24831
24857
|
extensions: ['svg'],
|
|
24832
24858
|
priority: 10,
|
|
24833
|
-
color: '#
|
|
24859
|
+
color: '#EB6D82',
|
|
24834
24860
|
mimeTypes: ['image/svg+xml'],
|
|
24835
24861
|
},
|
|
24836
24862
|
dxf: {
|
|
24837
24863
|
extensions: ['dxf'],
|
|
24838
24864
|
priority: 11,
|
|
24839
|
-
color: '#
|
|
24865
|
+
color: '#DCCD00',
|
|
24840
24866
|
mimeTypes: ['application/x-dxf', 'image/x-dxf'],
|
|
24841
24867
|
},
|
|
24842
24868
|
html: {
|
|
24843
24869
|
extensions: ['html', 'htm'],
|
|
24844
24870
|
priority: 12,
|
|
24845
|
-
color: '#
|
|
24871
|
+
color: '#C0C9B6',
|
|
24846
24872
|
mimeTypes: ['text/html'],
|
|
24847
24873
|
},
|
|
24848
24874
|
fgb: {
|
|
24849
24875
|
extensions: ['fgb', 'flatgeobuf'],
|
|
24850
24876
|
priority: 13,
|
|
24851
|
-
color: '#
|
|
24877
|
+
color: '#A8111C',
|
|
24852
24878
|
mimeTypes: ['application/flatgeobuf'],
|
|
24853
24879
|
},
|
|
24854
24880
|
jsonfg: {
|
|
24855
24881
|
extensions: ['jsonfg', 'jsonfgc'],
|
|
24856
24882
|
priority: 14,
|
|
24857
|
-
color: '#
|
|
24883
|
+
color: '#009EE0',
|
|
24858
24884
|
mimeTypes: [
|
|
24859
24885
|
'application/vnd.ogc.fg+json',
|
|
24860
24886
|
'application/vnd.ogc.fg+json;compatibility=geojson',
|
|
@@ -24925,9 +24951,11 @@ function mimeTypeToFormat(mimeType) {
|
|
|
24925
24951
|
return null;
|
|
24926
24952
|
}
|
|
24927
24953
|
function checkFileFormat(link, format) {
|
|
24928
|
-
return (('name' in link &&
|
|
24954
|
+
return (('name' in link &&
|
|
24955
|
+
new RegExp(`[./]${format}`, 'i').test(link.name.toLowerCase())) ||
|
|
24929
24956
|
('url' in link &&
|
|
24930
|
-
new RegExp(`[./]${format}`, 'i').test(link.url.toString()))
|
|
24957
|
+
new RegExp(`[./]${format}`, 'i').test(link.url.toString())) ||
|
|
24958
|
+
('name' in link && link.name.toLowerCase().includes(format)));
|
|
24931
24959
|
}
|
|
24932
24960
|
function getBadgeColor(linkFormat) {
|
|
24933
24961
|
for (const format in FORMATS) {
|
|
@@ -25480,11 +25508,11 @@ class CarouselComponent {
|
|
|
25480
25508
|
.on('select', this.refreshSteps);
|
|
25481
25509
|
}
|
|
25482
25510
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CarouselComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25483
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CarouselComponent, isStandalone: true, selector: "gn-ui-carousel", inputs: { containerClass: "containerClass", stepsContainerClass: "stepsContainerClass" }, outputs: { currentStepChange: "currentStepChange" }, viewQueries: [{ propertyName: "carouselOverflowContainer", first: true, predicate: ["carouselOverflowContainer"], descendants: true }], ngImport: i0, template: "<div #carouselOverflowContainer class=\"w-full\">\n <div class=\"carousel-container flex\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<gn-ui-pagination-dots\n [containerClass]=\"'absolute ' + stepsContainerClass\"\n [listComponent]=\"this\"\n></gn-ui-pagination-dots>\n", styles: [":host
|
|
25511
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CarouselComponent, isStandalone: true, selector: "gn-ui-carousel", inputs: { containerClass: "containerClass", stepsContainerClass: "stepsContainerClass" }, outputs: { currentStepChange: "currentStepChange" }, viewQueries: [{ propertyName: "carouselOverflowContainer", first: true, predicate: ["carouselOverflowContainer"], descendants: true }], ngImport: i0, template: "<div #carouselOverflowContainer class=\"w-full\">\n <div class=\"carousel-container flex\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<gn-ui-pagination-dots\n [containerClass]=\"'absolute ' + stepsContainerClass\"\n [listComponent]=\"this\"\n></gn-ui-pagination-dots>\n", styles: [":host{position:relative;display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: PaginationDotsComponent, selector: "gn-ui-pagination-dots", inputs: ["listComponent", "containerClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25484
25512
|
}
|
|
25485
25513
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
25486
25514
|
type: Component,
|
|
25487
|
-
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, PaginationDotsComponent], template: "<div #carouselOverflowContainer class=\"w-full\">\n <div class=\"carousel-container flex\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<gn-ui-pagination-dots\n [containerClass]=\"'absolute ' + stepsContainerClass\"\n [listComponent]=\"this\"\n></gn-ui-pagination-dots>\n", styles: [":host
|
|
25515
|
+
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, PaginationDotsComponent], template: "<div #carouselOverflowContainer class=\"w-full\">\n <div class=\"carousel-container flex\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<gn-ui-pagination-dots\n [containerClass]=\"'absolute ' + stepsContainerClass\"\n [listComponent]=\"this\"\n></gn-ui-pagination-dots>\n", styles: [":host{position:relative;display:block}\n"] }]
|
|
25488
25516
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { carouselOverflowContainer: [{
|
|
25489
25517
|
type: ViewChild,
|
|
25490
25518
|
args: ['carouselOverflowContainer']
|
|
@@ -28640,9 +28668,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28640
28668
|
|
|
28641
28669
|
class ApiCardComponent {
|
|
28642
28670
|
constructor() {
|
|
28671
|
+
this.sizeClassMap = {
|
|
28672
|
+
L: 'gn-ui-card-l py-2 px-5 flex-row',
|
|
28673
|
+
M: 'gn-ui-card-m py-2 px-5 flex-row',
|
|
28674
|
+
S: 'gn-ui-card-s p-4 flex-col',
|
|
28675
|
+
XS: 'gn-ui-card-xs py-2 px-5 flex-row',
|
|
28676
|
+
};
|
|
28677
|
+
this.cardClass = '';
|
|
28643
28678
|
this.currentlyActive = false;
|
|
28644
28679
|
this.openRecordApiForm = new EventEmitter();
|
|
28645
28680
|
}
|
|
28681
|
+
set size(value) {
|
|
28682
|
+
this._size = value;
|
|
28683
|
+
this.cardClass = this.sizeClassMap[value];
|
|
28684
|
+
}
|
|
28685
|
+
get size() {
|
|
28686
|
+
return this._size;
|
|
28687
|
+
}
|
|
28688
|
+
get generatedText() {
|
|
28689
|
+
return this.link.accessServiceProtocol === 'wfs'
|
|
28690
|
+
? 'datahub.search.filter.generatedByWfs'
|
|
28691
|
+
: 'datahub.search.filter.generatedByAPI';
|
|
28692
|
+
}
|
|
28646
28693
|
ngOnInit() {
|
|
28647
28694
|
this.displayApiFormButton =
|
|
28648
28695
|
this.link.accessServiceProtocol === 'ogcFeatures' ||
|
|
@@ -28660,9 +28707,9 @@ class ApiCardComponent {
|
|
|
28660
28707
|
}
|
|
28661
28708
|
}
|
|
28662
28709
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28663
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ApiCardComponent, isStandalone: true, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex
|
|
28710
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ApiCardComponent, isStandalone: true, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink", size: "size" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex justify-between rounded filter overflow-hidden\"\n [ngClass]=\"cardClass\"\n>\n <ng-container *ngIf=\"size !== 'S'\">\n <div>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div class=\"flex items-center\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #buttons>\n <div class=\"flex flex-row gap-2\">\n <gn-ui-copy-text-button\n [text]=\"link.url\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n class=\"border border-gray-300 rounded-lg pt-1 px-2 h-[34px]\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n class=\"gn-ui-card-icon\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText,\n }\"\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n (click)=\"openRecordApiFormPanel()\"\n >\n <ng-icon\n class=\"pointer-events-none align-middle card-icon\"\n name=\"iconoirSettings\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive,\n }\"\n ></ng-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #content>\n <div>\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n </div>\n <div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row gap-2.5 items-center pt-1\">\n <span\n *ngIf=\"link.accessServiceProtocol !== 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <span\n *ngIf=\"link.accessServiceProtocol === 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n translate\n >\n record.metadata.api.gpfdl</span\n >\n </div>\n <div *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1$4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], viewProviders: [
|
|
28664
28711
|
provideIcons({
|
|
28665
|
-
|
|
28712
|
+
iconoirSettings,
|
|
28666
28713
|
}),
|
|
28667
28714
|
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28668
28715
|
}
|
|
@@ -28676,13 +28723,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28676
28723
|
NgIcon,
|
|
28677
28724
|
], viewProviders: [
|
|
28678
28725
|
provideIcons({
|
|
28679
|
-
|
|
28726
|
+
iconoirSettings,
|
|
28680
28727
|
}),
|
|
28681
|
-
], template: "<div\n class=\"group flex
|
|
28728
|
+
], template: "<div\n class=\"group flex justify-between rounded filter overflow-hidden\"\n [ngClass]=\"cardClass\"\n>\n <ng-container *ngIf=\"size !== 'S'\">\n <div>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div class=\"flex items-center\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #buttons>\n <div class=\"flex flex-row gap-2\">\n <gn-ui-copy-text-button\n [text]=\"link.url\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n class=\"border border-gray-300 rounded-lg pt-1 px-2 h-[34px]\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n class=\"gn-ui-card-icon\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText,\n }\"\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n (click)=\"openRecordApiFormPanel()\"\n >\n <ng-icon\n class=\"pointer-events-none align-middle card-icon\"\n name=\"iconoirSettings\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive,\n }\"\n ></ng-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #content>\n <div>\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n </div>\n <div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row gap-2.5 items-center pt-1\">\n <span\n *ngIf=\"link.accessServiceProtocol !== 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <span\n *ngIf=\"link.accessServiceProtocol === 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n translate\n >\n record.metadata.api.gpfdl</span\n >\n </div>\n <div *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </div>\n</ng-template>\n" }]
|
|
28682
28729
|
}], propDecorators: { link: [{
|
|
28683
28730
|
type: Input
|
|
28684
28731
|
}], currentLink: [{
|
|
28685
28732
|
type: Input
|
|
28733
|
+
}], size: [{
|
|
28734
|
+
type: Input
|
|
28686
28735
|
}], openRecordApiForm: [{
|
|
28687
28736
|
type: Output
|
|
28688
28737
|
}] } });
|
|
@@ -28743,15 +28792,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28743
28792
|
|
|
28744
28793
|
class DownloadItemComponent {
|
|
28745
28794
|
constructor() {
|
|
28795
|
+
this.sizeClassMap = {
|
|
28796
|
+
L: 'gn-ui-card-l py-2 px-5',
|
|
28797
|
+
M: 'gn-ui-card-m py-2 px-5',
|
|
28798
|
+
S: 'gn-ui-card-s p-4',
|
|
28799
|
+
XS: 'gn-ui-card-xs py-2 px-5',
|
|
28800
|
+
};
|
|
28801
|
+
this.cardClass = '';
|
|
28746
28802
|
this.exportUrl = new EventEmitter();
|
|
28747
28803
|
}
|
|
28804
|
+
set size(value) {
|
|
28805
|
+
this._size = value;
|
|
28806
|
+
this.cardClass = this.sizeClassMap[value];
|
|
28807
|
+
}
|
|
28808
|
+
get size() {
|
|
28809
|
+
return this._size;
|
|
28810
|
+
}
|
|
28748
28811
|
openUrl() {
|
|
28749
28812
|
this.exportUrl.emit(this.link.url.toString());
|
|
28750
28813
|
}
|
|
28751
28814
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DownloadItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28752
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DownloadItemComponent, isStandalone: true, selector: "gn-ui-download-item", inputs: { link: "link", color: "color", format: "format", isFromApi: "isFromApi" }, outputs: { exportUrl: "exportUrl" }, ngImport: i0, template: "<a\n href=\"{{ link.url }}\"\n target=\"_blank\"\n class=\"group flex justify-between card-shadow
|
|
28815
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DownloadItemComponent, isStandalone: true, selector: "gn-ui-download-item", inputs: { link: "link", color: "color", format: "format", isFromApi: "isFromApi", size: "size" }, outputs: { exportUrl: "exportUrl" }, ngImport: i0, template: "<a\n href=\"{{ link.url }}\"\n target=\"_blank\"\n class=\"group flex flex-row justify-between card-shadow cursor-pointer rounded overflow-hidden\"\n rel=\"noopener\"\n [ngClass]=\"cardClass\"\n>\n <div class=\"flex flex-col justify-between\">\n <div class=\"gn-ui-card-title\" [title]=\"link.description || link.name\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n <div class=\"flex flex-row gap-2 items-center pt-1\">\n <span\n class=\"inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded transition-opacity opacity-70 group-hover:opacity-100\"\n [style.background-color]=\"color\"\n data-cy=\"download-format\"\n >{{ format || ('downloads.format.unknown' | translate) }}</span\n >\n <span class=\"text-gray-800 text-xs\" *ngIf=\"isFromApi\" translate=\"\"\n >datahub.search.filter.generatedByAPI</span\n >\n </div>\n </div>\n <div class=\"flex\" [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\">\n <div class=\"gn-ui-card-icon\">\n <ng-icon\n class=\"inline-block card-icon align-middle\"\n name=\"iconoirDownload\"\n >\n </ng-icon>\n </div>\n </div>\n</a>\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: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], viewProviders: [
|
|
28753
28816
|
provideIcons({
|
|
28754
|
-
|
|
28817
|
+
iconoirDownload,
|
|
28755
28818
|
}),
|
|
28756
28819
|
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28757
28820
|
}
|
|
@@ -28759,9 +28822,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28759
28822
|
type: Component,
|
|
28760
28823
|
args: [{ selector: 'gn-ui-download-item', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, TranslateModule, NgIcon], standalone: true, viewProviders: [
|
|
28761
28824
|
provideIcons({
|
|
28762
|
-
|
|
28825
|
+
iconoirDownload,
|
|
28763
28826
|
}),
|
|
28764
|
-
], template: "<a\n href=\"{{ link.url }}\"\n target=\"_blank\"\n class=\"group flex justify-between card-shadow
|
|
28827
|
+
], template: "<a\n href=\"{{ link.url }}\"\n target=\"_blank\"\n class=\"group flex flex-row justify-between card-shadow cursor-pointer rounded overflow-hidden\"\n rel=\"noopener\"\n [ngClass]=\"cardClass\"\n>\n <div class=\"flex flex-col justify-between\">\n <div class=\"gn-ui-card-title\" [title]=\"link.description || link.name\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n <div class=\"flex flex-row gap-2 items-center pt-1\">\n <span\n class=\"inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded transition-opacity opacity-70 group-hover:opacity-100\"\n [style.background-color]=\"color\"\n data-cy=\"download-format\"\n >{{ format || ('downloads.format.unknown' | translate) }}</span\n >\n <span class=\"text-gray-800 text-xs\" *ngIf=\"isFromApi\" translate=\"\"\n >datahub.search.filter.generatedByAPI</span\n >\n </div>\n </div>\n <div class=\"flex\" [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\">\n <div class=\"gn-ui-card-icon\">\n <ng-icon\n class=\"inline-block card-icon align-middle\"\n name=\"iconoirDownload\"\n >\n </ng-icon>\n </div>\n </div>\n</a>\n" }]
|
|
28765
28828
|
}], propDecorators: { link: [{
|
|
28766
28829
|
type: Input
|
|
28767
28830
|
}], color: [{
|
|
@@ -28770,6 +28833,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28770
28833
|
type: Input
|
|
28771
28834
|
}], isFromApi: [{
|
|
28772
28835
|
type: Input
|
|
28836
|
+
}], size: [{
|
|
28837
|
+
type: Input
|
|
28773
28838
|
}], exportUrl: [{
|
|
28774
28839
|
type: Output
|
|
28775
28840
|
}] } });
|
|
@@ -28860,7 +28925,7 @@ class DownloadsListComponent {
|
|
|
28860
28925
|
link.accessServiceProtocol === 'ogcFeatures'));
|
|
28861
28926
|
}
|
|
28862
28927
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DownloadsListComponent, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28863
|
-
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
|
|
28928
|
+
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\n class=\"font-title text-xl text-title font-medium mr-4 text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </div>\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<div class=\"mb-2 sm:mb-3\" *ngFor=\"let link of filteredLinks\">\n <gn-ui-download-item\n size=\"L\"\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromApi]=\"isFromApi(link)\"\n ></gn-ui-download-item>\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: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: DownloadItemComponent, selector: "gn-ui-download-item", inputs: ["link", "color", "format", "isFromApi", "size"], outputs: ["exportUrl"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28864
28929
|
}
|
|
28865
28930
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DownloadsListComponent, decorators: [{
|
|
28866
28931
|
type: Component,
|
|
@@ -28869,7 +28934,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28869
28934
|
ButtonComponent,
|
|
28870
28935
|
DownloadItemComponent,
|
|
28871
28936
|
TranslateModule,
|
|
28872
|
-
], template: "<div\n class=\"flex flex-wrap justify-between
|
|
28937
|
+
], template: "<div\n class=\"flex flex-wrap justify-between items-center pb-4\"\n *ngIf=\"links && links.length > 0\"\n>\n <div\n class=\"font-title text-xl text-title font-medium mr-4 text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </div>\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<div class=\"mb-2 sm:mb-3\" *ngFor=\"let link of filteredLinks\">\n <gn-ui-download-item\n size=\"L\"\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromApi]=\"isFromApi(link)\"\n ></gn-ui-download-item>\n</div>\n" }]
|
|
28873
28938
|
}], ctorParameters: () => [{ type: i1$1.TranslateService }], propDecorators: { links: [{
|
|
28874
28939
|
type: Input
|
|
28875
28940
|
}] } });
|
|
@@ -29153,7 +29218,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29153
29218
|
|
|
29154
29219
|
class LinkCardComponent {
|
|
29155
29220
|
constructor() {
|
|
29156
|
-
this.
|
|
29221
|
+
this.sizeClassMap = {
|
|
29222
|
+
L: 'gn-ui-card-l py-2 px-5',
|
|
29223
|
+
M: 'gn-ui-card-m py-2 px-5',
|
|
29224
|
+
S: 'gn-ui-card-s p-4',
|
|
29225
|
+
XS: 'gn-ui-card-xs py-2 px-5',
|
|
29226
|
+
};
|
|
29227
|
+
this.cardClass = '';
|
|
29228
|
+
}
|
|
29229
|
+
set size(value) {
|
|
29230
|
+
this._size = value;
|
|
29231
|
+
this.cardClass = this.sizeClassMap[value];
|
|
29232
|
+
}
|
|
29233
|
+
get size() {
|
|
29234
|
+
return this._size;
|
|
29157
29235
|
}
|
|
29158
29236
|
get title() {
|
|
29159
29237
|
if (this.link.name && this.link.description) {
|
|
@@ -29161,25 +29239,31 @@ class LinkCardComponent {
|
|
|
29161
29239
|
}
|
|
29162
29240
|
return this.link.name || this.link.description || '';
|
|
29163
29241
|
}
|
|
29242
|
+
getLinkFormat(link) {
|
|
29243
|
+
return getFileFormat(link);
|
|
29244
|
+
}
|
|
29245
|
+
getLinkColor(link) {
|
|
29246
|
+
return getBadgeColor(getFileFormat(link));
|
|
29247
|
+
}
|
|
29164
29248
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LinkCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29165
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LinkCardComponent, isStandalone: true, selector: "gn-ui-link-card", inputs: { link: "link",
|
|
29249
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LinkCardComponent, isStandalone: true, selector: "gn-ui-link-card", inputs: { link: "link", size: "size" }, providers: [
|
|
29166
29250
|
provideIcons({
|
|
29167
29251
|
matOpenInNew,
|
|
29168
29252
|
}),
|
|
29169
29253
|
provideNgIconsConfig({ size: '1.5em' }),
|
|
29170
|
-
], ngImport: i0, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-
|
|
29254
|
+
], ngImport: i0, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"group flex flex-row justify-between card-shadow cursor-pointer rounded overflow-hidden\"\n [ngClass]=\"cardClass\"\n [title]=\"title\"\n>\n <div class=\"flex flex-col justify-between\">\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n <p *ngIf=\"!link.name && !link.description\" class=\"gn-ui-card-title\">\n {{ link.url }}\n </p>\n <div class=\"pt-1\">\n <span\n class=\"inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded transition-opacity opacity-70 group-hover:opacity-100\"\n [style.background-color]=\"getLinkColor(link)\"\n data-cy=\"download-format\"\n >{{\n getLinkFormat(link) || ('downloads.format.unknown' | translate)\n }}</span\n >\n </div>\n </div>\n <div class=\"flex\" [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\">\n <div class=\"gn-ui-card-icon\">\n <ng-icon\n class=\"inline-block card-icon align-middle\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </div>\n </div>\n</a>\n", 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: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29171
29255
|
}
|
|
29172
29256
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LinkCardComponent, decorators: [{
|
|
29173
29257
|
type: Component,
|
|
29174
|
-
args: [{ selector: 'gn-ui-link-card', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIconComponent], providers: [
|
|
29258
|
+
args: [{ selector: 'gn-ui-link-card', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIconComponent, TranslateModule], providers: [
|
|
29175
29259
|
provideIcons({
|
|
29176
29260
|
matOpenInNew,
|
|
29177
29261
|
}),
|
|
29178
29262
|
provideNgIconsConfig({ size: '1.5em' }),
|
|
29179
|
-
], template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-
|
|
29263
|
+
], template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"group flex flex-row justify-between card-shadow cursor-pointer rounded overflow-hidden\"\n [ngClass]=\"cardClass\"\n [title]=\"title\"\n>\n <div class=\"flex flex-col justify-between\">\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n <p *ngIf=\"!link.name && !link.description\" class=\"gn-ui-card-title\">\n {{ link.url }}\n </p>\n <div class=\"pt-1\">\n <span\n class=\"inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded transition-opacity opacity-70 group-hover:opacity-100\"\n [style.background-color]=\"getLinkColor(link)\"\n data-cy=\"download-format\"\n >{{\n getLinkFormat(link) || ('downloads.format.unknown' | translate)\n }}</span\n >\n </div>\n </div>\n <div class=\"flex\" [ngClass]=\"size === 'S' ? 'items-end' : 'items-center'\">\n <div class=\"gn-ui-card-icon\">\n <ng-icon\n class=\"inline-block card-icon align-middle\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </div>\n </div>\n</a>\n" }]
|
|
29180
29264
|
}], propDecorators: { link: [{
|
|
29181
29265
|
type: Input
|
|
29182
|
-
}],
|
|
29266
|
+
}], size: [{
|
|
29183
29267
|
type: Input
|
|
29184
29268
|
}] } });
|
|
29185
29269
|
|
|
@@ -29221,11 +29305,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29221
29305
|
|
|
29222
29306
|
class MetadataCatalogComponent {
|
|
29223
29307
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataCatalogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29224
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataCatalogComponent, isStandalone: true, selector: "gn-ui-metadata-catalog", inputs: { sourceLabel: "sourceLabel" }, ngImport: i0, template: "<div>\n <p class=\"text-gray-
|
|
29308
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataCatalogComponent, isStandalone: true, selector: "gn-ui-metadata-catalog", inputs: { sourceLabel: "sourceLabel" }, ngImport: i0, template: "<div>\n <p class=\"text-gray-900 text-xs mb-3 uppercase\" translate>\n record.metadata.catalog\n </p>\n <p class=\"text-primary font-title text-21 mb-1\">\n {{ sourceLabel }}\n </p>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29225
29309
|
}
|
|
29226
29310
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataCatalogComponent, decorators: [{
|
|
29227
29311
|
type: Component,
|
|
29228
|
-
args: [{ selector: 'gn-ui-metadata-catalog', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [TranslateModule], template: "<div>\n <p class=\"text-gray-
|
|
29312
|
+
args: [{ selector: 'gn-ui-metadata-catalog', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [TranslateModule], template: "<div>\n <p class=\"text-gray-900 text-xs mb-3 uppercase\" translate>\n record.metadata.catalog\n </p>\n <p class=\"text-primary font-title text-21 mb-1\">\n {{ sourceLabel }}\n </p>\n</div>\n" }]
|
|
29229
29313
|
}], propDecorators: { sourceLabel: [{
|
|
29230
29314
|
type: Input
|
|
29231
29315
|
}] } });
|
|
@@ -29626,7 +29710,7 @@ class RecordApiFormComponent {
|
|
|
29626
29710
|
maxFeatures: limit !== '-1' ? Number(limit) : undefined,
|
|
29627
29711
|
limit: limit !== '-1' ? Number(limit) : -1,
|
|
29628
29712
|
offset: offset !== '' ? Number(offset) : undefined,
|
|
29629
|
-
outputCrs: format
|
|
29713
|
+
outputCrs: format.toLowerCase().indexOf('json') > -1 ? 'EPSG:4326' : undefined,
|
|
29630
29714
|
};
|
|
29631
29715
|
if (this.endpoint instanceof WfsEndpoint) {
|
|
29632
29716
|
delete options.limit;
|
|
@@ -29634,6 +29718,7 @@ class RecordApiFormComponent {
|
|
|
29634
29718
|
return this.endpoint.getFeatureUrl(this.apiFeatureType, options);
|
|
29635
29719
|
}
|
|
29636
29720
|
else {
|
|
29721
|
+
delete options.outputCrs;
|
|
29637
29722
|
return await this.endpoint.getCollectionItemsUrl(this.apiFeatureType, options);
|
|
29638
29723
|
}
|
|
29639
29724
|
}
|
|
@@ -32988,6 +33073,15 @@ class MapContainerComponent {
|
|
|
32988
33073
|
}
|
|
32989
33074
|
return this._mapClick;
|
|
32990
33075
|
}
|
|
33076
|
+
get sourceLoadError() {
|
|
33077
|
+
if (!this._sourceLoadError) {
|
|
33078
|
+
this.openlayersMap.then((olMap) => {
|
|
33079
|
+
listen(olMap, SourceLoadErrorType, (error) => this._sourceLoadError.emit(error));
|
|
33080
|
+
});
|
|
33081
|
+
this._sourceLoadError = new EventEmitter();
|
|
33082
|
+
}
|
|
33083
|
+
return this._sourceLoadError;
|
|
33084
|
+
}
|
|
32991
33085
|
constructor(doNotUseDefaultBasemap, basemapLayers, mapViewConstraints) {
|
|
32992
33086
|
this.doNotUseDefaultBasemap = doNotUseDefaultBasemap;
|
|
32993
33087
|
this.basemapLayers = basemapLayers;
|
|
@@ -33048,7 +33142,7 @@ class MapContainerComponent {
|
|
|
33048
33142
|
return processed;
|
|
33049
33143
|
}
|
|
33050
33144
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapContainerComponent, deps: [{ token: DO_NOT_USE_DEFAULT_BASEMAP }, { token: BASEMAP_LAYERS }, { token: MAP_VIEW_CONSTRAINTS }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33051
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapContainerComponent, isStandalone: true, selector: "gn-ui-map-container", inputs: { context: "context" }, outputs: { featuresClick: "featuresClick", featuresHover: "featuresHover", mapClick: "mapClick" }, providers: [
|
|
33145
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapContainerComponent, isStandalone: true, selector: "gn-ui-map-container", inputs: { context: "context" }, outputs: { featuresClick: "featuresClick", featuresHover: "featuresHover", mapClick: "mapClick", sourceLoadError: "sourceLoadError" }, providers: [
|
|
33052
33146
|
provideIcons({ matSwipeOutline }),
|
|
33053
33147
|
provideNgIconsConfig({
|
|
33054
33148
|
size: '1.5em',
|
|
@@ -33080,6 +33174,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
33080
33174
|
type: Output
|
|
33081
33175
|
}], mapClick: [{
|
|
33082
33176
|
type: Output
|
|
33177
|
+
}], sourceLoadError: [{
|
|
33178
|
+
type: Output
|
|
33083
33179
|
}], container: [{
|
|
33084
33180
|
type: ViewChild,
|
|
33085
33181
|
args: ['map']
|
|
@@ -33116,6 +33212,10 @@ class MapLegendComponent {
|
|
|
33116
33212
|
this.legendStatusChange.emit(true);
|
|
33117
33213
|
}
|
|
33118
33214
|
}
|
|
33215
|
+
else {
|
|
33216
|
+
this.legendHTML = false;
|
|
33217
|
+
this.legendStatusChange.emit(false);
|
|
33218
|
+
}
|
|
33119
33219
|
}
|
|
33120
33220
|
}
|
|
33121
33221
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapLegendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -33178,7 +33278,7 @@ class MapStateContainerComponent {
|
|
|
33178
33278
|
this.mapFacade.selectFeatures(features);
|
|
33179
33279
|
}
|
|
33180
33280
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapStateContainerComponent, deps: [{ token: MapFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33181
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapStateContainerComponent, isStandalone: true, selector: "gn-ui-map-state-container", ngImport: i0, template: "<gn-ui-map-container\n [context]=\"context$ | async\"\n (featuresClick)=\"handleFeaturesClicked($event)\"\n></gn-ui-map-container>\n", styles: [""], dependencies: [{ kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33281
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapStateContainerComponent, isStandalone: true, selector: "gn-ui-map-state-container", ngImport: i0, template: "<gn-ui-map-container\n [context]=\"context$ | async\"\n (featuresClick)=\"handleFeaturesClicked($event)\"\n></gn-ui-map-container>\n", styles: [""], dependencies: [{ kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick", "sourceLoadError"] }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33182
33282
|
}
|
|
33183
33283
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapStateContainerComponent, decorators: [{
|
|
33184
33284
|
type: Component,
|
|
@@ -33194,7 +33294,7 @@ class MapUtilsService {
|
|
|
33194
33294
|
return null;
|
|
33195
33295
|
}
|
|
33196
33296
|
// extend all the spatial extents into an including bbox
|
|
33197
|
-
|
|
33297
|
+
return record.spatialExtents.reduce((prev, curr) => {
|
|
33198
33298
|
if ('bbox' in curr)
|
|
33199
33299
|
return extend(prev, curr.bbox);
|
|
33200
33300
|
else if ('geometry' in curr) {
|
|
@@ -33203,7 +33303,6 @@ class MapUtilsService {
|
|
|
33203
33303
|
}
|
|
33204
33304
|
return prev;
|
|
33205
33305
|
}, [Infinity, Infinity, -Infinity, -Infinity]);
|
|
33206
|
-
return transformExtent(totalExtent, 'EPSG:4326', 'EPSG:3857');
|
|
33207
33306
|
}
|
|
33208
33307
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapUtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
33209
33308
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapUtilsService, providedIn: 'root' }); }
|
|
@@ -34921,6 +35020,9 @@ ${body}`
|
|
|
34921
35020
|
: `${code}`;
|
|
34922
35021
|
return new FetchError('http', info, code);
|
|
34923
35022
|
}
|
|
35023
|
+
static forbidden(code) {
|
|
35024
|
+
return new FetchError('forbidden', '', code);
|
|
35025
|
+
}
|
|
34924
35026
|
static corsOrNetwork(message) {
|
|
34925
35027
|
return new FetchError('network', message, 0);
|
|
34926
35028
|
}
|
|
@@ -35520,6 +35622,33 @@ class GmlReader extends BaseFileReader {
|
|
|
35520
35622
|
}
|
|
35521
35623
|
}
|
|
35522
35624
|
|
|
35625
|
+
async function getWfsEndpoint(wfsUrl) {
|
|
35626
|
+
try {
|
|
35627
|
+
return await new WfsEndpoint(wfsUrl).isReady();
|
|
35628
|
+
}
|
|
35629
|
+
catch (e) {
|
|
35630
|
+
if (e instanceof Error &&
|
|
35631
|
+
'isCrossOriginRelated' in e &&
|
|
35632
|
+
'httpStatus' in e) {
|
|
35633
|
+
const error = e;
|
|
35634
|
+
if (error.isCrossOriginRelated === true) {
|
|
35635
|
+
throw new Error(`wfs.unreachable.cors`);
|
|
35636
|
+
}
|
|
35637
|
+
if (error.httpStatus === 401 || error.httpStatus === 403) {
|
|
35638
|
+
throw FetchError.forbidden(error.httpStatus);
|
|
35639
|
+
}
|
|
35640
|
+
else if (error.httpStatus === 400 || error.httpStatus > 403) {
|
|
35641
|
+
throw FetchError.http(error.httpStatus);
|
|
35642
|
+
}
|
|
35643
|
+
else {
|
|
35644
|
+
throw FetchError.unknownType();
|
|
35645
|
+
}
|
|
35646
|
+
}
|
|
35647
|
+
else {
|
|
35648
|
+
throw FetchError.unknownType();
|
|
35649
|
+
}
|
|
35650
|
+
}
|
|
35651
|
+
}
|
|
35523
35652
|
class WfsReader extends BaseCacheReader {
|
|
35524
35653
|
constructor(url, wfsEndpoint, featureTypeName, cacheActive) {
|
|
35525
35654
|
super(url, cacheActive);
|
|
@@ -35548,7 +35677,7 @@ class WfsReader extends BaseCacheReader {
|
|
|
35548
35677
|
}));
|
|
35549
35678
|
}
|
|
35550
35679
|
static async createReader(wfsUrlEndpoint, featureTypeName) {
|
|
35551
|
-
const wfsEndpoint = await
|
|
35680
|
+
const wfsEndpoint = await getWfsEndpoint(wfsUrlEndpoint);
|
|
35552
35681
|
const featureTypes = wfsEndpoint.getFeatureTypes();
|
|
35553
35682
|
const featureType = wfsEndpoint.getFeatureTypeSummary(featureTypes.length === 1 && !featureTypeName
|
|
35554
35683
|
? featureTypes[0].name
|
|
@@ -35647,7 +35776,11 @@ async function openDataset(url, typeHint, options, cacheActive) {
|
|
|
35647
35776
|
return reader;
|
|
35648
35777
|
}
|
|
35649
35778
|
catch (e) {
|
|
35650
|
-
|
|
35779
|
+
//WfsReader may already raise a FetchError
|
|
35780
|
+
if (e instanceof FetchError)
|
|
35781
|
+
throw e;
|
|
35782
|
+
else
|
|
35783
|
+
throw FetchError.parsingFailed(e.message);
|
|
35651
35784
|
}
|
|
35652
35785
|
}
|
|
35653
35786
|
/**
|
|
@@ -35677,6 +35810,7 @@ function readDatasetHeaders(url) {
|
|
|
35677
35810
|
|
|
35678
35811
|
marker('wfs.unreachable.cors');
|
|
35679
35812
|
marker('wfs.unreachable.http');
|
|
35813
|
+
marker('dataset.error.forbidden');
|
|
35680
35814
|
marker('wfs.unreachable.unknown');
|
|
35681
35815
|
marker('wfs.featuretype.notfound');
|
|
35682
35816
|
marker('wfs.geojsongml.notsupported');
|
|
@@ -36515,7 +36649,7 @@ class ChartViewComponent {
|
|
|
36515
36649
|
this.changeDetector.detectChanges();
|
|
36516
36650
|
}
|
|
36517
36651
|
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 }); }
|
|
36518
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChartViewComponent, isStandalone: true, selector: "gn-ui-chart-view", inputs: { 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 <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices$ | async\"\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 <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 [data]=\"chartData$ | async\"\n [type]=\"chartType$.value\"\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: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: ChartComponent, selector: "gn-ui-chart", inputs: ["data", "labelProperty", "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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36652
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChartViewComponent, isStandalone: true, selector: "gn-ui-chart-view", inputs: { 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 <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices$ | async\"\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 <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 [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: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: ChartComponent, selector: "gn-ui-chart", inputs: ["data", "labelProperty", "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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36519
36653
|
}
|
|
36520
36654
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChartViewComponent, decorators: [{
|
|
36521
36655
|
type: Component,
|
|
@@ -36526,7 +36660,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
36526
36660
|
ChartComponent,
|
|
36527
36661
|
LoadingMaskComponent,
|
|
36528
36662
|
PopupAlertComponent,
|
|
36529
|
-
], standalone: true, 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 <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices$ | async\"\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 <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 [data]=\"chartData$ | async\"\n [type]=\"chartType$.value\"\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" }]
|
|
36663
|
+
], standalone: true, 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 <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices$ | async\"\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 <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 [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" }]
|
|
36530
36664
|
}], ctorParameters: () => [{ type: DataService }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { cacheActive: [{
|
|
36531
36665
|
type: Input
|
|
36532
36666
|
}], link: [{
|
|
@@ -36680,7 +36814,7 @@ class GeoTableViewComponent {
|
|
|
36680
36814
|
this.subscription.unsubscribe();
|
|
36681
36815
|
}
|
|
36682
36816
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GeoTableViewComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36683
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: GeoTableViewComponent, isStandalone: true, selector: "gn-ui-geo-table-view", inputs: { dataset: "dataset" }, viewQueries: [{ propertyName: "uiTable", first: true, predicate: ["table"], descendants: true }, { propertyName: "mapContainer", first: true, predicate: ["mapContainer"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-row h-full overflow-auto\">\n <gn-ui-data-table\n #table\n class=\"w-1/2 overflow-auto\"\n [dataset]=\"dataset\"\n [activeId]=\"selectionId\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-map-container\n #mapContainer\n class=\"w-1/2 h-full\"\n [context]=\"mapContext\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n ></gn-ui-map-container>\n <gn-ui-feature-detail\n style=\"width: 300px\"\n class=\"p-3 shrink-0 overflow-auto\"\n [feature]=\"selection\"\n ></gn-ui-feature-detail>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature"] }, { kind: "component", type: DataTableComponent, selector: "gn-ui-data-table", inputs: ["dataset", "activeId"], outputs: ["selected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36817
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: GeoTableViewComponent, isStandalone: true, selector: "gn-ui-geo-table-view", inputs: { dataset: "dataset" }, viewQueries: [{ propertyName: "uiTable", first: true, predicate: ["table"], descendants: true }, { propertyName: "mapContainer", first: true, predicate: ["mapContainer"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-row h-full overflow-auto\">\n <gn-ui-data-table\n #table\n class=\"w-1/2 overflow-auto\"\n [dataset]=\"dataset\"\n [activeId]=\"selectionId\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-map-container\n #mapContainer\n class=\"w-1/2 h-full\"\n [context]=\"mapContext\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n ></gn-ui-map-container>\n <gn-ui-feature-detail\n style=\"width: 300px\"\n class=\"p-3 shrink-0 overflow-auto\"\n [feature]=\"selection\"\n ></gn-ui-feature-detail>\n</div>\n", styles: [""], dependencies: [{ 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"] }, { kind: "component", type: DataTableComponent, selector: "gn-ui-data-table", inputs: ["dataset", "activeId"], outputs: ["selected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36684
36818
|
}
|
|
36685
36819
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GeoTableViewComponent, decorators: [{
|
|
36686
36820
|
type: Component,
|
|
@@ -36743,7 +36877,7 @@ class TableViewComponent {
|
|
|
36743
36877
|
this.loading = false;
|
|
36744
36878
|
}
|
|
36745
36879
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableViewComponent, deps: [{ token: DataService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36746
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableViewComponent, isStandalone: true, selector: "gn-ui-table-view", inputs: { cacheActive: "cacheActive", link: "link" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-data-table\n *ngIf=\"tableData$ | async as dataset\"\n class=\"overflow-auto grow\"\n [dataset]=\"dataset\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <
|
|
36880
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableViewComponent, isStandalone: true, selector: "gn-ui-table-view", inputs: { cacheActive: "cacheActive", link: "link" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-data-table\n *ngIf=\"tableData$ | async as dataset\"\n class=\"overflow-auto grow\"\n [dataset]=\"dataset\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <ng-content *ngIf=\"error\">\n <div class=\"border border-gray-300 rounded-lg bg-white h-full\"></div>\n <gn-ui-popup-alert\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 </ng-content>\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: DataTableComponent, selector: "gn-ui-data-table", inputs: ["dataset", "activeId"], outputs: ["selected"] }, { 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: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36747
36881
|
}
|
|
36748
36882
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableViewComponent, decorators: [{
|
|
36749
36883
|
type: Component,
|
|
@@ -36753,7 +36887,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
36753
36887
|
LoadingMaskComponent,
|
|
36754
36888
|
PopupAlertComponent,
|
|
36755
36889
|
TranslateModule,
|
|
36756
|
-
], standalone: true, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-data-table\n *ngIf=\"tableData$ | async as dataset\"\n class=\"overflow-auto grow\"\n [dataset]=\"dataset\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <
|
|
36890
|
+
], standalone: true, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-data-table\n *ngIf=\"tableData$ | async as dataset\"\n class=\"overflow-auto grow\"\n [dataset]=\"dataset\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <ng-content *ngIf=\"error\">\n <div class=\"border border-gray-300 rounded-lg bg-white h-full\"></div>\n <gn-ui-popup-alert\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 </ng-content>\n </div>\n</div>\n" }]
|
|
36757
36891
|
}], ctorParameters: () => [{ type: DataService }, { type: i1$1.TranslateService }], propDecorators: { cacheActive: [{
|
|
36758
36892
|
type: Input
|
|
36759
36893
|
}], link: [{
|
|
@@ -37713,15 +37847,13 @@ class MapViewComponent {
|
|
|
37713
37847
|
}
|
|
37714
37848
|
onLegendStatusChange(status) {
|
|
37715
37849
|
this.legendExists = status;
|
|
37716
|
-
if (!status) {
|
|
37717
|
-
this.showLegend = false;
|
|
37718
|
-
}
|
|
37719
37850
|
}
|
|
37720
|
-
constructor(mdViewFacade, mapUtils, dataService, changeRef) {
|
|
37851
|
+
constructor(mdViewFacade, mapUtils, dataService, changeRef, translateService) {
|
|
37721
37852
|
this.mdViewFacade = mdViewFacade;
|
|
37722
37853
|
this.mapUtils = mapUtils;
|
|
37723
37854
|
this.dataService = dataService;
|
|
37724
37855
|
this.changeRef = changeRef;
|
|
37856
|
+
this.translateService = translateService;
|
|
37725
37857
|
this.displaySource = true;
|
|
37726
37858
|
this.excludeWfs$ = new BehaviorSubject(false);
|
|
37727
37859
|
this.hidePreview = false;
|
|
@@ -37758,8 +37890,7 @@ class MapViewComponent {
|
|
|
37758
37890
|
this.loading = true;
|
|
37759
37891
|
this.error = null;
|
|
37760
37892
|
return this.getLayerFromLink(link).pipe(map$1((layer) => [layer]), catchError((e) => {
|
|
37761
|
-
this.
|
|
37762
|
-
console.warn(e.stack || e.message);
|
|
37893
|
+
this.handleError(e);
|
|
37763
37894
|
return of([]);
|
|
37764
37895
|
}), finalize(() => (this.loading = false)));
|
|
37765
37896
|
}));
|
|
@@ -37796,6 +37927,16 @@ class MapViewComponent {
|
|
|
37796
37927
|
}
|
|
37797
37928
|
this.changeRef.detectChanges();
|
|
37798
37929
|
}
|
|
37930
|
+
onSourceLoadError(error) {
|
|
37931
|
+
if (error.httpStatus === 403 || error.httpStatus === 401) {
|
|
37932
|
+
this.error = this.translateService.instant(`dataset.error.forbidden`);
|
|
37933
|
+
}
|
|
37934
|
+
else {
|
|
37935
|
+
this.error = this.translateService.instant(`dataset.error.http`, {
|
|
37936
|
+
info: error.httpStatus,
|
|
37937
|
+
});
|
|
37938
|
+
}
|
|
37939
|
+
}
|
|
37799
37940
|
resetSelection() {
|
|
37800
37941
|
if (this.selection) {
|
|
37801
37942
|
// FIXME: restore styling of selected feature
|
|
@@ -37835,8 +37976,26 @@ class MapViewComponent {
|
|
|
37835
37976
|
selectLinkToDisplay(link) {
|
|
37836
37977
|
this.selectedLinkIndex$.next(link);
|
|
37837
37978
|
}
|
|
37838
|
-
|
|
37839
|
-
|
|
37979
|
+
handleError(error) {
|
|
37980
|
+
if (error instanceof FetchError) {
|
|
37981
|
+
this.error = this.translateService.instant(`dataset.error.${error.type}`, {
|
|
37982
|
+
info: error.info,
|
|
37983
|
+
});
|
|
37984
|
+
console.warn(error.message);
|
|
37985
|
+
}
|
|
37986
|
+
else if (error instanceof Error) {
|
|
37987
|
+
this.error = this.translateService.instant(error.message);
|
|
37988
|
+
console.warn(error.stack || error);
|
|
37989
|
+
}
|
|
37990
|
+
else {
|
|
37991
|
+
this.error = this.translateService.instant(error);
|
|
37992
|
+
console.warn(error);
|
|
37993
|
+
}
|
|
37994
|
+
this.loading = false;
|
|
37995
|
+
this.changeRef.detectChanges();
|
|
37996
|
+
}
|
|
37997
|
+
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 }); }
|
|
37998
|
+
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", displaySource: "displaySource" }, viewQueries: [{ propertyName: "mapContainer", first: true, predicate: ["mapContainer"], descendants: true }], ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <div class=\"w-full flex justify-end\">\n <gn-ui-dropdown-selector\n [ngClass]=\"{ hidden: !displaySource }\"\n class=\"truncate p-1 -mx-1 mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n <gn-ui-external-viewer-button\n class=\"shrink-0 py-1 place-self-end\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\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 [feature]=\"selection\"></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\">Legend</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 >\n Legend\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"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { 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"] }, { 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 }); }
|
|
37840
37999
|
}
|
|
37841
38000
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapViewComponent, decorators: [{
|
|
37842
38001
|
type: Component,
|
|
@@ -37852,8 +38011,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37852
38011
|
ExternalViewerButtonComponent,
|
|
37853
38012
|
ButtonComponent,
|
|
37854
38013
|
MapLegendComponent,
|
|
37855
|
-
], viewProviders: [provideIcons({ matClose })], template: "<div class=\"w-full h-full flex flex-col p-1\">\n <div class=\"w-full flex justify-end\">\n <gn-ui-dropdown-selector\n [ngClass]=\"{ hidden: !displaySource }\"\n class=\"truncate p-1 -mx-1 mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n <gn-ui-external-viewer-button\n class=\"shrink-0 py-1 place-self-end\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\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 ></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 [feature]=\"selection\"></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\">Legend</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 >\n Legend\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" }]
|
|
37856
|
-
}], ctorParameters: () => [{ type: MdViewFacade }, { type: MapUtilsService }, { type: DataService }, { type: i0.ChangeDetectorRef }], propDecorators: { exceedsLimit: [{
|
|
38014
|
+
], viewProviders: [provideIcons({ matClose })], template: "<div class=\"w-full h-full flex flex-col p-1\">\n <div class=\"w-full flex justify-end\">\n <gn-ui-dropdown-selector\n [ngClass]=\"{ hidden: !displaySource }\"\n class=\"truncate p-1 -mx-1 mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n <gn-ui-external-viewer-button\n class=\"shrink-0 py-1 place-self-end\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\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 [feature]=\"selection\"></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\">Legend</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 >\n Legend\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" }]
|
|
38015
|
+
}], ctorParameters: () => [{ type: MdViewFacade }, { type: MapUtilsService }, { type: DataService }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { exceedsLimit: [{
|
|
37857
38016
|
type: Input
|
|
37858
38017
|
}], displaySource: [{
|
|
37859
38018
|
type: Input
|
|
@@ -39593,7 +39752,7 @@ class FormFieldMapContainerComponent {
|
|
|
39593
39752
|
return new GeoJSON().writeGeometryObject(geometry);
|
|
39594
39753
|
}
|
|
39595
39754
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldMapContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39596
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldMapContainerComponent, isStandalone: true, selector: "gn-ui-form-field-map-container", inputs: { spatialExtents: "spatialExtents" }, ngImport: i0, template: "<gn-ui-map-container [context]=\"mapContext$ | async\"></gn-ui-map-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39755
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldMapContainerComponent, isStandalone: true, selector: "gn-ui-form-field-map-container", inputs: { spatialExtents: "spatialExtents" }, ngImport: i0, template: "<gn-ui-map-container [context]=\"mapContext$ | async\"></gn-ui-map-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick", "sourceLoadError"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39597
39756
|
}
|
|
39598
39757
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldMapContainerComponent, decorators: [{
|
|
39599
39758
|
type: Component,
|