11 changed files with 140 additions and 153 deletions
-
2categories/children.json
-
2categories/gastro.json
-
2categories/parks.json
-
2categories/places.json
-
2categories/shop.json
-
2categories/trees.json
-
4index.js
-
70src/CategoryBase.js
-
66src/CategoryIndex.js
-
48src/CategoryOverpass.js
-
93src/OpenStreetBrowserCategory.js
@ -0,0 +1,70 @@ |
|||
function CategoryBase (id, data) { |
|||
this.id = id |
|||
this.parentCategory = null |
|||
this.data = data |
|||
this.isOpen = false |
|||
this.dom = document.createElement('div') |
|||
} |
|||
|
|||
CategoryBase.prototype.setMap = function (map) { |
|||
this.map = map |
|||
} |
|||
|
|||
CategoryBase.prototype.setParent = function (parent) { |
|||
this.parent = parent |
|||
} |
|||
|
|||
CategoryBase.prototype.setParentDom = function (parentDom) { |
|||
this.parentDom = parentDom |
|||
if (typeof this.parentDom !== 'string') { |
|||
this.parentDom.appendChild(this.dom) |
|||
|
|||
if (this.isOpen) { |
|||
this.parentDom.parentNode.classList.add('open') |
|||
} |
|||
} |
|||
} |
|||
|
|||
CategoryBase.prototype.open = function () { |
|||
if (this.isOpen) |
|||
return |
|||
|
|||
if (this.parent) { |
|||
this.parent.open() |
|||
} |
|||
|
|||
if (typeof this.parentDom === 'string') { |
|||
var d = document.getElementById(this.parentDom) |
|||
if (d) { |
|||
this.parentDom = d |
|||
this.parentDom.appendChild(this.dom) |
|||
} |
|||
} |
|||
|
|||
if (this.parentDom && this.parentDom.parentNode) { |
|||
this.parentDom.parentNode.classList.add('open') |
|||
} |
|||
|
|||
this.isOpen = true |
|||
} |
|||
|
|||
CategoryBase.prototype.close = function () { |
|||
if (!this.isOpen) |
|||
return |
|||
|
|||
if (this.parentDom && this.parentDom.parentNode) { |
|||
this.parentDom.parentNode.classList.remove('open') |
|||
} |
|||
|
|||
this.isOpen = false |
|||
} |
|||
|
|||
CategoryBase.prototype.toggle = function () { |
|||
if (this.isOpen) { |
|||
this.close() |
|||
} else { |
|||
this.open() |
|||
} |
|||
} |
|||
|
|||
module.exports = CategoryBase |
@ -0,0 +1,48 @@ |
|||
var OpenStreetBrowserLoader = require('./OpenStreetBrowserLoader') |
|||
var OverpassLayer = require('overpass-layer') |
|||
var OverpassLayerList = require('overpass-layer').List |
|||
var CategoryBase = require('./CategoryBase') |
|||
|
|||
CategoryOverpass.prototype = Object.create(CategoryBase.prototype) |
|||
CategoryOverpass.prototype.constructor = CategoryOverpass |
|||
function CategoryOverpass (id, data) { |
|||
CategoryBase.call(this, id, data) |
|||
|
|||
this.layer = new OverpassLayer(data) |
|||
} |
|||
|
|||
CategoryOverpass.prototype.open = function () { |
|||
if (this.isOpen) |
|||
return |
|||
|
|||
CategoryBase.prototype.open.call(this) |
|||
|
|||
this.layer.addTo(this.map) |
|||
|
|||
if (!this.list) { |
|||
this.list = new OverpassLayerList(this.dom, this.layer) |
|||
} |
|||
|
|||
this.isOpen = true |
|||
} |
|||
|
|||
CategoryOverpass.prototype.close = function () { |
|||
if (!this.isOpen) |
|||
return |
|||
|
|||
CategoryBase.prototype.close.call(this) |
|||
|
|||
this.layer.remove() |
|||
this.list.remove() |
|||
} |
|||
|
|||
CategoryOverpass.prototype.get = function (id, callback) { |
|||
this.layer.get(id, callback) |
|||
} |
|||
|
|||
CategoryOverpass.prototype.show = function (id, options, callback) { |
|||
this.layer.show(id, options, callback) |
|||
} |
|||
|
|||
OpenStreetBrowserLoader.registerType('overpass', CategoryOverpass) |
|||
module.exports = CategoryOverpass |
@ -1,93 +0,0 @@ |
|||
var OpenStreetBrowserLoader = require('./OpenStreetBrowserLoader') |
|||
var OverpassLayer = require('overpass-layer') |
|||
var OverpassLayerList = require('overpass-layer').List |
|||
|
|||
function OpenStreetBrowserCategory (id, data) { |
|||
this.id = id |
|||
data.id = id |
|||
this.layer = new OverpassLayer(data) |
|||
this.isOpen = false |
|||
this.dom = document.createElement('div') |
|||
this.parent = null |
|||
} |
|||
|
|||
OpenStreetBrowserCategory.prototype.setMap = function (map) { |
|||
this.map = map |
|||
} |
|||
|
|||
OpenStreetBrowserCategory.prototype.setParent = function (parent) { |
|||
this.parent = parent |
|||
} |
|||
|
|||
OpenStreetBrowserCategory.prototype.setParentDom = function (parentDom) { |
|||
this.parentDom = parentDom |
|||
if (typeof this.parentDom !== 'string') { |
|||
this.parentDom.appendChild(this.dom) |
|||
|
|||
if (this.isOpen) { |
|||
this.parentDom.parentNode.classList.add('open') |
|||
} |
|||
} |
|||
} |
|||
|
|||
OpenStreetBrowserCategory.prototype.open = function () { |
|||
if (this.isOpen) |
|||
return |
|||
|
|||
if (this.parent) { |
|||
this.parent.open() |
|||
} |
|||
|
|||
if (typeof this.parentDom === 'string') { |
|||
var d = document.getElementById(this.parentDom) |
|||
if (d) { |
|||
this.parentDom = d |
|||
this.parentDom.appendChild(this.dom) |
|||
} |
|||
} |
|||
|
|||
if (this.parentDom && this.parentDom.parentNode) { |
|||
this.parentDom.parentNode.classList.add('open') |
|||
} |
|||
|
|||
this.layer.addTo(this.map) |
|||
|
|||
if (!this.list) { |
|||
this.list = new OverpassLayerList(this.dom, this.layer) |
|||
} |
|||
|
|||
this.isOpen = true |
|||
} |
|||
|
|||
OpenStreetBrowserCategory.prototype.close = function () { |
|||
if (!this.isOpen) |
|||
return |
|||
|
|||
this.layer.remove() |
|||
this.list.remove() |
|||
|
|||
if (this.parentDom && this.parentDom.parentNode) { |
|||
this.parentDom.parentNode.classList.remove('open') |
|||
} |
|||
|
|||
this.isOpen = false |
|||
} |
|||
|
|||
OpenStreetBrowserCategory.prototype.get = function (id, callback) { |
|||
this.layer.get(id, callback) |
|||
} |
|||
|
|||
OpenStreetBrowserCategory.prototype.show = function (id, options, callback) { |
|||
this.layer.show(id, options, callback) |
|||
} |
|||
|
|||
OpenStreetBrowserCategory.prototype.toggle = function () { |
|||
if (this.isOpen) { |
|||
this.close() |
|||
} else { |
|||
this.open() |
|||
} |
|||
} |
|||
|
|||
OpenStreetBrowserLoader.registerType('category', OpenStreetBrowserCategory) |
|||
module.exports = OpenStreetBrowserCategory |
Write
Preview
Loading…
Cancel
Save
Reference in new issue