diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2021-11-15 00:47:13 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2021-11-15 00:47:13 +0100 |
commit | ecdb4b7eeb42dc859cfd6aa31634b423b72c50bd (patch) | |
tree | b910e8d3c6661f2b7e401ae18097f643d5cdd585 /static/components | |
parent | Reword popup visible attribute. (diff) | |
download | calp-ecdb4b7eeb42dc859cfd6aa31634b423b72c50bd.tar.gz calp-ecdb4b7eeb42dc859cfd6aa31634b423b72c50bd.tar.xz |
Rework some drawing and how calendar is accessed.
Diffstat (limited to 'static/components')
-rw-r--r-- | static/components/vevent-edit.ts | 49 | ||||
-rw-r--r-- | static/components/vevent.ts | 7 |
2 files changed, 17 insertions, 39 deletions
diff --git a/static/components/vevent-edit.ts b/static/components/vevent-edit.ts index 602e1872..b9c76dd3 100644 --- a/static/components/vevent-edit.ts +++ b/static/components/vevent-edit.ts @@ -12,12 +12,12 @@ import { create_event } from '../server_connect' */ class ComponentEdit extends ComponentVEvent { - firstTime: boolean - constructor() { super(); - this.firstTime = true; + let frag = this.template.content.cloneNode(true) as DocumentFragment + let body = frag.firstElementChild! + this.replaceChildren(body); } connectedCallback() { @@ -38,19 +38,15 @@ class ComponentEdit extends ComponentVEvent { for (let el of this.getElementsByClassName('calendar-selection')) { for (let opt of el.getElementsByTagName('option')) { opt.selected = false; - if (opt.value == event_calendar_mapping.get(this.uid)) { - data.setCalendar(opt.value); - opt.selected = true; - /* No break since we want to set the remainders 'selected' to false */ - } + } + if (data.calendar) { + (el as HTMLSelectElement).value = data.calendar; } el.addEventListener('change', (e) => { let v = (e.target as HTMLSelectElement).selectedOptions[0].value - // e.selectedOptions[0].innerText - let obj = vcal_objects.get(this.uid)! - obj.setCalendar(v); + obj.calendar = v; }); } @@ -85,20 +81,10 @@ class ComponentEdit extends ComponentVEvent { } redraw(data: VEvent) { - // update ourselves from template - - if (!this.template) { - throw "Something"; - } - - let body; - if (this.firstTime) { - body = (this.template.content.cloneNode(true) as DocumentFragment).firstElementChild!; - } else { - body = this; - } + /* We only update our fields, instead of reinstansiating + ourselves from the template, in hope that it's faster */ - for (let el of body.getElementsByClassName("interactive")) { + for (let el of this.getElementsByClassName("interactive")) { if (!(el instanceof HTMLElement)) continue; let p = el.dataset.property!; let d: any; @@ -119,19 +105,10 @@ class ComponentEdit extends ComponentVEvent { } } - for (let el of body.getElementsByTagName('calendar-selection')) { - for (let opt of el.getElementsByTagName('option')) { - opt.selected = false; - if (opt.value == data._calendar) { - opt.selected = true; - } + if (data.calendar) { + for (let el of this.getElementsByClassName('calendar-selection')) { + (el as HTMLSelectElement).value = data.calendar; } } - - if (this.firstTime) { - this.replaceChildren(body); - this.firstTime = false; - } } - } diff --git a/static/components/vevent.ts b/static/components/vevent.ts index de232794..d957c7c8 100644 --- a/static/components/vevent.ts +++ b/static/components/vevent.ts @@ -26,6 +26,7 @@ class ComponentVEvent extends HTMLElement { } this.uid = real_uid; + this.dataset.uid = uid; vcal_objects.get(this.uid)?.register(this); @@ -36,9 +37,9 @@ class ComponentVEvent extends HTMLElement { } connectedCallback() { - let uid, v; - if ((uid = this.dataset.uid)) { - v = vcal_objects.get(uid) + let uid = this.dataset.uid + if (uid) { + let v = vcal_objects.get(uid) if (v) this.redraw(v); } } |