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/vevent-edit.ts | |
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 '')
-rw-r--r-- | static/components/vevent-edit.ts | 49 |
1 files changed, 13 insertions, 36 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; - } } - } |