From 0e1eb02c1a6d596bd1e620b9c9bb13e6c125f5cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Fri, 18 Dec 2020 23:18:47 +0100 Subject: Start work on jcal system. --- static/rrule.js | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) (limited to 'static/rrule.js') diff --git a/static/rrule.js b/static/rrule.js index abc648af..f11cc640 100644 --- a/static/rrule.js +++ b/static/rrule.js @@ -8,6 +8,14 @@ function recur_xml_to_rrule(dom_element) { return rr; } +function recur_jcal_to_rrule(jcal) { + let rr = new RRule; + for (var key in jcal) { + rr[key] = jcal[key]; + } + return rr; +} + class RRule { /* direct access to fields is fine */ @@ -17,7 +25,9 @@ class RRule { fields = ['freq', 'until', 'count', 'interval', 'bysecond', 'byminute', 'byhour', 'bymonthday', 'byyearday', 'byweekno', - 'bymonth', 'bysetpos', 'wkst'] + 'bymonth', 'bysetpos', 'wkst', + 'byday' + ] constructor() { @@ -49,16 +59,30 @@ class RRule { this.listeners[field].push(proc); } - asXcal() { + asXcal(doc) { /* TODO empty case */ - let str = ""; + // let str = ""; + let root = doc.createElementNS(xcal, 'recur'); + for (let f of this.fields) { + let v = this.fields[f]; + if (! v) continue; + let tag = doc.createElementNS(xcal, f); + /* TODO type formatting */ + tag.innerHTML = `${v}`; + root.appendChild(tag); + } + return root; + } + + asJcal() { + let obj = {}; for (let f of this.fields) { let v = this.fields[f]; if (! v) continue; - str += `<${f}>${v}`; + /* TODO special formatting for some types */ + obj[f] = v; } - str += ""; - return str; + return obj; } /* -- cgit v1.2.3