aboutsummaryrefslogtreecommitdiff
path: root/static/components
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2021-11-15 00:47:13 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2021-11-15 00:47:13 +0100
commitecdb4b7eeb42dc859cfd6aa31634b423b72c50bd (patch)
treeb910e8d3c6661f2b7e401ae18097f643d5cdd585 /static/components
parentReword popup visible attribute. (diff)
downloadcalp-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.ts49
-rw-r--r--static/components/vevent.ts7
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);
}
}