diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2021-05-17 01:32:25 +0200 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2021-05-17 01:32:25 +0200 |
commit | 6c21cb7b669a6778e57f7043c15446a38a1fc614 (patch) | |
tree | d4df2d192ab5c6b6f8a4c4bd8e3e6b0b4b36d8b8 /static/server_connect.js | |
parent | Terminal reload events when jumping to today. (diff) | |
parent | Long events now wholeday per default. (diff) | |
download | calp-6c21cb7b669a6778e57f7043c15446a38a1fc614.tar.gz calp-6c21cb7b669a6778e57f7043c15446a38a1fc614.tar.xz |
Merge branch 'jcal'
Diffstat (limited to '')
-rw-r--r-- | static/server_connect.js | 75 |
1 files changed, 17 insertions, 58 deletions
diff --git a/static/server_connect.js b/static/server_connect.js index a50128ae..f3fbac1b 100644 --- a/static/server_connect.js +++ b/static/server_connect.js @@ -22,55 +22,28 @@ async function remove_event (element) { } function event_to_jcal (event) { - let properties = []; - - for (let prop of event.properties.ical_properties) { - let v = event.properties[prop]; - if (v !== undefined) { - - let type = 'text'; - let value; - - if (v instanceof Array) { - } else if (v instanceof Date) { - if (v.isWholeDay) { - type = 'date'; - value = v.format("~Y-~m-~d"); - } else { - type = 'date-time'; - /* TODO TZ */ - value = v.format("~Y-~m-~dT~H:~M:~S"); - } - } else if (v === true || v === false) { - type = 'boolean'; - value = v; - } else if (typeof(v) == 'number') { - /* TODO float or integer */ - type = 'integer'; - value = v; - } else if (v instanceof RRule) { - type = 'recur'; - value = v.asJcal(); - } - /* TODO period */ - else { - /* text types */ - value = v; - } - - properties.push([prop, {}, type, value]); - } - } - - return ['vevent', properties, [/* alarms go here */]] + /* encapsulate event in a shim calendar, to ensure that + we always send correct stuff */ + return ['vcalendar', + [ + /* + 'prodid' and 'version' are technically both required (RFC 5545, + 3.6 Calendar Components). + */ + ], + [ + /* vtimezone goes here */ + event.properties.to_jcal() + ] + ]; } async function create_event (event) { // let xml = event.getElementsByTagName("icalendar")[0].outerHTML - let calendar = event.properties.calendar; + let calendar = event.properties.calendar.value; - console.log(calendar/*, xml*/); + console.log('calendar=', calendar/*, xml*/); let data = new URLSearchParams(); data.append("cal", calendar); @@ -78,23 +51,9 @@ async function create_event (event) { console.log(event); + let jcal = event_to_jcal(event); - let jcal = - ['vcalendar', - [ - /* - 'prodid' and 'version' are technically both required (RFC 5545, - 3.6 Calendar Components). - */ - ], - [ - /* vtimezone goes here */ - event_to_jcal(event), - ] - ]; - - console.log(jcal); let doc = jcal_to_xcal(jcal); console.log(doc); |