geonetwork-ui 2.8.0-dev.1f70ea679 → 2.8.0-dev.27e1de86f
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/dcat-ap/dcat-ap.converter.mjs +3 -3
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +24 -1
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +7 -7
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +3 -2
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -3
- package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +1 -2
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- 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 +26 -8
- package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +3 -3
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +23 -3
- package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +2 -2
- 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/data-view-permalink/data-view-permalink.component.mjs +13 -4
- package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +23 -8
- 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 +2 -2
- 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/record/src/lib/state/mdview.facade.mjs +13 -1
- package/esm2022/libs/feature/search/src/lib/constants.mjs +1 -2
- package/esm2022/libs/ui/elements/src/index.mjs +3 -1
- package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +1 -1
- package/esm2022/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.mjs +37 -0
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +5 -9
- package/esm2022/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.mjs +18 -0
- package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +5 -5
- 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/libs/util/i18n/src/lib/date-locales.mjs +33 -0
- package/esm2022/libs/util/shared/src/index.mjs +2 -1
- package/esm2022/libs/util/shared/src/lib/humanize-date.directive.mjs +33 -0
- package/esm2022/libs/util/shared/src/lib/services/date.service.mjs +19 -2
- package/esm2022/translations/de.json +14 -4
- package/esm2022/translations/en.json +14 -4
- package/esm2022/translations/es.json +10 -0
- package/esm2022/translations/fr.json +14 -4
- package/esm2022/translations/it.json +15 -5
- package/esm2022/translations/nl.json +10 -0
- package/esm2022/translations/pt.json +10 -0
- package/esm2022/translations/sk.json +11 -1
- package/fesm2022/geonetwork-ui-date-locales-DhlIiWpT.mjs +35 -0
- package/fesm2022/geonetwork-ui-date-locales-DhlIiWpT.mjs.map +1 -0
- package/fesm2022/geonetwork-ui.mjs +753 -232
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +5 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +6 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.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/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +2 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.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/data-view-permalink/data-view-permalink.component.d.ts +3 -2
- package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +3 -2
- package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.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/record/src/lib/state/mdview.facade.d.ts +4 -0
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
- package/libs/feature/search/src/lib/constants.d.ts.map +1 -1
- package/libs/ui/elements/src/index.d.ts +2 -0
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.d.ts +8 -0
- package/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +0 -2
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.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/libs/util/i18n/src/lib/date-locales.d.ts +5 -0
- package/libs/util/i18n/src/lib/date-locales.d.ts.map +1 -0
- package/libs/util/shared/src/index.d.ts +1 -0
- package/libs/util/shared/src/index.d.ts.map +1 -1
- package/libs/util/shared/src/lib/humanize-date.directive.d.ts +15 -0
- package/libs/util/shared/src/lib/humanize-date.directive.d.ts.map +1 -0
- package/libs/util/shared/src/lib/services/date.service.d.ts +4 -0
- package/libs/util/shared/src/lib/services/date.service.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.service+eaux-usees.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +5 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/georhena.records.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.reuse.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.service+napitswallonia.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +26 -0
- package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +13 -6
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +6 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +4 -2
- package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +0 -1
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +8 -1
- package/src/libs/feature/dataviz/src/index.ts +0 -1
- package/src/libs/feature/dataviz/src/lib/service/data.service.ts +30 -5
- package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +1 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +3 -3
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +30 -0
- package/src/libs/feature/editor/src/lib/fields.config.ts +1 -1
- 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/data-view-permalink/data-view-permalink.component.ts +7 -1
- package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +23 -4
- 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.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/record/src/lib/state/mdview.facade.ts +19 -0
- package/src/libs/feature/search/src/lib/constants.ts +0 -1
- package/src/libs/ui/elements/src/index.ts +2 -0
- package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.html +31 -0
- package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.ts +30 -0
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +67 -21
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +2 -9
- package/src/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.css +0 -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/elements/src/lib/user-feedback-item/user-feedback-item.component.html +1 -1
- package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +2 -2
- 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/src/libs/util/i18n/src/lib/date-locales.ts +63 -0
- package/src/libs/util/shared/src/index.ts +1 -0
- package/src/libs/util/shared/src/lib/humanize-date.directive.ts +35 -0
- package/src/libs/util/shared/src/lib/services/date.service.ts +27 -1
- package/translations/de.json +14 -4
- package/translations/en.json +14 -4
- package/translations/es.json +10 -0
- package/translations/fr.json +14 -4
- package/translations/it.json +15 -5
- package/translations/nl.json +10 -0
- package/translations/pt.json +10 -0
- package/translations/sk.json +11 -1
- package/esm2022/libs/feature/dataviz/src/lib/stac-view/stac-view.component.mjs +0 -22
- package/esm2022/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.mjs +0 -59
- package/libs/feature/dataviz/src/lib/stac-view/stac-view.component.d.ts +0 -11
- package/libs/feature/dataviz/src/lib/stac-view/stac-view.component.d.ts.map +0 -1
- package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts +0 -11
- package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts.map +0 -1
- package/src/libs/feature/dataviz/src/lib/stac-view/stac-view.component.html +0 -5
- package/src/libs/feature/dataviz/src/lib/stac-view/stac-view.component.ts +0 -27
- package/src/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.ts +0 -54
- /package/src/libs/{feature/dataviz/src/lib/stac-view/stac-view.component.css → ui/elements/src/lib/metadata-doi/metadata-doi.component.css} +0 -0
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
<div class="h-full w-full" #map
|
|
2
|
-
<
|
|
3
|
-
class="absolute inset-0 p-2 rounded z-40 transition-all flex flex-col justify-center items-center text-primary font-sans pointer-events-none"
|
|
4
|
-
[ngClass]="
|
|
5
|
-
(displayMessage$ | async) ? 'visible opacity-100' : 'invisible opacity-0'
|
|
6
|
-
"
|
|
7
|
-
>
|
|
1
|
+
<div class="relative h-full w-full" #map>
|
|
2
|
+
<ng-content></ng-content>
|
|
8
3
|
<div
|
|
9
|
-
class="absolute
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
4
|
+
class="absolute inset-0 p-2 rounded z-40 transition-all flex flex-col justify-center items-center text-primary font-sans pointer-events-none"
|
|
5
|
+
[ngClass]="
|
|
6
|
+
(displayMessage$ | async) ? 'visible opacity-100' : 'invisible opacity-0'
|
|
7
|
+
"
|
|
8
|
+
>
|
|
9
|
+
<div
|
|
10
|
+
class="absolute z-[-1] inset-0 bg-gradient-to-b from-white to-primary-lightest opacity-60"
|
|
11
|
+
></div>
|
|
12
|
+
<ng-icon
|
|
13
|
+
class="!w-16 !h-16 text-[64px] mb-4"
|
|
14
|
+
name="matSwipeOutline"
|
|
15
|
+
></ng-icon>
|
|
16
|
+
<p translate>map.navigation.message</p>
|
|
17
|
+
</div>
|
|
16
18
|
</div>
|
|
@@ -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
|
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { LanguageCode2 } from './language-codes'
|
|
2
|
+
import {
|
|
3
|
+
ar,
|
|
4
|
+
az,
|
|
5
|
+
ca,
|
|
6
|
+
cs,
|
|
7
|
+
cy,
|
|
8
|
+
da,
|
|
9
|
+
de,
|
|
10
|
+
enUS,
|
|
11
|
+
es,
|
|
12
|
+
fi,
|
|
13
|
+
fr,
|
|
14
|
+
hy,
|
|
15
|
+
is,
|
|
16
|
+
it,
|
|
17
|
+
ka,
|
|
18
|
+
ko,
|
|
19
|
+
Locale,
|
|
20
|
+
nl,
|
|
21
|
+
nn,
|
|
22
|
+
pl,
|
|
23
|
+
pt,
|
|
24
|
+
ru,
|
|
25
|
+
sk,
|
|
26
|
+
sv,
|
|
27
|
+
tr,
|
|
28
|
+
uk,
|
|
29
|
+
zhCN,
|
|
30
|
+
} from 'date-fns/locale'
|
|
31
|
+
|
|
32
|
+
// all 2-char language codes should be listed here
|
|
33
|
+
const locales: Record<LanguageCode2, Locale> = {
|
|
34
|
+
en: enUS,
|
|
35
|
+
nl: nl,
|
|
36
|
+
fr: fr,
|
|
37
|
+
de: de,
|
|
38
|
+
ko: ko,
|
|
39
|
+
es: es,
|
|
40
|
+
cs: cs,
|
|
41
|
+
ca: ca,
|
|
42
|
+
fi: fi,
|
|
43
|
+
is: is,
|
|
44
|
+
it: it,
|
|
45
|
+
pt: pt,
|
|
46
|
+
ru: ru,
|
|
47
|
+
zh: zhCN,
|
|
48
|
+
sk: sk,
|
|
49
|
+
ar: ar,
|
|
50
|
+
da: da,
|
|
51
|
+
no: nn,
|
|
52
|
+
pl: pl,
|
|
53
|
+
sv: sv,
|
|
54
|
+
tr: tr,
|
|
55
|
+
hy: hy,
|
|
56
|
+
az: az,
|
|
57
|
+
ka: ka,
|
|
58
|
+
uk: uk,
|
|
59
|
+
cy: cy,
|
|
60
|
+
rm: enUS, // locale is unavailable
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export default locales
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Renderer2, Directive, ElementRef, Input, OnInit } from '@angular/core'
|
|
2
|
+
import { DateService } from './services/date.service'
|
|
3
|
+
|
|
4
|
+
@Directive({
|
|
5
|
+
selector: '[gnUiHumanizeDate]',
|
|
6
|
+
standalone: true,
|
|
7
|
+
})
|
|
8
|
+
export class GnUiHumanizeDateDirective implements OnInit {
|
|
9
|
+
@Input() gnUiHumanizeDate: Date | string
|
|
10
|
+
|
|
11
|
+
constructor(
|
|
12
|
+
private dateService: DateService,
|
|
13
|
+
private el: ElementRef,
|
|
14
|
+
private renderer: Renderer2
|
|
15
|
+
) {}
|
|
16
|
+
|
|
17
|
+
async ngOnInit() {
|
|
18
|
+
await this.updateElement()
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
private async updateElement(): Promise<void> {
|
|
22
|
+
const dateValue = this.gnUiHumanizeDate
|
|
23
|
+
|
|
24
|
+
const fullDateTime = this.dateService.formatDateTime(dateValue)
|
|
25
|
+
const relativeDate =
|
|
26
|
+
await this.dateService.formatRelativeDateTime(dateValue)
|
|
27
|
+
|
|
28
|
+
this.renderer.setAttribute(this.el.nativeElement, 'title', fullDateTime)
|
|
29
|
+
this.renderer.setProperty(
|
|
30
|
+
this.el.nativeElement,
|
|
31
|
+
'textContent',
|
|
32
|
+
relativeDate
|
|
33
|
+
)
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core'
|
|
2
2
|
import { TranslateService } from '@ngx-translate/core'
|
|
3
|
+
import { type Locale } from 'date-fns/locale'
|
|
4
|
+
import { formatDistance } from 'date-fns/formatDistance'
|
|
5
|
+
|
|
6
|
+
const DEFAULT_LANGUAGE = 'en'
|
|
3
7
|
|
|
4
8
|
@Injectable({
|
|
5
9
|
providedIn: 'root',
|
|
6
10
|
})
|
|
7
11
|
export class DateService {
|
|
12
|
+
dateLocales = import('../../../../../../libs/util/i18n/src/lib/date-locales').then(
|
|
13
|
+
(obj) => obj.default
|
|
14
|
+
)
|
|
15
|
+
|
|
8
16
|
constructor(private translateService: TranslateService) {}
|
|
9
17
|
|
|
10
18
|
private getDateObject(date: Date | string): Date {
|
|
@@ -22,11 +30,17 @@ export class DateService {
|
|
|
22
30
|
locale: string
|
|
23
31
|
dateObj: Date
|
|
24
32
|
} {
|
|
25
|
-
const locale = this.translateService.currentLang ||
|
|
33
|
+
const locale = this.translateService.currentLang || DEFAULT_LANGUAGE
|
|
26
34
|
const dateObj = this.getDateObject(date)
|
|
27
35
|
return { locale, dateObj }
|
|
28
36
|
}
|
|
29
37
|
|
|
38
|
+
private async getDateLocale(): Promise<Locale> {
|
|
39
|
+
const lang = this.translateService.currentLang || DEFAULT_LANGUAGE
|
|
40
|
+
const locales = await this.dateLocales
|
|
41
|
+
return locales[lang]
|
|
42
|
+
}
|
|
43
|
+
|
|
30
44
|
formatDate(
|
|
31
45
|
date: Date | string,
|
|
32
46
|
options?: Intl.DateTimeFormatOptions
|
|
@@ -42,4 +56,16 @@ export class DateService {
|
|
|
42
56
|
const { locale, dateObj } = this.getLocaleAndDate(date)
|
|
43
57
|
return dateObj.toLocaleString(locale, options)
|
|
44
58
|
}
|
|
59
|
+
|
|
60
|
+
async formatRelativeDateTime(date: Date | string): Promise<string> {
|
|
61
|
+
const dateObj = this.getDateObject(date)
|
|
62
|
+
|
|
63
|
+
const now = new Date()
|
|
64
|
+
const locale = await this.getDateLocale()
|
|
65
|
+
|
|
66
|
+
return formatDistance(dateObj, now, {
|
|
67
|
+
addSuffix: true,
|
|
68
|
+
locale: locale,
|
|
69
|
+
})
|
|
70
|
+
}
|
|
45
71
|
}
|
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": "",
|
|
@@ -461,6 +465,8 @@
|
|
|
461
465
|
"record.metadata.contact": "Kontakt",
|
|
462
466
|
"record.metadata.creation": "Erstellungsdatum",
|
|
463
467
|
"record.metadata.details": "Über die Daten",
|
|
468
|
+
"record.metadata.doi.copy": "",
|
|
469
|
+
"record.metadata.doi.open": "",
|
|
464
470
|
"record.metadata.download": "Downloads",
|
|
465
471
|
"record.metadata.feature.catalog": "",
|
|
466
472
|
"record.metadata.formats": "Formate",
|
|
@@ -509,9 +515,9 @@
|
|
|
509
515
|
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
510
516
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
511
517
|
"record.metadata.related": "Entdecken Sie den Katalog",
|
|
512
|
-
"record.metadata.resourceCreated": "Erstellt
|
|
513
|
-
"record.metadata.resourcePublished": "Veröffentlicht
|
|
514
|
-
"record.metadata.resourceUpdated": "Zuletzt aktualisiert
|
|
518
|
+
"record.metadata.resourceCreated": "Erstellt",
|
|
519
|
+
"record.metadata.resourcePublished": "Veröffentlicht",
|
|
520
|
+
"record.metadata.resourceUpdated": "Zuletzt aktualisiert",
|
|
515
521
|
"record.metadata.ressources.and.links": "Ressourcen und Links",
|
|
516
522
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
517
523
|
"record.metadata.status": "Status",
|
|
@@ -524,8 +530,9 @@
|
|
|
524
530
|
"record.metadata.title": "Titel",
|
|
525
531
|
"record.metadata.topics": "Kategorien",
|
|
526
532
|
"record.metadata.uniqueId": "Eindeutige Kennung",
|
|
533
|
+
"record.metadata.update": "Aktualisierungsdatum",
|
|
527
534
|
"record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
|
|
528
|
-
"record.metadata.updatedOn": "
|
|
535
|
+
"record.metadata.updatedOn": "Informationen geändert",
|
|
529
536
|
"record.metadata.usage": "Nutzung und Einschränkungen",
|
|
530
537
|
"record.metadata.userFeedbacks": "",
|
|
531
538
|
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
@@ -632,6 +639,9 @@
|
|
|
632
639
|
"service.metadata.spatialExtent": "",
|
|
633
640
|
"share.tab.permalink": "Teilen",
|
|
634
641
|
"share.tab.webComponent": "Integrieren",
|
|
642
|
+
"stac.filter.enable": "",
|
|
643
|
+
"stac.filter.reset": "",
|
|
644
|
+
"stac.results.noResults": "Ihre Suchfilter lieferten keine Ergebnisse",
|
|
635
645
|
"table.loading.data": "Daten werden geladen...",
|
|
636
646
|
"table.object.count": "Objekte in diesem Datensatz",
|
|
637
647
|
"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",
|
|
@@ -461,6 +465,8 @@
|
|
|
461
465
|
"record.metadata.contact": "Contact",
|
|
462
466
|
"record.metadata.creation": "Date of creation",
|
|
463
467
|
"record.metadata.details": "About the data",
|
|
468
|
+
"record.metadata.doi.copy": "Copy DOI",
|
|
469
|
+
"record.metadata.doi.open": "Open DOI link",
|
|
464
470
|
"record.metadata.download": "Downloads",
|
|
465
471
|
"record.metadata.feature.catalog": "Feature catalog",
|
|
466
472
|
"record.metadata.formats": "Formats",
|
|
@@ -509,9 +515,9 @@
|
|
|
509
515
|
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
510
516
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
511
517
|
"record.metadata.related": "Explore the catalog",
|
|
512
|
-
"record.metadata.resourceCreated": "Created
|
|
513
|
-
"record.metadata.resourcePublished": "Published
|
|
514
|
-
"record.metadata.resourceUpdated": "Last updated
|
|
518
|
+
"record.metadata.resourceCreated": "Created",
|
|
519
|
+
"record.metadata.resourcePublished": "Published",
|
|
520
|
+
"record.metadata.resourceUpdated": "Last updated",
|
|
515
521
|
"record.metadata.ressources.and.links": "Resources and links",
|
|
516
522
|
"record.metadata.sheet": "Original metadata",
|
|
517
523
|
"record.metadata.status": "Status",
|
|
@@ -524,8 +530,9 @@
|
|
|
524
530
|
"record.metadata.title": "Title",
|
|
525
531
|
"record.metadata.topics": "Categories",
|
|
526
532
|
"record.metadata.uniqueId": "Unique Identifier",
|
|
533
|
+
"record.metadata.update": "Date of update",
|
|
527
534
|
"record.metadata.updateFrequency": "Data Update Frequency",
|
|
528
|
-
"record.metadata.updatedOn": "
|
|
535
|
+
"record.metadata.updatedOn": "Metadata modified",
|
|
529
536
|
"record.metadata.usage": "License and Conditions",
|
|
530
537
|
"record.metadata.userFeedbacks": "Questions / Answers",
|
|
531
538
|
"record.metadata.userFeedbacks.anonymousUser": "In order to leave a comment, please log in.",
|
|
@@ -632,6 +639,9 @@
|
|
|
632
639
|
"service.metadata.spatialExtent": "Spatial extent",
|
|
633
640
|
"share.tab.permalink": "Share",
|
|
634
641
|
"share.tab.webComponent": "Integrate",
|
|
642
|
+
"stac.filter.enable": "Enable dynamic filter on spatial extent",
|
|
643
|
+
"stac.filter.reset": "Reset filters",
|
|
644
|
+
"stac.results.noResults": "Your search filters did not match any items",
|
|
635
645
|
"table.loading.data": "Loading data...",
|
|
636
646
|
"table.object.count": "Objects in this dataset",
|
|
637
647
|
"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": "",
|
|
@@ -461,6 +465,8 @@
|
|
|
461
465
|
"record.metadata.contact": "",
|
|
462
466
|
"record.metadata.creation": "",
|
|
463
467
|
"record.metadata.details": "",
|
|
468
|
+
"record.metadata.doi.copy": "",
|
|
469
|
+
"record.metadata.doi.open": "",
|
|
464
470
|
"record.metadata.download": "",
|
|
465
471
|
"record.metadata.feature.catalog": "",
|
|
466
472
|
"record.metadata.formats": "",
|
|
@@ -524,6 +530,7 @@
|
|
|
524
530
|
"record.metadata.title": "",
|
|
525
531
|
"record.metadata.topics": "",
|
|
526
532
|
"record.metadata.uniqueId": "",
|
|
533
|
+
"record.metadata.update": "",
|
|
527
534
|
"record.metadata.updateFrequency": "",
|
|
528
535
|
"record.metadata.updatedOn": "",
|
|
529
536
|
"record.metadata.usage": "",
|
|
@@ -632,6 +639,9 @@
|
|
|
632
639
|
"service.metadata.spatialExtent": "",
|
|
633
640
|
"share.tab.permalink": "",
|
|
634
641
|
"share.tab.webComponent": "",
|
|
642
|
+
"stac.filter.enable": "",
|
|
643
|
+
"stac.filter.reset": "",
|
|
644
|
+
"stac.results.noResults": "",
|
|
635
645
|
"table.loading.data": "",
|
|
636
646
|
"table.object.count": "",
|
|
637
647
|
"table.paginator.firstPage": "Primera página",
|