aboutsummaryrefslogtreecommitdiff
path: root/static/components
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2021-11-26 17:14:30 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2021-11-26 17:14:30 +0100
commit0cfa00fc43eaf98db8b2461a2d07687b6591cd6e (patch)
tree4a7957e27e6736a2b0d98b47aa443d2caa43ba72 /static/components
parentMinor cleanup. (diff)
downloadcalp-0cfa00fc43eaf98db8b2461a2d07687b6591cd6e.tar.gz
calp-0cfa00fc43eaf98db8b2461a2d07687b6591cd6e.tar.xz
Remove default ComponentVEvent redraw.
Diffstat (limited to 'static/components')
-rw-r--r--static/components/vevent-block.ts19
-rw-r--r--static/components/vevent-description.ts22
-rw-r--r--static/components/vevent.ts27
3 files changed, 42 insertions, 26 deletions
diff --git a/static/components/vevent-block.ts b/static/components/vevent-block.ts
index a4aaba24..de9cf748 100644
--- a/static/components/vevent-block.ts
+++ b/static/components/vevent-block.ts
@@ -23,7 +23,24 @@ class ComponentBlock extends ComponentVEvent {
}
redraw(data: VEvent) {
- super.redraw(data);
+ let body = (this.template.content.cloneNode(true) as DocumentFragment).firstElementChild!;
+
+ for (let el of body.querySelectorAll('[data-property]')) {
+ if (!(el instanceof HTMLElement)) continue;
+ let p = el.dataset.property!;
+ let d, fmt;
+ if ((d = data.getProperty(p))) {
+ if ((fmt = el.dataset.fmt)) {
+ el.textContent = d.format(fmt);
+ } else {
+ el.textContent = d;
+ }
+ }
+ }
+
+ this.replaceChildren(body);
+
+ /* -------------------------------------------------- */
let p;
if ((p = data.getProperty('dtstart'))) {
diff --git a/static/components/vevent-description.ts b/static/components/vevent-description.ts
index f97b60e1..03c5355d 100644
--- a/static/components/vevent-description.ts
+++ b/static/components/vevent-description.ts
@@ -1,5 +1,6 @@
export { ComponentDescription }
+import { VEvent } from '../vevent'
import { ComponentVEvent } from './vevent'
/*
@@ -9,4 +10,25 @@ class ComponentDescription extends ComponentVEvent {
constructor() {
super();
}
+
+ redraw(data: VEvent) {
+ // update ourselves from template
+
+ let body = (this.template.content.cloneNode(true) as DocumentFragment).firstElementChild!;
+
+ for (let el of body.querySelectorAll('[data-property]')) {
+ if (!(el instanceof HTMLElement)) continue;
+ let p = el.dataset.property!;
+ let d, fmt;
+ if ((d = data.getProperty(p))) {
+ if ((fmt = el.dataset.fmt)) {
+ el.textContent = d.format(fmt);
+ } else {
+ el.textContent = d;
+ }
+ }
+ }
+
+ this.replaceChildren(body);
+ }
}
diff --git a/static/components/vevent.ts b/static/components/vevent.ts
index cf28045a..561051fa 100644
--- a/static/components/vevent.ts
+++ b/static/components/vevent.ts
@@ -8,7 +8,7 @@ import { VEvent } from '../vevent'
Lacks an accompaning tag, and shouldn't be directly instanciated.
*/
-class ComponentVEvent extends HTMLElement {
+abstract class ComponentVEvent extends HTMLElement {
template: HTMLTemplateElement
uid: string
@@ -45,29 +45,6 @@ class ComponentVEvent extends HTMLElement {
}
}
- redraw(data: VEvent) {
- // update ourselves from template
-
- if (!this.template) {
- throw "Something";
- }
-
- let body = (this.template.content.cloneNode(true) as DocumentFragment).firstElementChild!;
-
- for (let el of body.getElementsByClassName("bind")) {
- if (!(el instanceof HTMLElement)) continue;
- let p = el.dataset.property!;
- let d, fmt;
- if ((d = data.getProperty(p))) {
- if ((fmt = el.dataset.fmt)) {
- el.textContent = d.format(fmt);
- } else {
- el.textContent = d;
- }
- }
- }
-
- this.replaceChildren(body);
- }
+ abstract redraw(data: VEvent): void
}