From 61fe2cbf5d0753868dfe0ddb38b79224551dee2e Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Thu, 4 May 2023 17:13:05 +0200 Subject: [PATCH] CQL improvements (#315) * CQL refactor * Boolean support * Support POST & CQL JSON * Show only supported queryables + UI * Add another rel from OGC * ... --- .eslintrc | 2 +- babel.config.js | 3 +- src/components/ApiCapabilitiesMixin.js | 5 +- src/components/ItemFilter.vue | 99 +++++++---- src/components/QueryableInput.vue | 226 ++++++++---------------- src/locales/de/texts.json | 10 ++ src/locales/en/texts.json | 10 ++ src/models/cql2/cql.js | 23 +++ src/models/cql2/operators/advanced.js | 24 +++ src/models/cql2/operators/comparison.js | 127 +++++++++++++ src/models/cql2/operators/logical.js | 52 ++++++ src/models/cql2/operators/operator.js | 32 ++++ src/models/cql2/queryable.js | 121 +++++++++++++ src/models/cql2/value.js | 65 +++++++ src/models/queryable.js | 72 -------- src/models/stac.js | 6 +- src/rels.js | 3 +- src/store/index.js | 5 +- src/utils.js | 85 +++++---- 19 files changed, 673 insertions(+), 297 deletions(-) create mode 100644 src/models/cql2/cql.js create mode 100644 src/models/cql2/operators/advanced.js create mode 100644 src/models/cql2/operators/comparison.js create mode 100644 src/models/cql2/operators/logical.js create mode 100644 src/models/cql2/operators/operator.js create mode 100644 src/models/cql2/queryable.js create mode 100644 src/models/cql2/value.js delete mode 100644 src/models/queryable.js diff --git a/.eslintrc b/.eslintrc index 5a3f341b6..e6f7cb808 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,6 +1,6 @@ { "parserOptions": { - "ecmaVersion": 2020, + "ecmaVersion": 2022, "sourceType": "module" }, "globals": { diff --git a/babel.config.js b/babel.config.js index 9bc21ecc7..da9df6caf 100644 --- a/babel.config.js +++ b/babel.config.js @@ -3,6 +3,7 @@ module.exports = { '@vue/cli-plugin-babel/preset' ], plugins: [ - "@babel/plugin-proposal-optional-chaining" + "@babel/plugin-proposal-optional-chaining", + "@babel/plugin-proposal-class-properties" ] }; diff --git a/src/components/ApiCapabilitiesMixin.js b/src/components/ApiCapabilitiesMixin.js index c7bf66470..0baefc573 100644 --- a/src/components/ApiCapabilitiesMixin.js +++ b/src/components/ApiCapabilitiesMixin.js @@ -45,7 +45,7 @@ export default ogcapi => ({ } let textMode = this.supportsConformance(CQL_TEXT); let jsonMode = this.supportsConformance(CQL_JSON); - if (!textMode/* && !jsonMode*/) { + if (!textMode && !jsonMode) { return null; } @@ -55,6 +55,9 @@ export default ogcapi => ({ advancedComparison: this.supportsConformance(CQL_ADV_COMPARISON) }; }, + cqlAdvComparison() { + return this.supportsConformance(CQL_ADV_COMPARISON); + }, filterComponentProps() { return { canSort: this.canSort, diff --git a/src/components/ItemFilter.vue b/src/components/ItemFilter.vue index c50ff87de..029ec4986 100644 --- a/src/components/ItemFilter.vue +++ b/src/components/ItemFilter.vue @@ -61,20 +61,21 @@
- {{ $t('featureExperimental') }} + - - {{ queryable.title }} - +
+
+