|
@ -1,5 +1,6 @@ |
|
|
const OverpassLayer = require('overpass-layer') |
|
|
const OverpassLayer = require('overpass-layer') |
|
|
const tabs = require('modulekit-tabs') |
|
|
const tabs = require('modulekit-tabs') |
|
|
|
|
|
const natsort = require('natsort') |
|
|
|
|
|
|
|
|
const state = require('./state') |
|
|
const state = require('./state') |
|
|
const Filter = require('overpass-frontend').Filter |
|
|
const Filter = require('overpass-frontend').Filter |
|
@ -69,13 +70,13 @@ class CategoryOverpassFilter { |
|
|
let k = option.value |
|
|
let k = option.value |
|
|
f.values[k] = {} |
|
|
f.values[k] = {} |
|
|
|
|
|
|
|
|
|
|
|
Array.from(option.attributes).forEach(attr => { |
|
|
|
|
|
f.values[k][attr.name] = attr.value |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
if (option.textContent) { |
|
|
if (option.textContent) { |
|
|
f.values[k].name = option.textContent |
|
|
f.values[k].name = option.textContent |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (option.hasAttribute('query')) { |
|
|
|
|
|
f.values[k].query = option.getAttribute('query') |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -100,6 +101,25 @@ class CategoryOverpassFilter { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (!('sort' in f) || (f.sort === 'natsort')) { |
|
|
|
|
|
let v = {} |
|
|
|
|
|
let sorter = natsort() |
|
|
|
|
|
let keys = Object.keys(f.values) |
|
|
|
|
|
|
|
|
|
|
|
keys |
|
|
|
|
|
.sort((a, b) => { |
|
|
|
|
|
let weight = (f.values[a].weight || 0) - (f.values[b].weight || 0) |
|
|
|
|
|
if (weight !== 0) { |
|
|
|
|
|
return weight |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return sorter(f.values[a].name, f.values[b].name) |
|
|
|
|
|
}) |
|
|
|
|
|
.forEach(k => { v[k] = f.values[k] }) |
|
|
|
|
|
|
|
|
|
|
|
f.values = v |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|