ol-wfst 4.2.0 → 4.4.0
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/LICENSE.md +1 -1
- package/README.md +72 -22
- package/dist/@enums.d.ts +17 -0
- package/dist/@enums.d.ts.map +1 -0
- package/dist/@types.d.ts +206 -0
- package/dist/@types.d.ts.map +1 -0
- package/dist/Geoserver.d.ts +275 -0
- package/dist/Geoserver.d.ts.map +1 -0
- package/dist/WfsLayer.d.ts +51 -0
- package/dist/WfsLayer.d.ts.map +1 -0
- package/dist/WmsLayer.d.ts +69 -0
- package/dist/WmsLayer.d.ts.map +1 -0
- package/dist/css/ol-wfst.bootstrap5.css +18 -18
- package/dist/css/ol-wfst.bootstrap5.min.css +1 -1
- package/dist/css/ol-wfst.css +26 -39
- package/dist/css/ol-wfst.min.css +1 -1
- package/dist/defaults.d.ts +4 -0
- package/dist/defaults.d.ts.map +1 -0
- package/dist/index-umd.d.ts +3 -0
- package/dist/index-umd.d.ts.map +1 -0
- package/dist/modules/EditControlChanges.d.ts +18 -0
- package/dist/modules/EditControlChanges.d.ts.map +1 -0
- package/dist/modules/EditFieldsModal.d.ts +19 -0
- package/dist/modules/EditFieldsModal.d.ts.map +1 -0
- package/dist/modules/EditOverlay.d.ts +8 -0
- package/dist/modules/EditOverlay.d.ts.map +1 -0
- package/dist/modules/LayersControl.d.ts +38 -0
- package/dist/modules/LayersControl.d.ts.map +1 -0
- package/dist/modules/Uploads.d.ts +50 -0
- package/dist/modules/Uploads.d.ts.map +1 -0
- package/dist/modules/base/BaseLayer.d.ts +62 -0
- package/dist/modules/base/BaseLayer.d.ts.map +1 -0
- package/dist/modules/base/WfsSource.d.ts +49 -0
- package/dist/modules/base/WfsSource.d.ts.map +1 -0
- package/dist/modules/base/WmsSource.d.ts +47 -0
- package/dist/modules/base/WmsSource.d.ts.map +1 -0
- package/dist/modules/editLayer.d.ts +4 -0
- package/dist/modules/editLayer.d.ts.map +1 -0
- package/dist/modules/errors.d.ts +12 -0
- package/dist/modules/errors.d.ts.map +1 -0
- package/dist/modules/helpers.d.ts +7 -0
- package/dist/modules/helpers.d.ts.map +1 -0
- package/dist/modules/i18n/en.d.ts +3 -0
- package/dist/modules/i18n/en.d.ts.map +1 -0
- package/dist/modules/i18n/es.d.ts +3 -0
- package/dist/modules/i18n/es.d.ts.map +1 -0
- package/dist/modules/i18n/index.d.ts +15 -0
- package/dist/modules/i18n/index.d.ts.map +1 -0
- package/dist/modules/i18n/zh.d.ts +3 -0
- package/dist/modules/i18n/zh.d.ts.map +1 -0
- package/dist/modules/loading.d.ts +3 -0
- package/dist/modules/loading.d.ts.map +1 -0
- package/dist/modules/state.d.ts +22 -0
- package/dist/modules/state.d.ts.map +1 -0
- package/dist/modules/styleFunction.d.ts +13 -0
- package/dist/modules/styleFunction.d.ts.map +1 -0
- package/dist/myPragma.d.ts +2 -0
- package/dist/myPragma.d.ts.map +1 -0
- package/dist/ol-wfst.d.ts +340 -0
- package/dist/ol-wfst.d.ts.map +1 -0
- package/dist/ol-wfst.js +99 -56
- package/dist/ol-wfst.js.map +1 -1
- package/dist/ol-wfst.min.js +3 -3
- package/dist/ol-wfst.min.js.map +1 -1
- package/lib/@types.d.ts +14 -9
- package/lib/@types.d.ts.map +1 -1
- package/lib/Geoserver.d.ts.map +1 -1
- package/lib/WfsLayer.d.ts +2 -4
- package/lib/WfsLayer.d.ts.map +1 -1
- package/lib/WmsLayer.d.ts +2 -2
- package/lib/WmsLayer.d.ts.map +1 -1
- package/lib/modules/EditFieldsModal.d.ts +2 -2
- package/lib/modules/EditFieldsModal.d.ts.map +1 -1
- package/lib/modules/LayersControl.d.ts +8 -4
- package/lib/modules/LayersControl.d.ts.map +1 -1
- package/lib/modules/base/WfsSource.d.ts +2 -1
- package/lib/modules/base/WfsSource.d.ts.map +1 -1
- package/lib/ol-wfst.d.ts +25 -22
- package/lib/ol-wfst.d.ts.map +1 -1
- package/lib/ol-wfst.js +99 -56
- package/lib/ol-wfst.js.map +1 -1
- package/lib/style/css/ol-gisify.css +26 -39
- package/lib/style/css/ol-wfst.bootstrap5.css +18 -18
- package/lib/style/scss/ol-wfst.scss +82 -58
- package/package.json +5 -5
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/lib/tsconfig.tsbuildinfo +0 -1
package/lib/ol-wfst.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* ol-wfst - v4.
|
|
2
|
+
* ol-wfst - v4.4.0
|
|
3
3
|
* https://github.com/GastonZalba/ol-wfst#readme
|
|
4
|
-
* Built:
|
|
4
|
+
* Built: Sun May 05 2024 21:49:12 GMT-0300 (Argentina Standard Time)
|
|
5
5
|
*/
|
|
6
6
|
import CircleStyle from 'ol/style/Circle.js';
|
|
7
7
|
import Fill$1 from 'ol/style/Fill.js';
|
|
@@ -657,6 +657,9 @@ class WmsLayer extends Mixin(BaseLayer, (TileLayer)) {
|
|
|
657
657
|
if (options.beforeTransactFeature) {
|
|
658
658
|
this.beforeTransactFeature = options.beforeTransactFeature;
|
|
659
659
|
}
|
|
660
|
+
if (options.beforeShowFieldsModal) {
|
|
661
|
+
this.beforeShowFieldsModal = options.beforeShowFieldsModal;
|
|
662
|
+
}
|
|
660
663
|
this._formatGeoJSON = new GeoJSON();
|
|
661
664
|
const geoserver = options.geoserver;
|
|
662
665
|
const source = new WmsSource({
|
|
@@ -724,6 +727,9 @@ class WmsLayer extends Mixin(BaseLayer, (TileLayer)) {
|
|
|
724
727
|
const data = await response.json();
|
|
725
728
|
let features = this._parseFeaturesFromResponse(data);
|
|
726
729
|
const featuresId = features.map((f) => f.getId());
|
|
730
|
+
if (!featuresId.length) {
|
|
731
|
+
return;
|
|
732
|
+
}
|
|
727
733
|
const fullResList = await this._getFullResGeometryById(featuresId);
|
|
728
734
|
if (fullResList) {
|
|
729
735
|
features = fullResList;
|
|
@@ -947,17 +953,21 @@ class LayersControl extends Observable {
|
|
|
947
953
|
layer.setVisible(false);
|
|
948
954
|
}
|
|
949
955
|
}
|
|
956
|
+
/**
|
|
957
|
+
* Called when a layer is selected in the widget
|
|
958
|
+
* @param evt
|
|
959
|
+
* @param layer
|
|
960
|
+
*/
|
|
950
961
|
_layerChangeHandler(evt, layer) {
|
|
951
|
-
const radioInput = evt.currentTarget;
|
|
952
|
-
const parentDiv = radioInput.closest('.wfst--layer-control');
|
|
953
|
-
// Deselect DOM previous layer
|
|
954
962
|
const selected = document.querySelector('.ol-wfst--selected-on');
|
|
955
|
-
|
|
956
|
-
|
|
963
|
+
const parentDiv = evt.currentTarget.closest('.wfst--layer-control');
|
|
964
|
+
// Deselect DOM previous layer
|
|
965
|
+
selected.classList.remove('ol-wfst--selected-on');
|
|
957
966
|
// Select this layer
|
|
958
967
|
parentDiv.classList.add('ol-wfst--selected-on');
|
|
959
968
|
setActiveLayerToInsertEls(layer);
|
|
960
969
|
this._changeStateSelect(layer);
|
|
970
|
+
this.dispatchEvent('changeLayer');
|
|
961
971
|
}
|
|
962
972
|
render() {
|
|
963
973
|
return (createElement(null, null,
|
|
@@ -1416,23 +1426,37 @@ class EditFieldsModal extends Observable {
|
|
|
1416
1426
|
constructor(options) {
|
|
1417
1427
|
super();
|
|
1418
1428
|
this._options = options;
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1429
|
+
this._modal = new Modal(Object.assign(Object.assign({}, this._options.modal), { header: true, headerClose: true, title: '', content: createElement("div", null), footer: `
|
|
1430
|
+
<button
|
|
1431
|
+
type="button"
|
|
1432
|
+
class="btn btn-sm btn-link btn-third"
|
|
1433
|
+
data-action="delete"
|
|
1434
|
+
data-dismiss="modal"
|
|
1435
|
+
>
|
|
1436
|
+
${I18N.labels.delete}
|
|
1437
|
+
</button>
|
|
1438
|
+
<button
|
|
1439
|
+
type="button"
|
|
1440
|
+
class="btn btn-sm btn-secondary"
|
|
1441
|
+
data-dismiss="modal"
|
|
1442
|
+
>
|
|
1443
|
+
${I18N.labels.cancel}
|
|
1444
|
+
</button>
|
|
1445
|
+
<button
|
|
1446
|
+
type="button"
|
|
1447
|
+
class="btn btn-sm btn-primary"
|
|
1448
|
+
data-action="save"
|
|
1449
|
+
data-dismiss="modal"
|
|
1450
|
+
>
|
|
1451
|
+
${I18N.labels.save}
|
|
1452
|
+
</button>
|
|
1453
|
+
` }));
|
|
1431
1454
|
this._modal.on('dismiss', (modal, event) => {
|
|
1432
1455
|
// On saving changes
|
|
1433
1456
|
if (event.target.dataset.action === 'save') {
|
|
1434
|
-
const
|
|
1435
|
-
|
|
1457
|
+
const formElements = modal.el.querySelector('form')
|
|
1458
|
+
.elements;
|
|
1459
|
+
Array.from(formElements).forEach((el) => {
|
|
1436
1460
|
const value = el.value;
|
|
1437
1461
|
const field = el.name;
|
|
1438
1462
|
this._feature.set(field, value, /*isSilent = */ true);
|
|
@@ -1448,45 +1472,55 @@ class EditFieldsModal extends Observable {
|
|
|
1448
1472
|
}
|
|
1449
1473
|
show(feature) {
|
|
1450
1474
|
this._feature = feature;
|
|
1451
|
-
const
|
|
1452
|
-
const
|
|
1475
|
+
const modalTitle = `${I18N.labels.editElement} ${feature.getId()} `;
|
|
1476
|
+
const featProperties = feature.getProperties();
|
|
1453
1477
|
const layerName = feature.get('_layerName_');
|
|
1454
1478
|
// Data schema from the geoserver
|
|
1455
1479
|
const layer = getStoredLayer(layerName);
|
|
1456
1480
|
const dataSchema = layer.getDescribeFeatureType()._parsed.properties;
|
|
1457
|
-
|
|
1458
|
-
Object.keys(
|
|
1481
|
+
this._modal._html.body.innerHTML = '';
|
|
1482
|
+
this._modal._html.body.append(createElement("form", { autocomplete: "false" }, Object.keys(featProperties).flatMap((key) => {
|
|
1459
1483
|
// If the feature field exists in the geoserver and is not added by openlayers
|
|
1460
1484
|
const field = dataSchema.find((data) => data.name === key);
|
|
1461
|
-
if (field)
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1485
|
+
if (!field)
|
|
1486
|
+
return [];
|
|
1487
|
+
const typeXsd = field.type;
|
|
1488
|
+
const value = featProperties[key];
|
|
1489
|
+
let type;
|
|
1490
|
+
switch (typeXsd) {
|
|
1491
|
+
case 'xsd:double':
|
|
1492
|
+
case 'xsd:number':
|
|
1493
|
+
case 'xsd:int':
|
|
1494
|
+
type = 'number';
|
|
1495
|
+
break;
|
|
1496
|
+
case 'xsd:date':
|
|
1497
|
+
type = 'date';
|
|
1498
|
+
break;
|
|
1499
|
+
case 'xsd:date-time':
|
|
1500
|
+
type = 'datetime';
|
|
1501
|
+
break;
|
|
1502
|
+
case 'xsd:string':
|
|
1503
|
+
default:
|
|
1504
|
+
type = 'text';
|
|
1505
|
+
}
|
|
1506
|
+
let input = (createElement("input", { placeholder: "NULL", className: "ol-wfst--input-field-input", type: type, name: key, value: value || null }));
|
|
1507
|
+
if (layer.beforeShowFieldsModal) {
|
|
1508
|
+
const hookInput = layer.beforeShowFieldsModal(field, value, input);
|
|
1509
|
+
if (!hookInput) {
|
|
1510
|
+
return [];
|
|
1511
|
+
}
|
|
1512
|
+
if (typeof hookInput === 'string') {
|
|
1513
|
+
input = new DOMParser().parseFromString(hookInput, 'text/html').body.childNodes[0];
|
|
1477
1514
|
}
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
<div class="ol-wfst--input-field-container">
|
|
1481
|
-
<label class="ol-wfst--input-field-label" for="${key}">${key}</label>
|
|
1482
|
-
<input placeholder="NULL" class="ol-wfst--input-field-input" type="${type}" name="${key}" value="${properties[key] || ''}">
|
|
1483
|
-
</div>`;
|
|
1515
|
+
else {
|
|
1516
|
+
input = hookInput;
|
|
1484
1517
|
}
|
|
1485
1518
|
}
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1519
|
+
return (createElement("div", { className: "ol-wfst--input-field-container" },
|
|
1520
|
+
createElement("label", { className: "ol-wfst--input-field-label", htmlFor: key }, key),
|
|
1521
|
+
input));
|
|
1522
|
+
})));
|
|
1523
|
+
this._modal._html.header.innerHTML = modalTitle;
|
|
1490
1524
|
this._modal.show();
|
|
1491
1525
|
}
|
|
1492
1526
|
}
|
|
@@ -1831,9 +1865,12 @@ class Geoserver extends BaseObject {
|
|
|
1831
1865
|
throw new Error(`${I18N.errors.layerNotFound}: "${layerName}"`);
|
|
1832
1866
|
}
|
|
1833
1867
|
const describeFeatureType = geoLayer.getDescribeFeatureType()._parsed;
|
|
1868
|
+
const layerNameClean = layerName.split(':').length > 1
|
|
1869
|
+
? layerName.split(':').pop()
|
|
1870
|
+
: layerName;
|
|
1834
1871
|
const options = {
|
|
1835
1872
|
featureNS: describeFeatureType.namespace,
|
|
1836
|
-
featureType:
|
|
1873
|
+
featureType: layerNameClean,
|
|
1837
1874
|
srsName: srs,
|
|
1838
1875
|
featurePrefix: null,
|
|
1839
1876
|
nativeElements: null,
|
|
@@ -1861,7 +1898,7 @@ class Geoserver extends BaseObject {
|
|
|
1861
1898
|
if (transactionType === TransactionType.Insert) {
|
|
1862
1899
|
payload = payload.replace(/<(\/?)\bgeometry\b>/g, `<$1${geomField}>`);
|
|
1863
1900
|
}
|
|
1864
|
-
else {
|
|
1901
|
+
else if (transactionType === TransactionType.Update) {
|
|
1865
1902
|
payload = payload.replace(/<Name>geometry<\/Name>/g, `<Name>${geomField}</Name>`);
|
|
1866
1903
|
}
|
|
1867
1904
|
// This has to be te same used before
|
|
@@ -2078,7 +2115,7 @@ class EditOverlay extends Overlay {
|
|
|
2078
2115
|
|
|
2079
2116
|
const controlElement = document.createElement('div');
|
|
2080
2117
|
/**
|
|
2081
|
-
* Tiny
|
|
2118
|
+
* Tiny WFS-T client to insert (drawing/uploading), modify and delete
|
|
2082
2119
|
* features on GeoServers using OpenLayers. Layers with these types
|
|
2083
2120
|
* of geometries are supported: "GeometryCollection" (in this case, you can
|
|
2084
2121
|
* choose the geometry type of each element to draw), "Point", "MultiPoint",
|
|
@@ -2113,7 +2150,7 @@ class Wfst extends Control {
|
|
|
2113
2150
|
this._controlWidgetToolsDiv = controlElement;
|
|
2114
2151
|
this._controlWidgetToolsDiv.className = 'ol-wfst--tools-control';
|
|
2115
2152
|
this._uploads = new Uploads(this._options);
|
|
2116
|
-
this._editFields = new EditFieldsModal(this._options
|
|
2153
|
+
this._editFields = new EditFieldsModal(this._options);
|
|
2117
2154
|
}
|
|
2118
2155
|
/**
|
|
2119
2156
|
* Get all the layers in the ol-wfst instance
|
|
@@ -2220,7 +2257,7 @@ class Wfst extends Control {
|
|
|
2220
2257
|
this._collectionModify.remove(feature);
|
|
2221
2258
|
});
|
|
2222
2259
|
// @ts-expect-error
|
|
2223
|
-
this._editFields.
|
|
2260
|
+
this._editFields.on('delete', ({ feature }) => {
|
|
2224
2261
|
this._deleteFeature(feature, true);
|
|
2225
2262
|
});
|
|
2226
2263
|
this._addMapEvents();
|
|
@@ -2468,6 +2505,12 @@ class Wfst extends Control {
|
|
|
2468
2505
|
this.activateDrawMode(getActiveLayerToInsertEls());
|
|
2469
2506
|
}
|
|
2470
2507
|
});
|
|
2508
|
+
// @ts-expect-error
|
|
2509
|
+
this._layersControl.on('changeLayer', () => {
|
|
2510
|
+
if (getMode() === Modes.Draw) {
|
|
2511
|
+
this.activateDrawMode(getActiveLayerToInsertEls());
|
|
2512
|
+
}
|
|
2513
|
+
});
|
|
2471
2514
|
const controlEl = this._layersControl.render();
|
|
2472
2515
|
this._selectDraw = controlEl.querySelector('.wfst--tools-control--select-draw');
|
|
2473
2516
|
this._controlWidgetToolsDiv.append(controlEl);
|