Browse Source

OSBIndex, OSBCategory -> CategoryBase, CategoryIndex, CategoryOverpass

master
parent
commit
fc199b7441
  1. 2
      categories/children.json
  2. 2
      categories/gastro.json
  3. 2
      categories/parks.json
  4. 2
      categories/places.json
  5. 2
      categories/shop.json
  6. 2
      categories/trees.json
  7. 4
      index.js
  8. 70
      src/CategoryBase.js
  9. 66
      src/CategoryIndex.js
  10. 48
      src/CategoryOverpass.js
  11. 93
      src/OpenStreetBrowserCategory.js

2
categories/children.json

@ -1,5 +1,5 @@
{
"type": "category",
"type": "overpass",
"query": "(node[leisure~'^(playground|summer_camp|indoor_play)$'];way[leisure~'^(playground|summer_camp|indoor_play)$'];relation[leisure~'^(playground|summer_camp|indoor_play)$'];node[shop~'^(baby_goods|toys)$'];way[shop~'^(baby_goods|toys)$'];relation[shop~'^(baby_goods|toys)$'];node[amenity=toilets][diaper];way[amenity=toilets][diaper];relation[amenity=toilets][diaper];node[kids_area];way[kids_area];relation[kids_area];);",
"minZoom": 15,
"feature": {

2
categories/gastro.json

@ -1,5 +1,5 @@
{
"type": "category",
"type": "overpass",
"query": "(node[amenity~'^(bar|biergarten|cafe|fast_food|ice_cream|pub|restaurant)$'];way[amenity~'^(bar|biergarten|cafe|fast_food|ice_cream|pub|restaurant)$'];relation[amenity~'^(bar|biergarten|cafe|fast_food|ice_cream|pub|restaurant)$'];);",
"minZoom": 16,
"feature": {

2
categories/parks.json

@ -1,5 +1,5 @@
{
"type": "category",
"type": "overpass",
"query": "(way[leisure=park];relation[leisure=park];)",
"minZoom": 14,
"feature": {

2
categories/places.json

@ -1,5 +1,5 @@
{
"type": "category",
"type": "overpass",
"query": {
"0": "node[place~'^(continent)$']",
"4": "node[place~'^(continent|country)$']",

2
categories/shop.json

@ -1,5 +1,5 @@
{
"type": "category",
"type": "overpass",
"query": {
"14": "(node[shop~'^(mall|department_store)$'];way[shop~'^(mall|department_store)$'];relation[shop~'^(mall|department_store)$'];);",
"16": "(node[shop];way[shop];relation[shop];);"

2
categories/trees.json

@ -1,5 +1,5 @@
{
"type": "category",
"type": "overpass",
"query": "node[natural=tree];",
"minZoom": 17,
"feature": {

4
index.js

@ -5,8 +5,8 @@ var OpenStreetBrowserLoader = require('./src/OpenStreetBrowserLoader')
var hash = require('sheet-router/hash')
window.OpenStreetBrowserLoader = OpenStreetBrowserLoader
require('./src/OpenStreetBrowserCategory')
require('./src/OpenStreetBrowserIndex')
require('./src/CategoryIndex')
require('./src/CategoryOverpass')
var tagTranslations = require('./src/tagTranslations')
var map

70
src/CategoryBase.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

66
src/OpenStreetBrowserIndex.js → src/CategoryIndex.js

@ -1,41 +1,20 @@
var OpenStreetBrowserLoader = require('./OpenStreetBrowserLoader')
var CategoryBase = require('./CategoryBase')
CategoryIndex.prototype = Object.create(CategoryBase.prototype)
CategoryIndex.prototype.constructor = CategoryIndex
function CategoryIndex (id, data) {
CategoryBase.call(this, id, data)
function OpenStreetBrowserIndex (id, data) {
this.id = id
this.data = data
this.isOpen = false
this.childrenDoms = {}
this.childrenCategories = null
this.dom = document.createElement('div')
this.parent = null
}
OpenStreetBrowserIndex.prototype.setMap = function (map) {
this.map = map
}
OpenStreetBrowserIndex.prototype.setParent = function (parent) {
this.parent = parent
}
OpenStreetBrowserIndex.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')
}
}
}
OpenStreetBrowserIndex.prototype.open = function () {
CategoryIndex.prototype.open = function () {
if (this.isOpen)
return
if (this.parent) {
this.parent.open()
}
CategoryBase.prototype.open.call(this)
if (this.childrenCategories !== null) {
this.dom.style.display = 'block'
@ -45,11 +24,6 @@ OpenStreetBrowserIndex.prototype.open = function () {
this.childrenCategories = {}
if (typeof this.parentDom === 'string') {
this.parentDom = document.getElementById(this.parentDom)
this.parentDom.appendChild(this.dom)
}
for (var i = 0; i < this.data.subCategories.length; i++) {
var data = this.data.subCategories[i]
var dom = document.createElement('div')
@ -82,34 +56,22 @@ OpenStreetBrowserIndex.prototype.open = function () {
}.bind(this))
}
}
this.isOpen = true
}
OpenStreetBrowserIndex.prototype.close = function () {
CategoryIndex.prototype.close = function () {
if (!this.isOpen)
return
CategoryBase.prototype.close.call(this)
for (var k in this.childrenCategories) {
if (this.childrenCategories[k]) {
this.childrenCategories[k].close()
}
}
this.dom.style.display = 'none'
this.isOpen = false
}
OpenStreetBrowserIndex.prototype.toggle = function () {
if (this.isOpen) {
this.close()
} else {
this.open()
}
}
OpenStreetBrowserIndex.prototype.toggleCategory = function (id) {
CategoryIndex.prototype.toggleCategory = function (id) {
OpenStreetBrowserLoader.getCategory(id, function (err, category) {
if (err) {
alert(err)
@ -124,5 +86,5 @@ OpenStreetBrowserIndex.prototype.toggleCategory = function (id) {
}.bind(this))
}
OpenStreetBrowserLoader.registerType('index', OpenStreetBrowserIndex)
module.exports = OpenStreetBrowserIndex
OpenStreetBrowserLoader.registerType('index', CategoryIndex)
module.exports = CategoryIndex

48
src/CategoryOverpass.js

@ -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

93
src/OpenStreetBrowserCategory.js

@ -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
Loading…
Cancel
Save