Browse Source

Merge pull request #73 from plepe/repo-from-url

Repo from url
master
Stephan Bösch-Plepelits 6 years ago
committed by GitHub
parent
commit
aadb4a272f
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 5
      index.php
  2. 3
      lang/ast.json
  3. 3
      lang/ca.json
  4. 3
      lang/cs.json
  5. 3
      lang/da.json
  6. 3
      lang/de.json
  7. 3
      lang/el.json
  8. 3
      lang/en.json
  9. 3
      lang/es.json
  10. 3
      lang/et.json
  11. 3
      lang/fr.json
  12. 3
      lang/hu.json
  13. 3
      lang/it.json
  14. 3
      lang/ja.json
  15. 3
      lang/nl.json
  16. 3
      lang/pl.json
  17. 3
      lang/pt-br.json
  18. 3
      lang/pt.json
  19. 3
      lang/ro.json
  20. 3
      lang/ru.json
  21. 3
      lang/sr.json
  22. 3
      lang/template.json
  23. 3
      lang/uk.json
  24. 10
      repo.php
  25. 88
      src/CategoryBase.js
  26. 45
      src/addCategories.js
  27. 2
      src/categories.js
  28. 11
      src/category.css
  29. 38
      src/index.js
  30. 5
      src/state.js
  31. 27
      style.css

5
index.php

