diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2021-10-04 17:40:59 +0200 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2021-10-04 17:43:45 +0200 |
commit | c6c65f9e8273a5bc1b2ac1155d66003d2b98591c (patch) | |
tree | da25ccd8af897dbc2671008e06f22d08d1208035 /static/rrule.js | |
parent | work (diff) | |
download | calp-c6c65f9e8273a5bc1b2ac1155d66003d2b98591c.tar.gz calp-c6c65f9e8273a5bc1b2ac1155d66003d2b98591c.tar.xz |
{.js => .ts} on relavant files.
Diffstat (limited to 'static/rrule.js')
-rw-r--r-- | static/rrule.js | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/static/rrule.js b/static/rrule.js deleted file mode 100644 index e7377370..00000000 --- a/static/rrule.js +++ /dev/null @@ -1,100 +0,0 @@ -function recur_xml_to_rrule(dom_element) { - let rr = new RRule; - for (let child of dom_element.children) { - let key = child.tagName; /* freq */ - let val = child.textContent; /* weekly */ - rr[key] = val; - } - 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 */ - /* setting them however requires methods, since there might - be listeners */ - - fields = ['freq', 'until', 'count', 'interval', - 'bysecond', 'byminute', 'byhour', - 'bymonthday', 'byyearday', 'byweekno', - 'bymonth', 'bysetpos', 'wkst', - 'byday' - ] - - constructor() { - - this.listeners = {} - - for (let f of this.fields) { - this[f] = false; - Object.defineProperty( - this, f, { - /* - TODO many of the fields should be wrapped - in type tags. e.g. <until> elements are either - <date> or <date-time>, NOT a raw date. - by* fields should be wrapped with multiple values. - */ - get: () => this['_' + f], - set: (v) => { - this['_' + f] = v - for (let l of this.listeners[f]) { - l(v); - } - } - }); - this.listeners[f] = []; - } - } - - addListener(field, proc) { - this.listeners[field].push(proc); - } - - /* NOTE this function is probably never used. - Deperate it and refer to RRule.asJcal - together with jcal_to_xcal */ - asXcal(doc) { - /* TODO empty case */ - // let str = "<recur>"; - 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.textContent = `${v}`; - root.appendChild(tag); - } - return root; - } - - asJcal() { - let obj = {}; - for (let f of this.fields) { - let v = this[f]; - if (! v) continue; - /* TODO special formatting for some types */ - obj[f] = v; - } - return obj; - } - - /* - asIcal() { - return this.fields - .map(f => [f, this.fields[f]]) - .filter([_, v] => v) - .map(([k, v]) => `${k}=${v}`) - .join(';'); - } - */ -}; |