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

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);
}
}