@ -67,7 +67,10 @@ html_export_var(array(
</div>
<div id='globalTabs'></div>
<div id='content' class='list'>
<div id='contentList'></div>
<div id='contentList'>
<div id='contentListBaseCategory'></div>
<div id='contentListAddCategories'></div>
</div>
<div id='contentDetails'></div>
<div id='contentOptions'></div>
</div>

3
lang/ast.json

@ -1,6 +1,7 @@
{
"available_branches": "",
"back": "",
"categories": "",
"category-info-tooltip": "",
"closed": "",
"default": "",
@ -30,6 +31,8 @@
"options:preferredBaseMap": "",
"options:ui_lang": "Llingua de la interfaz",
"other": "",
"repo-use-as-base": "",
"repositories": "",
"save": "Guardar",
"show details": "",
"toggle_fullscreen": "",

3
lang/ca.json

@ -1,6 +1,7 @@
{
"available_branches": "",
"back": "",
"categories": "",
"category-info-tooltip": "",
"closed": "",
"default": "",
@ -30,6 +31,8 @@
"options:preferredBaseMap": "",
"options:ui_lang": "",
"other": "",
"repo-use-as-base": "",
"repositories": "",
"save": "Guardar",
"show details": "",
"toggle_fullscreen": "",

3
lang/cs.json

@ -1,6 +1,7 @@
{
"available_branches": "",
"back": "",
"categories": "",
"category-info-tooltip": "",
"closed": "",
"default": "",
@ -30,6 +31,8 @@
"options:preferredBaseMap": "",
"options:ui_lang": "Jazyk rozhraní",
"other": "",
"repo-use-as-base": "",
"repositories": "",
"save": "Uložit",
"show details": "",
"toggle_fullscreen": "",

3
lang/da.json

@ -1,6 +1,7 @@
{
"available_branches": "",
"back": "",
"categories": "",
"category-info-tooltip": "",
"closed": "",
"default": "",
@ -30,6 +31,8 @@
"options:preferredBaseMap": "",
"options:ui_lang": "Brugerfladesprog",
"other": "",
"repo-use-as-base": "",
"repositories": "",
"save": "Gem",
"show details": "",
"toggle_fullscreen": "",

3
lang/de.json

@ -1,6 +1,7 @@
{
"available_branches": "",
"back": "zurück",
"categories": "",
"category-info-tooltip": "Info & Legende",
"closed": "geschlossen",
"default": "Standard",
@ -33,6 +34,8 @@
"options:preferredBaseMap": "Bevorzugte Hintergrundkarte",
"options:ui_lang": "Anwendungssprache",
"other": "Andere",
"repo-use-as-base": "",
"repositories": "",
"save": "Speichern",
"show details": "zeige Details",
"toggle_fullscreen": "(De-)aktiviere Vollbildmodus",

3
lang/el.json

@ -1,6 +1,7 @@
{
"available_branches": "",
"back": "",
"categories": "",
"category-info-tooltip": "",
"closed": "",
"default": "",
@ -30,6 +31,8 @@
"options:preferredBaseMap": "",
"options:ui_lang": "Γλώσσα διεπαφής",
"other": "",
"repo-use-as-base": "",
"repositories": "",
"save": "Αποθήκευση",
"show details": "",
"toggle_fullscreen": "",

3
lang/en.json

@ -1,6 +1,7 @@
{
"available_branches": "Available branches",
"back": "back",
"categories": "Categories",
"category-info-tooltip": "Info & Map key",
"closed": "closed",
"default": "default",
@ -33,6 +34,8 @@
"options:preferredBaseMap": "Preferred base map",
"options:ui_lang": "Interface language",
"other": "Other",
"repo-use-as-base": "Use this repository as base repository",
"repositories": "Repositories",
"save": "Save",
"show details": "show details",
"toggle_fullscreen": "Toggle full screen mode",

3
lang/es.json

@ -1,6 +1,7 @@
{
"available_branches": "",
"back": "",
"categories": "",
"category-info-tooltip": "",
"closed": "",
"default": "",
@ -30,6 +31,8 @@
"options:preferredBaseMap": "",
"options:ui_lang": "Idioma de interfaz",
"other": "",
"repo-use-as-base": "",
"repositories": "",
"save": "Guardar",
"show details": "",
"toggle_fullscreen": "",

3
lang/et.json

@ -1,6 +1,7 @@
{
"available_branches": "",
"back": "",
"categories": "",
"category-info-tooltip": "",
"closed": "",
"default": "",
@ -30,6 +31,8 @@
"options:preferredBaseMap": "",
"options:ui_lang": "Kasutajaliidese keel",
"other": "",
"repo-use-as-base": "",
"repositories": "",
"save": "Salvesta",
"show details": "",
"toggle_fullscreen": "",

3
lang/fr.json

@ -1,6 +1,7 @@
{
"available_branches": "Branches disponibles",
"back": "Retour",
"categories": "",
"category-info-tooltip": "Info & Légende",
"closed": "Fermé",
"default": "Par défaut",
@ -30,6 +31,8 @@
"options:preferredBaseMap": "Carte de base préférée",
"options:ui_lang": "Langue de l'interface",
"other": "Autres",
"repo-use-as-base": "",
"repositories": "",
"save": "Sauvegarder",
"show details": "montrer les détails",
"toggle_fullscreen": "Basculer en plein écran",

3
lang/hu.json

@ -1,6 +1,7 @@
{
"available_branches": "",
"back": "Vissza",
"categories": "",
"category-info-tooltip": "Információk és jelmagyarázat",
"closed": "Lezárva",
"default": "Alapértelmezett",
@ -30,6 +31,8 @@
"options:preferredBaseMap": "Előnyben részesített alaptérkép",
"options:ui_lang": "Menü nyelve",
"other": "Egyéb",
"repo-use-as-base": "",
"repositories": "",
"save": "Mentés",
"show details": "Részletek megjelenítése",
"toggle_fullscreen": "Teljes képernyős nézet",

3
lang/it.json

@ -1,6 +1,7 @@
{
"available_branches": "",
"back": "",
"categories": "",
"category-info-tooltip": "",
"closed": "",
"default": "",
@ -30,6 +31,8 @@
"options:preferredBaseMap": "",
"options:ui_lang": "Lingua dell'interfaccia",
"other": "",
"repo-use-as-base": "",
"repositories": "",
"save": "Salva",
"show details": "",
"toggle_fullscreen": "",

3
lang/ja.json

@ -1,6 +1,7 @@
{
"available_branches": "",
"back": "",
"categories": "",
"category-info-tooltip": "",
"closed": "",
"default": "",
@ -30,6 +31,8 @@
"options:preferredBaseMap": "",
"options:ui_lang": "インタフェース表示",
"other": "",
"repo-use-as-base": "",
"repositories": "",
"save": "保存",
"show details": "",
"toggle_fullscreen": "",

3
lang/nl.json

@ -1,6 +1,7 @@
{
"available_branches": "",
"back": "",
"categories": "",
"category-info-tooltip": "",
"closed": "",
"default": "",
@ -30,6 +31,8 @@
"options:preferredBaseMap": "",
"options:ui_lang": "Interfacetaal",
"other": "",
"repo-use-as-base": "",
"repositories": "",
"save": "Opslaan",
"show details": "",
"toggle_fullscreen": "",

3
lang/pl.json

@ -1,6 +1,7 @@
{
"available_branches": "",
"back": "",
"categories": "",
"category-info-tooltip": "",
"closed": "",
"default": "",
@ -30,6 +31,8 @@
"options:preferredBaseMap": "",
"options:ui_lang": "Język interfejsu",
"other": "",
"repo-use-as-base": "",
"repositories": "",
"save": "Zapisz",
"show details": "",
"toggle_fullscreen": "",

3
lang/pt-br.json

@ -1,6 +1,7 @@
{
"available_branches": "",
"back": "voltar",
"categories": "",
"category-info-tooltip": "Info & Legenda",
"closed": "fechado",
"default": "padrão",
@ -33,6 +34,8 @@
"options:preferredBaseMap": "Mapa-base preferido",
"options:ui_lang": "Língua da interface",
"other": "Outro",
"repo-use-as-base": "",
"repositories": "",
"save": "Salvar",
"show details": "mostrar detalhes",
"toggle_fullscreen": "Alternar modo tela cheia",

3
lang/pt.json

@ -1,6 +1,7 @@
{
"available_branches": "",
"back": "voltar",
"categories": "",
"category-info-tooltip": "Info & Legenda",
"closed": "fechado",
"default": "padrão",
@ -33,6 +34,8 @@
"options:preferredBaseMap": "Mapa-base preferido",
"options:ui_lang": "Língua da interface",
"other": "Outro",
"repo-use-as-base": "",
"repositories": "",
"save": "Guardar",
"show details": "mostrar detalhes",
"toggle_fullscreen": "Alternar modo ecrã inteiro",

3
lang/ro.json

@ -1,6 +1,7 @@
{
"available_branches": "",
"back": "",
"categories": "",
"category-info-tooltip": "",
"closed": "",
"default": "",
@ -30,6 +31,8 @@
"options:preferredBaseMap": "",
"options:ui_lang": "Limba interfata",
"other": "",
"repo-use-as-base": "",
"repositories": "",
"save": "Salveaza",
"show details": "",
"toggle_fullscreen": "",

3
lang/ru.json

@ -1,6 +1,7 @@
{
"available_branches": "",
"back": "",
"categories": "",
"category-info-tooltip": "",
"closed": "",
"default": "",
@ -30,6 +31,8 @@
"options:preferredBaseMap": "",
"options:ui_lang": "Язык интерфейса",
"other": "",
"repo-use-as-base": "",
"repositories": "",
"save": "Сохранить",
"show details": "",
"toggle_fullscreen": "",

3
lang/sr.json

@ -1,6 +1,7 @@
{
"available_branches": "",
"back": "",
"categories": "",
"category-info-tooltip": "",
"closed": "",
"default": "",
@ -30,6 +31,8 @@
"options:preferredBaseMap": "",
"options:ui_lang": "Језик интерфејса",
"other": "",
"repo-use-as-base": "",
"repositories": "",
"save": "Запамти",
"show details": "",
"toggle_fullscreen": "",

3
lang/template.json

@ -1,6 +1,7 @@
{
"available_branches": "",
"back": "",
"categories": "",
"category-info-tooltip": "",
"closed": "",
"default": "",
@ -30,6 +31,8 @@
"options:preferredBaseMap": "",
"options:ui_lang": "",
"other": "",
"repo-use-as-base": "",
"repositories": "",
"save": "",
"show details": "",
"toggle_fullscreen": "",

3
lang/uk.json

@ -1,6 +1,7 @@
{
"available_branches": "",
"back": "",
"categories": "",
"category-info-tooltip": "",
"closed": "",
"default": "",
@ -30,6 +31,8 @@
"options:preferredBaseMap": "",
"options:ui_lang": "Мова інтерфейсу",
"other": "",
"repo-use-as-base": "",
"repositories": "",
"save": "Зберегти",
"show details": "",
"toggle_fullscreen": "",

10
repo.php

@ -69,6 +69,16 @@ if (isset($config['cache'])) {
$data = $repo->data();
if (!array_key_exists('index', $data['categories'])) {
$data['categories']['index'] = array(
'type' => 'index',
'subCategories' => array_map(
function ($k) {
return array('id' => $k);
}, array_keys($data['categories']))
);
}
if (isset($repoData['repositoryUrl'])) {
$data['repositoryUrl'] = $repoData['repositoryUrl'];
}

88
src/CategoryBase.js

@ -21,56 +21,54 @@ function CategoryBase (options, data) {
var name
var a
if (this.id !== 'index') {
this.domHeader = document.createElement('header')
this.dom.appendChild(this.domHeader)
if ('name' in this.data) {
if (typeof this.data.name === 'object') {
name = lang(this.data.name)
} else {
name = this.data.name
}
} else if (('name:' + ui_lang) in this.data) {
name = this.data['name:' + ui_lang]
this.domHeader = document.createElement('header')
this.dom.appendChild(this.domHeader)
if ('name' in this.data) {
if (typeof this.data.name === 'object') {
name = lang(this.data.name)
} else {
name = lang('category:' + this.id)
name = this.data.name
}
} else if (('name:' + ui_lang) in this.data) {
name = this.data['name:' + ui_lang]
} else {
name = lang('category:' + this.id)
}
a = document.createElement('a')
a.appendChild(document.createTextNode(name))
a.href = '#'
a.onclick = this.toggle.bind(this)
this.domHeader.appendChild(a)
a = document.createElement('a')
a.appendChild(document.createTextNode(name))
a.href = '#'
a.onclick = this.toggle.bind(this)
this.domHeader.appendChild(a)
if (this.options.repositoryId && this.options.repositoryId !== 'default') {
a = document.createElement('span')
a.className = 'repoId'
a.appendChild(document.createTextNode(this.options.repositoryId))
this.domHeader.appendChild(a)
}
if (this.options.repositoryId && this.options.repositoryId !== 'default') {
a = document.createElement('span')
a.className = 'repoId'
a.appendChild(document.createTextNode(this.options.repositoryId))
this.domHeader.appendChild(a)
}
if (this.shallShowReload()) {
a = document.createElement('a')
a.appendChild(document.createTextNode('⟳'))
a.title = lang('reload')
a.className = 'reload'
a.onclick = function () {
var id = this.id
var isOpen = this.isOpen
this.reload(function (err, category) {
if (err) {
alert('Error reloading category ' + id + ': ' + err)
}
if (isOpen) {
category.open()
}
})
}.bind(this)
this.domHeader.appendChild(a)
}
if (this.shallShowReload()) {
a = document.createElement('a')
a.appendChild(document.createTextNode('⟳'))
a.title = lang('reload')
a.className = 'reload'
a.onclick = function () {
var id = this.id
var isOpen = this.isOpen
this.reload(function (err, category) {
if (err) {
alert('Error reloading category ' + id + ': ' + err)
}
if (isOpen) {
category.open()
}
})
}.bind(this)
this.domHeader.appendChild(a)
}
this.tools = new tabs.Tabs(this.dom)

45
src/addCategories.js

@ -8,7 +8,7 @@ const OpenStreetBrowserLoader = require('./OpenStreetBrowserLoader')
let tab
function addCategoriesShow (repo) {
function addCategoriesShow (repo, options={}) {
let content = tab.content
let repoId
let branchId
@ -20,7 +20,7 @@ function addCategoriesShow (repo) {
content.innerHTML = '<h3>' + lang('more_categories') + '</h3>' + '<i class="fa fa-spinner fa-pulse fa-fw"></i> ' + lang('loading')
OpenStreetBrowserLoader.getRepo(repo, {}, function (err, repoData) {
OpenStreetBrowserLoader.getRepo(repo, options, function (err, repoData) {
if (err) {
alert(err)
}
@ -67,10 +67,41 @@ function addCategoriesShow (repo) {
})
}
let menu = document.createElement('ul')
menu.className = 'menu'
content.appendChild(menu)
if (repo) {
let li = document.createElement('li')
menu.appendChild(li)
let text = document.createElement('a')
text.innerHTML = lang('repo-use-as-base')
text.href = '#repo=' + repo
text.onclick = addCategoriesHide
li.appendChild(text)
}
if (repo) {
let li = document.createElement('li')
menu.appendChild(li)
let text = document.createElement('a')
text.innerHTML = lang('reload')
text.href = '#'
text.onclick = () => {
addCategoriesShow(repo, { force: true })
}
li.appendChild(text)
}
if ('branches' in repoData) {
let li = document.createElement('li')
menu.appendChild(li)
let text = document.createElement('span')
text.innerHTML = lang('available_branches') + ': '
content.appendChild(text)
li.appendChild(text)
let branchSelector = document.createElement('select')
@ -93,9 +124,13 @@ function addCategoriesShow (repo) {
branchSelector.appendChild(option)
}
)
content.appendChild(branchSelector)
li.appendChild(branchSelector)
}
let header = document.createElement('h3')
header.innerHTML = lang(repo ? 'repositories' : 'categories') + ':'
content.appendChild(header)
var ul = document.createElement('ul')
for (var id in list) {
@ -110,7 +145,7 @@ function addCategoriesShow (repo) {
let a = document.createElement('a')
if (repo) {
a.href = '#categories=' + repo + '/' + id
a.href = '#categories=' + (repo === 'default' ? '' : repo + '/') + id
a.onclick = function () {
addCategoriesHide()
}

2
src/categories.js

@ -17,7 +17,7 @@ register_hook('state-apply', function (state) {
category.open()
if (!category.parentDom) {
category.setParentDom(document.getElementById('contentList'))
category.setParentDom(document.getElementById('contentListAddCategories'))
}
}
})

11
src/category.css

@ -112,9 +112,18 @@
padding-left: 40px;
}
.category > div > div> .category {
.category {
margin-left: 1em;
}
#contentListBaseCategory {
margin-left: -2em;
}
#contentListBaseCategory > .category > header {
display: none;
}
#contentListAddCategories {
margin-left: -1em;
}
.info > table > tr > td:first-of-type,
.info > table > tbody > tr > td:first-of-type {
position: relative;

38
src/index.js

@ -18,6 +18,7 @@ global.baseCategory = null
global.overpassUrl = null
global.overpassFrontend = null
global.currentPath = null
global.mainRepo = ''
global.tabs = null
var lastPopupClose = 0
@ -109,16 +110,11 @@ function onload2 (initState) {
state.apply(newState)
OpenStreetBrowserLoader.getCategory('index', function (err, category) {
if (err) {
alert(err)
return
}
if ('repo' in newState) {
mainRepo = newState.repo
}
baseCategory = category
category.setParentDom(document.getElementById('contentList'))
category.open()
})
loadBaseCategory()
map.on('popupopen', function (e) {
if (e.popup.object) {
@ -168,6 +164,22 @@ function onload2 (initState) {
call_hooks('initFinish')
}
function loadBaseCategory () {
let repo = mainRepo + (mainRepo === '' ? '' : '/')
OpenStreetBrowserLoader.getCategory(repo + 'index', function (err, category) {
if (err) {
alert(err)
return
}
baseCategory = category
category.setParentDom(document.getElementById('contentListBaseCategory'))
category.open()
category.dom.classList.add('baseCategory')
})
}
global.allMapFeatures = function (callback) {
global.baseCategory.allMapFeatures(callback)
}
@ -175,6 +187,12 @@ global.allMapFeatures = function (callback) {
window.setPath = function (path, state) {
currentPath = path
if ('repo' in state && state.repo !== mainRepo && baseCategory) {
baseCategory.remove()
mainRepo = state.repo
loadBaseCategory()
}
if (!path) {
map.closePopup()
return
@ -216,7 +234,7 @@ function show (id, options, callback) {
}
if (!category.parentDom) {
category.setParentDom(document.getElementById('contentList'))
category.setParentDom(document.getElementById('contentListAddCategories'))
}
category.show(

5
src/state.js

@ -5,6 +5,11 @@ var queryString = require('query-string')
function get () {
var state = {}
// repo
if (mainRepo !== '') {
state.repo = mainRepo
}
// path
if (currentPath) {
state.path = currentPath

27
style.css

@ -86,6 +86,8 @@ a:active {
}
.tabs-section {
padding: 0.1em;
max-height: 250px;
overflow-y: auto;
}
.tabs-section > h3:first-of-type {
margin-top: 0;
@ -117,12 +119,7 @@ a:active {
}
/***** CATEGORY *****/
/* root category */
#content > #contentList > .category > .content > .categoryWrapper > .category {
margin-left: 0;
}
/* Popups */
.leaflet-popup-content ul.popup-footer {
padding: 0;
}
@ -147,6 +144,16 @@ a:active {
content: '';
}
@media all and (max-height: 600px) {
.tabs-section {
max-height: 200px;
}
}
@media all and (max-height: 500px) {
.tabs-section {
max-height: 150px;
}
}
@media all and (max-height: 400px) {
#sidebar {
overflow: auto;
@ -154,6 +161,10 @@ a:active {
#sidebar > #content {
overflow: visible;
}
.tabs-section {
max-height: none;
overflow-y: visible;
}
}
@media all and (max-width: 500px) {
@ -187,6 +198,10 @@ a:active {
#sidebar > #content {
overflow: visible;
}
.tabs-section {
max-height: none;
overflow-y: visible;
}
}
@media all and (max-width: 500px) and (max-height: 500px) {

Loading…
Cancel
Save