geonetwork-ui 2.8.0-dev.7ecc6ee1d → 2.8.0-dev.82b7031fa
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/libs/api/metadata-converter/src/lib/common/resource-types.mjs +6 -1
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +6 -4
- package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +2 -2
- package/esm2022/libs/feature/dataviz/src/index.mjs +1 -2
- 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 +9 -2
- package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +3 -3
- package/esm2022/libs/feature/map/src/lib/map-state-container/map-state-container.component.mjs +2 -2
- package/esm2022/libs/feature/record/src/index.mjs +2 -1
- package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +1 -1
- package/esm2022/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.mjs +4 -4
- package/esm2022/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.mjs +1 -1
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +3 -3
- package/esm2022/libs/feature/record/src/lib/stac-view/stac-view.component.mjs +230 -0
- package/esm2022/libs/feature/record/src/lib/stac-view/utils.mjs +26 -0
- package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +2 -2
- package/esm2022/libs/feature/search/src/lib/constants.mjs +2 -2
- package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +36 -22
- package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +2 -1
- package/esm2022/libs/ui/elements/src/index.mjs +2 -1
- package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +1 -1
- package/esm2022/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.mjs +18 -0
- package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
- package/esm2022/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/date-picker/date-picker.component.mjs +21 -7
- package/esm2022/libs/ui/inputs/src/lib/date-range-dropdown/date-range-dropdown.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.mjs +35 -0
- package/esm2022/libs/ui/layout/src/lib/paginable.interface.mjs +1 -1
- package/esm2022/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +13 -5
- package/esm2022/libs/ui/map/src/lib/components/map-container/map-container.component.mjs +86 -32
- package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +1 -1
- package/esm2022/libs/ui/widgets/src/lib/loading-mask/loading-mask.component.mjs +3 -3
- package/esm2022/translations/de.json +7 -3
- package/esm2022/translations/en.json +7 -3
- package/esm2022/translations/es.json +7 -3
- package/esm2022/translations/fr.json +7 -3
- package/esm2022/translations/it.json +7 -3
- package/esm2022/translations/nl.json +7 -3
- package/esm2022/translations/pt.json +7 -3
- package/esm2022/translations/sk.json +7 -3
- package/fesm2022/{geonetwork-ui-date-locales-MYnkDJ5h.mjs → geonetwork-ui-date-locales-DhlIiWpT.mjs} +2 -2
- package/fesm2022/{geonetwork-ui-date-locales-MYnkDJ5h.mjs.map → geonetwork-ui-date-locales-DhlIiWpT.mjs.map} +1 -1
- package/fesm2022/geonetwork-ui.mjs +563 -197
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts +3 -0
- package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
- package/libs/feature/dataviz/src/index.d.ts +0 -1
- package/libs/feature/dataviz/src/index.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts +2 -1
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
- package/libs/feature/record/src/index.d.ts +1 -0
- package/libs/feature/record/src/index.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +5 -1
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.d.ts +12 -5
- package/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.d.ts +3 -1
- package/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +5 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/stac-view/stac-view.component.d.ts +53 -0
- package/libs/feature/record/src/lib/stac-view/stac-view.component.d.ts.map +1 -0
- package/libs/feature/record/src/lib/stac-view/utils.d.ts +7 -0
- package/libs/feature/record/src/lib/stac-view/utils.d.ts.map +1 -0
- package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
- package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
- package/libs/ui/elements/src/index.d.ts +1 -0
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.d.ts +8 -0
- package/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.d.ts.map +1 -0
- package/libs/ui/inputs/src/index.d.ts +1 -0
- package/libs/ui/inputs/src/index.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts +5 -0
- package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.d.ts +12 -0
- package/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.d.ts.map +1 -0
- package/libs/ui/layout/src/lib/paginable.interface.d.ts +3 -3
- package/libs/ui/layout/src/lib/paginable.interface.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts +2 -1
- package/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts.map +1 -1
- package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts +24 -14
- package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/libs/api/metadata-converter/src/lib/common/resource-types.ts +11 -0
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +11 -3
- package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +1 -1
- package/src/libs/feature/dataviz/src/index.ts +0 -1
- package/src/libs/feature/dataviz/src/lib/service/data.service.ts +14 -0
- package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +1 -0
- package/src/libs/feature/record/src/index.ts +1 -0
- package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +5 -1
- package/src/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.ts +10 -8
- package/src/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.ts +1 -1
- package/src/libs/feature/record/src/lib/map-view/map-view.component.html +1 -2
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +5 -2
- package/src/libs/feature/record/src/lib/stac-view/stac-view.component.css +8 -0
- package/src/libs/feature/record/src/lib/stac-view/stac-view.component.html +87 -0
- package/src/libs/feature/record/src/lib/stac-view/stac-view.component.ts +339 -0
- package/src/libs/feature/record/src/lib/stac-view/utils.ts +57 -0
- package/src/libs/feature/record/src/lib/state/mdview.effects.ts +1 -1
- package/src/libs/feature/search/src/lib/constants.ts +1 -1
- package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +1 -0
- package/src/libs/feature/search/src/lib/utils/service/fields.ts +37 -33
- package/src/libs/ui/elements/src/index.ts +1 -0
- package/src/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.html +13 -0
- package/src/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.ts +15 -0
- package/src/libs/ui/inputs/src/index.ts +1 -0
- package/src/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.html +3 -3
- package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.ts +17 -1
- package/src/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.css +0 -0
- package/src/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.html +15 -0
- package/src/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.ts +41 -0
- package/src/libs/ui/layout/src/lib/paginable.interface.ts +3 -3
- package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.html +12 -6
- package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.ts +4 -1
- package/src/libs/ui/map/src/lib/components/map-container/map-container.component.html +16 -14
- package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +144 -65
- package/translations/de.json +7 -3
- package/translations/en.json +7 -3
- package/translations/es.json +7 -3
- package/translations/fr.json +7 -3
- package/translations/it.json +7 -3
- package/translations/nl.json +7 -3
- package/translations/pt.json +7 -3
- package/translations/sk.json +7 -3
- package/esm2022/libs/feature/dataviz/src/lib/stac-view/stac-view.component.mjs +0 -51
- package/libs/feature/dataviz/src/lib/stac-view/stac-view.component.d.ts +0 -16
- package/libs/feature/dataviz/src/lib/stac-view/stac-view.component.d.ts.map +0 -1
- package/src/libs/feature/dataviz/src/lib/stac-view/stac-view.component.html +0 -40
- package/src/libs/feature/dataviz/src/lib/stac-view/stac-view.component.ts +0 -62
- /package/src/libs/{feature/dataviz/src/lib/stac-view/stac-view.component.css → ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.css} +0 -0
|
@@ -2,9 +2,11 @@ import {
|
|
|
2
2
|
AfterViewInit,
|
|
3
3
|
ChangeDetectionStrategy,
|
|
4
4
|
Component,
|
|
5
|
+
DestroyRef,
|
|
5
6
|
ElementRef,
|
|
6
7
|
EventEmitter,
|
|
7
8
|
Inject,
|
|
9
|
+
inject,
|
|
8
10
|
Input,
|
|
9
11
|
OnChanges,
|
|
10
12
|
Output,
|
|
@@ -13,6 +15,7 @@ import {
|
|
|
13
15
|
} from '@angular/core'
|
|
14
16
|
import { fromEvent, merge, Observable, of, timer } from 'rxjs'
|
|
15
17
|
import { delay, map, startWith, switchMap } from 'rxjs/operators'
|
|
18
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop'
|
|
16
19
|
import { CommonModule } from '@angular/common'
|
|
17
20
|
import { TranslateDirective } from '@ngx-translate/core'
|
|
18
21
|
import {
|
|
@@ -24,10 +27,13 @@ import {
|
|
|
24
27
|
FeaturesHoverEventType,
|
|
25
28
|
MapClickEvent,
|
|
26
29
|
MapClickEventType,
|
|
30
|
+
MapExtentChangeEvent,
|
|
31
|
+
MapExtentChangeEventType,
|
|
27
32
|
MapContext,
|
|
28
33
|
MapContextLayer,
|
|
29
34
|
MapContextLayerXyz,
|
|
30
35
|
MapContextView,
|
|
36
|
+
MapEventsByType,
|
|
31
37
|
SourceLoadErrorEvent,
|
|
32
38
|
SourceLoadErrorType,
|
|
33
39
|
} from '@geospatial-sdk/core'
|
|
@@ -49,6 +55,7 @@ import {
|
|
|
49
55
|
provideNgIconsConfig,
|
|
50
56
|
} from '@ng-icons/core'
|
|
51
57
|
import { matSwipeOutline } from '@ng-icons/material-icons/outline'
|
|
58
|
+
import { transformExtent } from 'ol/proj'
|
|
52
59
|
|
|
53
60
|
const DEFAULT_BASEMAP_LAYER: MapContextLayerXyz = {
|
|
54
61
|
type: 'xyz',
|
|
@@ -61,6 +68,11 @@ const DEFAULT_VIEW: MapContextView = {
|
|
|
61
68
|
zoom: 2,
|
|
62
69
|
}
|
|
63
70
|
|
|
71
|
+
interface MapViewConstraints {
|
|
72
|
+
maxZoom?: number
|
|
73
|
+
maxExtent?: Extent
|
|
74
|
+
}
|
|
75
|
+
|
|
64
76
|
@Component({
|
|
65
77
|
selector: 'gn-ui-map-container',
|
|
66
78
|
templateUrl: './map-container.component.html',
|
|
@@ -78,86 +90,151 @@ const DEFAULT_VIEW: MapContextView = {
|
|
|
78
90
|
export class MapContainerComponent implements AfterViewInit, OnChanges {
|
|
79
91
|
@Input() context: MapContext | null
|
|
80
92
|
|
|
81
|
-
|
|
82
|
-
|
|
93
|
+
@ViewChild('map') container: ElementRef
|
|
94
|
+
|
|
95
|
+
private olMap: OlMap
|
|
96
|
+
private olMapResolver: (value: OlMap) => void
|
|
97
|
+
private destroyRef: DestroyRef
|
|
98
|
+
|
|
99
|
+
displayMessage$: Observable<boolean>
|
|
100
|
+
openlayersMap = new Promise<OlMap>((resolve) => {
|
|
101
|
+
this.olMapResolver = resolve
|
|
102
|
+
})
|
|
103
|
+
|
|
104
|
+
// These events only get registered on the map if they are used
|
|
105
|
+
_featuresClick: EventEmitter<Feature[]> = null
|
|
106
|
+
_featuresHover: EventEmitter<Feature[]> = null
|
|
107
|
+
_mapClick: EventEmitter<[number, number]> = null
|
|
108
|
+
_extentChange: EventEmitter<Extent> = null
|
|
109
|
+
_sourceLoadError: EventEmitter<SourceLoadErrorEvent> = null
|
|
110
|
+
_resolvedExtentChange: EventEmitter<Extent> = null
|
|
111
|
+
|
|
83
112
|
@Output() get featuresClick() {
|
|
84
113
|
if (!this._featuresClick) {
|
|
85
|
-
this.
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
)
|
|
92
|
-
})
|
|
114
|
+
this.setupEventListener(
|
|
115
|
+
FeaturesClickEventType,
|
|
116
|
+
(event: FeaturesClickEvent) => {
|
|
117
|
+
this._featuresClick.emit(event.features)
|
|
118
|
+
}
|
|
119
|
+
)
|
|
93
120
|
this._featuresClick = new EventEmitter<Feature[]>()
|
|
94
121
|
}
|
|
95
122
|
return this._featuresClick
|
|
96
123
|
}
|
|
97
|
-
|
|
124
|
+
|
|
98
125
|
@Output() get featuresHover() {
|
|
99
126
|
if (!this._featuresHover) {
|
|
100
|
-
this.
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
)
|
|
107
|
-
})
|
|
127
|
+
this.setupEventListener(
|
|
128
|
+
FeaturesHoverEventType,
|
|
129
|
+
(event: FeaturesHoverEvent) => {
|
|
130
|
+
this._featuresHover.emit(event.features)
|
|
131
|
+
}
|
|
132
|
+
)
|
|
108
133
|
this._featuresHover = new EventEmitter<Feature[]>()
|
|
109
134
|
}
|
|
110
135
|
return this._featuresHover
|
|
111
136
|
}
|
|
112
|
-
|
|
137
|
+
|
|
113
138
|
@Output() get mapClick() {
|
|
114
139
|
if (!this._mapClick) {
|
|
115
|
-
this.
|
|
116
|
-
|
|
117
|
-
this._mapClick.emit(coordinate)
|
|
118
|
-
)
|
|
140
|
+
this.setupEventListener(MapClickEventType, (event: MapClickEvent) => {
|
|
141
|
+
this._mapClick.emit(event.coordinate)
|
|
119
142
|
})
|
|
120
143
|
this._mapClick = new EventEmitter<[number, number]>()
|
|
121
144
|
}
|
|
122
145
|
return this._mapClick
|
|
123
146
|
}
|
|
124
|
-
|
|
147
|
+
|
|
148
|
+
@Output() get extentChange() {
|
|
149
|
+
if (!this._extentChange) {
|
|
150
|
+
this.setupEventListener(
|
|
151
|
+
MapExtentChangeEventType,
|
|
152
|
+
(event: MapExtentChangeEvent) => {
|
|
153
|
+
this._extentChange.emit(event.extent as Extent)
|
|
154
|
+
}
|
|
155
|
+
)
|
|
156
|
+
this._extentChange = new EventEmitter<Extent>()
|
|
157
|
+
}
|
|
158
|
+
return this._extentChange
|
|
159
|
+
}
|
|
160
|
+
|
|
125
161
|
@Output() get sourceLoadError() {
|
|
126
162
|
if (!this._sourceLoadError) {
|
|
127
|
-
this.
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
163
|
+
this.setupEventListener(
|
|
164
|
+
SourceLoadErrorType,
|
|
165
|
+
(event: SourceLoadErrorEvent) => {
|
|
166
|
+
this._sourceLoadError.emit(event)
|
|
167
|
+
}
|
|
168
|
+
)
|
|
132
169
|
this._sourceLoadError = new EventEmitter<SourceLoadErrorEvent>()
|
|
133
170
|
}
|
|
134
171
|
return this._sourceLoadError
|
|
135
172
|
}
|
|
136
173
|
|
|
137
|
-
@
|
|
138
|
-
|
|
139
|
-
|
|
174
|
+
@Output() get resolvedExtentChange() {
|
|
175
|
+
if (!this._resolvedExtentChange) {
|
|
176
|
+
this._resolvedExtentChange = new EventEmitter<Extent>()
|
|
177
|
+
}
|
|
178
|
+
return this._resolvedExtentChange
|
|
179
|
+
}
|
|
140
180
|
|
|
141
181
|
constructor(
|
|
142
182
|
@Inject(DO_NOT_USE_DEFAULT_BASEMAP) private doNotUseDefaultBasemap: boolean,
|
|
143
183
|
@Inject(BASEMAP_LAYERS) private basemapLayers: MapContextLayer[],
|
|
144
184
|
@Inject(MAP_VIEW_CONSTRAINTS)
|
|
145
|
-
private mapViewConstraints:
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
) {}
|
|
185
|
+
private mapViewConstraints: MapViewConstraints
|
|
186
|
+
) {
|
|
187
|
+
this.destroyRef = inject(DestroyRef)
|
|
188
|
+
}
|
|
150
189
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
190
|
+
calculateCurrentMapExtent(): Extent {
|
|
191
|
+
const extent = this.olMap.getView().calculateExtent(this.olMap.getSize())
|
|
192
|
+
const reprojectedExtent = transformExtent(
|
|
193
|
+
extent,
|
|
194
|
+
this.olMap.getView().getProjection(),
|
|
195
|
+
'EPSG:4326'
|
|
196
|
+
)
|
|
197
|
+
|
|
198
|
+
return reprojectedExtent as Extent
|
|
199
|
+
}
|
|
155
200
|
|
|
156
201
|
async ngAfterViewInit() {
|
|
157
202
|
this.olMap = await createMapFromContext(
|
|
158
203
|
this.processContext(this.context),
|
|
159
204
|
this.container.nativeElement
|
|
160
205
|
)
|
|
206
|
+
if (this._resolvedExtentChange) {
|
|
207
|
+
this._resolvedExtentChange.emit(this.calculateCurrentMapExtent())
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
this.setupDisplayMessageObservable()
|
|
211
|
+
this.olMapResolver(this.olMap)
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
async ngOnChanges(changes: SimpleChanges) {
|
|
215
|
+
if ('context' in changes && !changes['context'].isFirstChange()) {
|
|
216
|
+
const diff = computeMapContextDiff(
|
|
217
|
+
this.processContext(changes['context'].currentValue),
|
|
218
|
+
this.processContext(changes['context'].previousValue)
|
|
219
|
+
)
|
|
220
|
+
await applyContextDiffToMap(this.olMap, diff)
|
|
221
|
+
|
|
222
|
+
if (this._resolvedExtentChange && diff.viewChanges) {
|
|
223
|
+
this._resolvedExtentChange.emit(this.calculateCurrentMapExtent())
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
private setupEventListener(
|
|
229
|
+
eventType: keyof MapEventsByType,
|
|
230
|
+
handler: (event: MapEventsByType[typeof eventType]) => void
|
|
231
|
+
) {
|
|
232
|
+
this.openlayersMap.then((olMap: OlMap) => {
|
|
233
|
+
listen(olMap, eventType, handler)
|
|
234
|
+
})
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
private setupDisplayMessageObservable() {
|
|
161
238
|
this.displayMessage$ = merge(
|
|
162
239
|
fromEvent(this.olMap, 'mapmuted').pipe(map(() => true)),
|
|
163
240
|
fromEvent(this.olMap, 'movestart').pipe(map(() => false)),
|
|
@@ -171,32 +248,25 @@ export class MapContainerComponent implements AfterViewInit, OnChanges {
|
|
|
171
248
|
delay(400)
|
|
172
249
|
)
|
|
173
250
|
: of(false)
|
|
174
|
-
)
|
|
251
|
+
),
|
|
252
|
+
takeUntilDestroyed(this.destroyRef)
|
|
175
253
|
)
|
|
176
|
-
this.olMapResolver(this.olMap)
|
|
177
254
|
}
|
|
178
255
|
|
|
179
|
-
|
|
180
|
-
if ('context' in changes && !changes['context'].isFirstChange()) {
|
|
181
|
-
const diff = computeMapContextDiff(
|
|
182
|
-
this.processContext(changes['context'].currentValue),
|
|
183
|
-
this.processContext(changes['context'].previousValue)
|
|
184
|
-
)
|
|
185
|
-
await applyContextDiffToMap(this.olMap, diff)
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
// This will apply basemap layers & view constraints
|
|
190
|
-
processContext(context: MapContext): MapContext {
|
|
256
|
+
private processContext(context: MapContext): MapContext {
|
|
191
257
|
const processed = context
|
|
192
258
|
? { ...context, view: context.view ?? DEFAULT_VIEW }
|
|
193
259
|
: { layers: [], view: DEFAULT_VIEW }
|
|
260
|
+
|
|
261
|
+
// Prepend with default basemap and basemap layers
|
|
194
262
|
if (this.basemapLayers.length) {
|
|
195
263
|
processed.layers = [...this.basemapLayers, ...processed.layers]
|
|
196
264
|
}
|
|
197
265
|
if (!this.doNotUseDefaultBasemap) {
|
|
198
266
|
processed.layers = [DEFAULT_BASEMAP_LAYER, ...processed.layers]
|
|
199
267
|
}
|
|
268
|
+
|
|
269
|
+
// Apply view constraints
|
|
200
270
|
if (this.mapViewConstraints.maxZoom) {
|
|
201
271
|
processed.view = {
|
|
202
272
|
maxZoom: this.mapViewConstraints.maxZoom,
|
|
@@ -209,20 +279,29 @@ export class MapContainerComponent implements AfterViewInit, OnChanges {
|
|
|
209
279
|
...processed.view,
|
|
210
280
|
}
|
|
211
281
|
}
|
|
282
|
+
|
|
212
283
|
if (
|
|
213
284
|
processed.view &&
|
|
214
|
-
|
|
215
|
-
|
|
285
|
+
'zoom' in processed.view &&
|
|
286
|
+
'center' in processed.view
|
|
216
287
|
) {
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
288
|
+
return processed
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
if (processed.view && 'extent' in processed.view) {
|
|
292
|
+
return processed
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
// Ensure valid view
|
|
296
|
+
if (this.mapViewConstraints.maxExtent) {
|
|
297
|
+
processed.view = {
|
|
298
|
+
extent: this.mapViewConstraints.maxExtent,
|
|
299
|
+
...processed.view,
|
|
224
300
|
}
|
|
301
|
+
} else {
|
|
302
|
+
processed.view = { ...DEFAULT_VIEW, ...processed.view }
|
|
225
303
|
}
|
|
304
|
+
|
|
226
305
|
return processed
|
|
227
306
|
}
|
|
228
307
|
}
|
package/translations/de.json
CHANGED
|
@@ -62,6 +62,9 @@
|
|
|
62
62
|
"dataset.error.restrictedAccess": "",
|
|
63
63
|
"dataset.error.unknown": "Die Daten können nicht angezeigt werden: \"{ info }\"",
|
|
64
64
|
"dataset.error.unsupportedType": "Der folgende Inhaltstyp wird nicht unterstützt: \"{ info }\"",
|
|
65
|
+
"daterange.filter.from": "",
|
|
66
|
+
"daterange.filter.period": "",
|
|
67
|
+
"daterange.filter.to": "",
|
|
65
68
|
"domain.contact.role.author": "",
|
|
66
69
|
"domain.contact.role.collaborator": "",
|
|
67
70
|
"domain.contact.role.contributor": "",
|
|
@@ -397,6 +400,7 @@
|
|
|
397
400
|
"pagination.nextPage": "Nächste Seite",
|
|
398
401
|
"pagination.page": "Seite",
|
|
399
402
|
"pagination.pageOf": "von",
|
|
403
|
+
"pagination.previousPage": "Vorherige Seite",
|
|
400
404
|
"record.action.delete": "Löschen",
|
|
401
405
|
"record.action.download": "Herunterladen",
|
|
402
406
|
"record.action.duplicate": "",
|
|
@@ -597,6 +601,7 @@
|
|
|
597
601
|
"search.filters.producerOrg": "",
|
|
598
602
|
"search.filters.publicationYear": "Veröffentlichungsjahr",
|
|
599
603
|
"search.filters.publisherOrg": "",
|
|
604
|
+
"search.filters.recordKind": "Type",
|
|
600
605
|
"search.filters.recordKind.all": "Alle",
|
|
601
606
|
"search.filters.recordKind.dataset": "Datensätze",
|
|
602
607
|
"search.filters.recordKind.reuse": "Wiederverwendungen",
|
|
@@ -635,10 +640,9 @@
|
|
|
635
640
|
"service.metadata.spatialExtent": "",
|
|
636
641
|
"share.tab.permalink": "Teilen",
|
|
637
642
|
"share.tab.webComponent": "Integrieren",
|
|
638
|
-
"stac.filter.
|
|
639
|
-
"stac.filter.period": "",
|
|
643
|
+
"stac.filter.enable": "",
|
|
640
644
|
"stac.filter.reset": "",
|
|
641
|
-
"stac.
|
|
645
|
+
"stac.results.noResults": "Ihre Suchfilter lieferten keine Ergebnisse",
|
|
642
646
|
"table.loading.data": "Daten werden geladen...",
|
|
643
647
|
"table.object.count": "Objekte in diesem Datensatz",
|
|
644
648
|
"table.paginator.firstPage": "Erste Seite",
|
package/translations/en.json
CHANGED
|
@@ -62,6 +62,9 @@
|
|
|
62
62
|
"dataset.error.restrictedAccess": "Access to this resource is restricted",
|
|
63
63
|
"dataset.error.unknown": "The data cannot be displayed: \"{ info }\"",
|
|
64
64
|
"dataset.error.unsupportedType": "The following content type is unsupported: \"{ info }\"",
|
|
65
|
+
"daterange.filter.from": "From",
|
|
66
|
+
"daterange.filter.period": "Period",
|
|
67
|
+
"daterange.filter.to": "To",
|
|
65
68
|
"domain.contact.role.author": "Author",
|
|
66
69
|
"domain.contact.role.collaborator": "Collaborator",
|
|
67
70
|
"domain.contact.role.contributor": "Contributor",
|
|
@@ -397,6 +400,7 @@
|
|
|
397
400
|
"pagination.nextPage": "Next page",
|
|
398
401
|
"pagination.page": "Page",
|
|
399
402
|
"pagination.pageOf": "of",
|
|
403
|
+
"pagination.previousPage": "Previous page",
|
|
400
404
|
"record.action.delete": "Delete",
|
|
401
405
|
"record.action.download": "Download",
|
|
402
406
|
"record.action.duplicate": "Duplicate",
|
|
@@ -597,6 +601,7 @@
|
|
|
597
601
|
"search.filters.producerOrg": "Producer",
|
|
598
602
|
"search.filters.publicationYear": "Publication year",
|
|
599
603
|
"search.filters.publisherOrg": "Publisher",
|
|
604
|
+
"search.filters.recordKind": "Type",
|
|
600
605
|
"search.filters.recordKind.all": "All",
|
|
601
606
|
"search.filters.recordKind.dataset": "Datasets",
|
|
602
607
|
"search.filters.recordKind.reuse": "Reuses",
|
|
@@ -635,10 +640,9 @@
|
|
|
635
640
|
"service.metadata.spatialExtent": "Spatial extent",
|
|
636
641
|
"share.tab.permalink": "Share",
|
|
637
642
|
"share.tab.webComponent": "Integrate",
|
|
638
|
-
"stac.filter.
|
|
639
|
-
"stac.filter.period": "Period",
|
|
643
|
+
"stac.filter.enable": "Enable dynamic filter on spatial extent",
|
|
640
644
|
"stac.filter.reset": "Reset filters",
|
|
641
|
-
"stac.
|
|
645
|
+
"stac.results.noResults": "Your search filters did not match any items",
|
|
642
646
|
"table.loading.data": "Loading data...",
|
|
643
647
|
"table.object.count": "Objects in this dataset",
|
|
644
648
|
"table.paginator.firstPage": "First page",
|
package/translations/es.json
CHANGED
|
@@ -62,6 +62,9 @@
|
|
|
62
62
|
"dataset.error.restrictedAccess": "",
|
|
63
63
|
"dataset.error.unknown": "",
|
|
64
64
|
"dataset.error.unsupportedType": "",
|
|
65
|
+
"daterange.filter.from": "",
|
|
66
|
+
"daterange.filter.period": "",
|
|
67
|
+
"daterange.filter.to": "",
|
|
65
68
|
"domain.contact.role.author": "",
|
|
66
69
|
"domain.contact.role.collaborator": "",
|
|
67
70
|
"domain.contact.role.contributor": "",
|
|
@@ -397,6 +400,7 @@
|
|
|
397
400
|
"pagination.nextPage": "",
|
|
398
401
|
"pagination.page": "",
|
|
399
402
|
"pagination.pageOf": "",
|
|
403
|
+
"pagination.previousPage": "",
|
|
400
404
|
"record.action.delete": "",
|
|
401
405
|
"record.action.download": "",
|
|
402
406
|
"record.action.duplicate": "",
|
|
@@ -597,6 +601,7 @@
|
|
|
597
601
|
"search.filters.producerOrg": "",
|
|
598
602
|
"search.filters.publicationYear": "",
|
|
599
603
|
"search.filters.publisherOrg": "",
|
|
604
|
+
"search.filters.recordKind": "Typo",
|
|
600
605
|
"search.filters.recordKind.all": "Todos",
|
|
601
606
|
"search.filters.recordKind.dataset": "",
|
|
602
607
|
"search.filters.recordKind.reuse": "",
|
|
@@ -635,10 +640,9 @@
|
|
|
635
640
|
"service.metadata.spatialExtent": "",
|
|
636
641
|
"share.tab.permalink": "",
|
|
637
642
|
"share.tab.webComponent": "",
|
|
638
|
-
"stac.filter.
|
|
639
|
-
"stac.filter.period": "",
|
|
643
|
+
"stac.filter.enable": "",
|
|
640
644
|
"stac.filter.reset": "",
|
|
641
|
-
"stac.
|
|
645
|
+
"stac.results.noResults": "",
|
|
642
646
|
"table.loading.data": "",
|
|
643
647
|
"table.object.count": "",
|
|
644
648
|
"table.paginator.firstPage": "Primera página",
|
package/translations/fr.json
CHANGED
|
@@ -62,6 +62,9 @@
|
|
|
62
62
|
"dataset.error.restrictedAccess": "L’accès à cette ressource est restreint",
|
|
63
63
|
"dataset.error.unknown": "Les données ne peuvent être affichées: \"{ info }\"",
|
|
64
64
|
"dataset.error.unsupportedType": "Le type de contenu suivant n'est pas pris en charge: \"{ info }\"",
|
|
65
|
+
"daterange.filter.from": "Du",
|
|
66
|
+
"daterange.filter.period": "Choix de la période",
|
|
67
|
+
"daterange.filter.to": "Au",
|
|
65
68
|
"domain.contact.role.author": "Auteur",
|
|
66
69
|
"domain.contact.role.collaborator": "Collaborateur",
|
|
67
70
|
"domain.contact.role.contributor": "Contributeur",
|
|
@@ -397,6 +400,7 @@
|
|
|
397
400
|
"pagination.nextPage": "Page suivante",
|
|
398
401
|
"pagination.page": "Page",
|
|
399
402
|
"pagination.pageOf": "sur",
|
|
403
|
+
"pagination.previousPage": "Page précédente",
|
|
400
404
|
"record.action.delete": "Supprimer",
|
|
401
405
|
"record.action.download": "Télécharger",
|
|
402
406
|
"record.action.duplicate": "Dupliquer",
|
|
@@ -597,6 +601,7 @@
|
|
|
597
601
|
"search.filters.producerOrg": "Producteur",
|
|
598
602
|
"search.filters.publicationYear": "Année de publication",
|
|
599
603
|
"search.filters.publisherOrg": "Distributeur",
|
|
604
|
+
"search.filters.recordKind": "Type",
|
|
600
605
|
"search.filters.recordKind.all": "Tous",
|
|
601
606
|
"search.filters.recordKind.dataset": "Jeux de données",
|
|
602
607
|
"search.filters.recordKind.reuse": "Réutilisations",
|
|
@@ -635,10 +640,9 @@
|
|
|
635
640
|
"service.metadata.spatialExtent": "Etendue spatiale",
|
|
636
641
|
"share.tab.permalink": "Partager",
|
|
637
642
|
"share.tab.webComponent": "Intégrer",
|
|
638
|
-
"stac.filter.
|
|
639
|
-
"stac.filter.period": "Choix de la période",
|
|
643
|
+
"stac.filter.enable": "Activer le filtre dynamique sur l’emprise spatiale",
|
|
640
644
|
"stac.filter.reset": "Réinitialiser les filtres",
|
|
641
|
-
"stac.
|
|
645
|
+
"stac.results.noResults": "Vos filtres ne permettent pas d’afficher de résultats",
|
|
642
646
|
"table.loading.data": "Chargement des données...",
|
|
643
647
|
"table.object.count": "enregistrements dans ce jeu de données",
|
|
644
648
|
"table.paginator.firstPage": "Première page",
|
package/translations/it.json
CHANGED
|
@@ -62,6 +62,9 @@
|
|
|
62
62
|
"dataset.error.restrictedAccess": "L'accesso a questa risorsa è limitato",
|
|
63
63
|
"dataset.error.unknown": "Impossibile visualizzare i dati: \"{info}\"",
|
|
64
64
|
"dataset.error.unsupportedType": "Il seguente tipo di contenuto non è supportato: \"{info}\"",
|
|
65
|
+
"daterange.filter.from": "",
|
|
66
|
+
"daterange.filter.period": "",
|
|
67
|
+
"daterange.filter.to": "",
|
|
65
68
|
"domain.contact.role.author": "Autore",
|
|
66
69
|
"domain.contact.role.collaborator": "Collaboratore",
|
|
67
70
|
"domain.contact.role.contributor": "Collaboratore",
|
|
@@ -397,6 +400,7 @@
|
|
|
397
400
|
"pagination.nextPage": "Pagina successiva",
|
|
398
401
|
"pagination.page": "pagina",
|
|
399
402
|
"pagination.pageOf": "di",
|
|
403
|
+
"pagination.previousPage": "",
|
|
400
404
|
"record.action.delete": "Elimina",
|
|
401
405
|
"record.action.download": "Scarica",
|
|
402
406
|
"record.action.duplicate": "Duplicato",
|
|
@@ -597,6 +601,7 @@
|
|
|
597
601
|
"search.filters.producerOrg": "Produttore",
|
|
598
602
|
"search.filters.publicationYear": "Anno di pubblicazione",
|
|
599
603
|
"search.filters.publisherOrg": "Distributore",
|
|
604
|
+
"search.filters.recordKind": "",
|
|
600
605
|
"search.filters.recordKind.all": "Tutti",
|
|
601
606
|
"search.filters.recordKind.dataset": "Dataset",
|
|
602
607
|
"search.filters.recordKind.reuse": "Riutilizzi",
|
|
@@ -635,10 +640,9 @@
|
|
|
635
640
|
"service.metadata.spatialExtent": "Estensione spaziale",
|
|
636
641
|
"share.tab.permalink": "Condividere",
|
|
637
642
|
"share.tab.webComponent": "Incorporare",
|
|
638
|
-
"stac.filter.
|
|
639
|
-
"stac.filter.period": "",
|
|
643
|
+
"stac.filter.enable": "",
|
|
640
644
|
"stac.filter.reset": "",
|
|
641
|
-
"stac.
|
|
645
|
+
"stac.results.noResults": "",
|
|
642
646
|
"table.loading.data": "Caricamento dei dati...",
|
|
643
647
|
"table.object.count": "record in questi dati",
|
|
644
648
|
"table.paginator.firstPage": "Prima pagina",
|
package/translations/nl.json
CHANGED
|
@@ -62,6 +62,9 @@
|
|
|
62
62
|
"dataset.error.restrictedAccess": "",
|
|
63
63
|
"dataset.error.unknown": "",
|
|
64
64
|
"dataset.error.unsupportedType": "",
|
|
65
|
+
"daterange.filter.from": "",
|
|
66
|
+
"daterange.filter.period": "",
|
|
67
|
+
"daterange.filter.to": "",
|
|
65
68
|
"domain.contact.role.author": "",
|
|
66
69
|
"domain.contact.role.collaborator": "",
|
|
67
70
|
"domain.contact.role.contributor": "",
|
|
@@ -397,6 +400,7 @@
|
|
|
397
400
|
"pagination.nextPage": "",
|
|
398
401
|
"pagination.page": "",
|
|
399
402
|
"pagination.pageOf": "",
|
|
403
|
+
"pagination.previousPage": "",
|
|
400
404
|
"record.action.delete": "",
|
|
401
405
|
"record.action.download": "",
|
|
402
406
|
"record.action.duplicate": "",
|
|
@@ -597,6 +601,7 @@
|
|
|
597
601
|
"search.filters.producerOrg": "",
|
|
598
602
|
"search.filters.publicationYear": "",
|
|
599
603
|
"search.filters.publisherOrg": "",
|
|
604
|
+
"search.filters.recordKind": "",
|
|
600
605
|
"search.filters.recordKind.all": "Alles",
|
|
601
606
|
"search.filters.recordKind.dataset": "",
|
|
602
607
|
"search.filters.recordKind.reuse": "",
|
|
@@ -635,10 +640,9 @@
|
|
|
635
640
|
"service.metadata.spatialExtent": "",
|
|
636
641
|
"share.tab.permalink": "",
|
|
637
642
|
"share.tab.webComponent": "",
|
|
638
|
-
"stac.filter.
|
|
639
|
-
"stac.filter.period": "",
|
|
643
|
+
"stac.filter.enable": "",
|
|
640
644
|
"stac.filter.reset": "",
|
|
641
|
-
"stac.
|
|
645
|
+
"stac.results.noResults": "",
|
|
642
646
|
"table.loading.data": "",
|
|
643
647
|
"table.object.count": "",
|
|
644
648
|
"table.paginator.firstPage": "",
|
package/translations/pt.json
CHANGED
|
@@ -62,6 +62,9 @@
|
|
|
62
62
|
"dataset.error.restrictedAccess": "",
|
|
63
63
|
"dataset.error.unknown": "",
|
|
64
64
|
"dataset.error.unsupportedType": "",
|
|
65
|
+
"daterange.filter.from": "",
|
|
66
|
+
"daterange.filter.period": "",
|
|
67
|
+
"daterange.filter.to": "",
|
|
65
68
|
"domain.contact.role.author": "",
|
|
66
69
|
"domain.contact.role.collaborator": "",
|
|
67
70
|
"domain.contact.role.contributor": "",
|
|
@@ -397,6 +400,7 @@
|
|
|
397
400
|
"pagination.nextPage": "",
|
|
398
401
|
"pagination.page": "",
|
|
399
402
|
"pagination.pageOf": "",
|
|
403
|
+
"pagination.previousPage": "",
|
|
400
404
|
"record.action.delete": "",
|
|
401
405
|
"record.action.download": "",
|
|
402
406
|
"record.action.duplicate": "",
|
|
@@ -597,6 +601,7 @@
|
|
|
597
601
|
"search.filters.producerOrg": "",
|
|
598
602
|
"search.filters.publicationYear": "",
|
|
599
603
|
"search.filters.publisherOrg": "",
|
|
604
|
+
"search.filters.recordKind": "",
|
|
600
605
|
"search.filters.recordKind.all": "Todos",
|
|
601
606
|
"search.filters.recordKind.dataset": "",
|
|
602
607
|
"search.filters.recordKind.reuse": "",
|
|
@@ -635,10 +640,9 @@
|
|
|
635
640
|
"service.metadata.spatialExtent": "",
|
|
636
641
|
"share.tab.permalink": "",
|
|
637
642
|
"share.tab.webComponent": "",
|
|
638
|
-
"stac.filter.
|
|
639
|
-
"stac.filter.period": "",
|
|
643
|
+
"stac.filter.enable": "",
|
|
640
644
|
"stac.filter.reset": "",
|
|
641
|
-
"stac.
|
|
645
|
+
"stac.results.noResults": "",
|
|
642
646
|
"table.loading.data": "",
|
|
643
647
|
"table.object.count": "",
|
|
644
648
|
"table.paginator.firstPage": "",
|
package/translations/sk.json
CHANGED
|
@@ -62,6 +62,9 @@
|
|
|
62
62
|
"dataset.error.restrictedAccess": "",
|
|
63
63
|
"dataset.error.unknown": "Dáta nie je možné zobraziť: \"{ info }\"",
|
|
64
64
|
"dataset.error.unsupportedType": "Nepodporovaný typ obsahu: \"{ info }\"",
|
|
65
|
+
"daterange.filter.from": "",
|
|
66
|
+
"daterange.filter.period": "",
|
|
67
|
+
"daterange.filter.to": "",
|
|
65
68
|
"domain.contact.role.author": "",
|
|
66
69
|
"domain.contact.role.collaborator": "",
|
|
67
70
|
"domain.contact.role.contributor": "",
|
|
@@ -397,6 +400,7 @@
|
|
|
397
400
|
"pagination.nextPage": "Ďalšia stránka",
|
|
398
401
|
"pagination.page": "strana",
|
|
399
402
|
"pagination.pageOf": "z",
|
|
403
|
+
"pagination.previousPage": "",
|
|
400
404
|
"record.action.delete": "",
|
|
401
405
|
"record.action.download": "Stiahnuť",
|
|
402
406
|
"record.action.duplicate": "",
|
|
@@ -597,6 +601,7 @@
|
|
|
597
601
|
"search.filters.producerOrg": "",
|
|
598
602
|
"search.filters.publicationYear": "Rok zverejnenia",
|
|
599
603
|
"search.filters.publisherOrg": "",
|
|
604
|
+
"search.filters.recordKind": "",
|
|
600
605
|
"search.filters.recordKind.all": "Všetky",
|
|
601
606
|
"search.filters.recordKind.dataset": "",
|
|
602
607
|
"search.filters.recordKind.reuse": "",
|
|
@@ -635,10 +640,9 @@
|
|
|
635
640
|
"service.metadata.spatialExtent": "",
|
|
636
641
|
"share.tab.permalink": "Zdieľať",
|
|
637
642
|
"share.tab.webComponent": "Integrovať",
|
|
638
|
-
"stac.filter.
|
|
639
|
-
"stac.filter.period": "",
|
|
643
|
+
"stac.filter.enable": "",
|
|
640
644
|
"stac.filter.reset": "",
|
|
641
|
-
"stac.
|
|
645
|
+
"stac.results.noResults": "",
|
|
642
646
|
"table.loading.data": "Načítanie údajov...",
|
|
643
647
|
"table.object.count": "objekty v tomto súbore údajov",
|
|
644
648
|
"table.paginator.firstPage": "",
|