qwc2 2026.2.12 → 2026.2.13

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qwc2",
3
- "version": "2026.02.12",
3
+ "version": "2026.02.13",
4
4
  "description": "QGIS Web Client",
5
5
  "author": "Sourcepole AG",
6
6
  "license": "BSD-2-Clause",
@@ -77,7 +77,7 @@ var MapFilter = /*#__PURE__*/function (_React$Component) {
77
77
  filterInvalid: false
78
78
  });
79
79
  _defineProperty(_this, "collectPredefinedFilters", function (layers) {
80
- return layers.reduce(function (res, layer) {
80
+ var filters = layers.reduce(function (res, layer) {
81
81
  return _objectSpread(_objectSpread({}, res), (layer.predefinedFilters || []).reduce(function (res2, config) {
82
82
  return _objectSpread(_objectSpread({}, res2), {}, _defineProperty({}, config.id, _objectSpread(_objectSpread({}, config), {}, {
83
83
  filter: Object.fromEntries(Object.entries(config.filter).map(function (_ref) {
@@ -89,40 +89,55 @@ var MapFilter = /*#__PURE__*/function (_React$Component) {
89
89
  })));
90
90
  }, {}));
91
91
  }, {});
92
+ if (_this.props.allowFilterByTime) {
93
+ var timeFilter = {};
94
+ layers.forEach(function (layer) {
95
+ return _this.buildTimeFilter(layer, timeFilter, layer.wms_name);
96
+ });
97
+ if (!isEmpty(timeFilter)) {
98
+ filters.__timefilter = {
99
+ id: "__timefilter",
100
+ active: false,
101
+ filter: timeFilter,
102
+ title: LocaleUtils.tr("mapfilter.timefilter"),
103
+ fields: [{
104
+ id: "tstart",
105
+ defaultValue: "",
106
+ inputConfig: {
107
+ type: "datetime"
108
+ },
109
+ title: LocaleUtils.tr("mapfilter.timefrom")
110
+ }, {
111
+ id: "tend",
112
+ defaultValue: "",
113
+ inputConfig: {
114
+ type: "datetime"
115
+ },
116
+ title: LocaleUtils.tr("mapfilter.timeto")
117
+ }],
118
+ defaultValues: {
119
+ tstart: '1800-01-01',
120
+ tend: '9999-12-31'
121
+ }
122
+ };
123
+ }
124
+ }
125
+ return filters;
92
126
  });
93
127
  _defineProperty(_this, "initializeFilters", function (predefinedFilters, prevFilters) {
94
128
  clearTimeout(_this.applyFilterTimeout);
95
129
  _this.applyFilterTimeout = null;
96
- var filters = Object.values(predefinedFilters).reduce(function (res, filterConfig) {
130
+ return Object.values(predefinedFilters).reduce(function (res, filterConfig) {
97
131
  var _prevFilters$filterCo;
98
132
  return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, filterConfig.id, (_prevFilters$filterCo = prevFilters === null || prevFilters === void 0 ? void 0 : prevFilters[filterConfig.id]) !== null && _prevFilters$filterCo !== void 0 ? _prevFilters$filterCo : {
99
133
  active: false,
100
134
  filter: filterConfig.filter,
101
135
  values: filterConfig.fields.reduce(function (values, valueConfig) {
102
136
  return _objectSpread(_objectSpread({}, values), {}, _defineProperty({}, valueConfig.id, valueConfig.defaultValue));
103
- }, {})
137
+ }, {}),
138
+ defaultValues: filterConfig.defaultValues
104
139
  }));
105
140
  }, {});
106
- var timeFilter = {};
107
- _this.props.layers.forEach(function (layer) {
108
- return _this.buildTimeFilter(layer, timeFilter, layer.wms_name);
109
- });
110
- if (!isEmpty(timeFilter) && _this.props.allowFilterByTime) {
111
- var _prevFilters$__timefi, _prevFilters$__timefi2, _prevFilters$__timefi3, _prevFilters$__timefi4;
112
- filters.__timefilter = {
113
- active: (_prevFilters$__timefi = (_prevFilters$__timefi2 = prevFilters.__timefilter) === null || _prevFilters$__timefi2 === void 0 ? void 0 : _prevFilters$__timefi2.active) !== null && _prevFilters$__timefi !== void 0 ? _prevFilters$__timefi : false,
114
- filter: timeFilter,
115
- values: (_prevFilters$__timefi3 = (_prevFilters$__timefi4 = prevFilters.__timefilter) === null || _prevFilters$__timefi4 === void 0 ? void 0 : _prevFilters$__timefi4.values) !== null && _prevFilters$__timefi3 !== void 0 ? _prevFilters$__timefi3 : {
116
- tstart: "",
117
- tend: ""
118
- },
119
- defaultValues: {
120
- tstart: '1800-01-01',
121
- tend: '9999-12-31'
122
- }
123
- };
124
- }
125
- return filters;
126
141
  });
127
142
  _defineProperty(_this, "applyFilter", function () {
128
143
  var _this$state$filters$_;
@@ -279,7 +294,7 @@ var MapFilter = /*#__PURE__*/function (_React$Component) {
279
294
  if (_this.state.filterEditor) {
280
295
  return _this.renderFilterEditor();
281
296
  } else {
282
- return [_this.renderInvalidWarning()].concat(_toConsumableArray(_this.renderPredefinedFilters()), [_this.props.allowFilterByTime ? _this.renderTimeFilter() : null, _this.props.allowFilterByGeom ? _this.renderGeomFilter() : null], _toConsumableArray(_this.renderCustomFilters()));
297
+ return [_this.renderInvalidWarning()].concat(_toConsumableArray(_this.renderPredefinedFilters()), [_this.props.allowFilterByGeom ? _this.renderGeomFilter() : null], _toConsumableArray(_this.renderCustomFilters()));
283
298
  }
284
299
  });
285
300
  _defineProperty(_this, "renderInvalidWarning", function () {
@@ -389,61 +404,42 @@ var MapFilter = /*#__PURE__*/function (_React$Component) {
389
404
  var _field$title;
390
405
  return /*#__PURE__*/React.createElement("tr", {
391
406
  key: field.id
392
- }, /*#__PURE__*/React.createElement("td", null, (_field$title = field.title) !== null && _field$title !== void 0 ? _field$title : LocaleUtils.tr(field.titlemsgid), ": "), /*#__PURE__*/React.createElement("td", null, field.inputConfig.type === 'select' ? /*#__PURE__*/React.createElement("select", {
393
- onChange: function onChange(ev) {
394
- return _this.updateFieldValue(config.id, field.id, ev.target.value);
395
- },
396
- value: _this.state.filters[config.id].values[field.id]
397
- }, !field.defaultValue ? /*#__PURE__*/React.createElement("option", {
398
- value: ""
399
- }, LocaleUtils.tr("common.select")) : null, field.inputConfig.options.map(function (entry) {
400
- var _entry$value, _entry$value2, _entry$label;
401
- return /*#__PURE__*/React.createElement("option", {
402
- key: (_entry$value = entry.value) !== null && _entry$value !== void 0 ? _entry$value : entry,
403
- value: (_entry$value2 = entry.value) !== null && _entry$value2 !== void 0 ? _entry$value2 : entry
404
- }, (_entry$label = entry.label) !== null && _entry$label !== void 0 ? _entry$label : entry.labelmsgid ? LocaleUtils.tr(entry.labelmsgid) : entry);
405
- })) : /*#__PURE__*/React.createElement("input", _extends({
406
- onChange: function onChange(ev) {
407
- return _this.updateFieldValue(config.id, field.id, ev.target.value);
408
- },
409
- type: "text",
410
- value: _this.state.filters[config.id].values[field.id] || ""
411
- }, field.inputConfig))));
407
+ }, /*#__PURE__*/React.createElement("td", null, (_field$title = field.title) !== null && _field$title !== void 0 ? _field$title : LocaleUtils.tr(field.titlemsgid), ": "), /*#__PURE__*/React.createElement("td", null, _this.renderFilterField(config.id, field)));
412
408
  })))));
