geonetwork-ui 2.2.0 → 2.3.0-dev.179fba83
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/index.mjs +5 -5
- package/esm2022/libs/api/metadata-converter/src/lib/base.converter.mjs +14 -0
- package/esm2022/libs/api/metadata-converter/src/lib/find-converter.mjs +15 -0
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/atomic-operations.mjs +3 -3
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.converter.mjs +52 -0
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +7 -3
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/index.mjs +4 -0
- package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/index.mjs +2 -0
- package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.mjs +123 -0
- package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +116 -0
- package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +138 -0
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/index.mjs +2 -0
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +242 -0
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +58 -62
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.mjs +18 -0
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/keyword.mapper.mjs +14 -0
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/role.mapper.mjs +48 -0
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/status.mapper.mjs +18 -0
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/update-frequency.mapper.mjs +64 -0
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +75 -58
- package/esm2022/libs/api/metadata-converter/src/lib/xml-utils.mjs +76 -14
- package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +4 -4
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/data-access/gn4/src/openapi/api/records.api.service.mjs +35 -7
- package/esm2022/libs/data-access/gn4/src/openapi/model/models.mjs +1 -2
- package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +2 -2
- package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +8 -8
- package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +6 -2
- package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +72 -0
- package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +7 -3
- package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +12 -7
- package/esm2022/libs/feature/map/src/lib/map-context/map-context.model.mjs +2 -1
- package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +52 -25
- package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +12 -49
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +6 -2
- package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +4 -3
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +6 -5
- package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +2 -1
- package/esm2022/libs/ui/inputs/src/lib/files-drop/files-drop.directive.mjs +59 -0
- package/esm2022/libs/ui/inputs/src/lib/image-input/image-input.component.mjs +183 -0
- package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +10 -4
- package/esm2022/libs/util/shared/src/lib/utils/bytes-convert.mjs +4 -0
- package/esm2022/libs/util/shared/src/lib/utils/image-resize.mjs +60 -0
- package/esm2022/libs/util/shared/src/lib/utils/index.mjs +8 -6
- package/esm2022/translations/de.json +12 -0
- package/esm2022/translations/en.json +12 -0
- package/esm2022/translations/es.json +12 -0
- package/esm2022/translations/fr.json +12 -0
- package/esm2022/translations/it.json +12 -0
- package/esm2022/translations/nl.json +12 -0
- package/esm2022/translations/pt.json +12 -0
- package/fesm2022/geonetwork-ui.mjs +3910 -2866
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/index.d.ts +4 -4
- package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/{metadata-base.mapper.d.ts → base.converter.d.ts} +3 -3
- package/libs/api/metadata-converter/src/lib/base.converter.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/find-converter.d.ts +3 -0
- package/libs/api/metadata-converter/src/lib/find-converter.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/gn4/{gn4.metadata.mapper.d.ts → gn4.converter.d.ts} +5 -5
- package/libs/api/metadata-converter/src/lib/gn4/gn4.converter.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/index.d.ts +4 -0
- package/libs/api/metadata-converter/src/lib/gn4/index.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/iso19115-3/index.d.ts +2 -0
- package/libs/api/metadata-converter/src/lib/iso19115-3/index.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts +9 -0
- package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts +20 -0
- package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts +21 -0
- package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/iso19139/index.d.ts +2 -0
- package/libs/api/metadata-converter/src/lib/iso19139/index.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts +11 -0
- package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +34 -6
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.d.ts +8 -0
- package/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/iso19139/utils/keyword.mapper.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/iso19139/utils/role.mapper.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/iso19139/utils/status.mapper.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/iso19139/utils/update-frequency.mapper.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +39 -3
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/xml-utils.d.ts +14 -1
- package/libs/api/metadata-converter/src/lib/xml-utils.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +2 -2
- 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 +6 -4
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts +9 -5
- package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts.map +1 -1
- package/libs/data-access/gn4/src/openapi/model/models.d.ts +0 -1
- package/libs/data-access/gn4/src/openapi/model/models.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/services/editor.service.d.ts.map +1 -1
- package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.d.ts.map +1 -1
- package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts +23 -0
- package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -0
- package/libs/feature/map/src/lib/feature-map.module.d.ts +2 -1
- package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
- package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts +2 -0
- package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts.map +1 -1
- package/libs/feature/map/src/lib/map-context/map-context.model.d.ts +10 -5
- package/libs/feature/map/src/lib/map-context/map-context.model.d.ts.map +1 -1
- package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
- package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +2 -3
- 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.map +1 -1
- package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +20 -20
- package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/files-drop/files-drop.directive.d.ts +14 -0
- package/libs/ui/inputs/src/lib/files-drop/files-drop.directive.d.ts.map +1 -0
- package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts +44 -0
- package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts.map +1 -0
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +2 -1
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
- package/libs/util/shared/src/lib/utils/bytes-convert.d.ts +2 -0
- package/libs/util/shared/src/lib/utils/bytes-convert.d.ts.map +1 -0
- package/libs/util/shared/src/lib/utils/image-resize.d.ts +3 -0
- package/libs/util/shared/src/lib/utils/image-resize.d.ts.map +1 -0
- package/libs/util/shared/src/lib/utils/index.d.ts +7 -5
- package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/libs/api/metadata-converter/src/index.ts +4 -4
- package/src/libs/api/metadata-converter/src/lib/{metadata-base.mapper.ts → base.converter.ts} +2 -2
- package/src/libs/api/metadata-converter/src/lib/find-converter.ts +16 -0
- package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +32 -5
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +11 -4
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +33 -7
- package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +580 -0
- package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/gn4/{gn4.metadata.mapper.ts → gn4.converter.ts} +2 -2
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +8 -2
- package/src/libs/api/metadata-converter/src/lib/gn4/index.ts +3 -0
- package/src/libs/api/metadata-converter/src/lib/iso19115-3/index.ts +1 -0
- package/src/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.ts +176 -0
- package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +329 -0
- package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +513 -0
- package/src/libs/api/metadata-converter/src/lib/iso19139/index.ts +1 -0
- package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +327 -0
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +121 -82
- package/src/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.ts +20 -0
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +175 -95
- package/src/libs/api/metadata-converter/src/lib/xml-utils.ts +84 -16
- package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +2 -2
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +9 -4
- package/src/libs/data-access/gn4/src/openapi/api/records.api.service.ts +43 -12
- package/src/libs/data-access/gn4/src/openapi/model/models.ts +0 -1
- package/src/libs/data-access/gn4/src/spec.yaml +1 -1
- package/src/libs/feature/dataviz/src/lib/service/data.service.ts +1 -1
- package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.html +8 -0
- package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.ts +70 -0
- package/src/libs/feature/editor/src/lib/services/editor.service.ts +27 -16
- package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.ts +5 -1
- package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.css +0 -0
- package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.html +36 -0
- package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +80 -0
- package/src/libs/feature/map/src/lib/feature-map.module.ts +2 -0
- package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +8 -0
- package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.ts +5 -0
- package/src/libs/feature/map/src/lib/map-context/map-context.model.ts +10 -3
- package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +60 -32
- package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +17 -61
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +5 -1
- package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.ts +5 -3
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +1 -1
- package/src/libs/ui/inputs/src/lib/button/button.component.ts +1 -1
- package/src/libs/ui/inputs/src/lib/files-drop/files-drop.directive.ts +45 -0
- package/src/libs/ui/inputs/src/lib/image-input/image-input.component.css +0 -0
- package/src/libs/ui/inputs/src/lib/image-input/image-input.component.html +146 -0
- package/src/libs/ui/inputs/src/lib/image-input/image-input.component.ts +193 -0
- package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -0
- package/src/libs/util/shared/src/lib/utils/bytes-convert.ts +3 -0
- package/src/libs/util/shared/src/lib/utils/image-resize.ts +72 -0
- package/src/libs/util/shared/src/lib/utils/index.ts +7 -5
- package/translations/de.json +12 -0
- package/translations/en.json +12 -0
- package/translations/es.json +12 -0
- package/translations/fr.json +12 -0
- package/translations/it.json +12 -0
- package/translations/nl.json +12 -0
- package/translations/pt.json +12 -0
- package/translations/sk.json +12 -0
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +0 -52
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.mjs +0 -14
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/role.mapper.mjs +0 -48
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/status.mapper.mjs +0 -18
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/update-frequency.mapper.mjs +0 -64
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/converter.mjs +0 -130
- package/esm2022/libs/api/metadata-converter/src/lib/metadata-base.mapper.mjs +0 -14
- package/esm2022/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.mjs +0 -13
- package/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.d.ts.map +0 -1
- package/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.d.ts.map +0 -1
- package/libs/api/metadata-converter/src/lib/iso19139/codelists/role.mapper.d.ts.map +0 -1
- package/libs/api/metadata-converter/src/lib/iso19139/codelists/status.mapper.d.ts.map +0 -1
- package/libs/api/metadata-converter/src/lib/iso19139/codelists/update-frequency.mapper.d.ts.map +0 -1
- package/libs/api/metadata-converter/src/lib/iso19139/converter.d.ts +0 -4
- package/libs/api/metadata-converter/src/lib/iso19139/converter.d.ts.map +0 -1
- package/libs/api/metadata-converter/src/lib/metadata-base.mapper.d.ts.map +0 -1
- package/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.d.ts +0 -18
- package/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.d.ts.map +0 -1
- package/src/libs/api/metadata-converter/src/lib/iso19139/converter.ts +0 -196
- package/src/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.ts +0 -18
- /package/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/keyword.mapper.d.ts +0 -0
- /package/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/role.mapper.d.ts +0 -0
- /package/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/status.mapper.d.ts +0 -0
- /package/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/update-frequency.mapper.d.ts +0 -0
- /package/src/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/keyword.mapper.ts +0 -0
- /package/src/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/role.mapper.ts +0 -0
- /package/src/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/status.mapper.ts +0 -0
- /package/src/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/update-frequency.mapper.ts +0 -0
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
} from '../../../../../../libs/common/domain/src/lib/model/search'
|
|
15
15
|
import { map } from 'rxjs/operators'
|
|
16
16
|
import {
|
|
17
|
-
|
|
17
|
+
Gn4Converter,
|
|
18
18
|
Gn4SearchResults,
|
|
19
19
|
} from '../../../../../../libs/api/metadata-converter/src'
|
|
20
20
|
import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record'
|
|
@@ -24,7 +24,7 @@ export class Gn4Repository implements RecordsRepositoryInterface {
|
|
|
24
24
|
constructor(
|
|
25
25
|
private gn4SearchApi: SearchApiService,
|
|
26
26
|
private gn4SearchHelper: ElasticsearchService,
|
|
27
|
-
private gn4Mapper:
|
|
27
|
+
private gn4Mapper: Gn4Converter
|
|
28
28
|
) {}
|
|
29
29
|
|
|
30
30
|
search({
|
|
@@ -83,8 +83,8 @@ export interface BaseRecord {
|
|
|
83
83
|
title: string
|
|
84
84
|
abstract: string
|
|
85
85
|
recordCreated?: Date
|
|
86
|
-
recordUpdated: Date
|
|
87
86
|
recordPublished?: Date
|
|
87
|
+
recordUpdated: Date
|
|
88
88
|
languages: Array<LanguageCode>
|
|
89
89
|
kind: RecordKind
|
|
90
90
|
topics: Array<string> // TODO: handle codelists
|
|
@@ -98,6 +98,12 @@ export interface BaseRecord {
|
|
|
98
98
|
landingPage?: URL
|
|
99
99
|
updateFrequency?: UpdateFrequency
|
|
100
100
|
|
|
101
|
+
// information related to the resource (dataset, service)
|
|
102
|
+
contactsForResource: Array<Individual>
|
|
103
|
+
resourceCreated?: Date
|
|
104
|
+
resourcePublished?: Date
|
|
105
|
+
resourceUpdated?: Date
|
|
106
|
+
|
|
101
107
|
// to add: canonical url
|
|
102
108
|
// to add: source catalog (??)
|
|
103
109
|
// to add: is open data ?
|
|
@@ -173,10 +179,7 @@ export interface DatasetTemporalExtent {
|
|
|
173
179
|
|
|
174
180
|
export interface DatasetRecord extends BaseRecord {
|
|
175
181
|
kind: 'dataset'
|
|
176
|
-
contactsForResource: Array<Individual>
|
|
177
182
|
status: RecordStatus
|
|
178
|
-
datasetCreated?: Date
|
|
179
|
-
datasetUpdated?: Date
|
|
180
183
|
lineage: string // Explanation of the origin of this record (e.g: how, why)"
|
|
181
184
|
distributions: Array<DatasetDistribution>
|
|
182
185
|
spatialExtents: Array<DatasetSpatialExtent>
|
|
@@ -203,3 +206,5 @@ export interface ServiceRecord extends BaseRecord {
|
|
|
203
206
|
}
|
|
204
207
|
|
|
205
208
|
export type CatalogRecord = ServiceRecord | DatasetRecord
|
|
209
|
+
|
|
210
|
+
export type CatalogRecordKeys = keyof ServiceRecord | keyof DatasetRecord
|
|
@@ -30,7 +30,6 @@ import {
|
|
|
30
30
|
import { ExtentDtoApiModel } from '../model/models'
|
|
31
31
|
import { FeatureResponseApiModel } from '../model/models'
|
|
32
32
|
import { IProcessingReportApiModel } from '../model/models'
|
|
33
|
-
import { InlineObject3ApiModel } from '../model/models'
|
|
34
33
|
import { MetadataBatchApproveParameterApiModel } from '../model/models'
|
|
35
34
|
import { MetadataBatchSubmitParameterApiModel } from '../model/models'
|
|
36
35
|
import { MetadataCategoryApiModel } from '../model/models'
|
|
@@ -75,6 +74,20 @@ export class RecordsApiService {
|
|
|
75
74
|
this.encoder = this.configuration.encoder || new CustomHttpParameterCodec()
|
|
76
75
|
}
|
|
77
76
|
|
|
77
|
+
/**
|
|
78
|
+
* @param consumes string[] mime-types
|
|
79
|
+
* @return true: consumes contains 'multipart/form-data', false: otherwise
|
|
80
|
+
*/
|
|
81
|
+
private canConsumeForm(consumes: string[]): boolean {
|
|
82
|
+
const form = 'multipart/form-data'
|
|
83
|
+
for (const consume of consumes) {
|
|
84
|
+
if (form === consume) {
|
|
85
|
+
return true
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return false
|
|
89
|
+
}
|
|
90
|
+
|
|
78
91
|
private addToHttpParams(
|
|
79
92
|
httpParams: HttpParams,
|
|
80
93
|
value: any,
|
|
@@ -8290,44 +8303,44 @@ export class RecordsApiService {
|
|
|
8290
8303
|
/**
|
|
8291
8304
|
* Create a new resource for a given metadata
|
|
8292
8305
|
* @param metadataUuid The metadata UUID
|
|
8306
|
+
* @param file The file to upload
|
|
8293
8307
|
* @param visibility The sharing policy
|
|
8294
8308
|
* @param approved Use approved version or not
|
|
8295
|
-
* @param inlineObject3ApiModel
|
|
8296
8309
|
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
|
8297
8310
|
* @param reportProgress flag to report request and response progress.
|
|
8298
8311
|
*/
|
|
8299
8312
|
public putResource(
|
|
8300
8313
|
metadataUuid: string,
|
|
8314
|
+
file: Blob,
|
|
8301
8315
|
visibility?: 'public' | 'private',
|
|
8302
8316
|
approved?: boolean,
|
|
8303
|
-
inlineObject3ApiModel?: InlineObject3ApiModel,
|
|
8304
8317
|
observe?: 'body',
|
|
8305
8318
|
reportProgress?: boolean,
|
|
8306
8319
|
options?: { httpHeaderAccept?: 'application/json' }
|
|
8307
8320
|
): Observable<MetadataResourceApiModel>
|
|
8308
8321
|
public putResource(
|
|
8309
8322
|
metadataUuid: string,
|
|
8323
|
+
file: Blob,
|
|
8310
8324
|
visibility?: 'public' | 'private',
|
|
8311
8325
|
approved?: boolean,
|
|
8312
|
-
inlineObject3ApiModel?: InlineObject3ApiModel,
|
|
8313
8326
|
observe?: 'response',
|
|
8314
8327
|
reportProgress?: boolean,
|
|
8315
8328
|
options?: { httpHeaderAccept?: 'application/json' }
|
|
8316
8329
|
): Observable<HttpResponse<MetadataResourceApiModel>>
|
|
8317
8330
|
public putResource(
|
|
8318
8331
|
metadataUuid: string,
|
|
8332
|
+
file: Blob,
|
|
8319
8333
|
visibility?: 'public' | 'private',
|
|
8320
8334
|
approved?: boolean,
|
|
8321
|
-
inlineObject3ApiModel?: InlineObject3ApiModel,
|
|
8322
8335
|
observe?: 'events',
|
|
8323
8336
|
reportProgress?: boolean,
|
|
8324
8337
|
options?: { httpHeaderAccept?: 'application/json' }
|
|
8325
8338
|
): Observable<HttpEvent<MetadataResourceApiModel>>
|
|
8326
8339
|
public putResource(
|
|
8327
8340
|
metadataUuid: string,
|
|
8341
|
+
file: Blob,
|
|
8328
8342
|
visibility?: 'public' | 'private',
|
|
8329
8343
|
approved?: boolean,
|
|
8330
|
-
inlineObject3ApiModel?: InlineObject3ApiModel,
|
|
8331
8344
|
observe: any = 'body',
|
|
8332
8345
|
reportProgress: boolean = false,
|
|
8333
8346
|
options?: { httpHeaderAccept?: 'application/json' }
|
|
@@ -8337,6 +8350,11 @@ export class RecordsApiService {
|
|
|
8337
8350
|
'Required parameter metadataUuid was null or undefined when calling putResource.'
|
|
8338
8351
|
)
|
|
8339
8352
|
}
|
|
8353
|
+
if (file === null || file === undefined) {
|
|
8354
|
+
throw new Error(
|
|
8355
|
+
'Required parameter file was null or undefined when calling putResource.'
|
|
8356
|
+
)
|
|
8357
|
+
}
|
|
8340
8358
|
|
|
8341
8359
|
let queryParameters = new HttpParams({ encoder: this.encoder })
|
|
8342
8360
|
if (visibility !== undefined && visibility !== null) {
|
|
@@ -8369,11 +8387,24 @@ export class RecordsApiService {
|
|
|
8369
8387
|
}
|
|
8370
8388
|
|
|
8371
8389
|
// to determine the Content-Type header
|
|
8372
|
-
const consumes: string[] = ['
|
|
8373
|
-
|
|
8374
|
-
|
|
8375
|
-
|
|
8376
|
-
|
|
8390
|
+
const consumes: string[] = ['multipart/form-data']
|
|
8391
|
+
|
|
8392
|
+
const canConsumeForm = this.canConsumeForm(consumes)
|
|
8393
|
+
|
|
8394
|
+
let formParams: { append(param: string, value: any): any }
|
|
8395
|
+
let useForm = false
|
|
8396
|
+
let convertFormParamsToString = false
|
|
8397
|
+
// use FormData to transmit files using content-type "multipart/form-data"
|
|
8398
|
+
// see https://stackoverflow.com/questions/4007969/application-x-www-form-urlencoded-or-multipart-form-data
|
|
8399
|
+
useForm = canConsumeForm
|
|
8400
|
+
if (useForm) {
|
|
8401
|
+
formParams = new FormData()
|
|
8402
|
+
} else {
|
|
8403
|
+
formParams = new HttpParams({ encoder: this.encoder })
|
|
8404
|
+
}
|
|
8405
|
+
|
|
8406
|
+
if (file !== undefined) {
|
|
8407
|
+
formParams = (formParams.append('file', <any>file) as any) || formParams
|
|
8377
8408
|
}
|
|
8378
8409
|
|
|
8379
8410
|
let responseType_: 'text' | 'json' = 'json'
|
|
@@ -8388,7 +8419,7 @@ export class RecordsApiService {
|
|
|
8388
8419
|
`${this.configuration.basePath}/records/${encodeURIComponent(
|
|
8389
8420
|
String(metadataUuid)
|
|
8390
8421
|
)}/attachments`,
|
|
8391
|
-
|
|
8422
|
+
convertFormParamsToString ? formParams.toString() : formParams,
|
|
8392
8423
|
{
|
|
8393
8424
|
params: queryParameters,
|
|
8394
8425
|
responseType: <any>responseType_,
|
|
@@ -33,7 +33,6 @@ export * from './iProcessingReport.api.model'
|
|
|
33
33
|
export * from './iSODate.api.model'
|
|
34
34
|
export * from './infoReport.api.model'
|
|
35
35
|
export * from './inlineObject1.api.model'
|
|
36
|
-
export * from './inlineObject3.api.model'
|
|
37
36
|
export * from './inlineObject4.api.model'
|
|
38
37
|
export * from './isoLanguage.api.model'
|
|
39
38
|
export * from './jSONObject.api.model'
|
package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.css
ADDED
|
File without changes
|
package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.ts
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ChangeDetectionStrategy,
|
|
3
|
+
ChangeDetectorRef,
|
|
4
|
+
Component,
|
|
5
|
+
Input,
|
|
6
|
+
OnInit,
|
|
7
|
+
} from '@angular/core'
|
|
8
|
+
import { CommonModule } from '@angular/common'
|
|
9
|
+
import { RecordsApiService } from '../../../../../../../libs/data-access/gn4/src'
|
|
10
|
+
import { UiInputsModule } from '../../../../../../../libs/ui/inputs/src'
|
|
11
|
+
|
|
12
|
+
@Component({
|
|
13
|
+
selector: 'gn-ui-overview-upload',
|
|
14
|
+
standalone: true,
|
|
15
|
+
imports: [CommonModule, UiInputsModule],
|
|
16
|
+
templateUrl: './overview-upload.component.html',
|
|
17
|
+
styleUrls: ['./overview-upload.component.css'],
|
|
18
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
19
|
+
})
|
|
20
|
+
export class OverviewUploadComponent implements OnInit {
|
|
21
|
+
@Input() metadataUuid: string
|
|
22
|
+
|
|
23
|
+
resourceFileName: string
|
|
24
|
+
resourceUrl: string
|
|
25
|
+
|
|
26
|
+
constructor(
|
|
27
|
+
private recordsApiService: RecordsApiService,
|
|
28
|
+
private cd: ChangeDetectorRef
|
|
29
|
+
) {}
|
|
30
|
+
|
|
31
|
+
ngOnInit(): void {
|
|
32
|
+
this.recordsApiService
|
|
33
|
+
.getAllResources(this.metadataUuid)
|
|
34
|
+
.subscribe((resources) => {
|
|
35
|
+
this.resourceFileName = resources[0]?.filename
|
|
36
|
+
this.resourceUrl = resources[0]?.url
|
|
37
|
+
this.cd.markForCheck()
|
|
38
|
+
})
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
handleFileChange(file: File) {
|
|
42
|
+
this.recordsApiService
|
|
43
|
+
.putResource(this.metadataUuid, file, 'public')
|
|
44
|
+
.subscribe((resource) => {
|
|
45
|
+
this.resourceFileName = resource.filename
|
|
46
|
+
this.resourceUrl = resource.url
|
|
47
|
+
this.cd.markForCheck()
|
|
48
|
+
})
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
handleUrlChange(url: string) {
|
|
52
|
+
this.recordsApiService
|
|
53
|
+
.putResourceFromURL(this.metadataUuid, url, 'public')
|
|
54
|
+
.subscribe((resource) => {
|
|
55
|
+
this.resourceFileName = resource.filename
|
|
56
|
+
this.resourceUrl = resource.url
|
|
57
|
+
this.cd.markForCheck()
|
|
58
|
+
})
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
handleDelete() {
|
|
62
|
+
this.recordsApiService
|
|
63
|
+
.delResource(this.metadataUuid, this.resourceFileName)
|
|
64
|
+
.subscribe(() => {
|
|
65
|
+
this.resourceFileName = null
|
|
66
|
+
this.resourceUrl = null
|
|
67
|
+
this.cd.markForCheck()
|
|
68
|
+
})
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { Inject, Injectable, Optional } from '@angular/core'
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
findConverterForDocument,
|
|
4
|
+
Iso19139Converter,
|
|
5
|
+
} from '../../../../../../libs/api/metadata-converter/src'
|
|
3
6
|
import { Configuration } from '../../../../../../libs/data-access/gn4/src'
|
|
4
|
-
import { Observable } from 'rxjs'
|
|
5
|
-
import { map } from 'rxjs/operators'
|
|
7
|
+
import { from, Observable } from 'rxjs'
|
|
8
|
+
import { map, switchMap } from 'rxjs/operators'
|
|
6
9
|
import { HttpClient } from '@angular/common/http'
|
|
7
10
|
import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record'
|
|
8
11
|
import { EditorFieldsConfig } from '../models/fields.model'
|
|
@@ -30,7 +33,11 @@ export class EditorService {
|
|
|
30
33
|
Accept: 'application/xml',
|
|
31
34
|
},
|
|
32
35
|
})
|
|
33
|
-
.pipe(
|
|
36
|
+
.pipe(
|
|
37
|
+
switchMap((response) =>
|
|
38
|
+
findConverterForDocument(response).readRecord(response.toString())
|
|
39
|
+
)
|
|
40
|
+
)
|
|
34
41
|
}
|
|
35
42
|
|
|
36
43
|
// returns the record as it was when saved
|
|
@@ -52,17 +59,21 @@ export class EditorService {
|
|
|
52
59
|
}
|
|
53
60
|
|
|
54
61
|
// TODO: use the catalog repository instead
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
62
|
+
// TODO: use converter based on the format of the record before change
|
|
63
|
+
return from(new Iso19139Converter().writeRecord(savedRecord)).pipe(
|
|
64
|
+
switchMap((recordXml) =>
|
|
65
|
+
this.http.put(
|
|
66
|
+
`${this.apiUrl}/records?metadataType=METADATA&uuidProcessing=OVERWRITE&transformWith=_none_&publishToAll=on`,
|
|
67
|
+
recordXml,
|
|
68
|
+
{
|
|
69
|
+
headers: {
|
|
70
|
+
'Content-Type': 'application/xml',
|
|
71
|
+
},
|
|
72
|
+
withCredentials: true,
|
|
73
|
+
}
|
|
74
|
+
)
|
|
75
|
+
),
|
|
76
|
+
map(() => savedRecord)
|
|
77
|
+
)
|
|
67
78
|
}
|
|
68
79
|
}
|
|
@@ -59,7 +59,11 @@ export class AddLayerRecordPreviewComponent extends RecordPreviewComponent {
|
|
|
59
59
|
name: link.name,
|
|
60
60
|
})
|
|
61
61
|
} else if (link.accessServiceProtocol === 'wmts') {
|
|
62
|
-
return
|
|
62
|
+
return of({
|
|
63
|
+
url: link.url.toString(),
|
|
64
|
+
type: MapContextLayerTypeEnum.WMTS,
|
|
65
|
+
name: link.name,
|
|
66
|
+
})
|
|
63
67
|
}
|
|
64
68
|
return throwError(() => 'protocol not supported')
|
|
65
69
|
}
|
package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.css
ADDED
|
File without changes
|
package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.html
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<div class="flex items-center mb-5">
|
|
2
|
+
<gn-ui-text-input
|
|
3
|
+
[(value)]="ogcUrl"
|
|
4
|
+
(valueChange)="urlChange.next($event)"
|
|
5
|
+
[hint]="'map.ogc.urlInput.hint' | translate"
|
|
6
|
+
class="w-96"
|
|
7
|
+
>
|
|
8
|
+
</gn-ui-text-input>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div *ngIf="errorMessage" class="text-red-500 mt-2">
|
|
12
|
+
{{ errorMessage }}
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<div *ngIf="loading">
|
|
16
|
+
<p class="loading-message" translate>map.loading.service</p>
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
<div *ngIf="!loading && layers.length > 0">
|
|
20
|
+
<h2 class="font-bold" translate>map.layers.available</h2>
|
|
21
|
+
<ng-container *ngFor="let layer of layers">
|
|
22
|
+
<div class="flex items-center justify-between my-2 layer-item-tree">
|
|
23
|
+
<p class="max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap">
|
|
24
|
+
{{ layer }}
|
|
25
|
+
</p>
|
|
26
|
+
<gn-ui-button
|
|
27
|
+
class="layer-add-btn"
|
|
28
|
+
type="primary"
|
|
29
|
+
(buttonClick)="addLayer(layer)"
|
|
30
|
+
extraClass="text-sm !px-2 !py-1"
|
|
31
|
+
translate
|
|
32
|
+
><span translate> map.layer.add </span></gn-ui-button
|
|
33
|
+
>
|
|
34
|
+
</div>
|
|
35
|
+
</ng-container>
|
|
36
|
+
</div>
|
package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Component,
|
|
3
|
+
OnInit,
|
|
4
|
+
Output,
|
|
5
|
+
EventEmitter,
|
|
6
|
+
ChangeDetectionStrategy,
|
|
7
|
+
Input,
|
|
8
|
+
ChangeDetectorRef,
|
|
9
|
+
} from '@angular/core'
|
|
10
|
+
import { OgcApiEndpoint } from '@camptocamp/ogc-client'
|
|
11
|
+
import { Subject, debounceTime } from 'rxjs'
|
|
12
|
+
import {
|
|
13
|
+
MapContextLayerModel,
|
|
14
|
+
MapContextLayerTypeEnum,
|
|
15
|
+
} from '../map-context/map-context.model'
|
|
16
|
+
import { TranslateModule } from '@ngx-translate/core'
|
|
17
|
+
import { UiInputsModule } from '../../../../../../libs/ui/inputs/src'
|
|
18
|
+
import { CommonModule } from '@angular/common'
|
|
19
|
+
import { MapLayer } from '../+state/map.models'
|
|
20
|
+
|
|
21
|
+
@Component({
|
|
22
|
+
selector: 'gn-ui-add-layer-from-ogc-api',
|
|
23
|
+
templateUrl: './add-layer-from-ogc-api.component.html',
|
|
24
|
+
styleUrls: ['./add-layer-from-ogc-api.component.css'],
|
|
25
|
+
standalone: true,
|
|
26
|
+
imports: [CommonModule, TranslateModule, UiInputsModule],
|
|
27
|
+
})
|
|
28
|
+
export class AddLayerFromOgcApiComponent implements OnInit {
|
|
29
|
+
@Input() ogcUrl: string
|
|
30
|
+
@Output() layerAdded = new EventEmitter<MapLayer>()
|
|
31
|
+
|
|
32
|
+
urlChange = new Subject<string>()
|
|
33
|
+
layerUrl = ''
|
|
34
|
+
loading = false
|
|
35
|
+
layers: string[] = []
|
|
36
|
+
ogcEndpoint: OgcApiEndpoint = null
|
|
37
|
+
errorMessage: string | null = null
|
|
38
|
+
|
|
39
|
+
constructor(private changeDetectorRef: ChangeDetectorRef) {}
|
|
40
|
+
|
|
41
|
+
ngOnInit() {
|
|
42
|
+
this.urlChange.pipe(debounceTime(700)).subscribe(() => {
|
|
43
|
+
this.loadLayers()
|
|
44
|
+
this.changeDetectorRef.detectChanges() // manually trigger change detection
|
|
45
|
+
})
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
async loadLayers() {
|
|
49
|
+
this.errorMessage = null
|
|
50
|
+
try {
|
|
51
|
+
this.loading = true
|
|
52
|
+
if (this.ogcUrl.trim() === '') {
|
|
53
|
+
this.layers = []
|
|
54
|
+
return
|
|
55
|
+
}
|
|
56
|
+
this.ogcEndpoint = await new OgcApiEndpoint(this.ogcUrl)
|
|
57
|
+
|
|
58
|
+
// Currently only supports feature collections
|
|
59
|
+
this.layers = await this.ogcEndpoint.featureCollections
|
|
60
|
+
} catch (error) {
|
|
61
|
+
const err = error as Error
|
|
62
|
+
this.layers = []
|
|
63
|
+
this.errorMessage = 'Error loading layers: ' + err.message
|
|
64
|
+
} finally {
|
|
65
|
+
this.loading = false
|
|
66
|
+
this.changeDetectorRef.markForCheck()
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
async addLayer(layer: string) {
|
|
71
|
+
this.layerUrl = await this.ogcEndpoint.getCollectionItemsUrl(layer)
|
|
72
|
+
|
|
73
|
+
const layerToAdd: MapContextLayerModel = {
|
|
74
|
+
name: layer,
|
|
75
|
+
url: this.layerUrl,
|
|
76
|
+
type: MapContextLayerTypeEnum.OGCAPI,
|
|
77
|
+
}
|
|
78
|
+
this.layerAdded.emit({ ...layerToAdd, title: layer })
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -25,6 +25,7 @@ import { AddLayerFromFileComponent } from './add-layer-from-file/add-layer-from-
|
|
|
25
25
|
import { AddLayerFromWfsComponent } from './add-layer-from-wfs/add-layer-from-wfs.component'
|
|
26
26
|
import { GeocodingComponent } from './geocoding/geocoding.component'
|
|
27
27
|
import { GEOCODING_PROVIDER, GeocodingProvider } from './geocoding.service'
|
|
28
|
+
import { AddLayerFromOgcApiComponent } from './add-layer-from-ogc-api/add-layer-from-ogc-api.component'
|
|
28
29
|
|
|
29
30
|
@NgModule({
|
|
30
31
|
declarations: [
|
|
@@ -59,6 +60,7 @@ import { GEOCODING_PROVIDER, GeocodingProvider } from './geocoding.service'
|
|
|
59
60
|
EffectsModule.forFeature([MapEffects]),
|
|
60
61
|
UiElementsModule,
|
|
61
62
|
UiInputsModule,
|
|
63
|
+
AddLayerFromOgcApiComponent,
|
|
62
64
|
],
|
|
63
65
|
providers: [
|
|
64
66
|
{
|
|
@@ -40,6 +40,14 @@
|
|
|
40
40
|
<gn-ui-add-layer-from-wfs></gn-ui-add-layer-from-wfs>
|
|
41
41
|
</div>
|
|
42
42
|
</mat-tab>
|
|
43
|
+
<mat-tab [label]="'map.add.layer.ogc.api' | translate" bodyClass="h-full">
|
|
44
|
+
<div class="p-3">
|
|
45
|
+
<gn-ui-add-layer-from-ogc-api
|
|
46
|
+
[ogcUrl]="ogcUrl"
|
|
47
|
+
(layerAdded)="addLayer($event)"
|
|
48
|
+
></gn-ui-add-layer-from-ogc-api>
|
|
49
|
+
</div>
|
|
50
|
+
</mat-tab>
|
|
43
51
|
<mat-tab [label]="'map.add.layer.file' | translate" bodyClass="h-full">
|
|
44
52
|
<div class="p-3">
|
|
45
53
|
<gn-ui-add-layer-from-file></gn-ui-add-layer-from-file>
|
|
@@ -9,9 +9,14 @@ import { MapFacade } from '../+state/map.facade'
|
|
|
9
9
|
})
|
|
10
10
|
export class LayersPanelComponent {
|
|
11
11
|
layers$ = this.mapFacade.layers$
|
|
12
|
+
ogcUrl = ''
|
|
12
13
|
constructor(private mapFacade: MapFacade) {}
|
|
13
14
|
|
|
14
15
|
deleteLayer(index: number) {
|
|
15
16
|
this.mapFacade.removeLayer(index)
|
|
16
17
|
}
|
|
18
|
+
|
|
19
|
+
addLayer(layer) {
|
|
20
|
+
this.mapFacade.addLayer(layer)
|
|
21
|
+
}
|
|
17
22
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { FeatureCollection } from 'geojson'
|
|
2
2
|
import { Coordinate } from 'ol/coordinate'
|
|
3
3
|
import type { Extent } from 'ol/extent'
|
|
4
|
-
import { Options } from 'ol/source/WMTS'
|
|
5
4
|
|
|
6
5
|
export enum MapContextLayerTypeEnum {
|
|
7
6
|
XYZ = 'xyz',
|
|
@@ -9,6 +8,7 @@ export enum MapContextLayerTypeEnum {
|
|
|
9
8
|
WMTS = 'wmts',
|
|
10
9
|
WFS = 'wfs',
|
|
11
10
|
GEOJSON = 'geojson',
|
|
11
|
+
OGCAPI = 'ogcapi',
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
export interface MapContextModel {
|
|
@@ -24,8 +24,8 @@ export interface MapContextLayerWmsModel {
|
|
|
24
24
|
|
|
25
25
|
export interface MapContextLayerWmtsModel {
|
|
26
26
|
type: 'wmts'
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
url: string
|
|
28
|
+
name: string
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
interface MapContextLayerWfsModel {
|
|
@@ -34,6 +34,12 @@ interface MapContextLayerWfsModel {
|
|
|
34
34
|
name: string
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
+
export interface MapContextLayerOgcapiModel {
|
|
38
|
+
type: 'ogcapi'
|
|
39
|
+
url: string
|
|
40
|
+
name: string
|
|
41
|
+
}
|
|
42
|
+
|
|
37
43
|
interface LayerXyzModel {
|
|
38
44
|
type: 'xyz'
|
|
39
45
|
name?: string
|
|
@@ -71,6 +77,7 @@ export type MapContextLayerModel =
|
|
|
71
77
|
| MapContextLayerWfsModel
|
|
72
78
|
| MapContextLayerXyzModel
|
|
73
79
|
| MapContextLayerGeojsonModel
|
|
80
|
+
| MapContextLayerOgcapiModel
|
|
74
81
|
|
|
75
82
|
export interface MapContextViewModel {
|
|
76
83
|
center?: Coordinate // expressed in long/lat (EPSG:4326)
|