qwc2 2025.10.16 → 2025.10.24
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/actions/locate.js +3 -2
- package/components/AttributeTableWidget.js +24 -15
- package/components/FeatureAttributesWindow.js +177 -0
- package/components/IdentifyViewer.js +80 -39
- package/components/LocationRecorder.js +138 -0
- package/components/PickFeature.js +87 -26
- package/components/PluginsContainer.js +16 -3
- package/components/map/OlLayer.js +2 -1
- package/components/map3d/HeightProfile3D.js +2 -0
- package/components/style/App.css +14 -0
- package/components/style/AttributeTableWidget.css +1 -1
- package/components/style/FeatureAttributesWindow.css +16 -0
- package/components/style/IdentifyViewer.css +5 -0
- package/components/style/LocationRecorder.css +10 -0
- package/components/style/NumericInputWindow.css +7 -0
- package/components/style/PluginsContainer.css +16 -0
- package/components/widgets/LayerCatalogWidget.js +40 -16
- package/components/widgets/NavBar.js +10 -3
- package/icons/circle_full.svg +75 -0
- package/package.json +1 -1
- package/plugins/AttributeTable.js +4 -0
- package/plugins/GeometryDigitizer.js +3 -0
- package/plugins/HeightProfile.js +2 -0
- package/plugins/Identify.js +7 -3
- package/plugins/ObjectList.js +116 -0
- package/plugins/Redlining.js +14 -55
- package/plugins/map/EditingSupport.js +22 -1
- package/plugins/map/LocateSupport.js +8 -1
- package/plugins/map/RedliningSupport.js +108 -18
- package/plugins/map/SnappingSupport.js +11 -6
- package/plugins/map/style/SnappingSupport.css +2 -13
- package/reducers/locate.js +4 -2
- package/reducers/redlining.js +2 -1
- package/static/translations/bg-BG.json +13 -0
- package/static/translations/ca-ES.json +13 -0
- package/static/translations/cs-CZ.json +13 -0
- package/static/translations/de-CH.json +13 -0
- package/static/translations/de-DE.json +14 -1
- package/static/translations/en-US.json +13 -0
- package/static/translations/es-ES.json +13 -0
- package/static/translations/fi-FI.json +13 -0
- package/static/translations/fr-FR.json +13 -0
- package/static/translations/hu-HU.json +13 -0
- package/static/translations/it-IT.json +13 -0
- package/static/translations/ja-JP.json +13 -0
- package/static/translations/nl-NL.json +13 -0
- package/static/translations/no-NO.json +13 -0
- package/static/translations/pl-PL.json +13 -0
- package/static/translations/pt-BR.json +13 -0
- package/static/translations/pt-PT.json +13 -0
- package/static/translations/ro-RO.json +13 -0
- package/static/translations/ru-RU.json +13 -0
- package/static/translations/sv-SE.json +13 -0
- package/static/translations/tr-TR.json +13 -0
- package/static/translations/tsconfig.json +10 -0
- package/static/translations/uk-UA.json +13 -0
- package/utils/EditingInterface.js +4 -1
- package/utils/EditingUtils.js +3 -1
- package/utils/MiscUtils.js +65 -0
- package/utils/expr_grammar/grammar.js +104 -22
- package/utils/expr_grammar/grammar.ne +2 -0
- package/utils/expr_grammar/test.js +21 -4
|
@@ -30,12 +30,15 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
|
|
|
30
30
|
|
|
31
31
|
import React from 'react';
|
|
32
32
|
import { connect } from 'react-redux';
|
|
33
|
+
import FileSaver from 'file-saver';
|
|
33
34
|
import Mousetrap from 'mousetrap';
|
|
34
35
|
import ol from 'openlayers';
|
|
35
36
|
import PropTypes from 'prop-types';
|
|
36
37
|
import { v4 as uuidv4 } from 'uuid';
|
|
37
38
|
import { LayerRole, addLayerFeatures, removeLayerFeatures } from '../../actions/layers';
|
|
38
39
|
import { changeRedliningState } from '../../actions/redlining';
|
|
40
|
+
import FeatureAttributesWindow from '../../components/FeatureAttributesWindow';
|
|
41
|
+
import LocationRecorder from '../../components/LocationRecorder';
|
|
39
42
|
import NumericInputWindow from '../../components/NumericInputWindow';
|
|
40
43
|
import { OlLayerAdded, OlLayerUpdated } from '../../components/map/OlLayer';
|
|
41
44
|
import FeatureStyles from '../../utils/FeatureStyles';
|
|
@@ -59,7 +62,8 @@ var GeomTypeConfig = {
|
|
|
59
62
|
}));
|
|
60
63
|
},
|
|
61
64
|
editTool: 'Pick',
|
|
62
|
-
drawNodes: true
|
|
65
|
+
drawNodes: true,
|
|
66
|
+
showRecordLocation: true
|
|
63
67
|
},
|
|
64
68
|
LineString: {
|
|
65
69
|
drawInteraction: function drawInteraction(opts) {
|
|
@@ -68,7 +72,8 @@ var GeomTypeConfig = {
|
|
|
68
72
|
}));
|
|
69
73
|
},
|
|
70
74
|
editTool: 'Pick',
|
|
71
|
-
drawNodes: true
|
|
75
|
+
drawNodes: true,
|
|
76
|
+
showRecordLocation: true
|
|
72
77
|
},
|
|
73
78
|
Polygon: {
|
|
74
79
|
drawInteraction: function drawInteraction(opts) {
|
|
@@ -130,7 +135,11 @@ var RedliningSupport = /*#__PURE__*/function (_React$Component) {
|
|
|
130
135
|
var _this;
|
|
131
136
|
_classCallCheck(this, RedliningSupport);
|
|
132
137
|
_this = _callSuper(this, RedliningSupport, [props]);
|
|
138
|
+
_defineProperty(_this, "state", {
|
|
139
|
+
showRecordLocation: false
|
|
140
|
+
});
|
|
133
141
|
_defineProperty(_this, "updateCurrentFeature", function (feature) {
|
|
142
|
+
var deletedKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
134
143
|
if (_this.currentFeature && _this.props.redlining.selectedFeature) {
|
|
135
144
|
if (feature.circleParams) {
|
|
136
145
|
var circleParams = feature.circleParams;
|
|
@@ -138,6 +147,10 @@ var RedliningSupport = /*#__PURE__*/function (_React$Component) {
|
|
|
138
147
|
} else {
|
|
139
148
|
_this.currentFeature.getGeometry().setCoordinates(feature.geometry.coordinates);
|
|
140
149
|
}
|
|
150
|
+
_this.currentFeature.setProperties(feature.properties, true);
|
|
151
|
+
deletedKeys.forEach(function (key) {
|
|
152
|
+
_this.currentFeature.unset(key);
|
|
153
|
+
});
|
|
141
154
|
_this.props.changeRedliningState({
|
|
142
155
|
selectedFeature: feature,
|
|
143
156
|
geomType: feature.shape
|
|
@@ -244,6 +257,9 @@ var RedliningSupport = /*#__PURE__*/function (_React$Component) {
|
|
|
244
257
|
}, _this);
|
|
245
258
|
_this.props.map.addInteraction(drawInteraction);
|
|
246
259
|
_this.interactions.push(drawInteraction);
|
|
260
|
+
_this.setState({
|
|
261
|
+
showRecordLocation: geomTypeConfig.showRecordLocation
|
|
262
|
+
});
|
|
247
263
|
});
|
|
248
264
|
_defineProperty(_this, "updateMeasurements", function () {
|
|
249
265
|
if (_this.blockOnChange || !_this.currentFeature) {
|
|
@@ -310,9 +326,7 @@ var RedliningSupport = /*#__PURE__*/function (_React$Component) {
|
|
|
310
326
|
});
|
|
311
327
|
});
|
|
312
328
|
_defineProperty(_this, "leaveTemporaryEditMode", function () {
|
|
313
|
-
|
|
314
|
-
_this.commitCurrentFeature(_this.props.redlining);
|
|
315
|
-
}
|
|
329
|
+
_this.commitCurrentFeature(_this.props.redlining);
|
|
316
330
|
if (_this.picking) {
|
|
317
331
|
// Remove modify interactions
|
|
318
332
|
_this.props.map.removeInteraction(_this.interactions.pop());
|
|
@@ -333,9 +347,7 @@ var RedliningSupport = /*#__PURE__*/function (_React$Component) {
|
|
|
333
347
|
if (evt.selected.length === 1 && evt.selected[0] === _this.currentFeature) {
|
|
334
348
|
return;
|
|
335
349
|
}
|
|
336
|
-
|
|
337
|
-
_this.commitCurrentFeature(_this.props.redlining);
|
|
338
|
-
}
|
|
350
|
+
_this.commitCurrentFeature(_this.props.redlining);
|
|
339
351
|
if (currentEditInteraction) {
|
|
340
352
|
_this.props.map.removeInteraction(currentEditInteraction);
|
|
341
353
|
_this.interactions = _this.interactions.filter(function (i) {
|
|
@@ -377,9 +389,7 @@ var RedliningSupport = /*#__PURE__*/function (_React$Component) {
|
|
|
377
389
|
if (evt.feature === _this.currentFeature) {
|
|
378
390
|
return;
|
|
379
391
|
}
|
|
380
|
-
|
|
381
|
-
_this.commitCurrentFeature(_this.props.redlining);
|
|
382
|
-
}
|
|
392
|
+
_this.commitCurrentFeature(_this.props.redlining);
|
|
383
393
|
if (evt.feature) {
|
|
384
394
|
_this.setCurrentFeature(evt.feature);
|
|
385
395
|
}
|
|
@@ -513,7 +523,7 @@ var RedliningSupport = /*#__PURE__*/function (_React$Component) {
|
|
|
513
523
|
var newFeature = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
514
524
|
var feature = _this.currentFeatureObject();
|
|
515
525
|
if (!feature) {
|
|
516
|
-
return;
|
|
526
|
+
return null;
|
|
517
527
|
}
|
|
518
528
|
// Don't commit empty/invalid features
|
|
519
529
|
if (feature.shape === "Text" && !feature.properties.label || feature.shape === "Circle" && feature.circleParams.radius === 0 || ((_feature$geometry = feature.geometry) === null || _feature$geometry === void 0 ? void 0 : _feature$geometry.type) === "Polygon" && _this.currentFeature.getGeometry().getArea() === 0) {
|
|
@@ -521,7 +531,7 @@ var RedliningSupport = /*#__PURE__*/function (_React$Component) {
|
|
|
521
531
|
_this.props.removeLayerFeatures(redliningProps.layer, [feature.id]);
|
|
522
532
|
}
|
|
523
533
|
_this.resetSelectedFeature();
|
|
524
|
-
return;
|
|
534
|
+
return null;
|
|
525
535
|
}
|
|
526
536
|
if (feature.shape === "Circle") {
|
|
527
537
|
var _feature$circleParams = feature.circleParams,
|
|
@@ -543,6 +553,7 @@ var RedliningSupport = /*#__PURE__*/function (_React$Component) {
|
|
|
543
553
|
};
|
|
544
554
|
_this.props.addLayerFeatures(layer, [feature]);
|
|
545
555
|
_this.resetSelectedFeature();
|
|
556
|
+
return feature;
|
|
546
557
|
});
|
|
547
558
|
_defineProperty(_this, "resetSelectedFeature", function () {
|
|
548
559
|
if (_this.currentFeature) {
|
|
@@ -558,6 +569,9 @@ var RedliningSupport = /*#__PURE__*/function (_React$Component) {
|
|
|
558
569
|
}
|
|
559
570
|
});
|
|
560
571
|
_defineProperty(_this, "reset", function (redliningProps) {
|
|
572
|
+
_this.setState({
|
|
573
|
+
showRecordLocation: false
|
|
574
|
+
});
|
|
561
575
|
while (_this.interactions.length > 0) {
|
|
562
576
|
_this.props.map.removeInteraction(_this.interactions.shift());
|
|
563
577
|
}
|
|
@@ -604,6 +618,49 @@ var RedliningSupport = /*#__PURE__*/function (_React$Component) {
|
|
|
604
618
|
}
|
|
605
619
|
return feature;
|
|
606
620
|
});
|
|
621
|
+
_defineProperty(_this, "export", function () {
|
|
622
|
+
var currentFeature = _this.commitCurrentFeature(_this.props.redlining);
|
|
623
|
+
var layer = _this.props.layers.find(function (l) {
|
|
624
|
+
return l.id === _this.props.redlining.layer;
|
|
625
|
+
});
|
|
626
|
+
if (!layer) {
|
|
627
|
+
return;
|
|
628
|
+
}
|
|
629
|
+
if (_this.props.redlining.format === "geojson") {
|
|
630
|
+
var geojson = JSON.stringify({
|
|
631
|
+
type: "FeatureCollection",
|
|
632
|
+
features: layer.features.map(function (feature) {
|
|
633
|
+
var newFeature = _objectSpread({}, feature.id === currentFeature.id ? currentFeature : feature);
|
|
634
|
+
newFeature.geometry = VectorLayerUtils.reprojectGeometry(feature.geometry, feature.crs || _this.props.mapCrs, 'EPSG:4326');
|
|
635
|
+
delete newFeature.crs;
|
|
636
|
+
return newFeature;
|
|
637
|
+
})
|
|
638
|
+
}, null, ' ');
|
|
639
|
+
FileSaver.saveAs(new Blob([geojson], {
|
|
640
|
+
type: "text/plain;charset=utf-8"
|
|
641
|
+
}), layer.title + ".json");
|
|
642
|
+
} else if (_this.props.redlining.format === "kml") {
|
|
643
|
+
var nativeLayer = _this.searchRedliningLayer(_this.props.redlining.layer);
|
|
644
|
+
if (!nativeLayer) {
|
|
645
|
+
return;
|
|
646
|
+
}
|
|
647
|
+
var kmlFormat = new ol.format.KML();
|
|
648
|
+
var features = nativeLayer.getSource().getFeatures().map(function (feature) {
|
|
649
|
+
// Circle is not supported by kml format
|
|
650
|
+
if (feature.getGeometry() instanceof ol.geom.Circle) {
|
|
651
|
+
feature = feature.clone();
|
|
652
|
+
feature.setGeometry(ol.geom.polygonFromCircle(feature.getGeometry()));
|
|
653
|
+
}
|
|
654
|
+
return feature;
|
|
655
|
+
});
|
|
656
|
+
var data = kmlFormat.writeFeatures(features, {
|
|
657
|
+
featureProjection: _this.props.mapCrs
|
|
658
|
+
});
|
|
659
|
+
FileSaver.saveAs(new Blob([data], {
|
|
660
|
+
type: "application/vnd.google-earth.kml+xml"
|
|
661
|
+
}), layer.title + ".kml");
|
|
662
|
+
}
|
|
663
|
+
});
|
|
607
664
|
_this.interactions = [];
|
|
608
665
|
_this.picking = false;
|
|
609
666
|
_this.currentFeature = null;
|
|
@@ -663,6 +720,12 @@ var RedliningSupport = /*#__PURE__*/function (_React$Component) {
|
|
|
663
720
|
}));
|
|
664
721
|
return;
|
|
665
722
|
}
|
|
723
|
+
if (this.props.redlining.action === 'Export') {
|
|
724
|
+
this["export"]();
|
|
725
|
+
this.props.changeRedliningState(_objectSpread(_objectSpread({}, prevProps.redlining), {}, {
|
|
726
|
+
selectedFeature: null
|
|
727
|
+
}));
|
|
728
|
+
}
|
|
666
729
|
var recreateInteraction = this.props.redlining.action !== prevProps.redlining.action || this.props.redlining.layer !== prevProps.redlining.layer || ['Draw', 'PickDraw'].includes(this.props.redlining.action) && this.props.redlining.geomType !== prevProps.redlining.geomType || this.props.redlining.freehand !== prevProps.redlining.freehand || this.props.redlining.drawMultiple !== prevProps.redlining.drawMultiple;
|
|
667
730
|
if (recreateInteraction) {
|
|
668
731
|
// Commit to previous layer in case layer changed
|
|
@@ -692,18 +755,43 @@ var RedliningSupport = /*#__PURE__*/function (_React$Component) {
|
|
|
692
755
|
key: "render",
|
|
693
756
|
value: function render() {
|
|
694
757
|
var _this2 = this;
|
|
695
|
-
|
|
696
|
-
|
|
758
|
+
var widgets = [];
|
|
759
|
+
if (this.props.redlining.extraAction === "NumericInput") {
|
|
760
|
+
widgets.push(/*#__PURE__*/React.createElement(NumericInputWindow, {
|
|
697
761
|
feature: this.props.redlining.selectedFeature,
|
|
762
|
+
key: "NumericInputWindow",
|
|
698
763
|
onClose: function onClose() {
|
|
699
764
|
return _this2.props.changeRedliningState({
|
|
700
|
-
|
|
765
|
+
extraAction: null
|
|
701
766
|
});
|
|
702
767
|
},
|
|
703
768
|
onFeatureChanged: this.updateCurrentFeature
|
|
769
|
+
}));
|
|
770
|
+
} else if (this.props.redlining.extraAction === "FeatureAttributes") {
|
|
771
|
+
widgets.push(/*#__PURE__*/React.createElement(FeatureAttributesWindow, {
|
|
772
|
+
feature: this.props.redlining.selectedFeature,
|
|
773
|
+
key: "FeatureAttributesWindow",
|
|
774
|
+
layerid: this.props.redlining.layer,
|
|
775
|
+
onClose: function onClose() {
|
|
776
|
+
return _this2.props.changeRedliningState({
|
|
777
|
+
extraAction: null
|
|
778
|
+
});
|
|
779
|
+
},
|
|
780
|
+
onFeatureChanged: this.updateCurrentFeature
|
|
781
|
+
}));
|
|
782
|
+
}
|
|
783
|
+
if (this.state.showRecordLocation) {
|
|
784
|
+
var drawInteraction = this.interactions.find(function (interaction) {
|
|
785
|
+
return interaction instanceof ol.interaction.Draw;
|
|
704
786
|
});
|
|
787
|
+
widgets.push(/*#__PURE__*/React.createElement(LocationRecorder, {
|
|
788
|
+
drawInteraction: drawInteraction,
|
|
789
|
+
geomType: this.props.redlining.geomType,
|
|
790
|
+
key: "LocationRecorder",
|
|
791
|
+
map: this.props.map
|
|
792
|
+
}));
|
|
705
793
|
}
|
|
706
|
-
return
|
|
794
|
+
return widgets;
|
|
707
795
|
}
|
|
708
796
|
}]);
|
|
709
797
|
}(React.Component);
|
|
@@ -711,6 +799,7 @@ _defineProperty(RedliningSupport, "propTypes", {
|
|
|
711
799
|
addLayerFeatures: PropTypes.func,
|
|
712
800
|
changeRedliningState: PropTypes.func,
|
|
713
801
|
displayCrs: PropTypes.string,
|
|
802
|
+
layers: PropTypes.array,
|
|
714
803
|
map: PropTypes.object,
|
|
715
804
|
mapCrs: PropTypes.string,
|
|
716
805
|
redlining: PropTypes.object,
|
|
@@ -723,7 +812,8 @@ export default connect(function (state) {
|
|
|
723
812
|
return {
|
|
724
813
|
displayCrs: state.map.displayCrs,
|
|
725
814
|
mapCrs: state.map.projection,
|
|
726
|
-
redlining: state.redlining
|
|
815
|
+
redlining: state.redlining,
|
|
816
|
+
layers: state.layers.flat
|
|
727
817
|
};
|
|
728
818
|
}, {
|
|
729
819
|
changeRedliningState: changeRedliningState,
|
|
@@ -29,7 +29,9 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
|
|
|
29
29
|
*/
|
|
30
30
|
|
|
31
31
|
import React from 'react';
|
|
32
|
+
import ReactDOM from 'react-dom';
|
|
32
33
|
import { connect } from 'react-redux';
|
|
34
|
+
import classNames from 'classnames';
|
|
33
35
|
import isEmpty from 'lodash.isempty';
|
|
34
36
|
import ol from 'openlayers';
|
|
35
37
|
import PropTypes from 'prop-types';
|
|
@@ -37,6 +39,7 @@ import { v4 as uuidv4 } from 'uuid';
|
|
|
37
39
|
import { LayerRole } from '../../actions/layers';
|
|
38
40
|
import { setSnappingConfig } from '../../actions/map';
|
|
39
41
|
import Icon from '../../components/Icon';
|
|
42
|
+
import { BottomToolPortalContext } from '../../components/PluginsContainer';
|
|
40
43
|
import Spinner from '../../components/widgets/Spinner';
|
|
41
44
|
import IdentifyUtils from '../../utils/IdentifyUtils';
|
|
42
45
|
import LocaleUtils from '../../utils/LocaleUtils';
|
|
@@ -313,13 +316,14 @@ var SnappingSupport = /*#__PURE__*/function (_React$Component) {
|
|
|
313
316
|
return null;
|
|
314
317
|
}
|
|
315
318
|
var disabled = !this.state.havesnaplayers || this.props.mapObj.snapping.active === false;
|
|
316
|
-
var
|
|
319
|
+
var className = classNames({
|
|
320
|
+
"snapping-toolbar": true,
|
|
321
|
+
"snapping-toolbar-inactive": disabled
|
|
322
|
+
});
|
|
317
323
|
var snapEdge = this.snapToEdge(this.props.mapObj.snapping);
|
|
318
324
|
var snapVertex = this.snapToVertex(this.props.mapObj.snapping);
|
|
319
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
320
|
-
className:
|
|
321
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
322
|
-
className: toolbarClass
|
|
325
|
+
return /*#__PURE__*/ReactDOM.createPortal(/*#__PURE__*/React.createElement("div", {
|
|
326
|
+
className: className
|
|
323
327
|
}, this.state.reqId !== null ? /*#__PURE__*/React.createElement(Spinner, null) : /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("button", {
|
|
324
328
|
className: "button" + (snapVertex ? " pressed" : ""),
|
|
325
329
|
onClick: function onClick() {
|
|
@@ -338,10 +342,11 @@ var SnappingSupport = /*#__PURE__*/function (_React$Component) {
|
|
|
338
342
|
}, /*#__PURE__*/React.createElement(Icon, {
|
|
339
343
|
icon: "snap_edge",
|
|
340
344
|
size: "large"
|
|
341
|
-
}))), "\xA0", this.state.reqId ? LocaleUtils.tr("snapping.loading") : LocaleUtils.tr("snapping.snappingenabled")));
|
|
345
|
+
}))), "\xA0", this.state.reqId ? LocaleUtils.tr("snapping.loading") : LocaleUtils.tr("snapping.snappingenabled")), this.context);
|
|
342
346
|
}
|
|
343
347
|
}]);
|
|
344
348
|
}(React.Component);
|
|
349
|
+
_defineProperty(SnappingSupport, "contextType", BottomToolPortalContext);
|
|
345
350
|
_defineProperty(SnappingSupport, "propTypes", {
|
|
346
351
|
layers: PropTypes.array,
|
|
347
352
|
map: PropTypes.object,
|
|
@@ -1,21 +1,10 @@
|
|
|
1
|
-
div.snapping-toolbar
|
|
2
|
-
position: absolute;
|
|
3
|
-
bottom: 2.25em;
|
|
4
|
-
left: 0;
|
|
5
|
-
right: 0;
|
|
6
|
-
text-align: center;
|
|
7
|
-
pointer-events: none;
|
|
8
|
-
z-index: 3;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
div.snapping-toolbar-container > div {
|
|
1
|
+
div.snapping-toolbar {
|
|
12
2
|
display: inline-flex;
|
|
13
3
|
align-items: center;
|
|
14
4
|
line-height: 1.5em;
|
|
15
5
|
position: relative;
|
|
16
|
-
max-width: 95%;
|
|
17
|
-
pointer-events: all;
|
|
18
6
|
padding: 0.25em 0.5em;
|
|
7
|
+
order: 0;
|
|
19
8
|
background-color: var(--container-bg-color);
|
|
20
9
|
box-shadow: 0px -2px 4px rgba(136, 136, 136, 0.5);
|
|
21
10
|
border-bottom: 1px solid rgba(136, 136, 136, 0.5);
|
package/reducers/locate.js
CHANGED
|
@@ -16,7 +16,8 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
|
|
|
16
16
|
import { CHANGE_LOCATE_STATE, CHANGE_LOCATE_POSITION, LOCATE_ERROR } from '../actions/locate';
|
|
17
17
|
var defaultState = {
|
|
18
18
|
state: "DISABLED",
|
|
19
|
-
position: null
|
|
19
|
+
position: null,
|
|
20
|
+
mapPos: null
|
|
20
21
|
};
|
|
21
22
|
export default function locate() {
|
|
22
23
|
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;
|
|
@@ -31,7 +32,8 @@ export default function locate() {
|
|
|
31
32
|
case CHANGE_LOCATE_POSITION:
|
|
32
33
|
{
|
|
33
34
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
34
|
-
position: action.position
|
|
35
|
+
position: action.position,
|
|
36
|
+
mapPos: action.mapPos
|
|
35
37
|
});
|
|
36
38
|
}
|
|
37
39
|
case LOCATE_ERROR:
|
package/reducers/redlining.js
CHANGED
|
@@ -16,6 +16,7 @@ import { CHANGE_REDLINING_STATE, RESET_REDLINING_STATE } from '../actions/redlin
|
|
|
16
16
|
var defaultState = {
|
|
17
17
|
action: null,
|
|
18
18
|
geomType: null,
|
|
19
|
+
format: null,
|
|
19
20
|
style: {
|
|
20
21
|
borderColor: [255, 0, 0, 1],
|
|
21
22
|
fillColor: [255, 255, 255, 1],
|
|
@@ -31,7 +32,7 @@ var defaultState = {
|
|
|
31
32
|
drawMultiple: true,
|
|
32
33
|
freehand: false,
|
|
33
34
|
measurements: false,
|
|
34
|
-
|
|
35
|
+
extraAction: null,
|
|
35
36
|
lenUnit: 'metric',
|
|
36
37
|
areaUnit: 'metric'
|
|
37
38
|
};
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"MapExport3D": "",
|
|
25
25
|
"MapFilter": "Филтър на картата",
|
|
26
26
|
"MapLight3D": "Дата и час",
|
|
27
|
+
"ObjectList": "",
|
|
27
28
|
"Print": "Отпечатване",
|
|
28
29
|
"Reports": "Доклади",
|
|
29
30
|
"Settings": "Настройки",
|
|
@@ -192,6 +193,12 @@
|
|
|
192
193
|
"takepicture": "Направете снимка",
|
|
193
194
|
"unsavedchanged": "Има неспасени промени. Искате ли все пак да напуснете страницата?"
|
|
194
195
|
},
|
|
196
|
+
"featureattributes": {
|
|
197
|
+
"name": "",
|
|
198
|
+
"nofeature": "",
|
|
199
|
+
"value": "",
|
|
200
|
+
"windowtitle": ""
|
|
201
|
+
},
|
|
195
202
|
"featureform": {
|
|
196
203
|
"feature": "Функции",
|
|
197
204
|
"noresults": "Няма резултати",
|
|
@@ -244,6 +251,7 @@
|
|
|
244
251
|
"identify": {
|
|
245
252
|
"aggregatedreport": "Обобщен доклад",
|
|
246
253
|
"clipboard": "Копиране в клипборда",
|
|
254
|
+
"compare": "",
|
|
247
255
|
"comparing": "",
|
|
248
256
|
"download": "Изтегляне",
|
|
249
257
|
"export": "Експорт",
|
|
@@ -345,6 +353,10 @@
|
|
|
345
353
|
"PERMISSION_DENIED": "Позиция: разрешението е отказано"
|
|
346
354
|
}
|
|
347
355
|
},
|
|
356
|
+
"locationrecorder": {
|
|
357
|
+
"record": "",
|
|
358
|
+
"stop": ""
|
|
359
|
+
},
|
|
348
360
|
"map": {
|
|
349
361
|
"loading": "Зареждане...",
|
|
350
362
|
"resetrotation": "Нулиране на въртенето"
|
|
@@ -481,6 +493,7 @@
|
|
|
481
493
|
"loading": "Зареждане на формуляра..."
|
|
482
494
|
},
|
|
483
495
|
"redlining": {
|
|
496
|
+
"attributes": "",
|
|
484
497
|
"buffer": "Буфер",
|
|
485
498
|
"buffercompute": "Изчисляване",
|
|
486
499
|
"bufferdistance": "Разстояние",
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"MapExport3D": "Exportar mapa",
|
|
25
25
|
"MapFilter": "Filtre de mapa",
|
|
26
26
|
"MapLight3D": "Llum i ombres",
|
|
27
|
+
"ObjectList": "",
|
|
27
28
|
"Print": "Imprimir",
|
|
28
29
|
"Reports": "Informes",
|
|
29
30
|
"Settings": "Opcions",
|
|
@@ -192,6 +193,12 @@
|
|
|
192
193
|
"takepicture": "Escull imatge",
|
|
193
194
|
"unsavedchanged": "Hi ha canvis sense guardar. Vols sortir de la pàgina sense guardar?"
|
|
194
195
|
},
|
|
196
|
+
"featureattributes": {
|
|
197
|
+
"name": "",
|
|
198
|
+
"nofeature": "",
|
|
199
|
+
"value": "",
|
|
200
|
+
"windowtitle": ""
|
|
201
|
+
},
|
|
195
202
|
"featureform": {
|
|
196
203
|
"feature": "Element",
|
|
197
204
|
"noresults": "Sense resultats",
|
|
@@ -244,6 +251,7 @@
|
|
|
244
251
|
"identify": {
|
|
245
252
|
"aggregatedreport": "Informe agregat",
|
|
246
253
|
"clipboard": "Copiar al porta-retalls",
|
|
254
|
+
"compare": "",
|
|
247
255
|
"comparing": "",
|
|
248
256
|
"download": "Descarregar",
|
|
249
257
|
"export": "Exportar",
|
|
@@ -345,6 +353,10 @@
|
|
|
345
353
|
"PERMISSION_DENIED": "Permis denegat"
|
|
346
354
|
}
|
|
347
355
|
},
|
|
356
|
+
"locationrecorder": {
|
|
357
|
+
"record": "",
|
|
358
|
+
"stop": ""
|
|
359
|
+
},
|
|
348
360
|
"map": {
|
|
349
361
|
"loading": "Carregant...",
|
|
350
362
|
"resetrotation": "Reiniciar rotació"
|
|
@@ -481,6 +493,7 @@
|
|
|
481
493
|
"loading": "Carregant formulari..."
|
|
482
494
|
},
|
|
483
495
|
"redlining": {
|
|
496
|
+
"attributes": "",
|
|
484
497
|
"buffer": "Buffer",
|
|
485
498
|
"buffercompute": "Computar",
|
|
486
499
|
"bufferdistance": "Distància",
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"MapExport3D": "",
|
|
25
25
|
"MapFilter": "",
|
|
26
26
|
"MapLight3D": "",
|
|
27
|
+
"ObjectList": "",
|
|
27
28
|
"Print": "Tisk",
|
|
28
29
|
"Reports": "",
|
|
29
30
|
"Settings": "Nastavení",
|
|
@@ -192,6 +193,12 @@
|
|
|
192
193
|
"takepicture": "",
|
|
193
194
|
"unsavedchanged": ""
|
|
194
195
|
},
|
|
196
|
+
"featureattributes": {
|
|
197
|
+
"name": "",
|
|
198
|
+
"nofeature": "",
|
|
199
|
+
"value": "",
|
|
200
|
+
"windowtitle": ""
|
|
201
|
+
},
|
|
195
202
|
"featureform": {
|
|
196
203
|
"feature": "Prvek",
|
|
197
204
|
"noresults": "Žádné výsledky",
|
|
@@ -244,6 +251,7 @@
|
|
|
244
251
|
"identify": {
|
|
245
252
|
"aggregatedreport": "",
|
|
246
253
|
"clipboard": "Zkopírovat do schránky",
|
|
254
|
+
"compare": "",
|
|
247
255
|
"comparing": "",
|
|
248
256
|
"download": "",
|
|
249
257
|
"export": "Exportovat",
|
|
@@ -345,6 +353,10 @@
|
|
|
345
353
|
"PERMISSION_DENIED": "Poloha: nepovoleno"
|
|
346
354
|
}
|
|
347
355
|
},
|
|
356
|
+
"locationrecorder": {
|
|
357
|
+
"record": "",
|
|
358
|
+
"stop": ""
|
|
359
|
+
},
|
|
348
360
|
"map": {
|
|
349
361
|
"loading": "Načítání...",
|
|
350
362
|
"resetrotation": "Obnovit orientaci mapy"
|
|
@@ -481,6 +493,7 @@
|
|
|
481
493
|
"loading": ""
|
|
482
494
|
},
|
|
483
495
|
"redlining": {
|
|
496
|
+
"attributes": "",
|
|
484
497
|
"buffer": "",
|
|
485
498
|
"buffercompute": "",
|
|
486
499
|
"bufferdistance": "",
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"MapExport3D": "Karte exportieren",
|
|
25
25
|
"MapFilter": "Kartenfilter",
|
|
26
26
|
"MapLight3D": "Beleuchtung und Schatten",
|
|
27
|
+
"ObjectList": "Objektliste",
|
|
27
28
|
"Print": "Drucken",
|
|
28
29
|
"Reports": "Berichte",
|
|
29
30
|
"Settings": "Einstellungen",
|
|
@@ -192,6 +193,12 @@
|
|
|
192
193
|
"takepicture": "Bild schiessen",
|
|
193
194
|
"unsavedchanged": "Es gibt nicht gespeicherte Änderungen. Soll die Seite trotzdem verlassen werden?"
|
|
194
195
|
},
|
|
196
|
+
"featureattributes": {
|
|
197
|
+
"name": "Name",
|
|
198
|
+
"nofeature": "Kein aktives Objekt",
|
|
199
|
+
"value": "Wert",
|
|
200
|
+
"windowtitle": "Objektattribute"
|
|
201
|
+
},
|
|
195
202
|
"featureform": {
|
|
196
203
|
"feature": "Objekt",
|
|
197
204
|
"noresults": "Keine Ergebnisse",
|
|
@@ -244,6 +251,7 @@
|
|
|
244
251
|
"identify": {
|
|
245
252
|
"aggregatedreport": "Aggregierter Bericht",
|
|
246
253
|
"clipboard": "Nach Zwischenablage kopieren",
|
|
254
|
+
"compare": "Selektierte Objekte vergleichen",
|
|
247
255
|
"comparing": "Vergleich von {0} Objekte",
|
|
248
256
|
"download": "Herunterladen",
|
|
249
257
|
"export": "Exportieren",
|
|
@@ -345,6 +353,10 @@
|
|
|
345
353
|
"PERMISSION_DENIED": "Position: Zugriff verweigert"
|
|
346
354
|
}
|
|
347
355
|
},
|
|
356
|
+
"locationrecorder": {
|
|
357
|
+
"record": "Position aufzeichen",
|
|
358
|
+
"stop": "Aufzeichnung stoppen"
|
|
359
|
+
},
|
|
348
360
|
"map": {
|
|
349
361
|
"loading": "Karte wird geladen...",
|
|
350
362
|
"resetrotation": "Drehung zurücksetzen"
|
|
@@ -481,6 +493,7 @@
|
|
|
481
493
|
"loading": "Formular wird geladen..."
|
|
482
494
|
},
|
|
483
495
|
"redlining": {
|
|
496
|
+
"attributes": "Objektattribute",
|
|
484
497
|
"buffer": "Puffern",
|
|
485
498
|
"buffercompute": "Berechnen",
|
|
486
499
|
"bufferdistance": "Distanz",
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"MapExport3D": "Karte exportieren",
|
|
25
25
|
"MapFilter": "Kartenfilter",
|
|
26
26
|
"MapLight3D": "Beleuchtung und Schatten",
|
|
27
|
+
"ObjectList": "Objektliste",
|
|
27
28
|
"Print": "Drucken",
|
|
28
29
|
"Reports": "Berichte",
|
|
29
30
|
"Settings": "Einstellungen",
|
|
@@ -192,6 +193,12 @@
|
|
|
192
193
|
"takepicture": "Bild schießen",
|
|
193
194
|
"unsavedchanged": "Es gibt nicht gespeicherte Änderungen. Soll die Seite trotzdem verlassen werden?"
|
|
194
195
|
},
|
|
196
|
+
"featureattributes": {
|
|
197
|
+
"name": "Name",
|
|
198
|
+
"nofeature": "Kein aktives Objekt",
|
|
199
|
+
"value": "Wert",
|
|
200
|
+
"windowtitle": "Objektattribute"
|
|
201
|
+
},
|
|
195
202
|
"featureform": {
|
|
196
203
|
"feature": "Objekt",
|
|
197
204
|
"noresults": "Keine Ergebnisse",
|
|
@@ -244,6 +251,7 @@
|
|
|
244
251
|
"identify": {
|
|
245
252
|
"aggregatedreport": "Aggregierter Bericht",
|
|
246
253
|
"clipboard": "Nach Zwischenablage kopieren",
|
|
254
|
+
"compare": "Selektierte Objekte vergleichen",
|
|
247
255
|
"comparing": "Vergleich von {0} Objekte",
|
|
248
256
|
"download": "Herunterladen",
|
|
249
257
|
"export": "Exportieren",
|
|
@@ -345,6 +353,10 @@
|
|
|
345
353
|
"PERMISSION_DENIED": "Position: Zugriff verweigert"
|
|
346
354
|
}
|
|
347
355
|
},
|
|
356
|
+
"locationrecorder": {
|
|
357
|
+
"record": "Position aufzeichen",
|
|
358
|
+
"stop": "Aufzeichnung stoppen"
|
|
359
|
+
},
|
|
348
360
|
"map": {
|
|
349
361
|
"loading": "Karte wird geladen...",
|
|
350
362
|
"resetrotation": "Drehung zurücksetzen"
|
|
@@ -436,7 +448,7 @@
|
|
|
436
448
|
"angle": "Winkel",
|
|
437
449
|
"featureunsupported": "Numerische Eingabe nicht verfügbar für dieses Objekt",
|
|
438
450
|
"height": "Höhe",
|
|
439
|
-
"nofeature": "Kein Objekt
|
|
451
|
+
"nofeature": "Kein aktives Objekt",
|
|
440
452
|
"side": "Seite",
|
|
441
453
|
"width": "Breite",
|
|
442
454
|
"windowtitle": "Numerische Eingabe"
|
|
@@ -481,6 +493,7 @@
|
|
|
481
493
|
"loading": "Formular wird geladen..."
|
|
482
494
|
},
|
|
483
495
|
"redlining": {
|
|
496
|
+
"attributes": "Objektattribute",
|
|
484
497
|
"buffer": "Puffern",
|
|
485
498
|
"buffercompute": "Berechnen",
|
|
486
499
|
"bufferdistance": "Distanz",
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"MapExport3D": "Export Map",
|
|
25
25
|
"MapFilter": "Map Filter",
|
|
26
26
|
"MapLight3D": "Light and Shadows",
|
|
27
|
+
"ObjectList": "Object list",
|
|
27
28
|
"Print": "Print",
|
|
28
29
|
"Reports": "Reports",
|
|
29
30
|
"Settings": "Settings",
|
|
@@ -192,6 +193,12 @@
|
|
|
192
193
|
"takepicture": "Take picture",
|
|
193
194
|
"unsavedchanged": "There are unsaved changes. Do you want to leave the page anyway?"
|
|
194
195
|
},
|
|
196
|
+
"featureattributes": {
|
|
197
|
+
"name": "Name",
|
|
198
|
+
"nofeature": "No active feature",
|
|
199
|
+
"value": "Value",
|
|
200
|
+
"windowtitle": "Feature attributes"
|
|
201
|
+
},
|
|
195
202
|
"featureform": {
|
|
196
203
|
"feature": "Feature",
|
|
197
204
|
"noresults": "No results",
|
|
@@ -244,6 +251,7 @@
|
|
|
244
251
|
"identify": {
|
|
245
252
|
"aggregatedreport": "Aggregated report",
|
|
246
253
|
"clipboard": "Copy to clipboard",
|
|
254
|
+
"compare": "Compare selected objects",
|
|
247
255
|
"comparing": "Comparing {0} features",
|
|
248
256
|
"download": "Download",
|
|
249
257
|
"export": "Export",
|
|
@@ -345,6 +353,10 @@
|
|
|
345
353
|
"PERMISSION_DENIED": "Position: permission denied"
|
|
346
354
|
}
|
|
347
355
|
},
|
|
356
|
+
"locationrecorder": {
|
|
357
|
+
"record": "Record location",
|
|
358
|
+
"stop": "Stop recording"
|
|
359
|
+
},
|
|
348
360
|
"map": {
|
|
349
361
|
"loading": "Loading...",
|
|
350
362
|
"resetrotation": "Reset rotation"
|
|
@@ -481,6 +493,7 @@
|
|
|
481
493
|
"loading": "Loading form..."
|
|
482
494
|
},
|
|
483
495
|
"redlining": {
|
|
496
|
+
"attributes": "Feature attributes",
|
|
484
497
|
"buffer": "Buffer",
|
|
485
498
|
"buffercompute": "Compute",
|
|
486
499
|
"bufferdistance": "Distance",
|