413
409
  });
414
410
  });
415
- _defineProperty(_this, "renderTimeFilter", function () {
416
- var timeFilter = _this.state.filters.__timefilter;
417
- if (!timeFilter) {
418
- return null;
411
+ _defineProperty(_this, "renderFilterField", function (configid, field) {
412
+ if (field.inputConfig.type === 'select') {
413
+ return /*#__PURE__*/React.createElement("select", {
414
+ onChange: function onChange(ev) {
415
+ return _this.updateFieldValue(configid, field.id, ev.target.value);
416
+ },
417
+ value: _this.state.filters[configid].values[field.id]
418
+ }, !field.defaultValue ? /*#__PURE__*/React.createElement("option", {
419
+ value: ""
420
+ }, LocaleUtils.tr("common.select")) : null, field.inputConfig.options.map(function (entry) {
421
+ var _entry$value, _entry$value2, _entry$label;
422
+ return /*#__PURE__*/React.createElement("option", {
423
+ key: (_entry$value = entry.value) !== null && _entry$value !== void 0 ? _entry$value : entry,
424
+ value: (_entry$value2 = entry.value) !== null && _entry$value2 !== void 0 ? _entry$value2 : entry
425
+ }, (_entry$label = entry.label) !== null && _entry$label !== void 0 ? _entry$label : entry.labelmsgid ? LocaleUtils.tr(entry.labelmsgid) : entry);
426
+ }));
427
+ } else if (field.inputConfig.type === "datetime") {
428
+ return /*#__PURE__*/React.createElement(DateTimeInput, {
429
+ onChange: function onChange(value) {
430
+ return _this.updateFieldValue(configid, field.id, value);
431
+ },
432
+ value: _this.state.filters[configid].values[field.id] || ""
433
+ });
434
+ } else {
435
+ return /*#__PURE__*/React.createElement("input", _extends({
436
+ onChange: function onChange(ev) {
437
+ return _this.updateFieldValue(configid, field.id, ev.target.value);
438
+ },
439
+ type: "text",
440
+ value: _this.state.filters[configid].values[field.id] || ""
441
+ }, field.inputConfig));
419
442
  }
420
- return /*#__PURE__*/React.createElement("div", {
421
- className: "map-filter-entry",
422
- key: "__timefilter"
423
- }, /*#__PURE__*/React.createElement("div", {
424
- className: "map-filter-entry-titlebar"
425
- }, /*#__PURE__*/React.createElement("span", {
426
- className: "map-filter-entry-title"
427
- }, LocaleUtils.tr("mapfilter.timefilter")), /*#__PURE__*/React.createElement(ToggleSwitch, {
428
- active: timeFilter.active,
429
- onChange: function onChange(active) {
430
- return _this.toggleFilter("__timefilter", active);
431
- }
432
- })), /*#__PURE__*/React.createElement("div", {
433
- className: "map-filter-entry-body"
434
- }, /*#__PURE__*/React.createElement("table", {
435
- className: "map-filter-entry-fields"
436
- }, /*#__PURE__*/React.createElement("tbody", null, /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("td", null, LocaleUtils.tr("mapfilter.timefrom"), ": "), /*#__PURE__*/React.createElement("td", null, /*#__PURE__*/React.createElement(DateTimeInput, {
437
- onChange: function onChange(value) {
438
- return _this.updateFieldValue("__timefilter", "tstart", value);
439
- },
440
- value: timeFilter.values.tstart
441
- }))), /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("td", null, LocaleUtils.tr("mapfilter.timeto"), ": "), /*#__PURE__*/React.createElement("td", null, /*#__PURE__*/React.createElement(DateTimeInput, {
442
- onChange: function onChange(value) {
443
- return _this.updateFieldValue("__timefilter", "tend", value);
444
- },
445
- value: timeFilter.values.tend
446
- })))))));
447
443
  });
448
444
  _defineProperty(_this, "renderCustomFilters", function () {
449
445
  if (!_this.props.allowCustomFilters) {