dropped "new events to check" feature, replaced by "show upcoming events"
This commit is contained in:
parent
2f4276a73c
commit
3cd12baf9e
|
@ -49,7 +49,7 @@ else if (isset($_POST['action']))
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
echo '{"warning": "cannot load ics file"}';
|
echo '{"error": "cannot load ics file"}';
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
115
main.js
115
main.js
|
@ -998,11 +998,19 @@ function changesetting()
|
||||||
|
|
||||||
function showupcomingevents()
|
function showupcomingevents()
|
||||||
{
|
{
|
||||||
var note = getnote("events.json");
|
queryremote({action: "cal"})
|
||||||
if (note)
|
.then(data =>
|
||||||
{
|
{
|
||||||
var upcomingnote = getorcreate("Upcoming events", "---\ntags: preview\n---\n\n");
|
if (!data.ics)
|
||||||
var events = JSON.parse(note.content);
|
{
|
||||||
|
throw "could not retrieve events";
|
||||||
|
}
|
||||||
|
|
||||||
|
// keep future only
|
||||||
|
var events = ics2json(data.ics)
|
||||||
|
.filter(e => e.DTSTART >= new Date);
|
||||||
|
|
||||||
|
// sort by years and months
|
||||||
var sorted = {};
|
var sorted = {};
|
||||||
events.forEach(event =>
|
events.forEach(event =>
|
||||||
{
|
{
|
||||||
|
@ -1018,24 +1026,31 @@ function showupcomingevents()
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
upcomingnote.content = "";
|
// build output
|
||||||
|
var content = "";
|
||||||
for (var year in sorted)
|
for (var year in sorted)
|
||||||
{
|
{
|
||||||
upcomingnote.content += "# " + year + "\n";
|
content += "# " + year + "\n";
|
||||||
for (var month in sorted[year])
|
for (var month in sorted[year])
|
||||||
{
|
{
|
||||||
upcomingnote.content += "## " + month.charAt(0).toUpperCase() + month.slice(1) + "\n";
|
content += "## " + month.charAt(0).toUpperCase() + month.slice(1) + "\n";
|
||||||
for (var i in sorted[year][month])
|
for (var i in sorted[year][month])
|
||||||
{
|
{
|
||||||
var event = sorted[year][month][i];
|
var event = sorted[year][month][i];
|
||||||
upcomingnote.content += event.readabledate.split(" ")[0] + " " + event.readabledate.split(" ")[1] + ": " + event.SUMMARY + "\n";
|
content += event.readabledate.split(" ")[0] + " " + event.readabledate.split(" ")[1] + ": " + event.SUMMARY + "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bindfile(upcomingnote);
|
bindfile(
|
||||||
|
{
|
||||||
|
title: "Upcoming events",
|
||||||
|
content
|
||||||
|
});
|
||||||
togglepreview();
|
togglepreview();
|
||||||
}
|
|
||||||
|
})
|
||||||
|
.catch(remotecallfailed);
|
||||||
}
|
}
|
||||||
|
|
||||||
function decryptnote()
|
function decryptnote()
|
||||||
|
@ -1434,7 +1449,6 @@ function init()
|
||||||
{
|
{
|
||||||
window.localStorage.setItem("remote", JSON.stringify(data));
|
window.localStorage.setItem("remote", JSON.stringify(data));
|
||||||
loadstorage();
|
loadstorage();
|
||||||
checkevents();
|
|
||||||
})
|
})
|
||||||
.catch(remotecallfailed);
|
.catch(remotecallfailed);
|
||||||
}
|
}
|
||||||
|
@ -1534,85 +1548,6 @@ function getorcreate(title, content, putontop)
|
||||||
return note;
|
return note;
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkevents()
|
|
||||||
{
|
|
||||||
queryremote({action: "cal"})
|
|
||||||
.then(data =>
|
|
||||||
{
|
|
||||||
if (!isremote())
|
|
||||||
{
|
|
||||||
console.log("ignore events because current vault is " + currentvault);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!data.ics)
|
|
||||||
{
|
|
||||||
console.warn("could not retrieve events");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var note = getorcreate("events.json", "[]", false);
|
|
||||||
var events = ics2json(data.ics);
|
|
||||||
var existing = JSON.parse(note.content).map(e =>
|
|
||||||
{
|
|
||||||
e.DTSTART = new Date(e.DTSTART);
|
|
||||||
return e;
|
|
||||||
});
|
|
||||||
|
|
||||||
// keep future only
|
|
||||||
events = events.filter(e => e.DTSTART >= new Date);
|
|
||||||
existing = existing.filter(e => e.DTSTART >= new Date);
|
|
||||||
|
|
||||||
// check added, deleted, changed
|
|
||||||
var newcontent = [];
|
|
||||||
events.forEach(evt =>
|
|
||||||
{
|
|
||||||
var previous = existing.find(e => e.UID == evt.UID);
|
|
||||||
if (!previous)
|
|
||||||
{
|
|
||||||
newcontent.push("new event: " + evt.DTSTART.toLocaleString() + " " + evt.SUMMARY);
|
|
||||||
}
|
|
||||||
else if (previous.SUMMARY != evt.SUMMARY)
|
|
||||||
{
|
|
||||||
newcontent.push("changed event: " + evt.DTSTART.toLocaleString() + " " + evt.SUMMARY);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
existing.forEach(evt =>
|
|
||||||
{
|
|
||||||
if (!events.find(e => e.UID == evt.UID))
|
|
||||||
{
|
|
||||||
newcontent.push("deleted event: " + evt.DTSTART.toLocaleString() + " " + evt.SUMMARY);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (newcontent.length)
|
|
||||||
{
|
|
||||||
showtemporaryinfo("Calendar changes to check");
|
|
||||||
var eventsnotes = getorcreate("events to check", "", true);
|
|
||||||
var idx = 0;
|
|
||||||
if (eventsnotes.content.startsWith("---"))
|
|
||||||
{
|
|
||||||
idx = eventsnotes.content.indexOf("---", 3) + 4;
|
|
||||||
}
|
|
||||||
eventsnotes.content = eventsnotes.content.substring(0, idx)
|
|
||||||
+ newcontent.join("\n")
|
|
||||||
+ "\n---\n"
|
|
||||||
+ eventsnotes.content.substring(idx);
|
|
||||||
|
|
||||||
// reload eventsnotes if open
|
|
||||||
if (currentnote == eventsnotes)
|
|
||||||
{
|
|
||||||
bindfile(eventsnotes);
|
|
||||||
}
|
|
||||||
|
|
||||||
note.content = JSON.stringify(events);
|
|
||||||
datachanged();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch(remotecallfailed);
|
|
||||||
}
|
|
||||||
|
|
||||||
function queryremote(params)
|
function queryremote(params)
|
||||||
{
|
{
|
||||||
return new Promise( (apply, failed) => {
|
return new Promise( (apply, failed) => {
|
||||||
|
|
Loading…
Reference in New Issue