You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.6 KiB
81 lines
2.6 KiB
function addDescription(json){ |
|
var desc = json.description ? json.description : ''; |
|
if (desc.indexOf('<')<0) desc = desc.replace(/\r?\n|\r/g,'<br/>'); |
|
document.getElementById('description').innerHTML = desc; |
|
} |
|
|
|
function attachmentList(json){ |
|
var attachments = document.getElementById('attachments'); |
|
attachments.innerHTML = ''; |
|
for (var attachment of json){ |
|
if (attachment.mime.startsWith('image')){ |
|
var img = document.createElement('img'); |
|
img.src = attachment.url; |
|
attachments.appendChild(img); |
|
} |
|
} |
|
} |
|
|
|
async function handleEventData(response){ |
|
if (response.ok){ |
|
var event = await response.json(); |
|
document.getElementsByTagName('h1')[0].innerHTML = event.title ? event.title : ''; |
|
document.getElementById('time').innerHTML = event.start + (event.end ? '…'+event.end : ''); |
|
addDescription(event); |
|
document.getElementById('tags').innerHTML = "Tags: "+event.tags.join(" "); |
|
var links = document.getElementById('links'); |
|
links.innerHTML = ""; |
|
links.appendChild(linkList(event.links)); |
|
attachmentList(event.attachments); |
|
if (event.coords){ |
|
L.marker([event.coords.lat, event.coords.lon]).addTo(map); |
|
map.setView([event.coords.lat, event.coords.lon], 17); |
|
} |
|
} |
|
} |
|
|
|
function linkList(json){ |
|
var ul = document.createElement('ul'); |
|
for (var inner of json) { |
|
var a = document.createElement('a'); |
|
a.href = inner.url; |
|
a.innerHTML = inner.description; |
|
a.target = '_blank'; |
|
var li = document.createElement('li') |
|
li.appendChild(a); |
|
ul.appendChild(li); |
|
} |
|
return ul; |
|
} |
|
|
|
function loadEventData(){ |
|
const urlParams = new URLSearchParams(window.location.search); |
|
var id = urlParams.get('id'); |
|
if (id) fetch('/api/event?id='+id).then(handleEventData); |
|
} |
|
|
|
async function handleDeleted(response){ |
|
if (response.ok){ |
|
console.log(location.href); |
|
var url = location.href.replace('/static/event','/'); |
|
console.log(url); |
|
var pos = url.indexOf('?'); |
|
if (pos>0) url = url.substring(0,pos); |
|
console.log(url); |
|
window.top.location.href = url; |
|
} |
|
} |
|
|
|
function confirmDelete(){ |
|
var title = element('title').innerHTML; |
|
const urlParams = new URLSearchParams(window.location.search); |
|
var id = urlParams.get('id'); |
|
if (confirm(`Do you really want to delete "${title}"?`)){ |
|
fetch('/api/event?id='+id,{ |
|
method: 'DELETE', |
|
headers: { |
|
title: title |
|
} |
|
}).then(handleDeleted); |
|
} |
|
} |