reformte js

master
Dirk Heilig 2024-01-18 14:26:34 +01:00
parent 77a6b4f165
commit 2a8a424ca7
3 changed files with 112 additions and 88 deletions

View File

@ -1,53 +1,62 @@
document.addEventListener("DOMContentLoaded", function () { document.addEventListener("DOMContentLoaded", function () {
let url =
let url="https://ical2json.c3re.de/api/?url=https%3A%2F%2Fcloud.c3re.de%2Fremote.php%2Fdav%2Fpublic-calendars%2FRLKKkdjNYgXH8yEz%3Fexport&start=today&end=next+month&maxitems=10" "https://ical2json.c3re.de/api/?url=https%3A%2F%2Fcloud.c3re.de%2Fremote.php%2Fdav%2Fpublic-calendars%2FRLKKkdjNYgXH8yEz%3Fexport&start=today&end=next+month&maxitems=10";
let xmlHttp = new XMLHttpRequest(); let xmlHttp = new XMLHttpRequest();
let zeropad = function (i) { let zeropad = function (i) {
let o="" let o = "";
if(i<=9) o+="0" if (i <= 9) o += "0";
o+=i o += i;
return o return o;
} };
xmlHttp.onreadystatechange = function () { xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
let cal=JSON.parse(xmlHttp.responseText) let cal = JSON.parse(xmlHttp.responseText);
let $ = jQuery let $ = jQuery;
let box=$('#calendar') let box = $("#calendar");
for (let item of cal) { for (let item of cal) {
let li=$("<li/>") let li = $("<li/>");
//li.text(item.summary) //li.text(item.summary)
let startDate=new Date(item.start * 1000) let startDate = new Date(item.start * 1000);
let date=$("<span class='date'/>") let date = $("<span class='date'/>");
date.text(zeropad(startDate.getDate())+'.'+zeropad(1+startDate.getMonth())+'.'+startDate.getFullYear()+' - '+zeropad(startDate.getHours())+':'+zeropad(startDate.getMinutes())) date.text(
date.appendTo(li) zeropad(startDate.getDate()) +
let summary=$("<span class='summary'/>") "." +
summary.text(item.summary) zeropad(1 + startDate.getMonth()) +
"." +
startDate.getFullYear() +
" - " +
zeropad(startDate.getHours()) +
":" +
zeropad(startDate.getMinutes())
);
date.appendTo(li);
let summary = $("<span class='summary'/>");
summary.text(item.summary);
if (item.url) { if (item.url) {
let a = $('<a/>') let a = $("<a/>");
a.attr('href',item.url) a.attr("href", item.url);
a.attr('title',item.description) a.attr("title", item.description);
a.append(summary) a.append(summary);
a.appendTo(li) a.appendTo(li);
} else { } else {
summary.appendTo(li) summary.appendTo(li);
} }
if (item.location) { if (item.location) {
let loc=$("<span class='location'>📍</span>") let loc = $("<span class='location'>📍</span>");
loc.attr('data-loc',item.location) loc.attr("data-loc", item.location);
loc.attr('title',"Click to copy: "+item.location) loc.attr("title", "Click to copy: " + item.location);
loc.appendTo(li) loc.appendTo(li);
} }
li.attr('title',item.description) li.attr("title", item.description);
li.appendTo(box) li.appendTo(box);
} }
$(".location", box).click(function () { $(".location", box).click(function () {
navigator.clipboard.writeText($(this).attr('data-loc')) navigator.clipboard.writeText($(this).attr("data-loc"));
}) });
}
} }
};
xmlHttp.open("GET", url, true); // true for asynchronous xmlHttp.open("GET", url, true); // true for asynchronous
xmlHttp.send(); xmlHttp.send();
}); });

View File

@ -1,21 +1,37 @@
document.addEventListener("DOMContentLoaded", function () { document.addEventListener("DOMContentLoaded", function () {
const update = function () { const update = function () {
fetch("https://spaceapi.c3re.de/").then(function(response) { fetch("https://spaceapi.c3re.de/")
return( response.json()); .then(function (response) {
}).then(function(data) { return response.json();
document.getElementById("ds-img").setAttribute("src",data.state.open?data.state.icon.open:data.state.icon.closed);
document.getElementById("ds-status").innerHTML=data.state.open?"Geöffnet":"Geschlossen";
document.getElementById("ds-temp").innerHTML=""+data.sensors.temperature[0].value+data.sensors.temperature[0].unit;
const lastchange=new Date(data.state.lastchange*1000)
document.getElementById('ds-date').innerHTML=lastchange.getDate().toString().padStart(2, "0") + "."
+ (lastchange.getMonth()+1).toString().padStart(2, "0") + "."
+ lastchange.getFullYear() + " "
+ lastchange.getHours().toString().padStart(2, "0") + ":"
+ lastchange.getMinutes().toString().padStart(2, "0")
}) })
} .then(function (data) {
document
.getElementById("ds-img")
.setAttribute(
"src",
data.state.open ? data.state.icon.open : data.state.icon.closed
);
document.getElementById("ds-status").innerHTML = data.state.open
? "Geöffnet"
: "Geschlossen";
document.getElementById("ds-temp").innerHTML =
"" +
data.sensors.temperature[0].value +
data.sensors.temperature[0].unit;
const lastchange = new Date(data.state.lastchange * 1000);
document.getElementById("ds-date").innerHTML =
lastchange.getDate().toString().padStart(2, "0") +
"." +
(lastchange.getMonth() + 1).toString().padStart(2, "0") +
"." +
lastchange.getFullYear() +
" " +
lastchange.getHours().toString().padStart(2, "0") +
":" +
lastchange.getMinutes().toString().padStart(2, "0");
});
};
update(); update();
setInterval(update, 10000); setInterval(update, 10000);
}); });

View File

@ -1,20 +1,19 @@
document.addEventListener("DOMContentLoaded", function () { document.addEventListener("DOMContentLoaded", function () {
document.querySelectorAll('a').forEach(function(element) { document.querySelectorAll("a").forEach(function (element) {
const myhost = window.location.hostname; const myhost = window.location.hostname;
const linkhost = new URL(element.href).hostname; const linkhost = new URL(element.href).hostname;
if (myhost === linkhost) { if (myhost === linkhost) {
let prefetchUrl=new URL(element.href).toString() let prefetchUrl = new URL(element.href).toString();
// lest make a prefetch tag for this url // lest make a prefetch tag for this url
let link = document.createElement('link'); let link = document.createElement("link");
link.setAttribute('rel', 'prefetch'); link.setAttribute("rel", "prefetch");
link.setAttribute('href', prefetchUrl); link.setAttribute("href", prefetchUrl);
link.setAttribute('as', 'document'); link.setAttribute("as", "document");
document.head.appendChild(link); document.head.appendChild(link);
element.classList.add("internal"); element.classList.add("internal");
} else { } else {
element.setAttribute("target", "_blank"); element.setAttribute("target", "_blank");
element.classList.add("external"); element.classList.add("external");
} }
}) });
}); });