From f8ae1e9b14f374d511041f742b999cbc8cbb6983 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= Date: Sat, 10 Jun 2017 12:15:12 +0200 Subject: [PATCH] Toggle categories --- index.js | 12 ++++++++---- src/OpenStreetBrowserCategory.js | 22 +++++++++++++++++++++- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/index.js b/index.js index 3a9a4fd7..dc235acb 100644 --- a/index.js +++ b/index.js @@ -29,8 +29,12 @@ window.onload = function() { } window.toggleCategory = function (id) { - OpenStreetBrowserLoader(id, function (err, category) { - categories[category.id] = category - category.addTo(map, document.getElementById('category-' + id).lastChild) - }) + if (id in categories) { + categories[id].toggle() + } else { + OpenStreetBrowserLoader(id, function (err, category) { + categories[category.id] = category + category.addTo(map, document.getElementById('category-' + id).lastChild) + }) + } } diff --git a/src/OpenStreetBrowserCategory.js b/src/OpenStreetBrowserCategory.js index 6835d66d..0c3ce54a 100644 --- a/src/OpenStreetBrowserCategory.js +++ b/src/OpenStreetBrowserCategory.js @@ -11,7 +11,27 @@ OpenStreetBrowserCategory.prototype.addTo = function (map, parentDom) { this.parentDom = parentDom this.layer.addTo(this.map) - new OverpassLayerList(this.parentDom, this.layer); + + if (!this.list) { + this.list = new OverpassLayerList(this.parentDom, this.layer) + } + + this.isOpen = true +} + +OpenStreetBrowserCategory.prototype.remove = function () { + this.layer.remove() + this.list.remove() + + this.isOpen = false +} + +OpenStreetBrowserCategory.prototype.toggle = function () { + if (this.isOpen) { + this.remove() + } else { + this.addTo(this.map, this.parentDom) + } } module.exports = OpenStreetBrowserCategory