From b472af6290f65696917ee669a4e9930fad8aa2bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= Date: Tue, 18 Aug 2020 06:46:25 +0200 Subject: [PATCH] CategoryOverpassFilter: add defaultQuery option --- doc/Filters.md | 1 + src/CategoryOverpassFilter.js | 24 +++++++++++++++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/doc/Filters.md b/doc/Filters.md index 582fe21c..4e857465 100644 --- a/doc/Filters.md +++ b/doc/Filters.md @@ -37,6 +37,7 @@ Each filter can define the following values: * 'strsearch' query string parts (e.g. "kai keb" would match "Kaiser Kebap") and query character variants (e.g. "cafe" would match "café"). * show_default: if true, this filter will be shown by default, others need to be added via the select box. * placeholder: a text which is shown as placeholder (Twig enabled) +* defaultQuery: A filter query which is added when no value is selected. ### Values #### Array diff --git a/src/CategoryOverpassFilter.js b/src/CategoryOverpassFilter.js index e79daf43..568f4c40 100644 --- a/src/CategoryOverpassFilter.js +++ b/src/CategoryOverpassFilter.js @@ -139,16 +139,22 @@ class CategoryOverpassFilter { this.formFilter = new form('filter-' + this.master.id, this.data, masterOptions) this.formFilter.show(this.domFilter) - this.formFilter.onchange = function () { + this.formFilter.onchange = () => { let param = JSON.parse(JSON.stringify(this.formFilter.get_data())) this.applyParam(param) state.update() - }.bind(this) + } this.master.on('setParam', this.setParam.bind(this)) - this.master.on('applyParam', this.applyParam.bind(this)) + this.master.on('applyParam', (param) => { + this.applyParam(param) + + if (!this.tabFilter.isSelected()) { + this.tabFilter.select() + } + }) this.master.on('open', this.openCategory.bind(this)) this.master.on('stateGet', this.stateGet.bind(this)) } @@ -227,6 +233,15 @@ class CategoryOverpassFilter { } }).filter(f => f) // remove null values + const defaultQueries = Object.keys(this.data) + .map(k => { + if (!param[k]) { + return this.data[k].defaultQuery + } + }) + .filter(f => f) + this.additionalFilter = this.additionalFilter.concat(defaultQueries) + if (this.additionalFilter.length === 0) { this.additionalFilter = [] } else if (this.additionalFilter.length === 1) { @@ -244,6 +259,9 @@ class CategoryOverpassFilter { openCategory () { this.formFilter.resize() + + let param = JSON.parse(JSON.stringify(this.formFilter.get_data())) + this.applyParam(param) } stateGet (param) {