diff --git a/lang/de.json b/lang/de.json index 4584dd53..2b1ffe34 100644 --- a/lang/de.json +++ b/lang/de.json @@ -16,6 +16,7 @@ "export:OSMJSON": "", "export:OSMXML": null, "facilities": "Einrichtungen", + "filter_results": "Ergebnisse einschränken", "header:attributes": "Attribute", "header:export": "Export", "header:osm_meta": "OSM Meta", diff --git a/lang/en.json b/lang/en.json index e12e7304..4f0cd3ea 100644 --- a/lang/en.json +++ b/lang/en.json @@ -16,6 +16,7 @@ "export:OSMJSON": "Download as OSM JSON", "export:OSMXML": "Download as OSM XML", "facilities": "Facilities", + "filter_results": "Filter results", "header:attributes": "Attributes", "header:export": "Export", "header:osm_meta": "OSM Meta", diff --git a/src/CategoryOverpass.js b/src/CategoryOverpass.js index 7725dcd7..43e4daa2 100644 --- a/src/CategoryOverpass.js +++ b/src/CategoryOverpass.js @@ -108,7 +108,48 @@ function CategoryOverpass (options, data) { this.layer.on('remove', (ob, data) => this.emit('remove', ob, data)) this.layer.on('zoomChange', (ob, data) => this.emit('remove', ob, data)) - p = document.createElement('div') + if (this.data.filter) { + this.domFilter = document.createElement('form') + + this.formFilter = new form(this.id, this.data.filter, + { + 'type': 'form_chooser', + 'button:add_element': '-- ' + lang('filter_results') + ' --', + 'order': false + } + ) + this.formFilter.show(this.domFilter) + this.formFilter.onchange = function () { + var data = this.formFilter.get_data() + + this.additionalFilter = [] + for (var k in data) { + if (data[k] === null) { + continue + } + + var d = this.data.filter[k] + + var v = { + key: k, + value: data[k], + op: '=' + } + + if ('op' in d) { + v.op = d.op + } + + this.additionalFilter.push(v) + } + + this.layer.options.queryOptions.filter = this.additionalFilter + this.layer.check_update_map() + }.bind(this) + this.dom.insertBefore(this.domFilter, this.domContent) + } + + var p = document.createElement('div') p.className = 'loadingIndicator' p.innerHTML = '' + lang('loading') + '' this.dom.appendChild(p) @@ -193,6 +234,14 @@ CategoryOverpass.prototype.load = function (callback) { }.bind(this)) } +CategoryOverpass.prototype.setParentDom = function (parentDom) { + CategoryBase.prototype.setParentDom.call(this, parentDom) + + if (this.formFilter) { + this.formFilter.resize() + } +} + CategoryOverpass.prototype.setMap = function (map) { CategoryBase.prototype.setMap.call(this, map)