geonetwork-ui 2.6.0-dev.01d2b5fc0 → 2.6.0-dev.4fa0a0afc
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/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 +1 -0
- package/esm2022/translations/en.json +2 -1
- package/esm2022/translations/es.json +1 -0
- package/esm2022/translations/fr.json +1 -0
- package/esm2022/translations/it.json +1 -0
- package/esm2022/translations/nl.json +1 -0
- package/esm2022/translations/pt.json +1 -0
- package/fesm2022/geonetwork-ui.mjs +221 -75
- 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 +1 -0
- 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/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 +29 -1
- package/translations/de.json +1 -0
- package/translations/en.json +2 -1
- package/translations/es.json +1 -0
- package/translations/fr.json +1 -0
- package/translations/it.json +1 -0
- package/translations/nl.json +1 -0
- package/translations/pt.json +1 -0
- package/translations/sk.json +1 -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 }\"",
|
|
@@ -19213,8 +19213,9 @@ var en = {
|
|
|
19213
19213
|
"datahub.search.back": "Back",
|
|
19214
19214
|
"datahub.search.filter.all": "All",
|
|
19215
19215
|
"datahub.search.filter.generatedByAPI": "Generated by an API",
|
|
19216
|
-
"datahub.search.filter.generatedByWfs": "",
|
|
19216
|
+
"datahub.search.filter.generatedByWfs": "Generated by a WFS",
|
|
19217
19217
|
"datahub.search.filter.others": "Others",
|
|
19218
|
+
"dataset.error.forbidden": "Access to this resource is restricted",
|
|
19218
19219
|
"dataset.error.http": "The data could not be loaded because of an HTTP error: \"{ info }\"",
|
|
19219
19220
|
"dataset.error.network": "The data could not be loaded because of a network error or CORS limitations: \"{ info }\"",
|
|
19220
19221
|
"dataset.error.parse": "The data was loaded but could not be parsed: \"{ info }\"",
|
|
@@ -19760,6 +19761,7 @@ var es = {
|
|
|
19760
19761
|
"datahub.search.filter.generatedByAPI": "",
|
|
19761
19762
|
"datahub.search.filter.generatedByWfs": "",
|
|
19762
19763
|
"datahub.search.filter.others": "",
|
|
19764
|
+
"dataset.error.forbidden": "El acceso a este recurso está restringido",
|
|
19763
19765
|
"dataset.error.http": "",
|
|
19764
19766
|
"dataset.error.network": "",
|
|
19765
19767
|
"dataset.error.parse": "",
|
|
@@ -20305,6 +20307,7 @@ var fr = {
|
|
|
20305
20307
|
"datahub.search.filter.generatedByAPI": "généré par une API",
|
|
20306
20308
|
"datahub.search.filter.generatedByWfs": "généré par un WFS",
|
|
20307
20309
|
"datahub.search.filter.others": "Autres",
|
|
20310
|
+
"dataset.error.forbidden": "L’accès à cette ressource est restreint",
|
|
20308
20311
|
"dataset.error.http": "Le chargement des données a échoué en raison d'une erreur HTTP: \"{ info }\"",
|
|
20309
20312
|
"dataset.error.network": "Le chargement des données a échoué en raison d'une erreur réseau ou de limitations CORS: \"{ info }\"",
|
|
20310
20313
|
"dataset.error.parse": "Les données ont été chargées mais leur décodage a échoué: \"{ info }\"",
|
|
@@ -20850,6 +20853,7 @@ var it = {
|
|
|
20850
20853
|
"datahub.search.filter.generatedByAPI": "generato da un'API",
|
|
20851
20854
|
"datahub.search.filter.generatedByWfs": "generato da un WFS",
|
|
20852
20855
|
"datahub.search.filter.others": "Altri",
|
|
20856
|
+
"dataset.error.forbidden": "L'accesso a questa risorsa è limitato",
|
|
20853
20857
|
"dataset.error.http": "Il caricamento dei dati non è riuscito a causa di un errore HTTP: \"{info}\"",
|
|
20854
20858
|
"dataset.error.network": "Il caricamento dei dati non è riuscito a causa di un errore di rete o di limitazioni CORS: \"{info}\"",
|
|
20855
20859
|
"dataset.error.parse": "I dati sono stati caricati ma la decodifica non è riuscita: \"{info}\"",
|
|
@@ -21396,6 +21400,7 @@ var nl = {
|
|
|
21396
21400
|
"datahub.search.filter.generatedByAPI": "",
|
|
21397
21401
|
"datahub.search.filter.generatedByWfs": "",
|
|
21398
21402
|
"datahub.search.filter.others": "",
|
|
21403
|
+
"dataset.error.forbidden": "",
|
|
21399
21404
|
"dataset.error.http": "",
|
|
21400
21405
|
"dataset.error.network": "",
|
|
21401
21406
|
"dataset.error.parse": "",
|
|
@@ -21941,6 +21946,7 @@ var pt = {
|
|
|
21941
21946
|
"datahub.search.filter.generatedByAPI": "",
|
|
21942
21947
|
"datahub.search.filter.generatedByWfs": "",
|
|
21943
21948
|
"datahub.search.filter.others": "",
|
|
21949
|
+
"dataset.error.forbidden": "",
|
|
21944
21950
|
"dataset.error.http": "",
|
|
21945
21951
|
"dataset.error.network": "",
|
|
21946
21952
|
"dataset.error.parse": "",
|
|
@@ -23450,18 +23456,25 @@ class Gn4Repository {
|
|
|
23450
23456
|
.search('bucket', ['fcats'], JSON.stringify(this.gn4SearchHelper.getMetadataByIdPayload(uniqueIdentifier)))
|
|
23451
23457
|
.pipe(map$1((results) => results.hits.hits[0]), switchMap((record) => record ? this.gn4Mapper.readRecord(record) : of(null)));
|
|
23452
23458
|
}
|
|
23459
|
+
mapEmbeddedFeatureCatalog(featureTypes) {
|
|
23460
|
+
return {
|
|
23461
|
+
featureTypes: featureTypes.map((featureType) => ({
|
|
23462
|
+
name: featureType.typeName || '',
|
|
23463
|
+
definition: featureType.definition || '',
|
|
23464
|
+
attributes: Array.isArray(featureType.attributeTable)
|
|
23465
|
+
? featureType.attributeTable.map((attr) => ({
|
|
23466
|
+
name: attr.name,
|
|
23467
|
+
title: attr.definition,
|
|
23468
|
+
}))
|
|
23469
|
+
: [],
|
|
23470
|
+
})),
|
|
23471
|
+
};
|
|
23472
|
+
}
|
|
23453
23473
|
getFeatureCatalog(record, visited = new Set() // prevent looping
|
|
23454
23474
|
) {
|
|
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
|
-
});
|
|
23475
|
+
if (record.extras?.['featureTypes'] &&
|
|
23476
|
+
Array.isArray(record.extras['featureTypes'])) {
|
|
23477
|
+
return of(this.mapEmbeddedFeatureCatalog(record.extras['featureTypes']));
|
|
23465
23478
|
}
|
|
23466
23479
|
const featureCatalogIdentifier = record.extras['featureCatalogIdentifier'];
|
|
23467
23480
|
if (featureCatalogIdentifier && !visited.has(featureCatalogIdentifier)) {
|
|
@@ -24752,7 +24765,7 @@ const FORMATS = {
|
|
|
24752
24765
|
csv: {
|
|
24753
24766
|
extensions: ['csv'],
|
|
24754
24767
|
priority: 1,
|
|
24755
|
-
color: '#
|
|
24768
|
+
color: '#F6A924',
|
|
24756
24769
|
mimeTypes: ['text/csv', 'application/csv'],
|
|
24757
24770
|
},
|
|
24758
24771
|
excel: {
|
|
@@ -24764,7 +24777,7 @@ const FORMATS = {
|
|
|
24764
24777
|
'openxmlformats-officedocument',
|
|
24765
24778
|
],
|
|
24766
24779
|
priority: 2,
|
|
24767
|
-
color: '#
|
|
24780
|
+
color: '#FFDE10',
|
|
24768
24781
|
mimeTypes: [
|
|
24769
24782
|
'application/vnd.ms-excel',
|
|
24770
24783
|
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
|
@@ -24773,31 +24786,31 @@ const FORMATS = {
|
|
|
24773
24786
|
geojson: {
|
|
24774
24787
|
extensions: ['geojson'],
|
|
24775
24788
|
priority: 3,
|
|
24776
|
-
color: '#
|
|
24789
|
+
color: '#293C6F',
|
|
24777
24790
|
mimeTypes: ['application/geo+json', 'application/vnd.geo+json'],
|
|
24778
24791
|
},
|
|
24779
24792
|
json: {
|
|
24780
24793
|
extensions: ['json'],
|
|
24781
24794
|
priority: 3,
|
|
24782
|
-
color: '#
|
|
24795
|
+
color: '#84D0F0',
|
|
24783
24796
|
mimeTypes: ['application/json'],
|
|
24784
24797
|
},
|
|
24785
24798
|
shp: {
|
|
24786
24799
|
extensions: ['shp', 'shape', 'zipped-shapefile'],
|
|
24787
24800
|
priority: 4,
|
|
24788
|
-
color: '#
|
|
24801
|
+
color: '#009036',
|
|
24789
24802
|
mimeTypes: ['x-gis/x-shapefile'],
|
|
24790
24803
|
},
|
|
24791
24804
|
gml: {
|
|
24792
24805
|
extensions: ['gml'],
|
|
24793
24806
|
priority: 5,
|
|
24794
|
-
color: '#
|
|
24807
|
+
color: '#E75113',
|
|
24795
24808
|
mimeTypes: ['application/gml+xml', 'text/xml; subtype=gml'],
|
|
24796
24809
|
},
|
|
24797
24810
|
kml: {
|
|
24798
24811
|
extensions: ['kml', 'kmz'],
|
|
24799
24812
|
priority: 6,
|
|
24800
|
-
color: '#
|
|
24813
|
+
color: '#F4B5D0',
|
|
24801
24814
|
mimeTypes: [
|
|
24802
24815
|
'application/vnd.google-earth.kml+xml',
|
|
24803
24816
|
'application/vnd.google-earth.kmz',
|
|
@@ -24806,55 +24819,55 @@ const FORMATS = {
|
|
|
24806
24819
|
gpkg: {
|
|
24807
24820
|
extensions: ['gpkg', 'geopackage'],
|
|
24808
24821
|
priority: 7,
|
|
24809
|
-
color: '#
|
|
24822
|
+
color: '#7D5D9F',
|
|
24810
24823
|
mimeTypes: ['application/geopackage+sqlite3'],
|
|
24811
24824
|
},
|
|
24812
24825
|
zip: {
|
|
24813
24826
|
extensions: ['zip', 'tar.gz'],
|
|
24814
24827
|
priority: 8,
|
|
24815
|
-
color: '#
|
|
24828
|
+
color: '#B0CB52',
|
|
24816
24829
|
mimeTypes: ['application/zip', 'application/x-zip'],
|
|
24817
24830
|
},
|
|
24818
24831
|
pdf: {
|
|
24819
24832
|
extensions: ['pdf'],
|
|
24820
24833
|
priority: 9,
|
|
24821
|
-
color: '#
|
|
24834
|
+
color: '#49579E',
|
|
24822
24835
|
mimeTypes: ['application/pdf'],
|
|
24823
24836
|
},
|
|
24824
24837
|
jpg: {
|
|
24825
24838
|
extensions: ['jpg', 'jpeg', 'jfif', 'pjpeg', 'pjp'],
|
|
24826
24839
|
priority: 9,
|
|
24827
|
-
color: '#
|
|
24840
|
+
color: '#C4A98F',
|
|
24828
24841
|
mimeTypes: ['image/jpg'],
|
|
24829
24842
|
},
|
|
24830
24843
|
svg: {
|
|
24831
24844
|
extensions: ['svg'],
|
|
24832
24845
|
priority: 10,
|
|
24833
|
-
color: '#
|
|
24846
|
+
color: '#EB6D82',
|
|
24834
24847
|
mimeTypes: ['image/svg+xml'],
|
|
24835
24848
|
},
|
|
24836
24849
|
dxf: {
|
|
24837
24850
|
extensions: ['dxf'],
|
|
24838
24851
|
priority: 11,
|
|
24839
|
-
color: '#
|
|
24852
|
+
color: '#DCCD00',
|
|
24840
24853
|
mimeTypes: ['application/x-dxf', 'image/x-dxf'],
|
|
24841
24854
|
},
|
|
24842
24855
|
html: {
|
|
24843
24856
|
extensions: ['html', 'htm'],
|
|
24844
24857
|
priority: 12,
|
|
24845
|
-
color: '#
|
|
24858
|
+
color: '#C0C9B6',
|
|
24846
24859
|
mimeTypes: ['text/html'],
|
|
24847
24860
|
},
|
|
24848
24861
|
fgb: {
|
|
24849
24862
|
extensions: ['fgb', 'flatgeobuf'],
|
|
24850
24863
|
priority: 13,
|
|
24851
|
-
color: '#
|
|
24864
|
+
color: '#A8111C',
|
|
24852
24865
|
mimeTypes: ['application/flatgeobuf'],
|
|
24853
24866
|
},
|
|
24854
24867
|
jsonfg: {
|
|
24855
24868
|
extensions: ['jsonfg', 'jsonfgc'],
|
|
24856
24869
|
priority: 14,
|
|
24857
|
-
color: '#
|
|
24870
|
+
color: '#009EE0',
|
|
24858
24871
|
mimeTypes: [
|
|
24859
24872
|
'application/vnd.ogc.fg+json',
|
|
24860
24873
|
'application/vnd.ogc.fg+json;compatibility=geojson',
|
|
@@ -24925,9 +24938,11 @@ function mimeTypeToFormat(mimeType) {
|
|
|
24925
24938
|
return null;
|
|
24926
24939
|
}
|
|
24927
24940
|
function checkFileFormat(link, format) {
|
|
24928
|
-
return (('name' in link &&
|
|
24941
|
+
return (('name' in link &&
|
|
24942
|
+
new RegExp(`[./]${format}`, 'i').test(link.name.toLowerCase())) ||
|
|
24929
24943
|
('url' in link &&
|
|
24930
|
-
new RegExp(`[./]${format}`, 'i').test(link.url.toString()))
|
|
24944
|
+
new RegExp(`[./]${format}`, 'i').test(link.url.toString())) ||
|
|
24945
|
+
('name' in link && link.name.toLowerCase().includes(format)));
|
|
24931
24946
|
}
|
|
24932
24947
|
function getBadgeColor(linkFormat) {
|
|
24933
24948
|
for (const format in FORMATS) {
|
|
@@ -25480,11 +25495,11 @@ class CarouselComponent {
|
|
|
25480
25495
|
.on('select', this.refreshSteps);
|
|
25481
25496
|
}
|
|
25482
25497
|
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
|
|
25498
|
+
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
25499
|
}
|
|
25485
25500
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
25486
25501
|
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
|
|
25502
|
+
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
25503
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { carouselOverflowContainer: [{
|
|
25489
25504
|
type: ViewChild,
|
|
25490
25505
|
args: ['carouselOverflowContainer']
|
|
@@ -28640,9 +28655,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28640
28655
|
|
|
28641
28656
|
class ApiCardComponent {
|
|
28642
28657
|
constructor() {
|
|
28658
|
+
this.sizeClassMap = {
|
|
28659
|
+
L: 'gn-ui-card-l py-2 px-5 flex-row',
|
|
28660
|
+
M: 'gn-ui-card-m py-2 px-5 flex-row',
|
|
28661
|
+
S: 'gn-ui-card-s p-4 flex-col',
|
|
28662
|
+
XS: 'gn-ui-card-xs py-2 px-5 flex-row',
|
|
28663
|
+
};
|
|
28664
|
+
this.cardClass = '';
|
|
28643
28665
|
this.currentlyActive = false;
|
|
28644
28666
|
this.openRecordApiForm = new EventEmitter();
|
|
28645
28667
|
}
|
|
28668
|
+
set size(value) {
|
|
28669
|
+
this._size = value;
|
|
28670
|
+
this.cardClass = this.sizeClassMap[value];
|
|
28671
|
+
}
|
|
28672
|
+
get size() {
|
|
28673
|
+
return this._size;
|
|
28674
|
+
}
|
|
28675
|
+
get generatedText() {
|
|
28676
|
+
return this.link.accessServiceProtocol === 'wfs'
|
|
28677
|
+
? 'datahub.search.filter.generatedByWfs'
|
|
28678
|
+
: 'datahub.search.filter.generatedByAPI';
|
|
28679
|
+
}
|
|
28646
28680
|
ngOnInit() {
|
|
28647
28681
|
this.displayApiFormButton =
|
|
28648
28682
|
this.link.accessServiceProtocol === 'ogcFeatures' ||
|
|
@@ -28660,9 +28694,9 @@ class ApiCardComponent {
|
|
|
28660
28694
|
}
|
|
28661
28695
|
}
|
|
28662
28696
|
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
|
|
28697
|
+
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
28698
|
provideIcons({
|
|
28665
|
-
|
|
28699
|
+
iconoirSettings,
|
|
28666
28700
|
}),
|
|
28667
28701
|
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28668
28702
|
}
|
|
@@ -28676,13 +28710,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28676
28710
|
NgIcon,
|
|
28677
28711
|
], viewProviders: [
|
|
28678
28712
|
provideIcons({
|
|
28679
|
-
|
|
28713
|
+
iconoirSettings,
|
|
28680
28714
|
}),
|
|
28681
|
-
], template: "<div\n class=\"group flex
|
|
28715
|
+
], 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
28716
|
}], propDecorators: { link: [{
|
|
28683
28717
|
type: Input
|
|
28684
28718
|
}], currentLink: [{
|
|
28685
28719
|
type: Input
|
|
28720
|
+
}], size: [{
|
|
28721
|
+
type: Input
|
|
28686
28722
|
}], openRecordApiForm: [{
|
|
28687
28723
|
type: Output
|
|
28688
28724
|
}] } });
|
|
@@ -28743,15 +28779,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28743
28779
|
|
|
28744
28780
|
class DownloadItemComponent {
|
|
28745
28781
|
constructor() {
|
|
28782
|
+
this.sizeClassMap = {
|
|
28783
|
+
L: 'gn-ui-card-l py-2 px-5',
|
|
28784
|
+
M: 'gn-ui-card-m py-2 px-5',
|
|
28785
|
+
S: 'gn-ui-card-s p-4',
|
|
28786
|
+
XS: 'gn-ui-card-xs py-2 px-5',
|
|
28787
|
+
};
|
|
28788
|
+
this.cardClass = '';
|
|
28746
28789
|
this.exportUrl = new EventEmitter();
|
|
28747
28790
|
}
|
|
28791
|
+
set size(value) {
|
|
28792
|
+
this._size = value;
|
|
28793
|
+
this.cardClass = this.sizeClassMap[value];
|
|
28794
|
+
}
|
|
28795
|
+
get size() {
|
|
28796
|
+
return this._size;
|
|
28797
|
+
}
|
|
28748
28798
|
openUrl() {
|
|
28749
28799
|
this.exportUrl.emit(this.link.url.toString());
|
|
28750
28800
|
}
|
|
28751
28801
|
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
|
|
28802
|
+
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
28803
|
provideIcons({
|
|
28754
|
-
|
|
28804
|
+
iconoirDownload,
|
|
28755
28805
|
}),
|
|
28756
28806
|
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28757
28807
|
}
|
|
@@ -28759,9 +28809,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28759
28809
|
type: Component,
|
|
28760
28810
|
args: [{ selector: 'gn-ui-download-item', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, TranslateModule, NgIcon], standalone: true, viewProviders: [
|
|
28761
28811
|
provideIcons({
|
|
28762
|
-
|
|
28812
|
+
iconoirDownload,
|
|
28763
28813
|
}),
|
|
28764
|
-
], template: "<a\n href=\"{{ link.url }}\"\n target=\"_blank\"\n class=\"group flex justify-between card-shadow
|
|
28814
|
+
], 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
28815
|
}], propDecorators: { link: [{
|
|
28766
28816
|
type: Input
|
|
28767
28817
|
}], color: [{
|
|
@@ -28770,6 +28820,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28770
28820
|
type: Input
|
|
28771
28821
|
}], isFromApi: [{
|
|
28772
28822
|
type: Input
|
|
28823
|
+
}], size: [{
|
|
28824
|
+
type: Input
|
|
28773
28825
|
}], exportUrl: [{
|
|
28774
28826
|
type: Output
|
|
28775
28827
|
}] } });
|
|
@@ -28860,7 +28912,7 @@ class DownloadsListComponent {
|
|
|
28860
28912
|
link.accessServiceProtocol === 'ogcFeatures'));
|
|
28861
28913
|
}
|
|
28862
28914
|
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 mt-8 mb-6 sm:mt-12 sm:mb-2\"\n *ngIf=\"links && links.length > 0\"\n>\n <p\n class=\"font-title text-[28px] text-title font-medium mr-4 pb-4 text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </p>\n <div\n class=\"flex flex-wrap justify-start sm:justify-end sm:pb-4\"\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-50')\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 [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"], outputs: ["exportUrl"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28915
|
+
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 mt-8 mb-6 sm:mt-12 sm:mb-2\"\n *ngIf=\"links && links.length > 0\"\n>\n <p\n class=\"font-title text-[28px] text-title font-medium mr-4 pb-4 text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </p>\n <div\n class=\"flex flex-wrap justify-start sm:justify-end sm:pb-4\"\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-50')\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
28916
|
}
|
|
28865
28917
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DownloadsListComponent, decorators: [{
|
|
28866
28918
|
type: Component,
|
|
@@ -28869,7 +28921,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28869
28921
|
ButtonComponent,
|
|
28870
28922
|
DownloadItemComponent,
|
|
28871
28923
|
TranslateModule,
|
|
28872
|
-
], template: "<div\n class=\"flex flex-wrap justify-between mt-8 mb-6 sm:mt-12 sm:mb-2\"\n *ngIf=\"links && links.length > 0\"\n>\n <p\n class=\"font-title text-[28px] text-title font-medium mr-4 pb-4 text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </p>\n <div\n class=\"flex flex-wrap justify-start sm:justify-end sm:pb-4\"\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-50')\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 [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromApi]=\"isFromApi(link)\"\n ></gn-ui-download-item>\n</div>\n" }]
|
|
28924
|
+
], template: "<div\n class=\"flex flex-wrap justify-between mt-8 mb-6 sm:mt-12 sm:mb-2\"\n *ngIf=\"links && links.length > 0\"\n>\n <p\n class=\"font-title text-[28px] text-title font-medium mr-4 pb-4 text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </p>\n <div\n class=\"flex flex-wrap justify-start sm:justify-end sm:pb-4\"\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-50')\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
28925
|
}], ctorParameters: () => [{ type: i1$1.TranslateService }], propDecorators: { links: [{
|
|
28874
28926
|
type: Input
|
|
28875
28927
|
}] } });
|
|
@@ -29153,7 +29205,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29153
29205
|
|
|
29154
29206
|
class LinkCardComponent {
|
|
29155
29207
|
constructor() {
|
|
29156
|
-
this.
|
|
29208
|
+
this.sizeClassMap = {
|
|
29209
|
+
L: 'gn-ui-card-l py-2 px-5',
|
|
29210
|
+
M: 'gn-ui-card-m py-2 px-5',
|
|
29211
|
+
S: 'gn-ui-card-s p-4',
|
|
29212
|
+
XS: 'gn-ui-card-xs py-2 px-5',
|
|
29213
|
+
};
|
|
29214
|
+
this.cardClass = '';
|
|
29215
|
+
}
|
|
29216
|
+
set size(value) {
|
|
29217
|
+
this._size = value;
|
|
29218
|
+
this.cardClass = this.sizeClassMap[value];
|
|
29219
|
+
}
|
|
29220
|
+
get size() {
|
|
29221
|
+
return this._size;
|
|
29157
29222
|
}
|
|
29158
29223
|
get title() {
|
|
29159
29224
|
if (this.link.name && this.link.description) {
|
|
@@ -29161,25 +29226,31 @@ class LinkCardComponent {
|
|
|
29161
29226
|
}
|
|
29162
29227
|
return this.link.name || this.link.description || '';
|
|
29163
29228
|
}
|
|
29229
|
+
getLinkFormat(link) {
|
|
29230
|
+
return getFileFormat(link);
|
|
29231
|
+
}
|
|
29232
|
+
getLinkColor(link) {
|
|
29233
|
+
return getBadgeColor(getFileFormat(link));
|
|
29234
|
+
}
|
|
29164
29235
|
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",
|
|
29236
|
+
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
29237
|
provideIcons({
|
|
29167
29238
|
matOpenInNew,
|
|
29168
29239
|
}),
|
|
29169
29240
|
provideNgIconsConfig({ size: '1.5em' }),
|
|
29170
|
-
], ngImport: i0, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-
|
|
29241
|
+
], 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
29242
|
}
|
|
29172
29243
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LinkCardComponent, decorators: [{
|
|
29173
29244
|
type: Component,
|
|
29174
|
-
args: [{ selector: 'gn-ui-link-card', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIconComponent], providers: [
|
|
29245
|
+
args: [{ selector: 'gn-ui-link-card', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIconComponent, TranslateModule], providers: [
|
|
29175
29246
|
provideIcons({
|
|
29176
29247
|
matOpenInNew,
|
|
29177
29248
|
}),
|
|
29178
29249
|
provideNgIconsConfig({ size: '1.5em' }),
|
|
29179
|
-
], template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-
|
|
29250
|
+
], 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
29251
|
}], propDecorators: { link: [{
|
|
29181
29252
|
type: Input
|
|
29182
|
-
}],
|
|
29253
|
+
}], size: [{
|
|
29183
29254
|
type: Input
|
|
29184
29255
|
}] } });
|
|
29185
29256
|
|
|
@@ -29626,7 +29697,7 @@ class RecordApiFormComponent {
|
|
|
29626
29697
|
maxFeatures: limit !== '-1' ? Number(limit) : undefined,
|
|
29627
29698
|
limit: limit !== '-1' ? Number(limit) : -1,
|
|
29628
29699
|
offset: offset !== '' ? Number(offset) : undefined,
|
|
29629
|
-
outputCrs: format
|
|
29700
|
+
outputCrs: format.toLowerCase().indexOf('json') > -1 ? 'EPSG:4326' : undefined,
|
|
29630
29701
|
};
|
|
29631
29702
|
if (this.endpoint instanceof WfsEndpoint) {
|
|
29632
29703
|
delete options.limit;
|
|
@@ -29634,6 +29705,7 @@ class RecordApiFormComponent {
|
|
|
29634
29705
|
return this.endpoint.getFeatureUrl(this.apiFeatureType, options);
|
|
29635
29706
|
}
|
|
29636
29707
|
else {
|
|
29708
|
+
delete options.outputCrs;
|
|
29637
29709
|
return await this.endpoint.getCollectionItemsUrl(this.apiFeatureType, options);
|
|
29638
29710
|
}
|
|
29639
29711
|
}
|
|
@@ -32988,6 +33060,15 @@ class MapContainerComponent {
|
|
|
32988
33060
|
}
|
|
32989
33061
|
return this._mapClick;
|
|
32990
33062
|
}
|
|
33063
|
+
get sourceLoadError() {
|
|
33064
|
+
if (!this._sourceLoadError) {
|
|
33065
|
+
this.openlayersMap.then((olMap) => {
|
|
33066
|
+
listen(olMap, SourceLoadErrorType, (error) => this._sourceLoadError.emit(error));
|
|
33067
|
+
});
|
|
33068
|
+
this._sourceLoadError = new EventEmitter();
|
|
33069
|
+
}
|
|
33070
|
+
return this._sourceLoadError;
|
|
33071
|
+
}
|
|
32991
33072
|
constructor(doNotUseDefaultBasemap, basemapLayers, mapViewConstraints) {
|
|
32992
33073
|
this.doNotUseDefaultBasemap = doNotUseDefaultBasemap;
|
|
32993
33074
|
this.basemapLayers = basemapLayers;
|
|
@@ -33048,7 +33129,7 @@ class MapContainerComponent {
|
|
|
33048
33129
|
return processed;
|
|
33049
33130
|
}
|
|
33050
33131
|
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: [
|
|
33132
|
+
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
33133
|
provideIcons({ matSwipeOutline }),
|
|
33053
33134
|
provideNgIconsConfig({
|
|
33054
33135
|
size: '1.5em',
|
|
@@ -33080,6 +33161,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
33080
33161
|
type: Output
|
|
33081
33162
|
}], mapClick: [{
|
|
33082
33163
|
type: Output
|
|
33164
|
+
}], sourceLoadError: [{
|
|
33165
|
+
type: Output
|
|
33083
33166
|
}], container: [{
|
|
33084
33167
|
type: ViewChild,
|
|
33085
33168
|
args: ['map']
|
|
@@ -33116,6 +33199,10 @@ class MapLegendComponent {
|
|
|
33116
33199
|
this.legendStatusChange.emit(true);
|
|
33117
33200
|
}
|
|
33118
33201
|
}
|
|
33202
|
+
else {
|
|
33203
|
+
this.legendHTML = false;
|
|
33204
|
+
this.legendStatusChange.emit(false);
|
|
33205
|
+
}
|
|
33119
33206
|
}
|
|
33120
33207
|
}
|
|
33121
33208
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapLegendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -33178,7 +33265,7 @@ class MapStateContainerComponent {
|
|
|
33178
33265
|
this.mapFacade.selectFeatures(features);
|
|
33179
33266
|
}
|
|
33180
33267
|
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 }); }
|
|
33268
|
+
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
33269
|
}
|
|
33183
33270
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapStateContainerComponent, decorators: [{
|
|
33184
33271
|
type: Component,
|
|
@@ -33194,7 +33281,7 @@ class MapUtilsService {
|
|
|
33194
33281
|
return null;
|
|
33195
33282
|
}
|
|
33196
33283
|
// extend all the spatial extents into an including bbox
|
|
33197
|
-
|
|
33284
|
+
return record.spatialExtents.reduce((prev, curr) => {
|
|
33198
33285
|
if ('bbox' in curr)
|
|
33199
33286
|
return extend(prev, curr.bbox);
|
|
33200
33287
|
else if ('geometry' in curr) {
|
|
@@ -33203,7 +33290,6 @@ class MapUtilsService {
|
|
|
33203
33290
|
}
|
|
33204
33291
|
return prev;
|
|
33205
33292
|
}, [Infinity, Infinity, -Infinity, -Infinity]);
|
|
33206
|
-
return transformExtent(totalExtent, 'EPSG:4326', 'EPSG:3857');
|
|
33207
33293
|
}
|
|
33208
33294
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapUtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
33209
33295
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapUtilsService, providedIn: 'root' }); }
|
|
@@ -34921,6 +35007,9 @@ ${body}`
|
|
|
34921
35007
|
: `${code}`;
|
|
34922
35008
|
return new FetchError('http', info, code);
|
|
34923
35009
|
}
|
|
35010
|
+
static forbidden(code) {
|
|
35011
|
+
return new FetchError('forbidden', '', code);
|
|
35012
|
+
}
|
|
34924
35013
|
static corsOrNetwork(message) {
|
|
34925
35014
|
return new FetchError('network', message, 0);
|
|
34926
35015
|
}
|
|
@@ -35520,6 +35609,33 @@ class GmlReader extends BaseFileReader {
|
|
|
35520
35609
|
}
|
|
35521
35610
|
}
|
|
35522
35611
|
|
|
35612
|
+
async function getWfsEndpoint(wfsUrl) {
|
|
35613
|
+
try {
|
|
35614
|
+
return await new WfsEndpoint(wfsUrl).isReady();
|
|
35615
|
+
}
|
|
35616
|
+
catch (e) {
|
|
35617
|
+
if (e instanceof Error &&
|
|
35618
|
+
'isCrossOriginRelated' in e &&
|
|
35619
|
+
'httpStatus' in e) {
|
|
35620
|
+
const error = e;
|
|
35621
|
+
if (error.isCrossOriginRelated === true) {
|
|
35622
|
+
throw new Error(`wfs.unreachable.cors`);
|
|
35623
|
+
}
|
|
35624
|
+
if (error.httpStatus === 401 || error.httpStatus === 403) {
|
|
35625
|
+
throw FetchError.forbidden(error.httpStatus);
|
|
35626
|
+
}
|
|
35627
|
+
else if (error.httpStatus === 400 || error.httpStatus > 403) {
|
|
35628
|
+
throw FetchError.http(error.httpStatus);
|
|
35629
|
+
}
|
|
35630
|
+
else {
|
|
35631
|
+
throw FetchError.unknownType();
|
|
35632
|
+
}
|
|
35633
|
+
}
|
|
35634
|
+
else {
|
|
35635
|
+
throw FetchError.unknownType();
|
|
35636
|
+
}
|
|
35637
|
+
}
|
|
35638
|
+
}
|
|
35523
35639
|
class WfsReader extends BaseCacheReader {
|
|
35524
35640
|
constructor(url, wfsEndpoint, featureTypeName, cacheActive) {
|
|
35525
35641
|
super(url, cacheActive);
|
|
@@ -35548,7 +35664,7 @@ class WfsReader extends BaseCacheReader {
|
|
|
35548
35664
|
}));
|
|
35549
35665
|
}
|
|
35550
35666
|
static async createReader(wfsUrlEndpoint, featureTypeName) {
|
|
35551
|
-
const wfsEndpoint = await
|
|
35667
|
+
const wfsEndpoint = await getWfsEndpoint(wfsUrlEndpoint);
|
|
35552
35668
|
const featureTypes = wfsEndpoint.getFeatureTypes();
|
|
35553
35669
|
const featureType = wfsEndpoint.getFeatureTypeSummary(featureTypes.length === 1 && !featureTypeName
|
|
35554
35670
|
? featureTypes[0].name
|
|
@@ -35647,7 +35763,11 @@ async function openDataset(url, typeHint, options, cacheActive) {
|
|
|
35647
35763
|
return reader;
|
|
35648
35764
|
}
|
|
35649
35765
|
catch (e) {
|
|
35650
|
-
|
|
35766
|
+
//WfsReader may already raise a FetchError
|
|
35767
|
+
if (e instanceof FetchError)
|
|
35768
|
+
throw e;
|
|
35769
|
+
else
|
|
35770
|
+
throw FetchError.parsingFailed(e.message);
|
|
35651
35771
|
}
|
|
35652
35772
|
}
|
|
35653
35773
|
/**
|
|
@@ -35677,6 +35797,7 @@ function readDatasetHeaders(url) {
|
|
|
35677
35797
|
|
|
35678
35798
|
marker('wfs.unreachable.cors');
|
|
35679
35799
|
marker('wfs.unreachable.http');
|
|
35800
|
+
marker('dataset.error.forbidden');
|
|
35680
35801
|
marker('wfs.unreachable.unknown');
|
|
35681
35802
|
marker('wfs.featuretype.notfound');
|
|
35682
35803
|
marker('wfs.geojsongml.notsupported');
|
|
@@ -36515,7 +36636,7 @@ class ChartViewComponent {
|
|
|
36515
36636
|
this.changeDetector.detectChanges();
|
|
36516
36637
|
}
|
|
36517
36638
|
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 }); }
|
|
36639
|
+
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
36640
|
}
|
|
36520
36641
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChartViewComponent, decorators: [{
|
|
36521
36642
|
type: Component,
|
|
@@ -36526,7 +36647,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
36526
36647
|
ChartComponent,
|
|
36527
36648
|
LoadingMaskComponent,
|
|
36528
36649
|
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" }]
|
|
36650
|
+
], 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
36651
|
}], ctorParameters: () => [{ type: DataService }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { cacheActive: [{
|
|
36531
36652
|
type: Input
|
|
36532
36653
|
}], link: [{
|
|
@@ -36680,7 +36801,7 @@ class GeoTableViewComponent {
|
|
|
36680
36801
|
this.subscription.unsubscribe();
|
|
36681
36802
|
}
|
|
36682
36803
|
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 }); }
|
|
36804
|
+
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
36805
|
}
|
|
36685
36806
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GeoTableViewComponent, decorators: [{
|
|
36686
36807
|
type: Component,
|
|
@@ -36743,7 +36864,7 @@ class TableViewComponent {
|
|
|
36743
36864
|
this.loading = false;
|
|
36744
36865
|
}
|
|
36745
36866
|
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 <
|
|
36867
|
+
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
36868
|
}
|
|
36748
36869
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableViewComponent, decorators: [{
|
|
36749
36870
|
type: Component,
|
|
@@ -36753,7 +36874,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
36753
36874
|
LoadingMaskComponent,
|
|
36754
36875
|
PopupAlertComponent,
|
|
36755
36876
|
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 <
|
|
36877
|
+
], 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
36878
|
}], ctorParameters: () => [{ type: DataService }, { type: i1$1.TranslateService }], propDecorators: { cacheActive: [{
|
|
36758
36879
|
type: Input
|
|
36759
36880
|
}], link: [{
|
|
@@ -37713,15 +37834,13 @@ class MapViewComponent {
|
|
|
37713
37834
|
}
|
|
37714
37835
|
onLegendStatusChange(status) {
|
|
37715
37836
|
this.legendExists = status;
|
|
37716
|
-
if (!status) {
|
|
37717
|
-
this.showLegend = false;
|
|
37718
|
-
}
|
|
37719
37837
|
}
|
|
37720
|
-
constructor(mdViewFacade, mapUtils, dataService, changeRef) {
|
|
37838
|
+
constructor(mdViewFacade, mapUtils, dataService, changeRef, translateService) {
|
|
37721
37839
|
this.mdViewFacade = mdViewFacade;
|
|
37722
37840
|
this.mapUtils = mapUtils;
|
|
37723
37841
|
this.dataService = dataService;
|
|
37724
37842
|
this.changeRef = changeRef;
|
|
37843
|
+
this.translateService = translateService;
|
|
37725
37844
|
this.displaySource = true;
|
|
37726
37845
|
this.excludeWfs$ = new BehaviorSubject(false);
|
|
37727
37846
|
this.hidePreview = false;
|
|
@@ -37758,8 +37877,7 @@ class MapViewComponent {
|
|
|
37758
37877
|
this.loading = true;
|
|
37759
37878
|
this.error = null;
|
|
37760
37879
|
return this.getLayerFromLink(link).pipe(map$1((layer) => [layer]), catchError((e) => {
|
|
37761
|
-
this.
|
|
37762
|
-
console.warn(e.stack || e.message);
|
|
37880
|
+
this.handleError(e);
|
|
37763
37881
|
return of([]);
|
|
37764
37882
|
}), finalize(() => (this.loading = false)));
|
|
37765
37883
|
}));
|
|
@@ -37796,6 +37914,16 @@ class MapViewComponent {
|
|
|
37796
37914
|
}
|
|
37797
37915
|
this.changeRef.detectChanges();
|
|
37798
37916
|
}
|
|
37917
|
+
onSourceLoadError(error) {
|
|
37918
|
+
if (error.httpStatus === 403 || error.httpStatus === 401) {
|
|
37919
|
+
this.error = this.translateService.instant(`dataset.error.forbidden`);
|
|
37920
|
+
}
|
|
37921
|
+
else {
|
|
37922
|
+
this.error = this.translateService.instant(`dataset.error.http`, {
|
|
37923
|
+
info: error.httpStatus,
|
|
37924
|
+
});
|
|
37925
|
+
}
|
|
37926
|
+
}
|
|
37799
37927
|
resetSelection() {
|
|
37800
37928
|
if (this.selection) {
|
|
37801
37929
|
// FIXME: restore styling of selected feature
|
|
@@ -37835,8 +37963,26 @@ class MapViewComponent {
|
|
|
37835
37963
|
selectLinkToDisplay(link) {
|
|
37836
37964
|
this.selectedLinkIndex$.next(link);
|
|
37837
37965
|
}
|
|
37838
|
-
|
|
37839
|
-
|
|
37966
|
+
handleError(error) {
|
|
37967
|
+
if (error instanceof FetchError) {
|
|
37968
|
+
this.error = this.translateService.instant(`dataset.error.${error.type}`, {
|
|
37969
|
+
info: error.info,
|
|
37970
|
+
});
|
|
37971
|
+
console.warn(error.message);
|
|
37972
|
+
}
|
|
37973
|
+
else if (error instanceof Error) {
|
|
37974
|
+
this.error = this.translateService.instant(error.message);
|
|
37975
|
+
console.warn(error.stack || error);
|
|
37976
|
+
}
|
|
37977
|
+
else {
|
|
37978
|
+
this.error = this.translateService.instant(error);
|
|
37979
|
+
console.warn(error);
|
|
37980
|
+
}
|
|
37981
|
+
this.loading = false;
|
|
37982
|
+
this.changeRef.detectChanges();
|
|
37983
|
+
}
|
|
37984
|
+
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 }); }
|
|
37985
|
+
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
37986
|
}
|
|
37841
37987
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapViewComponent, decorators: [{
|
|
37842
37988
|
type: Component,
|
|
@@ -37852,8 +37998,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37852
37998
|
ExternalViewerButtonComponent,
|
|
37853
37999
|
ButtonComponent,
|
|
37854
38000
|
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: [{
|
|
38001
|
+
], 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" }]
|
|
38002
|
+
}], ctorParameters: () => [{ type: MdViewFacade }, { type: MapUtilsService }, { type: DataService }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { exceedsLimit: [{
|
|
37857
38003
|
type: Input
|
|
37858
38004
|
}], displaySource: [{
|
|
37859
38005
|
type: Input
|
|
@@ -39593,7 +39739,7 @@ class FormFieldMapContainerComponent {
|
|
|
39593
39739
|
return new GeoJSON().writeGeometryObject(geometry);
|
|
39594
39740
|
}
|
|
39595
39741
|
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 }); }
|
|
39742
|
+
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
39743
|
}
|
|
39598
39744
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldMapContainerComponent, decorators: [{
|
|
39599
39745
|
type: Component,
|