openlayers-style-editor 1.1.0 → 1.1.1

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/dist/index.cjs CHANGED
@@ -551,6 +551,8 @@
551
551
  "fill-color": fillColorArray,
552
552
  "_rules": filters.map((f) => ({
553
553
  expression: getFriendlyExpression(f),
554
+ name: f.name,
555
+ json: f.filterJson,
554
556
  render: f.symbol
555
557
  }))
556
558
  };
@@ -2782,9 +2784,11 @@
2782
2784
  function deconstructRule(rule) {
2783
2785
  const parsedRule = JSON.parse(rule);
2784
2786
  const isAll = parsedRule.hasOwnProperty("and");
2787
+ let conditions = parsedRule[isAll ? "and" : "or"];
2788
+ if (!conditions) conditions = [parsedRule];
2785
2789
  return {
2786
2790
  isAll,
2787
- conditions: parsedRule[isAll ? "and" : "or"].map((condition) => {
2791
+ conditions: conditions.map((condition) => {
2788
2792
  const operator = Object.keys(condition)[0];
2789
2793
  const value = condition[operator];
2790
2794
  if (operator === "==" && value[0].hasOwnProperty("substr")) {
@@ -3034,7 +3038,19 @@
3034
3038
  //#region src/components/basedOnRules.tsx
3035
3039
  function BasedOnRules(props) {
3036
3040
  const { setVisible, applyRenderer, layerCurrentRenderer, features, idFieldName } = props;
3037
- const [rules, setRules] = (0, react.useState)(layerCurrentRenderer.type == RenderType.ByRules ? layerCurrentRenderer.filters ? layerCurrentRenderer.filters : [] : []);
3041
+ const [rules, setRules] = (0, react.useState)(() => {
3042
+ if (layerCurrentRenderer.type == RenderType.ByRules) {
3043
+ if (layerCurrentRenderer.filters && layerCurrentRenderer.filters.length > 0) return layerCurrentRenderer.filters;
3044
+ else if (layerCurrentRenderer.rendererOL._rules) return layerCurrentRenderer.rendererOL._rules.map((r, index) => ({
3045
+ name: r.name || r.expression,
3046
+ filterJson: r.json,
3047
+ isElse: index === layerCurrentRenderer.rendererOL._rules.length - 1,
3048
+ symbol: r.render,
3049
+ isAll: false
3050
+ }));
3051
+ }
3052
+ return [];
3053
+ });
3038
3054
  const [selectedRule, setSelectedRule] = (0, react.useState)();
3039
3055
  const [showDialog, setShowDialog] = (0, react.useState)(false);
3040
3056
  const [isAdding, setIsAdding] = (0, react.useState)(false);
package/dist/index.js CHANGED
@@ -519,6 +519,8 @@ function getByRulesStyle(filters, idFieldName, features, elseFilter) {
519
519
  "fill-color": fillColorArray,
520
520
  "_rules": filters.map((f) => ({
521
521
  expression: getFriendlyExpression(f),
522
+ name: f.name,
523
+ json: f.filterJson,
522
524
  render: f.symbol
523
525
  }))
524
526
  };
@@ -2750,9 +2752,11 @@ var FilterWidget = (props) => {
2750
2752
  function deconstructRule(rule) {
2751
2753
  const parsedRule = JSON.parse(rule);
2752
2754
  const isAll = parsedRule.hasOwnProperty("and");
2755
+ let conditions = parsedRule[isAll ? "and" : "or"];
2756
+ if (!conditions) conditions = [parsedRule];
2753
2757
  return {
2754
2758
  isAll,
2755
- conditions: parsedRule[isAll ? "and" : "or"].map((condition) => {
2759
+ conditions: conditions.map((condition) => {
2756
2760
  const operator = Object.keys(condition)[0];
2757
2761
  const value = condition[operator];
2758
2762
  if (operator === "==" && value[0].hasOwnProperty("substr")) {
@@ -3002,7 +3006,19 @@ var FilterWidget = (props) => {
3002
3006
  //#region src/components/basedOnRules.tsx
3003
3007
  function BasedOnRules(props) {
3004
3008
  const { setVisible, applyRenderer, layerCurrentRenderer, features, idFieldName } = props;
3005
- const [rules, setRules] = useState(layerCurrentRenderer.type == RenderType.ByRules ? layerCurrentRenderer.filters ? layerCurrentRenderer.filters : [] : []);
3009
+ const [rules, setRules] = useState(() => {
3010
+ if (layerCurrentRenderer.type == RenderType.ByRules) {
3011
+ if (layerCurrentRenderer.filters && layerCurrentRenderer.filters.length > 0) return layerCurrentRenderer.filters;
3012
+ else if (layerCurrentRenderer.rendererOL._rules) return layerCurrentRenderer.rendererOL._rules.map((r, index) => ({
3013
+ name: r.name || r.expression,
3014
+ filterJson: r.json,
3015
+ isElse: index === layerCurrentRenderer.rendererOL._rules.length - 1,
3016
+ symbol: r.render,
3017
+ isAll: false
3018
+ }));
3019
+ }
3020
+ return [];
3021
+ });
3006
3022
  const [selectedRule, setSelectedRule] = useState();
3007
3023
  const [showDialog, setShowDialog] = useState(false);
3008
3024
  const [isAdding, setIsAdding] = useState(false);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openlayers-style-editor",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "type": "module",
5
5
  "description": "A style editor extension for OpenLayers currently working with WebGL Vector Layers",
6
6
  "homepage": "https://land-it.github.io/openlayers-style-editor/",