@regionerne/gis-komponent 0.0.87 → 0.0.88
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/fesm2022/regionerne-gis-komponent.mjs +74 -53
- package/fesm2022/regionerne-gis-komponent.mjs.map +1 -1
- package/lib/services/UndoRedo.service.d.ts +1 -4
- package/lib/services/centerPoint.service.d.ts +1 -0
- package/lib/services/geometri-split.service.d.ts +1 -0
- package/lib/services/mergeFeatures.service.d.ts +1 -0
- package/package.json +1 -1
|
@@ -59,7 +59,7 @@ import * as SLDReader from '@nieuwlandgeo/sldreader';
|
|
|
59
59
|
import WKT from 'ol/format/WKT';
|
|
60
60
|
import Feature$1 from 'ol/Feature';
|
|
61
61
|
import { never, always } from 'ol/events/condition';
|
|
62
|
-
import { buffer, lineIntersect, lineSplit, featureCollection, difference, booleanIntersects, union,
|
|
62
|
+
import { buffer, lineIntersect, lineSplit, featureCollection, difference, booleanIntersects, union, booleanPointInPolygon, point, area, flatten, feature, booleanWithin, intersect, bboxPolygon } from '@turf/turf';
|
|
63
63
|
import GeoJSON$1 from 'ol/format/GeoJSON';
|
|
64
64
|
import { containsXY, extend, createEmpty, buffer as buffer$1 } from 'ol/extent';
|
|
65
65
|
import { Feature } from 'ol';
|
|
@@ -1520,29 +1520,10 @@ class UndoRedoService {
|
|
|
1520
1520
|
constructor(_drawlayerSourceService) {
|
|
1521
1521
|
this._drawlayerSourceService = _drawlayerSourceService;
|
|
1522
1522
|
}
|
|
1523
|
-
disable() {
|
|
1524
|
-
this._enabled = false;
|
|
1525
|
-
}
|
|
1526
|
-
enable() {
|
|
1527
|
-
this._enabled = true;
|
|
1528
|
-
}
|
|
1529
1523
|
_steps = [];
|
|
1530
1524
|
_currentStep = 0;
|
|
1531
|
-
_changing = false;
|
|
1532
|
-
_enabled = true;
|
|
1533
1525
|
init() {
|
|
1534
1526
|
this._steps[0] = this._drawlayerSourceService.allFeatures;
|
|
1535
|
-
// For every change, add the current state
|
|
1536
|
-
this._drawlayerSourceService.features$.pipe(filter(() => this._enabled)).subscribe({
|
|
1537
|
-
next: () => {
|
|
1538
|
-
if (this._changing) {
|
|
1539
|
-
this._changing = false;
|
|
1540
|
-
return;
|
|
1541
|
-
}
|
|
1542
|
-
this._steps = [...this._steps.slice(0, this._currentStep + 1), this._drawlayerSourceService.allFeatures];
|
|
1543
|
-
this._currentStep++;
|
|
1544
|
-
}
|
|
1545
|
-
});
|
|
1546
1527
|
}
|
|
1547
1528
|
get canUndo() {
|
|
1548
1529
|
return this._currentStep > 0;
|
|
@@ -1550,9 +1531,12 @@ class UndoRedoService {
|
|
|
1550
1531
|
get canRedo() {
|
|
1551
1532
|
return this._currentStep < this._steps.length - 1;
|
|
1552
1533
|
}
|
|
1534
|
+
addStep() {
|
|
1535
|
+
this._steps = [...this._steps.slice(0, this._currentStep + 1), this._drawlayerSourceService.allFeatures];
|
|
1536
|
+
this._currentStep++;
|
|
1537
|
+
}
|
|
1553
1538
|
undo() {
|
|
1554
1539
|
if (this.canUndo) {
|
|
1555
|
-
this._changing = true;
|
|
1556
1540
|
this._currentStep--;
|
|
1557
1541
|
const features = this._steps[this._currentStep];
|
|
1558
1542
|
this._drawlayerSourceService.setFeatures(features);
|
|
@@ -1560,14 +1544,12 @@ class UndoRedoService {
|
|
|
1560
1544
|
}
|
|
1561
1545
|
redo() {
|
|
1562
1546
|
if (this.canRedo) {
|
|
1563
|
-
this._changing = true;
|
|
1564
1547
|
this._currentStep++;
|
|
1565
1548
|
const features = this._steps[this._currentStep];
|
|
1566
1549
|
this._drawlayerSourceService.setFeatures(features);
|
|
1567
1550
|
}
|
|
1568
1551
|
}
|
|
1569
1552
|
reset() {
|
|
1570
|
-
this._changing = true;
|
|
1571
1553
|
if (this._currentStep === 0) {
|
|
1572
1554
|
return;
|
|
1573
1555
|
}
|
|
@@ -1584,6 +1566,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
1584
1566
|
class GeometrySplitService {
|
|
1585
1567
|
geoJsonFormat = new GeoJSON$1();
|
|
1586
1568
|
_featureHelper = inject(FeatureHelperService);
|
|
1569
|
+
_undoRedo = inject(UndoRedoService);
|
|
1587
1570
|
/**
|
|
1588
1571
|
* Split polygons in a vector source using a buffered LineString.
|
|
1589
1572
|
* @param lineFeature The drawn LineString feature.
|
|
@@ -1645,6 +1628,7 @@ class GeometrySplitService {
|
|
|
1645
1628
|
vectorSource.addFeatures(newFeatures);
|
|
1646
1629
|
}
|
|
1647
1630
|
});
|
|
1631
|
+
this._undoRedo.addStep();
|
|
1648
1632
|
}
|
|
1649
1633
|
isPointStrictlyInside(geom, coord) {
|
|
1650
1634
|
if (!geom.intersectsCoordinate(coord))
|
|
@@ -1656,13 +1640,10 @@ class GeometrySplitService {
|
|
|
1656
1640
|
return true; // inde og ikke kun på kanten
|
|
1657
1641
|
}
|
|
1658
1642
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: GeometrySplitService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1659
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: GeometrySplitService
|
|
1643
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: GeometrySplitService });
|
|
1660
1644
|
}
|
|
1661
1645
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: GeometrySplitService, decorators: [{
|
|
1662
|
-
type: Injectable
|
|
1663
|
-
args: [{
|
|
1664
|
-
providedIn: 'root'
|
|
1665
|
-
}]
|
|
1646
|
+
type: Injectable
|
|
1666
1647
|
}] });
|
|
1667
1648
|
|
|
1668
1649
|
class ZoomService {
|
|
@@ -1822,6 +1803,7 @@ class MergeFeaturesService {
|
|
|
1822
1803
|
_featureHelper = inject(FeatureHelperService);
|
|
1823
1804
|
_interactionHelper = inject(InteractionHelperService);
|
|
1824
1805
|
_drawLayerService = inject(DrawLayerSourceService);
|
|
1806
|
+
_undoRedoService = inject(UndoRedoService);
|
|
1825
1807
|
_selectedMergeFeature;
|
|
1826
1808
|
formatter = new GeoJSON$1();
|
|
1827
1809
|
_formatterOptions = { dataProjection: 'EPSG:4326', featureProjection: 'EPSG:25832' };
|
|
@@ -1832,6 +1814,9 @@ class MergeFeaturesService {
|
|
|
1832
1814
|
if (this._featureHelper.typeId(f) !== typeId) {
|
|
1833
1815
|
return false;
|
|
1834
1816
|
}
|
|
1817
|
+
if (f.getGeometry()?.getType() !== 'Polygon') {
|
|
1818
|
+
return false;
|
|
1819
|
+
}
|
|
1835
1820
|
if (this._selectedMergeFeature) {
|
|
1836
1821
|
const previusFeatureObject = this.formatter.writeFeatureObject(this._selectedMergeFeature, this._formatterOptions);
|
|
1837
1822
|
const bufferedPreviouslySelected = buffer(previusFeatureObject, 5, { units: 'centimeters' });
|
|
@@ -1863,6 +1848,7 @@ class MergeFeaturesService {
|
|
|
1863
1848
|
const newFeature = this.formatter.readFeature(newFeatureObject, this._formatterOptions);
|
|
1864
1849
|
this._selectedMergeFeature.setGeometry(newFeature.getGeometry());
|
|
1865
1850
|
this._drawLayerService.source.removeFeature(evt.selected[0]);
|
|
1851
|
+
this._undoRedoService.addStep();
|
|
1866
1852
|
}
|
|
1867
1853
|
this._selectedMergeFeature = undefined;
|
|
1868
1854
|
map.removeInteraction(select);
|
|
@@ -2020,6 +2006,21 @@ class CenterPointService {
|
|
|
2020
2006
|
this._drawLayerService.remove(centerFeature.getId());
|
|
2021
2007
|
}
|
|
2022
2008
|
}
|
|
2009
|
+
checkAfterUpdate() {
|
|
2010
|
+
if (!this._current.gisKomponentSettings.centerPoint || !this._current.gisKomponentSettings.centerPoint.withinPolygon) {
|
|
2011
|
+
return;
|
|
2012
|
+
}
|
|
2013
|
+
const currentCenter = this._drawLayerService.source.getFeatures().filter(f => this.isCenterpoint(f));
|
|
2014
|
+
if (currentCenter && currentCenter.length === 1) {
|
|
2015
|
+
const polygonFeatures = this._drawLayerService.source.getFeatures().filter(f => f.getGeometry()?.getType() === 'Polygon');
|
|
2016
|
+
const centerFeatureObject = this._geoJson.writeFeatureObject(currentCenter[0]);
|
|
2017
|
+
const isInSomePoly = polygonFeatures.map(pf => this._geoJson.writeFeatureObject(pf)).some(pf => booleanPointInPolygon(centerFeatureObject, pf));
|
|
2018
|
+
console.log("🚀 ~ CenterPointService ~ checkAfterUpdate ~ isInSomePoly:", isInSomePoly);
|
|
2019
|
+
if (!isInSomePoly) {
|
|
2020
|
+
this._drawLayerService.source.removeFeature(currentCenter[0]);
|
|
2021
|
+
}
|
|
2022
|
+
}
|
|
2023
|
+
}
|
|
2023
2024
|
isCenterpoint(feature) {
|
|
2024
2025
|
return feature.get(this._centerPointProperty) === true;
|
|
2025
2026
|
}
|
|
@@ -2027,7 +2028,7 @@ class CenterPointService {
|
|
|
2027
2028
|
const style$ = this._settingsHelper.getStyle(style, this._current.profile.styleRepositoryWorkspace, this._current.profile.styleRepositoryGeoserver, 'Point');
|
|
2028
2029
|
combineLatest([style$, this._current.map$]).subscribe({
|
|
2029
2030
|
next: ([loadedStyle, map]) => {
|
|
2030
|
-
let parentPolyId;
|
|
2031
|
+
// let parentPolyId: number | string | undefined;
|
|
2031
2032
|
const centerDraw = new Draw({
|
|
2032
2033
|
type: 'Point',
|
|
2033
2034
|
source: this._drawLayerService.source,
|
|
@@ -2048,7 +2049,7 @@ class CenterPointService {
|
|
|
2048
2049
|
return false;
|
|
2049
2050
|
}
|
|
2050
2051
|
// Save the parent polygon's id on the center. If the parent is deleted, the point will be deleted too
|
|
2051
|
-
parentPolyId = parentPoly.id;
|
|
2052
|
+
// parentPolyId = parentPoly.id;
|
|
2052
2053
|
return !!parentPoly;
|
|
2053
2054
|
},
|
|
2054
2055
|
style: loadedStyle
|
|
@@ -2063,7 +2064,7 @@ class CenterPointService {
|
|
|
2063
2064
|
}
|
|
2064
2065
|
// Mark feature as centerpoint - this is to find it again an remove
|
|
2065
2066
|
evt.feature.set(this._centerPointProperty, true);
|
|
2066
|
-
evt.feature.set('_parentPolyId', parentPolyId);
|
|
2067
|
+
// evt.feature.set('_parentPolyId', parentPolyId);
|
|
2067
2068
|
this._featureHelper.setId(evt.feature);
|
|
2068
2069
|
callBack();
|
|
2069
2070
|
});
|
|
@@ -3331,12 +3332,14 @@ class ToolboxComponent {
|
|
|
3331
3332
|
this._overlap.splitByFeature(feature)])
|
|
3332
3333
|
.subscribe({
|
|
3333
3334
|
next: ([style, features]) => {
|
|
3334
|
-
this._undoRedo.enable();
|
|
3335
3335
|
features.forEach(feature => {
|
|
3336
3336
|
this._featureHelper.setTypeId(feature, this.selectedDrawItem?.typeId || '');
|
|
3337
3337
|
this._featureHelper.setId(feature);
|
|
3338
3338
|
this._drawLayerService.source.addFeature(feature);
|
|
3339
3339
|
});
|
|
3340
|
+
if (features.length > 0) {
|
|
3341
|
+
this._undoRedo.addStep();
|
|
3342
|
+
}
|
|
3340
3343
|
//Clear results and close tool
|
|
3341
3344
|
this.activeMode = null;
|
|
3342
3345
|
this.showGeometryTypes = false;
|
|
@@ -3371,13 +3374,16 @@ class ToolboxComponent {
|
|
|
3371
3374
|
this._overlap.splitByFeature(feature, true)])
|
|
3372
3375
|
.subscribe({
|
|
3373
3376
|
next: ([style, features]) => {
|
|
3374
|
-
this._undoRedo.enable();
|
|
3375
3377
|
features.forEach(feature => {
|
|
3376
3378
|
this._featureHelper.setTypeId(feature, this.selectedDrawItem?.typeId || '');
|
|
3377
3379
|
this._featureHelper.setId(feature);
|
|
3378
3380
|
this._drawLayerService.source.addFeature(feature);
|
|
3379
3381
|
});
|
|
3380
3382
|
//Clear results and close tool
|
|
3383
|
+
if (features.length > 0) {
|
|
3384
|
+
this._centerPointService.checkAfterUpdate();
|
|
3385
|
+
this._undoRedo.addStep();
|
|
3386
|
+
}
|
|
3381
3387
|
this.activeMode = null;
|
|
3382
3388
|
this.showGeometryTypes = false;
|
|
3383
3389
|
this._disablePointSearch();
|
|
@@ -3464,6 +3470,9 @@ class ToolboxComponent {
|
|
|
3464
3470
|
if (f.length > 1) {
|
|
3465
3471
|
this._confirmService.open({ message: `Den indtegnede flade var ikke gyldig, men rettet til ${f.length} nye flader`, primaryText: 'OK', title: 'Advarsel' }).subscribe();
|
|
3466
3472
|
}
|
|
3473
|
+
if (f.length > 0) {
|
|
3474
|
+
this._undoRedo.addStep();
|
|
3475
|
+
}
|
|
3467
3476
|
}
|
|
3468
3477
|
}
|
|
3469
3478
|
});
|
|
@@ -3480,6 +3489,7 @@ class ToolboxComponent {
|
|
|
3480
3489
|
this._featureHelper.setId(feature);
|
|
3481
3490
|
this._zoomService.zoomToFeatures([feature]);
|
|
3482
3491
|
this._drawLayerService.source.addFeature(feature);
|
|
3492
|
+
this._undoRedo.addStep();
|
|
3483
3493
|
}
|
|
3484
3494
|
}
|
|
3485
3495
|
});
|
|
@@ -3530,7 +3540,11 @@ class ToolboxComponent {
|
|
|
3530
3540
|
});
|
|
3531
3541
|
this._interactionHelper.setAsTemp(clipHoleDraw);
|
|
3532
3542
|
clipHoleDraw.on('drawend', evt => {
|
|
3533
|
-
const featuresInExtent = this._drawLayerService.source
|
|
3543
|
+
const featuresInExtent = this._drawLayerService.source
|
|
3544
|
+
.getFeatures()
|
|
3545
|
+
.filter(f => !this._featureHelper.isLocked(f)
|
|
3546
|
+
&& f.getGeometry()?.getType() === 'Polygon'
|
|
3547
|
+
&& f.getGeometry()?.intersectsExtent(evt.feature.getGeometry().getExtent()));
|
|
3534
3548
|
const formatterOptions = { dataProjection: 'EPSG:4326', featureProjection: 'EPSG:25832' };
|
|
3535
3549
|
const geoJsonFormat = new GeoJSON$1(formatterOptions);
|
|
3536
3550
|
const holeGeoJson = geoJsonFormat.writeFeatureObject(evt.feature);
|
|
@@ -3566,9 +3580,9 @@ class ToolboxComponent {
|
|
|
3566
3580
|
})).flatMap(f => f);
|
|
3567
3581
|
const featuresToRemove = validatedItems.map(item => item.feature);
|
|
3568
3582
|
this._drawLayerService.source.removeFeatures(featuresToRemove);
|
|
3569
|
-
this._undoRedo.disable();
|
|
3570
3583
|
this._drawLayerService.source.addFeatures(featuresToAdd);
|
|
3571
|
-
this.
|
|
3584
|
+
this._centerPointService.checkAfterUpdate();
|
|
3585
|
+
this._undoRedo.addStep();
|
|
3572
3586
|
}
|
|
3573
3587
|
});
|
|
3574
3588
|
});
|
|
@@ -3635,6 +3649,7 @@ class ToolboxComponent {
|
|
|
3635
3649
|
this._featureHelper.setTypeId(feature, typeId);
|
|
3636
3650
|
feature.setStyle(style);
|
|
3637
3651
|
this._drawLayerService.source.addFeature(feature);
|
|
3652
|
+
this._undoRedo.addStep();
|
|
3638
3653
|
});
|
|
3639
3654
|
this._interactionHelper.setAsTemp(drawInteraction);
|
|
3640
3655
|
this.map.addInteraction(drawInteraction);
|
|
@@ -3661,8 +3676,13 @@ class ToolboxComponent {
|
|
|
3661
3676
|
});
|
|
3662
3677
|
this._interactionHelper.setAsTemp(this.deleteSelect);
|
|
3663
3678
|
this.deleteSelect.on('select', evt => {
|
|
3679
|
+
console.log("🚀 ~ ToolboxComponent ~ deleteSelect ~ evt:", evt);
|
|
3664
3680
|
this._drawLayerService.source.removeFeatures(evt.selected);
|
|
3665
|
-
evt.selected.forEach(f => this._centerPointService.handleFeatureDeleted(f.getId()));
|
|
3681
|
+
// evt.selected.forEach(f => this._centerPointService.handleFeatureDeleted(f.getId()!) );
|
|
3682
|
+
this._centerPointService.checkAfterUpdate();
|
|
3683
|
+
if (evt.selected.length > 0) {
|
|
3684
|
+
this._undoRedo.addStep();
|
|
3685
|
+
}
|
|
3666
3686
|
});
|
|
3667
3687
|
return this._deleteSelect;
|
|
3668
3688
|
}
|
|
@@ -3678,17 +3698,15 @@ class ToolboxComponent {
|
|
|
3678
3698
|
const modifyRemove = new Modify({
|
|
3679
3699
|
source: this._drawLayerService.source,
|
|
3680
3700
|
filter: f => !this._featureHelper.isLocked(f),
|
|
3681
|
-
// condition: evt => {
|
|
3682
|
-
// // first, get all features from the draw-layer
|
|
3683
|
-
// const feature = this.map.forEachFeatureAtPixel(evt.pixel, f => f, { layerFilter: l => l == this._drawLayerService.layer });
|
|
3684
|
-
// if (!feature) { return false ;}
|
|
3685
|
-
// return !this._featureHelper.isLocked(feature as Feature);
|
|
3686
|
-
// },
|
|
3687
3701
|
// Make sure delete is allowed and other interactions are not.
|
|
3688
3702
|
deleteCondition: always,
|
|
3689
3703
|
insertVertexCondition: never,
|
|
3690
3704
|
snapToPointer: this.snap,
|
|
3691
3705
|
});
|
|
3706
|
+
modifyRemove.on('modifyend', evt => {
|
|
3707
|
+
this._centerPointService.checkAfterUpdate();
|
|
3708
|
+
this._undoRedo.addStep();
|
|
3709
|
+
});
|
|
3692
3710
|
this._interactionHelper.setAsTemp(modifyRemove);
|
|
3693
3711
|
this.map.addInteraction(modifyRemove);
|
|
3694
3712
|
this._addSnap();
|
|
@@ -3728,13 +3746,15 @@ class ToolboxComponent {
|
|
|
3728
3746
|
next: f => {
|
|
3729
3747
|
if (f) {
|
|
3730
3748
|
f.forEach(feature => {
|
|
3731
|
-
this._undoRedo.enable();
|
|
3732
3749
|
this._drawLayerService.source.addFeature(feature);
|
|
3733
3750
|
});
|
|
3734
3751
|
this._zoomService.zoomToFeatures(f);
|
|
3735
3752
|
if (f.length > 1) {
|
|
3736
3753
|
this._confirmService.open({ message: `Den indtegnede flade var ikke gyldig, men rettet til ${f.length} nye flader`, primaryText: 'OK', title: 'Advarsel' }).subscribe();
|
|
3737
3754
|
}
|
|
3755
|
+
if (f.length > 0) {
|
|
3756
|
+
this._undoRedo.addStep();
|
|
3757
|
+
}
|
|
3738
3758
|
//Clear results and close tool
|
|
3739
3759
|
this.activeMode = null;
|
|
3740
3760
|
this.showGeometryTypes = false;
|
|
@@ -3763,11 +3783,7 @@ class ToolboxComponent {
|
|
|
3763
3783
|
// condition: always,
|
|
3764
3784
|
insertVertexCondition: always,
|
|
3765
3785
|
});
|
|
3766
|
-
/* Modify fires changes to features a LOT, so to not flood the UndoRedo service, I disable until ending the modify
|
|
3767
|
-
and then force an update, to add the updated feature to the undo-service. */
|
|
3768
|
-
modify.on('modifystart', () => this._undoRedo.disable());
|
|
3769
3786
|
modify.on('modifyend', (evt) => {
|
|
3770
|
-
this._undoRedo.enable();
|
|
3771
3787
|
evt.features.forEach(f => {
|
|
3772
3788
|
f.set('updated', new Date().toISOString());
|
|
3773
3789
|
const geom = f.getGeometry();
|
|
@@ -3790,6 +3806,7 @@ class ToolboxComponent {
|
|
|
3790
3806
|
// Don't check for overlap with the feature being updated.
|
|
3791
3807
|
this._overlap.handleOverlaps(result, idsToExcludeFromOverlap).pipe(filter(f => !!f)).subscribe({
|
|
3792
3808
|
next: f => {
|
|
3809
|
+
console.log("🚀 ~ ToolboxComponent ~ startEdit ~ f:", f);
|
|
3793
3810
|
if (f) {
|
|
3794
3811
|
f.forEach(feature => {
|
|
3795
3812
|
this._drawLayerService.source.addFeature(feature);
|
|
@@ -3798,6 +3815,8 @@ class ToolboxComponent {
|
|
|
3798
3815
|
this._confirmService.open({ message: `Den indtegnede flade var ikke gyldig, men rettet til ${f.length} nye flader`, primaryText: 'OK', title: 'Advarsel' }).subscribe();
|
|
3799
3816
|
}
|
|
3800
3817
|
}
|
|
3818
|
+
this._centerPointService.checkAfterUpdate();
|
|
3819
|
+
this._undoRedo.addStep();
|
|
3801
3820
|
}
|
|
3802
3821
|
});
|
|
3803
3822
|
}
|
|
@@ -3824,7 +3843,6 @@ class ToolboxComponent {
|
|
|
3824
3843
|
source: new VectorSource(),
|
|
3825
3844
|
style: style
|
|
3826
3845
|
});
|
|
3827
|
-
this._undoRedo.disable();
|
|
3828
3846
|
drawInteraction.on('drawend', evt => {
|
|
3829
3847
|
if (geomType === 'Polygon') {
|
|
3830
3848
|
// Validate feature
|
|
@@ -3839,7 +3857,6 @@ class ToolboxComponent {
|
|
|
3839
3857
|
this._overlap.handleOverlaps(result).pipe(filter(f => !!f)).subscribe({
|
|
3840
3858
|
next: f => {
|
|
3841
3859
|
if (f) {
|
|
3842
|
-
this._undoRedo.enable();
|
|
3843
3860
|
f.forEach(feature => {
|
|
3844
3861
|
if (feature.getGeometry()?.getType() !== 'MultiPolygon') {
|
|
3845
3862
|
this._drawLayerService.source.addFeature(feature);
|
|
@@ -3857,6 +3874,9 @@ class ToolboxComponent {
|
|
|
3857
3874
|
if (f.length > 1) {
|
|
3858
3875
|
this._confirmService.open({ message: `Den indtegnede flade var ikke gyldig, men rettet til ${f.length} nye flader`, primaryText: 'OK', title: 'Advarsel' }).subscribe();
|
|
3859
3876
|
}
|
|
3877
|
+
if (f.length > 0) {
|
|
3878
|
+
this._undoRedo.addStep();
|
|
3879
|
+
}
|
|
3860
3880
|
}
|
|
3861
3881
|
}
|
|
3862
3882
|
});
|
|
@@ -3871,8 +3891,8 @@ class ToolboxComponent {
|
|
|
3871
3891
|
this._featureHelper.setTypeId(evt.feature, typeId);
|
|
3872
3892
|
this._featureHelper.setId(evt.feature);
|
|
3873
3893
|
evt.feature.setStyle(style);
|
|
3874
|
-
this._undoRedo.enable();
|
|
3875
3894
|
this._drawLayerService.source.addFeature(evt.feature);
|
|
3895
|
+
this._undoRedo.addStep();
|
|
3876
3896
|
}
|
|
3877
3897
|
});
|
|
3878
3898
|
this._interactionHelper.setAsTemp(drawInteraction);
|
|
@@ -4233,6 +4253,7 @@ class ToolboxComponent {
|
|
|
4233
4253
|
this._featureHelper.setTypeId(newFeature, this.selectedDrawItem?.typeId || '');
|
|
4234
4254
|
this._drawLayerService.source.removeFeature(feature);
|
|
4235
4255
|
this._drawLayerService.source.addFeature(newFeature);
|
|
4256
|
+
this._undoRedo.addStep();
|
|
4236
4257
|
}
|
|
4237
4258
|
}
|
|
4238
4259
|
});
|
|
@@ -5753,7 +5774,7 @@ class GisKomponentComponent {
|
|
|
5753
5774
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: GisKomponentComponent, isStandalone: true, selector: "gis-komponent", inputs: { identifier: "identifier", settings: "settings" }, outputs: { sessionDone: "sessionDone", featuresChanged: "featuresChanged" }, providers: [CurrentItemsService, FeatureLoaderService, DrawLayerSourceService, ZoomService, UndoRedoService, ShowInfoHoverService, HoverInfoSearchService, CenterPointService, PrintDrawLayerSourceService,
|
|
5754
5775
|
HighlightService, ShowInfoService, InfoSearchProvider, InteractionHelperService, ConflictAnalysisSearchProvider,
|
|
5755
5776
|
MergeFeaturesService, OverlapService, CowiService, SearchProviderService, AddressSearchService, CadastreSearchService, ShowDocumentInfoService, DocumentSearchService,
|
|
5756
|
-
DmpCatalogService, OlCapabilitiesService, DmpLayerMapperService, GeometrySearchService], viewQueries: [{ propertyName: "toolbarRef", first: true, predicate: ["toolbarRef"], descendants: true, static: true }, { propertyName: "legendsListRef", first: true, predicate: ["legendsListRef"], descendants: true, static: true }, { propertyName: "layerSelectorRef", first: true, predicate: ["layerSelectorRef"], descendants: true, static: true }, { propertyName: "activeObjectsRef", first: true, predicate: ["activeObjectsRef"], descendants: true, static: true }, { propertyName: "documentInfoRef", first: true, predicate: ["documentInfoRef"], descendants: true, static: true }], ngImport: i0, template: "<div #layerSelectorRef class=\"layer-selector-container\">\n @if (selectedProfile && selectedProfile.showLayerSelector) {\n <lib-layer-selector [map]=\"map\" [profile]=\"selectedProfile\" [currentZoomLevel]=\"currentZoomLevel\"></lib-layer-selector>\n }\n</div>\n\n<div #legendsListRef class=\"legends-list-container\">\n @if (selectedProfile && selectedProfile.showLegends) {\n <lib-legends-list [map]=\"map\" [profile]=\"selectedProfile\"></lib-legends-list>\n }\n</div>\n\n<div #documentInfoRef class=\"documents-features-wrapper\">\n <document-search-info></document-search-info>\n</div>\n\n<div #activeObjectsRef class=\"active-objects-container\">\n @if(showActiveObjects && settings && selectedProfile) {\n <activeObjects [settings]=\"settings\" [profile]=\"selectedProfile\" (sessionDone)=\"sessionDoneFromActiveObject()\"></activeObjects>\n }\n</div>\n\n<div #toolbarRef class=\"map-toolbar-container\">\n @if (settings) {\n <map-toolbox [map]=\"map\" \n [profile]=\"selectedProfile\"\n [settings]=\"settings\"\n [class.toolbox-hidden]=\"!profileShowToolbox\"\n [collapsed]=\"toolbarCollapsed\" [WKTInputEnabled]=\"settings?.WKTInputEnabled\" [deleteEnabled]=\"settings?.deleteEnabled\" [showMeasureArea]=\"selectedProfile?.showAreaMeasurement || false\" [showMeasureDistance]=\"selectedProfile?.showDistanceMeasurement || false\"></map-toolbox>\n }\n</div>\n\n<div class=\"map-container\">\n <lib-map-search *ngIf=\"showSearch\" [profile]=\"selectedProfile\"></lib-map-search>\n\n <!-- Kort -->\n <div id=\"map\" class=\"map\"></div>\n</div>\n", styles: ["::ng-deep .global-wrapper-container{background:#4c4d51}::ng-deep .dmp-dialog-content mat-dialog-content{background:#4c4d51!important}::ng-deep .dmp-dialog-content mat-dialog-content .search-section mat-form-field input{color:#fff!important;font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::ng-deep .dmp-dialog-content mat-dialog-content .search-section mat-form-field input .search-icon{color:#fff!important}::ng-deep button.ol-zoom-in,::ng-deep button.ol-zoom-out,::ng-deep button.ol-rotate-reset{background:#4c4d51;color:#fff;border-radius:5px!important}::ng-deep button.ol-zoom-in:hover,::ng-deep button.ol-zoom-out:hover,::ng-deep button.ol-rotate-reset:hover{color:#e9e3e3;outline:none}::ng-deep mat-expansion-panel .mat-expansion-panel-header{height:40px!important;min-height:40px!important;background:#ffffff0d;transition:background .2s ease;border-top-left-radius:4px!important;border-top-right-radius:4px!important;padding:0 16px;margin-bottom:2px}::ng-deep mat-expansion-panel .mat-expansion-panel-header:hover{background:#ffffff14!important}::ng-deep mat-expansion-panel .mat-expansion-panel-header .panel-title{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:320px;margin-right:10px;color:#fff;font-weight:600;font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15px}::ng-deep mat-expansion-panel .mat-expansion-panel-header-title{color:#fff}::ng-deep .custom-image-icon,.compact-icon{background:none}::ng-deep .custom-image-icon img,.compact-icon img{width:100%;height:100%;object-fit:contain;transition:filter .2s ease}::ng-deep .custom-image-icon.active,.compact-icon.active{background:#f7b528!important;border-color:transparent;box-shadow:0 4px 12px #0ea5e966}::ng-deep .custom-image-icon.active img,.compact-icon.active img{filter:brightness(0) invert(1)}::ng-deep .custom-image-icon.active:hover,.compact-icon.active:hover{box-shadow:0 6px 20px #0ea5e980}::ng-deep .custom-image-icon:hover:not(.active),.compact-icon:hover:not(.active){background:#ffffff1a!important;border-color:none;box-shadow:none}::ng-deep .custom-image-icon:hover:not(.active) img,.compact-icon:hover:not(.active) img{filter:brightness(0) invert(.8)}::ng-deep .layer-selector-body .search-section mat-form-field input{color:#fff!important}::ng-deep .search-field .mat-mdc-input-element{color:#fff!important}::ng-deep .mat-mdc-text-field-wrapper{background:#878787!important}::ng-deep .mat-mdc-select-panel{font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::ng-deep .active-objects-wrapper.collapsed,::ng-deep .layer-selector-body-wrapper.collapsed,::ng-deep .legends-list-body-wrapper.collapsed,::ng-deep .search-container.collapsed,::ng-deep .toolbox-wrapper.collapsed{width:90px;max-width:90px;min-width:90px}::ng-deep .drag-handle-active-objects,::ng-deep .drag-handle-legends,::ng-deep .drag-handle,::ng-deep .drag-handle-selector,::ng-deep .drag-handle-toolbox{display:flex;align-items:center;justify-content:space-between;padding:0 2px;cursor:move;color:#fff;border-radius:5px;width:100%;box-sizing:border-box}:host{font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}:host ::ng-deep .mdc-notched-outline .mdc-notched-outline__leading,:host ::ng-deep .mdc-notched-outline .mdc-notched-outline__notch,:host ::ng-deep .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#dee2e6!important;border-width:1px!important}:host.mat-focused ::ng-deep .mdc-notched-outline .mdc-notched-outline__leading,:host.mat-focused ::ng-deep .mdc-notched-outline .mdc-notched-outline__notch,:host.mat-focused ::ng-deep .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#d1d5db!important;border-width:1px!important;box-shadow:0 0 0 3px #d1d5db40!important}::ng-deep .mat-mdc-form-field-flex{height:40px!important;display:flex!important;align-items:center!important}::ng-deep .mat-expansion-indicator svg{fill:#fff!important}::ng-deep .ol-control{background-color:transparent!important}::ng-deep .search-result-option{font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::ng-deep .mat-mdc-autocomplete-panel .mat-pseudo-checkbox{display:none!important}::ng-deep .mat-mdc-autocomplete-panel .mdc-list-item__end{display:none!important}:host{display:block;width:100%;height:100%;overflow:hidden}::ng-deep .lib-error-snackbar{background-color:#d32f2f;color:#fff;font-weight:500}::ng-deep .map-container{position:relative;height:81vh;width:100%;overflow:hidden}::ng-deep .toolbox-hidden{visibility:hidden!important}::ng-deep #map{width:100%;height:100%;position:absolute;inset:0;overflow:hidden}::ng-deep .ol-viewport{overflow:hidden!important}::ng-deep ::ng-deep .ol-logo{position:absolute;left:auto;right:3em;top:6.25em}::ng-deep ::ng-deep .ol-copyright{background-color:transparent;position:absolute;bottom:10px;width:100%;display:flex;justify-content:end}::ng-deep ::ng-deep .toolbar{position:absolute;top:10px;left:10px;background:#fff;padding:4px;border-radius:4px;display:flex;flex-direction:column;transition:width .3s;z-index:1000;overflow:hidden}::ng-deep ::ng-deep .toolbar.collapsed{width:40px;overflow:hidden}::ng-deep .object-panel{position:absolute;bottom:10px;left:10px;background:#fff;padding:8px;border-radius:4px;z-index:1000;max-height:calc(85vh - 20px);overflow-y:auto}::ng-deep .object-panel .header{display:flex;justify-content:space-between;padding:8px;cursor:pointer;background:#f0f0f0}::ng-deep .conflict-panel{position:absolute;bottom:10px;right:10px;background:#fff;padding:8px;border-radius:4px;z-index:1000;max-height:calc(85vh - 20px);overflow-y:auto}::ng-deep .conflict-panel .header{display:flex;justify-content:space-between;padding:8px;cursor:pointer;background:#f0f0f0}::ng-deep ::ng-deep .ol-zoom.ol-unselectable.ol-control{display:flex;flex-direction:column;position:absolute}::ng-deep ::ng-deep .ol-scale-text{display:flex}::ng-deep .ol-scale-bar.ol-unselectable{position:absolute;bottom:3rem}::ng-deep .ol-mouse-position{position:absolute;bottom:10px;left:6px;top:auto;background:#0000004d;color:#fffcfc;width:189px;height:30px;padding:2px;border-radius:5px;text-align:center;display:flex;align-items:center;justify-content:flex-start;z-index:1000}::ng-deep .documents-features-wrapper{position:absolute!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatListModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: LayerSelectorComponent, selector: "lib-layer-selector", inputs: ["map", "profile", "currentZoomLevel"] }, { kind: "component", type: MapSearchComponent, selector: "lib-map-search", inputs: ["profile"] }, { kind: "component", type: ToolboxComponent, selector: "map-toolbox", inputs: ["map", "showMeasureDistance", "showMeasureArea", "collapsed", "settings", "profile", "WKTInputEnabled", "deleteEnabled"] }, { kind: "component", type: ActiveObjectsComponent, selector: "activeObjects", inputs: ["settings", "profile"], outputs: ["sessionDone"] }, { kind: "component", type: LegendsListComponent, selector: "lib-legends-list", inputs: ["map", "profile"] }, { kind: "component", type: DocumentSearchInfoComponent, selector: "document-search-info" }] });
|
|
5777
|
+
DmpCatalogService, OlCapabilitiesService, DmpLayerMapperService, GeometrySearchService, GeometrySplitService], viewQueries: [{ propertyName: "toolbarRef", first: true, predicate: ["toolbarRef"], descendants: true, static: true }, { propertyName: "legendsListRef", first: true, predicate: ["legendsListRef"], descendants: true, static: true }, { propertyName: "layerSelectorRef", first: true, predicate: ["layerSelectorRef"], descendants: true, static: true }, { propertyName: "activeObjectsRef", first: true, predicate: ["activeObjectsRef"], descendants: true, static: true }, { propertyName: "documentInfoRef", first: true, predicate: ["documentInfoRef"], descendants: true, static: true }], ngImport: i0, template: "<div #layerSelectorRef class=\"layer-selector-container\">\n @if (selectedProfile && selectedProfile.showLayerSelector) {\n <lib-layer-selector [map]=\"map\" [profile]=\"selectedProfile\" [currentZoomLevel]=\"currentZoomLevel\"></lib-layer-selector>\n }\n</div>\n\n<div #legendsListRef class=\"legends-list-container\">\n @if (selectedProfile && selectedProfile.showLegends) {\n <lib-legends-list [map]=\"map\" [profile]=\"selectedProfile\"></lib-legends-list>\n }\n</div>\n\n<div #documentInfoRef class=\"documents-features-wrapper\">\n <document-search-info></document-search-info>\n</div>\n\n<div #activeObjectsRef class=\"active-objects-container\">\n @if(showActiveObjects && settings && selectedProfile) {\n <activeObjects [settings]=\"settings\" [profile]=\"selectedProfile\" (sessionDone)=\"sessionDoneFromActiveObject()\"></activeObjects>\n }\n</div>\n\n<div #toolbarRef class=\"map-toolbar-container\">\n @if (settings) {\n <map-toolbox [map]=\"map\" \n [profile]=\"selectedProfile\"\n [settings]=\"settings\"\n [class.toolbox-hidden]=\"!profileShowToolbox\"\n [collapsed]=\"toolbarCollapsed\" [WKTInputEnabled]=\"settings?.WKTInputEnabled\" [deleteEnabled]=\"settings?.deleteEnabled\" [showMeasureArea]=\"selectedProfile?.showAreaMeasurement || false\" [showMeasureDistance]=\"selectedProfile?.showDistanceMeasurement || false\"></map-toolbox>\n }\n</div>\n\n<div class=\"map-container\">\n <lib-map-search *ngIf=\"showSearch\" [profile]=\"selectedProfile\"></lib-map-search>\n\n <!-- Kort -->\n <div id=\"map\" class=\"map\"></div>\n</div>\n", styles: ["::ng-deep .global-wrapper-container{background:#4c4d51}::ng-deep .dmp-dialog-content mat-dialog-content{background:#4c4d51!important}::ng-deep .dmp-dialog-content mat-dialog-content .search-section mat-form-field input{color:#fff!important;font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::ng-deep .dmp-dialog-content mat-dialog-content .search-section mat-form-field input .search-icon{color:#fff!important}::ng-deep button.ol-zoom-in,::ng-deep button.ol-zoom-out,::ng-deep button.ol-rotate-reset{background:#4c4d51;color:#fff;border-radius:5px!important}::ng-deep button.ol-zoom-in:hover,::ng-deep button.ol-zoom-out:hover,::ng-deep button.ol-rotate-reset:hover{color:#e9e3e3;outline:none}::ng-deep mat-expansion-panel .mat-expansion-panel-header{height:40px!important;min-height:40px!important;background:#ffffff0d;transition:background .2s ease;border-top-left-radius:4px!important;border-top-right-radius:4px!important;padding:0 16px;margin-bottom:2px}::ng-deep mat-expansion-panel .mat-expansion-panel-header:hover{background:#ffffff14!important}::ng-deep mat-expansion-panel .mat-expansion-panel-header .panel-title{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:320px;margin-right:10px;color:#fff;font-weight:600;font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15px}::ng-deep mat-expansion-panel .mat-expansion-panel-header-title{color:#fff}::ng-deep .custom-image-icon,.compact-icon{background:none}::ng-deep .custom-image-icon img,.compact-icon img{width:100%;height:100%;object-fit:contain;transition:filter .2s ease}::ng-deep .custom-image-icon.active,.compact-icon.active{background:#f7b528!important;border-color:transparent;box-shadow:0 4px 12px #0ea5e966}::ng-deep .custom-image-icon.active img,.compact-icon.active img{filter:brightness(0) invert(1)}::ng-deep .custom-image-icon.active:hover,.compact-icon.active:hover{box-shadow:0 6px 20px #0ea5e980}::ng-deep .custom-image-icon:hover:not(.active),.compact-icon:hover:not(.active){background:#ffffff1a!important;border-color:none;box-shadow:none}::ng-deep .custom-image-icon:hover:not(.active) img,.compact-icon:hover:not(.active) img{filter:brightness(0) invert(.8)}::ng-deep .layer-selector-body .search-section mat-form-field input{color:#fff!important}::ng-deep .search-field .mat-mdc-input-element{color:#fff!important}::ng-deep .mat-mdc-text-field-wrapper{background:#878787!important}::ng-deep .mat-mdc-select-panel{font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::ng-deep .active-objects-wrapper.collapsed,::ng-deep .layer-selector-body-wrapper.collapsed,::ng-deep .legends-list-body-wrapper.collapsed,::ng-deep .search-container.collapsed,::ng-deep .toolbox-wrapper.collapsed{width:90px;max-width:90px;min-width:90px}::ng-deep .drag-handle-active-objects,::ng-deep .drag-handle-legends,::ng-deep .drag-handle,::ng-deep .drag-handle-selector,::ng-deep .drag-handle-toolbox{display:flex;align-items:center;justify-content:space-between;padding:0 2px;cursor:move;color:#fff;border-radius:5px;width:100%;box-sizing:border-box}:host{font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}:host ::ng-deep .mdc-notched-outline .mdc-notched-outline__leading,:host ::ng-deep .mdc-notched-outline .mdc-notched-outline__notch,:host ::ng-deep .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#dee2e6!important;border-width:1px!important}:host.mat-focused ::ng-deep .mdc-notched-outline .mdc-notched-outline__leading,:host.mat-focused ::ng-deep .mdc-notched-outline .mdc-notched-outline__notch,:host.mat-focused ::ng-deep .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#d1d5db!important;border-width:1px!important;box-shadow:0 0 0 3px #d1d5db40!important}::ng-deep .mat-mdc-form-field-flex{height:40px!important;display:flex!important;align-items:center!important}::ng-deep .mat-expansion-indicator svg{fill:#fff!important}::ng-deep .ol-control{background-color:transparent!important}::ng-deep .search-result-option{font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::ng-deep .mat-mdc-autocomplete-panel .mat-pseudo-checkbox{display:none!important}::ng-deep .mat-mdc-autocomplete-panel .mdc-list-item__end{display:none!important}:host{display:block;width:100%;height:100%;overflow:hidden}::ng-deep .lib-error-snackbar{background-color:#d32f2f;color:#fff;font-weight:500}::ng-deep .map-container{position:relative;height:81vh;width:100%;overflow:hidden}::ng-deep .toolbox-hidden{visibility:hidden!important}::ng-deep #map{width:100%;height:100%;position:absolute;inset:0;overflow:hidden}::ng-deep .ol-viewport{overflow:hidden!important}::ng-deep ::ng-deep .ol-logo{position:absolute;left:auto;right:3em;top:6.25em}::ng-deep ::ng-deep .ol-copyright{background-color:transparent;position:absolute;bottom:10px;width:100%;display:flex;justify-content:end}::ng-deep ::ng-deep .toolbar{position:absolute;top:10px;left:10px;background:#fff;padding:4px;border-radius:4px;display:flex;flex-direction:column;transition:width .3s;z-index:1000;overflow:hidden}::ng-deep ::ng-deep .toolbar.collapsed{width:40px;overflow:hidden}::ng-deep .object-panel{position:absolute;bottom:10px;left:10px;background:#fff;padding:8px;border-radius:4px;z-index:1000;max-height:calc(85vh - 20px);overflow-y:auto}::ng-deep .object-panel .header{display:flex;justify-content:space-between;padding:8px;cursor:pointer;background:#f0f0f0}::ng-deep .conflict-panel{position:absolute;bottom:10px;right:10px;background:#fff;padding:8px;border-radius:4px;z-index:1000;max-height:calc(85vh - 20px);overflow-y:auto}::ng-deep .conflict-panel .header{display:flex;justify-content:space-between;padding:8px;cursor:pointer;background:#f0f0f0}::ng-deep ::ng-deep .ol-zoom.ol-unselectable.ol-control{display:flex;flex-direction:column;position:absolute}::ng-deep ::ng-deep .ol-scale-text{display:flex}::ng-deep .ol-scale-bar.ol-unselectable{position:absolute;bottom:3rem}::ng-deep .ol-mouse-position{position:absolute;bottom:10px;left:6px;top:auto;background:#0000004d;color:#fffcfc;width:189px;height:30px;padding:2px;border-radius:5px;text-align:center;display:flex;align-items:center;justify-content:flex-start;z-index:1000}::ng-deep .documents-features-wrapper{position:absolute!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatListModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: LayerSelectorComponent, selector: "lib-layer-selector", inputs: ["map", "profile", "currentZoomLevel"] }, { kind: "component", type: MapSearchComponent, selector: "lib-map-search", inputs: ["profile"] }, { kind: "component", type: ToolboxComponent, selector: "map-toolbox", inputs: ["map", "showMeasureDistance", "showMeasureArea", "collapsed", "settings", "profile", "WKTInputEnabled", "deleteEnabled"] }, { kind: "component", type: ActiveObjectsComponent, selector: "activeObjects", inputs: ["settings", "profile"], outputs: ["sessionDone"] }, { kind: "component", type: LegendsListComponent, selector: "lib-legends-list", inputs: ["map", "profile"] }, { kind: "component", type: DocumentSearchInfoComponent, selector: "document-search-info" }] });
|
|
5757
5778
|
}
|
|
5758
5779
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: GisKomponentComponent, decorators: [{
|
|
5759
5780
|
type: Component,
|
|
@@ -5761,7 +5782,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
5761
5782
|
LegendsListComponent, DocumentSearchInfoComponent], providers: [CurrentItemsService, FeatureLoaderService, DrawLayerSourceService, ZoomService, UndoRedoService, ShowInfoHoverService, HoverInfoSearchService, CenterPointService, PrintDrawLayerSourceService,
|
|
5762
5783
|
HighlightService, ShowInfoService, InfoSearchProvider, InteractionHelperService, ConflictAnalysisSearchProvider,
|
|
5763
5784
|
MergeFeaturesService, OverlapService, CowiService, SearchProviderService, AddressSearchService, CadastreSearchService, ShowDocumentInfoService, DocumentSearchService,
|
|
5764
|
-
DmpCatalogService, OlCapabilitiesService, DmpLayerMapperService, GeometrySearchService], template: "<div #layerSelectorRef class=\"layer-selector-container\">\n @if (selectedProfile && selectedProfile.showLayerSelector) {\n <lib-layer-selector [map]=\"map\" [profile]=\"selectedProfile\" [currentZoomLevel]=\"currentZoomLevel\"></lib-layer-selector>\n }\n</div>\n\n<div #legendsListRef class=\"legends-list-container\">\n @if (selectedProfile && selectedProfile.showLegends) {\n <lib-legends-list [map]=\"map\" [profile]=\"selectedProfile\"></lib-legends-list>\n }\n</div>\n\n<div #documentInfoRef class=\"documents-features-wrapper\">\n <document-search-info></document-search-info>\n</div>\n\n<div #activeObjectsRef class=\"active-objects-container\">\n @if(showActiveObjects && settings && selectedProfile) {\n <activeObjects [settings]=\"settings\" [profile]=\"selectedProfile\" (sessionDone)=\"sessionDoneFromActiveObject()\"></activeObjects>\n }\n</div>\n\n<div #toolbarRef class=\"map-toolbar-container\">\n @if (settings) {\n <map-toolbox [map]=\"map\" \n [profile]=\"selectedProfile\"\n [settings]=\"settings\"\n [class.toolbox-hidden]=\"!profileShowToolbox\"\n [collapsed]=\"toolbarCollapsed\" [WKTInputEnabled]=\"settings?.WKTInputEnabled\" [deleteEnabled]=\"settings?.deleteEnabled\" [showMeasureArea]=\"selectedProfile?.showAreaMeasurement || false\" [showMeasureDistance]=\"selectedProfile?.showDistanceMeasurement || false\"></map-toolbox>\n }\n</div>\n\n<div class=\"map-container\">\n <lib-map-search *ngIf=\"showSearch\" [profile]=\"selectedProfile\"></lib-map-search>\n\n <!-- Kort -->\n <div id=\"map\" class=\"map\"></div>\n</div>\n", styles: ["::ng-deep .global-wrapper-container{background:#4c4d51}::ng-deep .dmp-dialog-content mat-dialog-content{background:#4c4d51!important}::ng-deep .dmp-dialog-content mat-dialog-content .search-section mat-form-field input{color:#fff!important;font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::ng-deep .dmp-dialog-content mat-dialog-content .search-section mat-form-field input .search-icon{color:#fff!important}::ng-deep button.ol-zoom-in,::ng-deep button.ol-zoom-out,::ng-deep button.ol-rotate-reset{background:#4c4d51;color:#fff;border-radius:5px!important}::ng-deep button.ol-zoom-in:hover,::ng-deep button.ol-zoom-out:hover,::ng-deep button.ol-rotate-reset:hover{color:#e9e3e3;outline:none}::ng-deep mat-expansion-panel .mat-expansion-panel-header{height:40px!important;min-height:40px!important;background:#ffffff0d;transition:background .2s ease;border-top-left-radius:4px!important;border-top-right-radius:4px!important;padding:0 16px;margin-bottom:2px}::ng-deep mat-expansion-panel .mat-expansion-panel-header:hover{background:#ffffff14!important}::ng-deep mat-expansion-panel .mat-expansion-panel-header .panel-title{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:320px;margin-right:10px;color:#fff;font-weight:600;font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15px}::ng-deep mat-expansion-panel .mat-expansion-panel-header-title{color:#fff}::ng-deep .custom-image-icon,.compact-icon{background:none}::ng-deep .custom-image-icon img,.compact-icon img{width:100%;height:100%;object-fit:contain;transition:filter .2s ease}::ng-deep .custom-image-icon.active,.compact-icon.active{background:#f7b528!important;border-color:transparent;box-shadow:0 4px 12px #0ea5e966}::ng-deep .custom-image-icon.active img,.compact-icon.active img{filter:brightness(0) invert(1)}::ng-deep .custom-image-icon.active:hover,.compact-icon.active:hover{box-shadow:0 6px 20px #0ea5e980}::ng-deep .custom-image-icon:hover:not(.active),.compact-icon:hover:not(.active){background:#ffffff1a!important;border-color:none;box-shadow:none}::ng-deep .custom-image-icon:hover:not(.active) img,.compact-icon:hover:not(.active) img{filter:brightness(0) invert(.8)}::ng-deep .layer-selector-body .search-section mat-form-field input{color:#fff!important}::ng-deep .search-field .mat-mdc-input-element{color:#fff!important}::ng-deep .mat-mdc-text-field-wrapper{background:#878787!important}::ng-deep .mat-mdc-select-panel{font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::ng-deep .active-objects-wrapper.collapsed,::ng-deep .layer-selector-body-wrapper.collapsed,::ng-deep .legends-list-body-wrapper.collapsed,::ng-deep .search-container.collapsed,::ng-deep .toolbox-wrapper.collapsed{width:90px;max-width:90px;min-width:90px}::ng-deep .drag-handle-active-objects,::ng-deep .drag-handle-legends,::ng-deep .drag-handle,::ng-deep .drag-handle-selector,::ng-deep .drag-handle-toolbox{display:flex;align-items:center;justify-content:space-between;padding:0 2px;cursor:move;color:#fff;border-radius:5px;width:100%;box-sizing:border-box}:host{font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}:host ::ng-deep .mdc-notched-outline .mdc-notched-outline__leading,:host ::ng-deep .mdc-notched-outline .mdc-notched-outline__notch,:host ::ng-deep .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#dee2e6!important;border-width:1px!important}:host.mat-focused ::ng-deep .mdc-notched-outline .mdc-notched-outline__leading,:host.mat-focused ::ng-deep .mdc-notched-outline .mdc-notched-outline__notch,:host.mat-focused ::ng-deep .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#d1d5db!important;border-width:1px!important;box-shadow:0 0 0 3px #d1d5db40!important}::ng-deep .mat-mdc-form-field-flex{height:40px!important;display:flex!important;align-items:center!important}::ng-deep .mat-expansion-indicator svg{fill:#fff!important}::ng-deep .ol-control{background-color:transparent!important}::ng-deep .search-result-option{font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::ng-deep .mat-mdc-autocomplete-panel .mat-pseudo-checkbox{display:none!important}::ng-deep .mat-mdc-autocomplete-panel .mdc-list-item__end{display:none!important}:host{display:block;width:100%;height:100%;overflow:hidden}::ng-deep .lib-error-snackbar{background-color:#d32f2f;color:#fff;font-weight:500}::ng-deep .map-container{position:relative;height:81vh;width:100%;overflow:hidden}::ng-deep .toolbox-hidden{visibility:hidden!important}::ng-deep #map{width:100%;height:100%;position:absolute;inset:0;overflow:hidden}::ng-deep .ol-viewport{overflow:hidden!important}::ng-deep ::ng-deep .ol-logo{position:absolute;left:auto;right:3em;top:6.25em}::ng-deep ::ng-deep .ol-copyright{background-color:transparent;position:absolute;bottom:10px;width:100%;display:flex;justify-content:end}::ng-deep ::ng-deep .toolbar{position:absolute;top:10px;left:10px;background:#fff;padding:4px;border-radius:4px;display:flex;flex-direction:column;transition:width .3s;z-index:1000;overflow:hidden}::ng-deep ::ng-deep .toolbar.collapsed{width:40px;overflow:hidden}::ng-deep .object-panel{position:absolute;bottom:10px;left:10px;background:#fff;padding:8px;border-radius:4px;z-index:1000;max-height:calc(85vh - 20px);overflow-y:auto}::ng-deep .object-panel .header{display:flex;justify-content:space-between;padding:8px;cursor:pointer;background:#f0f0f0}::ng-deep .conflict-panel{position:absolute;bottom:10px;right:10px;background:#fff;padding:8px;border-radius:4px;z-index:1000;max-height:calc(85vh - 20px);overflow-y:auto}::ng-deep .conflict-panel .header{display:flex;justify-content:space-between;padding:8px;cursor:pointer;background:#f0f0f0}::ng-deep ::ng-deep .ol-zoom.ol-unselectable.ol-control{display:flex;flex-direction:column;position:absolute}::ng-deep ::ng-deep .ol-scale-text{display:flex}::ng-deep .ol-scale-bar.ol-unselectable{position:absolute;bottom:3rem}::ng-deep .ol-mouse-position{position:absolute;bottom:10px;left:6px;top:auto;background:#0000004d;color:#fffcfc;width:189px;height:30px;padding:2px;border-radius:5px;text-align:center;display:flex;align-items:center;justify-content:flex-start;z-index:1000}::ng-deep .documents-features-wrapper{position:absolute!important}\n"] }]
|
|
5785
|
+
DmpCatalogService, OlCapabilitiesService, DmpLayerMapperService, GeometrySearchService, GeometrySplitService], template: "<div #layerSelectorRef class=\"layer-selector-container\">\n @if (selectedProfile && selectedProfile.showLayerSelector) {\n <lib-layer-selector [map]=\"map\" [profile]=\"selectedProfile\" [currentZoomLevel]=\"currentZoomLevel\"></lib-layer-selector>\n }\n</div>\n\n<div #legendsListRef class=\"legends-list-container\">\n @if (selectedProfile && selectedProfile.showLegends) {\n <lib-legends-list [map]=\"map\" [profile]=\"selectedProfile\"></lib-legends-list>\n }\n</div>\n\n<div #documentInfoRef class=\"documents-features-wrapper\">\n <document-search-info></document-search-info>\n</div>\n\n<div #activeObjectsRef class=\"active-objects-container\">\n @if(showActiveObjects && settings && selectedProfile) {\n <activeObjects [settings]=\"settings\" [profile]=\"selectedProfile\" (sessionDone)=\"sessionDoneFromActiveObject()\"></activeObjects>\n }\n</div>\n\n<div #toolbarRef class=\"map-toolbar-container\">\n @if (settings) {\n <map-toolbox [map]=\"map\" \n [profile]=\"selectedProfile\"\n [settings]=\"settings\"\n [class.toolbox-hidden]=\"!profileShowToolbox\"\n [collapsed]=\"toolbarCollapsed\" [WKTInputEnabled]=\"settings?.WKTInputEnabled\" [deleteEnabled]=\"settings?.deleteEnabled\" [showMeasureArea]=\"selectedProfile?.showAreaMeasurement || false\" [showMeasureDistance]=\"selectedProfile?.showDistanceMeasurement || false\"></map-toolbox>\n }\n</div>\n\n<div class=\"map-container\">\n <lib-map-search *ngIf=\"showSearch\" [profile]=\"selectedProfile\"></lib-map-search>\n\n <!-- Kort -->\n <div id=\"map\" class=\"map\"></div>\n</div>\n", styles: ["::ng-deep .global-wrapper-container{background:#4c4d51}::ng-deep .dmp-dialog-content mat-dialog-content{background:#4c4d51!important}::ng-deep .dmp-dialog-content mat-dialog-content .search-section mat-form-field input{color:#fff!important;font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::ng-deep .dmp-dialog-content mat-dialog-content .search-section mat-form-field input .search-icon{color:#fff!important}::ng-deep button.ol-zoom-in,::ng-deep button.ol-zoom-out,::ng-deep button.ol-rotate-reset{background:#4c4d51;color:#fff;border-radius:5px!important}::ng-deep button.ol-zoom-in:hover,::ng-deep button.ol-zoom-out:hover,::ng-deep button.ol-rotate-reset:hover{color:#e9e3e3;outline:none}::ng-deep mat-expansion-panel .mat-expansion-panel-header{height:40px!important;min-height:40px!important;background:#ffffff0d;transition:background .2s ease;border-top-left-radius:4px!important;border-top-right-radius:4px!important;padding:0 16px;margin-bottom:2px}::ng-deep mat-expansion-panel .mat-expansion-panel-header:hover{background:#ffffff14!important}::ng-deep mat-expansion-panel .mat-expansion-panel-header .panel-title{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:320px;margin-right:10px;color:#fff;font-weight:600;font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15px}::ng-deep mat-expansion-panel .mat-expansion-panel-header-title{color:#fff}::ng-deep .custom-image-icon,.compact-icon{background:none}::ng-deep .custom-image-icon img,.compact-icon img{width:100%;height:100%;object-fit:contain;transition:filter .2s ease}::ng-deep .custom-image-icon.active,.compact-icon.active{background:#f7b528!important;border-color:transparent;box-shadow:0 4px 12px #0ea5e966}::ng-deep .custom-image-icon.active img,.compact-icon.active img{filter:brightness(0) invert(1)}::ng-deep .custom-image-icon.active:hover,.compact-icon.active:hover{box-shadow:0 6px 20px #0ea5e980}::ng-deep .custom-image-icon:hover:not(.active),.compact-icon:hover:not(.active){background:#ffffff1a!important;border-color:none;box-shadow:none}::ng-deep .custom-image-icon:hover:not(.active) img,.compact-icon:hover:not(.active) img{filter:brightness(0) invert(.8)}::ng-deep .layer-selector-body .search-section mat-form-field input{color:#fff!important}::ng-deep .search-field .mat-mdc-input-element{color:#fff!important}::ng-deep .mat-mdc-text-field-wrapper{background:#878787!important}::ng-deep .mat-mdc-select-panel{font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::ng-deep .active-objects-wrapper.collapsed,::ng-deep .layer-selector-body-wrapper.collapsed,::ng-deep .legends-list-body-wrapper.collapsed,::ng-deep .search-container.collapsed,::ng-deep .toolbox-wrapper.collapsed{width:90px;max-width:90px;min-width:90px}::ng-deep .drag-handle-active-objects,::ng-deep .drag-handle-legends,::ng-deep .drag-handle,::ng-deep .drag-handle-selector,::ng-deep .drag-handle-toolbox{display:flex;align-items:center;justify-content:space-between;padding:0 2px;cursor:move;color:#fff;border-radius:5px;width:100%;box-sizing:border-box}:host{font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}:host ::ng-deep .mdc-notched-outline .mdc-notched-outline__leading,:host ::ng-deep .mdc-notched-outline .mdc-notched-outline__notch,:host ::ng-deep .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#dee2e6!important;border-width:1px!important}:host.mat-focused ::ng-deep .mdc-notched-outline .mdc-notched-outline__leading,:host.mat-focused ::ng-deep .mdc-notched-outline .mdc-notched-outline__notch,:host.mat-focused ::ng-deep .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#d1d5db!important;border-width:1px!important;box-shadow:0 0 0 3px #d1d5db40!important}::ng-deep .mat-mdc-form-field-flex{height:40px!important;display:flex!important;align-items:center!important}::ng-deep .mat-expansion-indicator svg{fill:#fff!important}::ng-deep .ol-control{background-color:transparent!important}::ng-deep .search-result-option{font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::ng-deep .mat-mdc-autocomplete-panel .mat-pseudo-checkbox{display:none!important}::ng-deep .mat-mdc-autocomplete-panel .mdc-list-item__end{display:none!important}:host{display:block;width:100%;height:100%;overflow:hidden}::ng-deep .lib-error-snackbar{background-color:#d32f2f;color:#fff;font-weight:500}::ng-deep .map-container{position:relative;height:81vh;width:100%;overflow:hidden}::ng-deep .toolbox-hidden{visibility:hidden!important}::ng-deep #map{width:100%;height:100%;position:absolute;inset:0;overflow:hidden}::ng-deep .ol-viewport{overflow:hidden!important}::ng-deep ::ng-deep .ol-logo{position:absolute;left:auto;right:3em;top:6.25em}::ng-deep ::ng-deep .ol-copyright{background-color:transparent;position:absolute;bottom:10px;width:100%;display:flex;justify-content:end}::ng-deep ::ng-deep .toolbar{position:absolute;top:10px;left:10px;background:#fff;padding:4px;border-radius:4px;display:flex;flex-direction:column;transition:width .3s;z-index:1000;overflow:hidden}::ng-deep ::ng-deep .toolbar.collapsed{width:40px;overflow:hidden}::ng-deep .object-panel{position:absolute;bottom:10px;left:10px;background:#fff;padding:8px;border-radius:4px;z-index:1000;max-height:calc(85vh - 20px);overflow-y:auto}::ng-deep .object-panel .header{display:flex;justify-content:space-between;padding:8px;cursor:pointer;background:#f0f0f0}::ng-deep .conflict-panel{position:absolute;bottom:10px;right:10px;background:#fff;padding:8px;border-radius:4px;z-index:1000;max-height:calc(85vh - 20px);overflow-y:auto}::ng-deep .conflict-panel .header{display:flex;justify-content:space-between;padding:8px;cursor:pointer;background:#f0f0f0}::ng-deep ::ng-deep .ol-zoom.ol-unselectable.ol-control{display:flex;flex-direction:column;position:absolute}::ng-deep ::ng-deep .ol-scale-text{display:flex}::ng-deep .ol-scale-bar.ol-unselectable{position:absolute;bottom:3rem}::ng-deep .ol-mouse-position{position:absolute;bottom:10px;left:6px;top:auto;background:#0000004d;color:#fffcfc;width:189px;height:30px;padding:2px;border-radius:5px;text-align:center;display:flex;align-items:center;justify-content:flex-start;z-index:1000}::ng-deep .documents-features-wrapper{position:absolute!important}\n"] }]
|
|
5765
5786
|
}], ctorParameters: () => [], propDecorators: { identifier: [{
|
|
5766
5787
|
type: Input,
|
|
5767
5788
|
args: [{ required: true }]
|