geonetwork-ui 2.2.0-dev.e0d0f7a1 → 2.2.0-dev.e3947702
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/gn4/atomic-operations.mjs +2 -1
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +36 -2
- package/esm2022/libs/api/repository/src/lib/gn4/index.mjs +3 -1
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +5 -4
- package/esm2022/libs/feature/editor/src/lib/record-form/record-form.component.mjs +5 -3
- package/esm2022/libs/feature/map/src/index.mjs +2 -1
- package/esm2022/libs/feature/map/src/lib/constant/index.mjs +2 -1
- package/esm2022/libs/feature/map/src/lib/constant/projections.mjs +2 -0
- package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +17 -3
- package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +93 -0
- package/esm2022/libs/feature/map/src/lib/geocoding.service.mjs +40 -0
- package/esm2022/libs/feature/map/src/lib/utils/index.mjs +1 -3
- package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +60 -29
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +29 -20
- package/esm2022/libs/ui/elements/src/index.mjs +2 -1
- package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +2 -2
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +3 -1
- package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +2 -2
- package/esm2022/libs/ui/inputs/src/lib/editable-label/editable-label.directive.mjs +45 -0
- package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +8 -3
- package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +2 -2
- package/esm2022/libs/ui/search/src/lib/record-table/record-table.component.mjs +3 -3
- package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +29 -13
- package/esm2022/translations/de.json +1 -0
- package/esm2022/translations/en.json +1 -0
- package/esm2022/translations/es.json +1 -0
- package/esm2022/translations/fr.json +1 -0
- package/esm2022/translations/it.json +1 -0
- package/esm2022/translations/nl.json +1 -0
- package/esm2022/translations/pt.json +1 -0
- package/fesm2022/geonetwork-ui.mjs +338 -108
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts +1 -0
- package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/index.d.ts +2 -0
- package/libs/api/repository/src/lib/gn4/index.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +10 -5
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts +15 -2
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts.map +1 -1
- package/libs/feature/map/src/index.d.ts +1 -0
- package/libs/feature/map/src/index.d.ts.map +1 -1
- package/libs/feature/map/src/lib/constant/index.d.ts +1 -0
- package/libs/feature/map/src/lib/constant/index.d.ts.map +1 -1
- package/libs/feature/map/src/lib/constant/projections.d.ts.map +1 -0
- package/libs/feature/map/src/lib/feature-map.module.d.ts +13 -12
- package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
- package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts +25 -0
- package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -0
- package/libs/feature/map/src/lib/geocoding.service.d.ts +18 -0
- package/libs/feature/map/src/lib/geocoding.service.d.ts.map +1 -0
- package/libs/feature/map/src/lib/utils/index.d.ts +0 -2
- package/libs/feature/map/src/lib/utils/index.d.ts.map +1 -1
- package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +13 -11
- 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 +1 -3
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +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/downloads-list/downloads-list.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts +13 -0
- package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts.map +1 -0
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +18 -17
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
- package/libs/util/shared/src/lib/links/link-utils.d.ts +19 -7
- package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
- package/package.json +4 -1
- package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +3 -0
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +43 -0
- package/src/libs/api/repository/src/lib/gn4/index.ts +2 -0
- package/src/libs/common/domain/src/lib/index.ts +2 -0
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +12 -7
- package/src/libs/feature/dataviz/src/lib/service/data.service.ts +8 -5
- package/src/libs/feature/editor/src/lib/record-form/record-form.component.ts +2 -1
- package/src/libs/feature/map/src/index.ts +1 -0
- package/src/libs/feature/map/src/lib/constant/index.ts +1 -0
- package/src/libs/feature/map/src/lib/feature-map.module.ts +8 -0
- package/src/libs/feature/map/src/lib/geocoding/geocoding.component.css +0 -0
- package/src/libs/feature/map/src/lib/geocoding/geocoding.component.html +39 -0
- package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +99 -0
- package/src/libs/feature/map/src/lib/geocoding.service.ts +59 -0
- package/src/libs/feature/map/src/lib/utils/index.ts +0 -2
- package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +85 -50
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +18 -3
- package/src/libs/ui/elements/src/index.ts +1 -0
- package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +4 -1
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +52 -52
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +1 -0
- package/src/libs/ui/inputs/src/lib/button/button.component.css +1 -1
- package/src/libs/ui/inputs/src/lib/editable-label/editable-label.directive.ts +47 -0
- package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -0
- package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +1 -1
- package/src/libs/ui/search/src/lib/record-table/record-table.component.html +2 -2
- package/src/libs/util/shared/src/lib/links/link-utils.ts +34 -11
- package/translations/de.json +1 -0
- package/translations/en.json +1 -0
- package/translations/es.json +1 -0
- package/translations/fr.json +1 -0
- package/translations/it.json +1 -0
- package/translations/nl.json +1 -0
- package/translations/pt.json +1 -0
- package/translations/sk.json +1 -0
- package/esm2022/libs/feature/map/src/lib/utils/map-utils-wms.service.mjs +0 -55
- package/esm2022/libs/feature/map/src/lib/utils/projections.mjs +0 -2
- package/libs/feature/map/src/lib/utils/map-utils-wms.service.d.ts +0 -17
- package/libs/feature/map/src/lib/utils/map-utils-wms.service.d.ts.map +0 -1
- package/libs/feature/map/src/lib/utils/projections.d.ts.map +0 -1
- package/src/libs/feature/map/src/lib/utils/map-utils-wms.service.ts +0 -58
- /package/libs/feature/map/src/lib/{utils → constant}/projections.d.ts +0 -0
- /package/src/libs/feature/map/src/lib/{utils → constant}/projections.ts +0 -0
|
@@ -41,6 +41,7 @@ import { MatFormFieldModule } from '@angular/material/form-field'
|
|
|
41
41
|
import { MatInputModule } from '@angular/material/input'
|
|
42
42
|
import { MatDatepickerModule } from '@angular/material/datepicker'
|
|
43
43
|
import { MatNativeDateModule } from '@angular/material/core'
|
|
44
|
+
import { EditableLabelDirective } from './editable-label/editable-label.directive'
|
|
44
45
|
|
|
45
46
|
@NgModule({
|
|
46
47
|
declarations: [
|
|
@@ -68,6 +69,7 @@ import { MatNativeDateModule } from '@angular/material/core'
|
|
|
68
69
|
CheckboxComponent,
|
|
69
70
|
SearchInputComponent,
|
|
70
71
|
DateRangePickerComponent,
|
|
72
|
+
EditableLabelDirective,
|
|
71
73
|
],
|
|
72
74
|
imports: [
|
|
73
75
|
CommonModule,
|
|
@@ -106,6 +108,7 @@ import { MatNativeDateModule } from '@angular/material/core'
|
|
|
106
108
|
CheckboxComponent,
|
|
107
109
|
SearchInputComponent,
|
|
108
110
|
DateRangePickerComponent,
|
|
111
|
+
EditableLabelDirective,
|
|
109
112
|
],
|
|
110
113
|
})
|
|
111
114
|
export class UiInputsModule {}
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
</div>
|
|
39
39
|
<div
|
|
40
40
|
class="contents hover:text-gray-900 text-gray-800 cursor-pointer"
|
|
41
|
-
(click)="
|
|
41
|
+
(click)="recordsSelect.emit([record])"
|
|
42
42
|
*ngFor="let record of records"
|
|
43
43
|
>
|
|
44
44
|
<div class="record-table-col text-16">
|
|
@@ -157,7 +157,7 @@
|
|
|
157
157
|
</div>
|
|
158
158
|
<div
|
|
159
159
|
class="contents hover:text-gray-900 text-gray-800 cursor-pointer"
|
|
160
|
-
(click)="
|
|
160
|
+
(click)="recordsSelect.emit([record])"
|
|
161
161
|
*ngFor="let record of records"
|
|
162
162
|
>
|
|
163
163
|
<div class="record-table-col">
|
|
@@ -43,9 +43,15 @@ export const FORMATS = {
|
|
|
43
43
|
color: '#328556',
|
|
44
44
|
mimeTypes: ['x-gis/x-shapefile'],
|
|
45
45
|
},
|
|
46
|
+
gml: {
|
|
47
|
+
extensions: ['gml'],
|
|
48
|
+
priority: 5,
|
|
49
|
+
color: '#c92bce',
|
|
50
|
+
mimeTypes: ['application/gml+xml', 'text/xml; subtype=gml'],
|
|
51
|
+
},
|
|
46
52
|
kml: {
|
|
47
53
|
extensions: ['kml', 'kmz'],
|
|
48
|
-
priority:
|
|
54
|
+
priority: 6,
|
|
49
55
|
color: '#348009',
|
|
50
56
|
mimeTypes: [
|
|
51
57
|
'application/vnd.google-earth.kml+xml',
|
|
@@ -54,34 +60,40 @@ export const FORMATS = {
|
|
|
54
60
|
},
|
|
55
61
|
gpkg: {
|
|
56
62
|
extensions: ['gpkg', 'geopackage'],
|
|
57
|
-
priority:
|
|
63
|
+
priority: 7,
|
|
58
64
|
color: '#ea79ba',
|
|
59
65
|
mimeTypes: ['application/geopackage+sqlite3'],
|
|
60
66
|
},
|
|
61
67
|
zip: {
|
|
62
68
|
extensions: ['zip', 'tar.gz'],
|
|
63
|
-
priority:
|
|
69
|
+
priority: 8,
|
|
64
70
|
color: '#f2bb3a',
|
|
65
71
|
mimeTypes: ['application/zip', 'application/x-zip'],
|
|
66
72
|
},
|
|
67
73
|
pdf: {
|
|
68
74
|
extensions: ['pdf'],
|
|
69
|
-
priority:
|
|
75
|
+
priority: 9,
|
|
70
76
|
color: '#db544a',
|
|
71
77
|
mimeTypes: ['application/pdf'],
|
|
72
78
|
},
|
|
73
79
|
jpg: {
|
|
74
80
|
extensions: ['jpg', 'jpeg', 'jfif', 'pjpeg', 'pjp'],
|
|
75
|
-
priority:
|
|
81
|
+
priority: 9,
|
|
76
82
|
color: '#673ab7',
|
|
77
83
|
mimeTypes: ['image/jpg'],
|
|
78
84
|
},
|
|
79
85
|
svg: {
|
|
80
86
|
extensions: ['svg'],
|
|
81
|
-
priority:
|
|
87
|
+
priority: 10,
|
|
82
88
|
color: '#d98294',
|
|
83
89
|
mimeTypes: ['image/svg+xml'],
|
|
84
90
|
},
|
|
91
|
+
dxf: {
|
|
92
|
+
extensions: ['dxf'],
|
|
93
|
+
priority: 11,
|
|
94
|
+
color: '#de630b',
|
|
95
|
+
mimeTypes: ['application/x-dxf', 'image/x-dxf'],
|
|
96
|
+
},
|
|
85
97
|
} as const
|
|
86
98
|
|
|
87
99
|
export type FileFormat = keyof typeof FORMATS
|
|
@@ -102,13 +114,24 @@ export function getLinkPriority(link: DatasetDistribution): number {
|
|
|
102
114
|
return getFormatPriority(getFileFormat(link))
|
|
103
115
|
}
|
|
104
116
|
|
|
105
|
-
export function
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
117
|
+
export function getFileFormatFromServiceOutput(
|
|
118
|
+
serviceOutput: string
|
|
119
|
+
): FileFormat | null {
|
|
120
|
+
function formatMatcher(format: typeof FORMATS[FileFormat]): boolean {
|
|
121
|
+
const output = serviceOutput.toLowerCase()
|
|
122
|
+
return (
|
|
123
|
+
format.extensions.some((extension: string) =>
|
|
124
|
+
output.includes(extension)
|
|
125
|
+
) ||
|
|
126
|
+
format.mimeTypes.some((mimeType: string) => output.includes(mimeType))
|
|
127
|
+
)
|
|
128
|
+
}
|
|
129
|
+
for (const formatName in FORMATS) {
|
|
130
|
+
if (formatMatcher(FORMATS[formatName])) {
|
|
131
|
+
return formatName as FileFormat
|
|
109
132
|
}
|
|
110
133
|
}
|
|
111
|
-
return
|
|
134
|
+
return null
|
|
112
135
|
}
|
|
113
136
|
|
|
114
137
|
export function getFileFormat(link: DatasetDistribution): FileFormat {
|
package/translations/de.json
CHANGED
|
@@ -177,6 +177,7 @@
|
|
|
177
177
|
"map.add.layer.wfs": "Aus WFS",
|
|
178
178
|
"map.add.layer.wms": "Aus WMS",
|
|
179
179
|
"map.addFromFile.placeholder": "Klicke hier oder ziehe eine Datei herein",
|
|
180
|
+
"map.geocoding.placeholder": "",
|
|
180
181
|
"map.help.addFromFile": "Klicke oder ziehe eine Datei herein um eine Karte hinzuzufügen (momentan wird nur das GeoJSON-Format unterstützt).",
|
|
181
182
|
"map.layer.add": "Hinzufügen",
|
|
182
183
|
"map.layers.available": "Verfügbare Layer",
|
package/translations/en.json
CHANGED
|
@@ -177,6 +177,7 @@
|
|
|
177
177
|
"map.add.layer.wfs": "From WFS",
|
|
178
178
|
"map.add.layer.wms": "From WMS",
|
|
179
179
|
"map.addFromFile.placeholder": "Click or drop a file here",
|
|
180
|
+
"map.geocoding.placeholder": "Search for a place",
|
|
180
181
|
"map.help.addFromFile": "Click or drag and drop a file to add to the map (currently supports GeoJSON format only).",
|
|
181
182
|
"map.layer.add": "Add",
|
|
182
183
|
"map.layers.available": "Available Layers",
|
package/translations/es.json
CHANGED
package/translations/fr.json
CHANGED
package/translations/it.json
CHANGED
package/translations/nl.json
CHANGED
package/translations/pt.json
CHANGED
package/translations/sk.json
CHANGED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { WmsEndpoint } from '@camptocamp/ogc-client';
|
|
3
|
-
import { ProxyService } from '../../../../../../libs/util/shared/src';
|
|
4
|
-
import { from } from 'rxjs';
|
|
5
|
-
import { map, switchMap } from 'rxjs/operators';
|
|
6
|
-
import { LONLAT_CRS_CODES } from './projections';
|
|
7
|
-
import { fromEPSGCode, register } from 'ol/proj/proj4';
|
|
8
|
-
import proj4 from 'proj4/dist/proj4';
|
|
9
|
-
import { transformExtent } from 'ol/proj';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "../../../../../../libs/util/shared/src";
|
|
12
|
-
export class MapUtilsWMSService {
|
|
13
|
-
constructor(proxy) {
|
|
14
|
-
this.proxy = proxy;
|
|
15
|
-
}
|
|
16
|
-
getCapabilities(layer) {
|
|
17
|
-
return from(new WmsEndpoint(this.proxy.getProxiedUrl(layer.url)).isReady());
|
|
18
|
-
}
|
|
19
|
-
getLayerFull(layer) {
|
|
20
|
-
return this.getCapabilities(layer).pipe(map((endpoint) => endpoint.getLayerByName(layer.name)));
|
|
21
|
-
}
|
|
22
|
-
getLayerLonLatBBox(layer) {
|
|
23
|
-
return this.getLayerFull(layer).pipe(switchMap((wmsLayerFull) => from(this.getLonLatBBox(wmsLayerFull))));
|
|
24
|
-
}
|
|
25
|
-
async getLonLatBBox(wmsLayerFull) {
|
|
26
|
-
const { boundingBoxes } = wmsLayerFull;
|
|
27
|
-
const lonLatCRS = Object.keys(boundingBoxes)?.find((crs) => LONLAT_CRS_CODES.includes(crs));
|
|
28
|
-
if (lonLatCRS) {
|
|
29
|
-
return boundingBoxes[lonLatCRS];
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
const availableEPSGCode = Object.keys(boundingBoxes)[0];
|
|
33
|
-
register(proj4);
|
|
34
|
-
const proj = await fromEPSGCode(availableEPSGCode);
|
|
35
|
-
proj4.defs(availableEPSGCode, proj);
|
|
36
|
-
const bboxWithFiniteNumbers = [
|
|
37
|
-
parseFloat(boundingBoxes[availableEPSGCode][0]),
|
|
38
|
-
parseFloat(boundingBoxes[availableEPSGCode][1]),
|
|
39
|
-
parseFloat(boundingBoxes[availableEPSGCode][2]),
|
|
40
|
-
parseFloat(boundingBoxes[availableEPSGCode][3]),
|
|
41
|
-
];
|
|
42
|
-
const extent = transformExtent(bboxWithFiniteNumbers, proj, 'EPSG:4326');
|
|
43
|
-
return extent;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsWMSService, deps: [{ token: i1.ProxyService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
47
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsWMSService, providedIn: 'root' }); }
|
|
48
|
-
}
|
|
49
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsWMSService, decorators: [{
|
|
50
|
-
type: Injectable,
|
|
51
|
-
args: [{
|
|
52
|
-
providedIn: 'root',
|
|
53
|
-
}]
|
|
54
|
-
}], ctorParameters: function () { return [{ type: i1.ProxyService }]; } });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXV0aWxzLXdtcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL21hcC9zcmMvbGliL3V0aWxzL21hcC11dGlscy13bXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQWdCLE1BQU0sd0JBQXdCLENBQUE7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdDQUF3QyxDQUFBO0FBQ3JFLE9BQU8sRUFBRSxJQUFJLEVBQWMsTUFBTSxNQUFNLENBQUE7QUFDdkMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFdEQsT0FBTyxLQUFLLE1BQU0sa0JBQWtCLENBQUE7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQTs7O0FBS3pDLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFBb0IsS0FBbUI7UUFBbkIsVUFBSyxHQUFMLEtBQUssQ0FBYztJQUFHLENBQUM7SUFFM0MsZUFBZSxDQUFDLEtBQThCO1FBQzVDLE9BQU8sSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFDN0UsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUE4QjtRQUN6QyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUNyQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3ZELENBQUE7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBOEI7UUFDL0MsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDbEMsU0FBUyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQ3BFLENBQUE7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUEwQjtRQUM1QyxNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsWUFBWSxDQUFBO1FBQ3RDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDekQsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUMvQixDQUFBO1FBQ0QsSUFBSSxTQUFTLEVBQUU7WUFDYixPQUFPLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQTtTQUNoQzthQUFNO1lBQ0wsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3ZELFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNmLE1BQU0sSUFBSSxHQUFHLE1BQU0sWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUE7WUFDbEQsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUVuQyxNQUFNLHFCQUFxQixHQUFHO2dCQUM1QixVQUFVLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9DLFVBQVUsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0MsVUFBVSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMvQyxVQUFVLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEQsQ0FBQTtZQUNELE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUE7WUFDeEUsT0FBTyxNQUFNLENBQUE7U0FDZDtJQUNILENBQUM7OEdBekNVLGtCQUFrQjtrSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFdtc0VuZHBvaW50LCBXbXNMYXllckZ1bGwgfSBmcm9tICdAY2FtcHRvY2FtcC9vZ2MtY2xpZW50J1xuaW1wb3J0IHsgTWFwQ29udGV4dExheWVyV21zTW9kZWwgfSBmcm9tICcuLi9tYXAtY29udGV4dC9tYXAtY29udGV4dC5tb2RlbCdcbmltcG9ydCB7IFByb3h5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9zaGFyZWQvc3JjJ1xuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgTE9OTEFUX0NSU19DT0RFUyB9IGZyb20gJy4vcHJvamVjdGlvbnMnXG5pbXBvcnQgeyBmcm9tRVBTR0NvZGUsIHJlZ2lzdGVyIH0gZnJvbSAnb2wvcHJvai9wcm9qNCdcbmltcG9ydCB7IEV4dGVudCB9IGZyb20gJ29sL2V4dGVudCdcbmltcG9ydCBwcm9qNCBmcm9tICdwcm9qNC9kaXN0L3Byb2o0J1xuaW1wb3J0IHsgdHJhbnNmb3JtRXh0ZW50IH0gZnJvbSAnb2wvcHJvaidcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1hcFV0aWxzV01TU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcHJveHk6IFByb3h5U2VydmljZSkge31cblxuICBnZXRDYXBhYmlsaXRpZXMobGF5ZXI6IE1hcENvbnRleHRMYXllcldtc01vZGVsKTogT2JzZXJ2YWJsZTxXbXNFbmRwb2ludD4ge1xuICAgIHJldHVybiBmcm9tKG5ldyBXbXNFbmRwb2ludCh0aGlzLnByb3h5LmdldFByb3hpZWRVcmwobGF5ZXIudXJsKSkuaXNSZWFkeSgpKVxuICB9XG5cbiAgZ2V0TGF5ZXJGdWxsKGxheWVyOiBNYXBDb250ZXh0TGF5ZXJXbXNNb2RlbCk6IE9ic2VydmFibGU8V21zTGF5ZXJGdWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2FwYWJpbGl0aWVzKGxheWVyKS5waXBlKFxuICAgICAgbWFwKChlbmRwb2ludCkgPT4gZW5kcG9pbnQuZ2V0TGF5ZXJCeU5hbWUobGF5ZXIubmFtZSkpXG4gICAgKVxuICB9XG5cbiAgZ2V0TGF5ZXJMb25MYXRCQm94KGxheWVyOiBNYXBDb250ZXh0TGF5ZXJXbXNNb2RlbCkge1xuICAgIHJldHVybiB0aGlzLmdldExheWVyRnVsbChsYXllcikucGlwZShcbiAgICAgIHN3aXRjaE1hcCgod21zTGF5ZXJGdWxsKSA9PiBmcm9tKHRoaXMuZ2V0TG9uTGF0QkJveCh3bXNMYXllckZ1bGwpKSlcbiAgICApXG4gIH1cblxuICBhc3luYyBnZXRMb25MYXRCQm94KHdtc0xheWVyRnVsbDogV21zTGF5ZXJGdWxsKTogUHJvbWlzZTxFeHRlbnQ+IHtcbiAgICBjb25zdCB7IGJvdW5kaW5nQm94ZXMgfSA9IHdtc0xheWVyRnVsbFxuICAgIGNvbnN0IGxvbkxhdENSUyA9IE9iamVjdC5rZXlzKGJvdW5kaW5nQm94ZXMpPy5maW5kKChjcnMpID0+XG4gICAgICBMT05MQVRfQ1JTX0NPREVTLmluY2x1ZGVzKGNycylcbiAgICApXG4gICAgaWYgKGxvbkxhdENSUykge1xuICAgICAgcmV0dXJuIGJvdW5kaW5nQm94ZXNbbG9uTGF0Q1JTXVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBhdmFpbGFibGVFUFNHQ29kZSA9IE9iamVjdC5rZXlzKGJvdW5kaW5nQm94ZXMpWzBdXG4gICAgICByZWdpc3Rlcihwcm9qNClcbiAgICAgIGNvbnN0IHByb2ogPSBhd2FpdCBmcm9tRVBTR0NvZGUoYXZhaWxhYmxlRVBTR0NvZGUpXG4gICAgICBwcm9qNC5kZWZzKGF2YWlsYWJsZUVQU0dDb2RlLCBwcm9qKVxuXG4gICAgICBjb25zdCBiYm94V2l0aEZpbml0ZU51bWJlcnMgPSBbXG4gICAgICAgIHBhcnNlRmxvYXQoYm91bmRpbmdCb3hlc1thdmFpbGFibGVFUFNHQ29kZV1bMF0pLFxuICAgICAgICBwYXJzZUZsb2F0KGJvdW5kaW5nQm94ZXNbYXZhaWxhYmxlRVBTR0NvZGVdWzFdKSxcbiAgICAgICAgcGFyc2VGbG9hdChib3VuZGluZ0JveGVzW2F2YWlsYWJsZUVQU0dDb2RlXVsyXSksXG4gICAgICAgIHBhcnNlRmxvYXQoYm91bmRpbmdCb3hlc1thdmFpbGFibGVFUFNHQ29kZV1bM10pLFxuICAgICAgXVxuICAgICAgY29uc3QgZXh0ZW50ID0gdHJhbnNmb3JtRXh0ZW50KGJib3hXaXRoRmluaXRlTnVtYmVycywgcHJvaiwgJ0VQU0c6NDMyNicpXG4gICAgICByZXR1cm4gZXh0ZW50XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export const LONLAT_CRS_CODES = ['EPSG:4326', 'CRS:84'];
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvbWFwL3NyYy9saWIvdXRpbHMvcHJvamVjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgTE9OTEFUX0NSU19DT0RFUyA9IFsnRVBTRzo0MzI2JywgJ0NSUzo4NCddXG4iXX0=
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { WmsEndpoint, WmsLayerFull } from '@camptocamp/ogc-client';
|
|
2
|
-
import { MapContextLayerWmsModel } from '../map-context/map-context.model';
|
|
3
|
-
import { ProxyService } from '../../../../../../libs/util/shared/src';
|
|
4
|
-
import { Observable } from 'rxjs';
|
|
5
|
-
import { Extent } from 'ol/extent';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export declare class MapUtilsWMSService {
|
|
8
|
-
private proxy;
|
|
9
|
-
constructor(proxy: ProxyService);
|
|
10
|
-
getCapabilities(layer: MapContextLayerWmsModel): Observable<WmsEndpoint>;
|
|
11
|
-
getLayerFull(layer: MapContextLayerWmsModel): Observable<WmsLayerFull>;
|
|
12
|
-
getLayerLonLatBBox(layer: MapContextLayerWmsModel): Observable<Extent>;
|
|
13
|
-
getLonLatBBox(wmsLayerFull: WmsLayerFull): Promise<Extent>;
|
|
14
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<MapUtilsWMSService, never>;
|
|
15
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<MapUtilsWMSService>;
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=map-utils-wms.service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"map-utils-wms.service.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/map/src/lib/utils/map-utils-wms.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAA;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAQ,UAAU,EAAE,MAAM,MAAM,CAAA;AAIvC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;;AAIlC,qBAGa,kBAAkB;IACjB,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,YAAY;IAEvC,eAAe,CAAC,KAAK,EAAE,uBAAuB,GAAG,UAAU,CAAC,WAAW,CAAC;IAIxE,YAAY,CAAC,KAAK,EAAE,uBAAuB,GAAG,UAAU,CAAC,YAAY,CAAC;IAMtE,kBAAkB,CAAC,KAAK,EAAE,uBAAuB;IAM3C,aAAa,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;yCAnBrD,kBAAkB;6CAAlB,kBAAkB;CA0C9B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"projections.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/map/src/lib/utils/projections.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,UAA0B,CAAA"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core'
|
|
2
|
-
import { WmsEndpoint, WmsLayerFull } from '@camptocamp/ogc-client'
|
|
3
|
-
import { MapContextLayerWmsModel } from '../map-context/map-context.model'
|
|
4
|
-
import { ProxyService } from '../../../../../../libs/util/shared/src'
|
|
5
|
-
import { from, Observable } from 'rxjs'
|
|
6
|
-
import { map, switchMap } from 'rxjs/operators'
|
|
7
|
-
import { LONLAT_CRS_CODES } from './projections'
|
|
8
|
-
import { fromEPSGCode, register } from 'ol/proj/proj4'
|
|
9
|
-
import { Extent } from 'ol/extent'
|
|
10
|
-
import proj4 from 'proj4/dist/proj4'
|
|
11
|
-
import { transformExtent } from 'ol/proj'
|
|
12
|
-
|
|
13
|
-
@Injectable({
|
|
14
|
-
providedIn: 'root',
|
|
15
|
-
})
|
|
16
|
-
export class MapUtilsWMSService {
|
|
17
|
-
constructor(private proxy: ProxyService) {}
|
|
18
|
-
|
|
19
|
-
getCapabilities(layer: MapContextLayerWmsModel): Observable<WmsEndpoint> {
|
|
20
|
-
return from(new WmsEndpoint(this.proxy.getProxiedUrl(layer.url)).isReady())
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
getLayerFull(layer: MapContextLayerWmsModel): Observable<WmsLayerFull> {
|
|
24
|
-
return this.getCapabilities(layer).pipe(
|
|
25
|
-
map((endpoint) => endpoint.getLayerByName(layer.name))
|
|
26
|
-
)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
getLayerLonLatBBox(layer: MapContextLayerWmsModel) {
|
|
30
|
-
return this.getLayerFull(layer).pipe(
|
|
31
|
-
switchMap((wmsLayerFull) => from(this.getLonLatBBox(wmsLayerFull)))
|
|
32
|
-
)
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
async getLonLatBBox(wmsLayerFull: WmsLayerFull): Promise<Extent> {
|
|
36
|
-
const { boundingBoxes } = wmsLayerFull
|
|
37
|
-
const lonLatCRS = Object.keys(boundingBoxes)?.find((crs) =>
|
|
38
|
-
LONLAT_CRS_CODES.includes(crs)
|
|
39
|
-
)
|
|
40
|
-
if (lonLatCRS) {
|
|
41
|
-
return boundingBoxes[lonLatCRS]
|
|
42
|
-
} else {
|
|
43
|
-
const availableEPSGCode = Object.keys(boundingBoxes)[0]
|
|
44
|
-
register(proj4)
|
|
45
|
-
const proj = await fromEPSGCode(availableEPSGCode)
|
|
46
|
-
proj4.defs(availableEPSGCode, proj)
|
|
47
|
-
|
|
48
|
-
const bboxWithFiniteNumbers = [
|
|
49
|
-
parseFloat(boundingBoxes[availableEPSGCode][0]),
|
|
50
|
-
parseFloat(boundingBoxes[availableEPSGCode][1]),
|
|
51
|
-
parseFloat(boundingBoxes[availableEPSGCode][2]),
|
|
52
|
-
parseFloat(boundingBoxes[availableEPSGCode][3]),
|
|
53
|
-
]
|
|
54
|
-
const extent = transformExtent(bboxWithFiniteNumbers, proj, 'EPSG:4326')
|
|
55
|
-
return extent
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
File without changes
|
|
File without changes
|