Skip to content

Commit c6cb588

Browse files
committed
simplify logic for getting template
1 parent 163bb22 commit c6cb588

1 file changed

Lines changed: 31 additions & 41 deletions

File tree

src/config.ts

Lines changed: 31 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,7 @@ interface WidgetDefinition {
55
value: {
66
type: string;
77
default: number;
8-
range: [
9-
number,
10-
number
11-
];
8+
range: [number, number];
129
};
1310
}
1411

@@ -17,48 +14,35 @@ interface ConfigDefinition {
1714
widgets: Array<WidgetDefinition>;
1815
}
1916

17+
const typeTemplateMap: { [key: string]: string } = {
18+
text: "text-widget-template",
19+
title: "title-widget-template",
20+
image: "image-widget-template",
21+
slider: "slider-widget-template",
22+
switch: "switch-widget-template",
23+
number: "number-widget-template",
24+
};
2025

2126
export class ConfigClass {
22-
file: {config: ConfigDefinition};
27+
file: { config: ConfigDefinition };
2328
widgets: Array<WidgetDefinition> = [];
2429

2530
constructor(config_object: object) {
26-
this.file = config_object as {config: ConfigDefinition};
31+
this.file = config_object as { config: ConfigDefinition };
2732
this.widgets = this.file.config.widgets;
2833
}
2934

3035
public get_widgets_html() {
3136
let html_widgets: Array<DocumentFragment> = [];
32-
37+
3338
let i = 0;
34-
this.widgets.forEach(element => {
39+
this.widgets.forEach((element) => {
3540
const type = element.type;
3641

37-
let template = document.getElementById("text-widget-template") as HTMLTemplateElement;
38-
39-
// Get correct template
40-
switch (type) {
41-
case "heading":
42-
template = document.getElementById("title-widget-template") as HTMLTemplateElement;
43-
break;
44-
case "title":
45-
template = document.getElementById("title-widget-template") as HTMLTemplateElement;
46-
break;
47-
case "text":
48-
template = document.getElementById("text-widget-template") as HTMLTemplateElement;
49-
break;
50-
case "image":
51-
template = document.getElementById("image-widget-template") as HTMLTemplateElement;
52-
break;
53-
case "switch":
54-
template = document.getElementById("switch-widget-template") as HTMLTemplateElement;
55-
break;
56-
case "number":
57-
template = document.getElementById("number-widget-template") as HTMLTemplateElement;
58-
break;
59-
case "slider":
60-
template = document.getElementById("slider-widget-template") as HTMLTemplateElement;
61-
break;
42+
let template = document.getElementById(typeTemplateMap[type]) as HTMLTemplateElement | null;
43+
if (!template) {
44+
console.error(`Template not found for type: ${type}`);
45+
template = document.getElementById("text-widget-template") as HTMLTemplateElement;
6246
}
6347

6448
// Create the thing
@@ -72,11 +56,15 @@ export class ConfigClass {
7256
// else if (element.default == "enabled") {
7357
// (clone.querySelector(".widget-switch-input") as HTMLInputElement).checked = true;
7458
// }
75-
}
76-
else if (type == "slider" || type == "number" || type == "value") {
77-
(clone.querySelector(".widget-input") as HTMLInputElement).valueAsNumber = element.value.default;
78-
if (element.value.range) (clone.querySelector(".widget-input") as HTMLInputElement).min = element.value.range[0].toString();
79-
if (element.value.range) (clone.querySelector(".widget-input") as HTMLInputElement).max = element.value.range[1].toString();
59+
} else if (type == "slider" || type == "number" || type == "value") {
60+
(clone.querySelector(".widget-input") as HTMLInputElement).valueAsNumber =
61+
element.value.default;
62+
if (element.value.range)
63+
(clone.querySelector(".widget-input") as HTMLInputElement).min =
64+
element.value.range[0].toString();
65+
if (element.value.range)
66+
(clone.querySelector(".widget-input") as HTMLInputElement).max =
67+
element.value.range[1].toString();
8068

8169
if (element.value.type) {
8270
if (element.value.type == "percent") {
@@ -87,11 +75,13 @@ export class ConfigClass {
8775

8876
// Set input ID
8977
if (type != "text" && type != "image" && type != "title" && type != "heading") {
90-
(clone.querySelector(".widget-input") as HTMLInputElement).id = "widget-input-" + i.toString();
78+
(clone.querySelector(".widget-input") as HTMLInputElement).id =
79+
"widget-input-" + i.toString();
9180
}
92-
81+
9382
// Push to array
94-
html_widgets.push(clone); i += 1;
83+
html_widgets.push(clone);
84+
i += 1;
9585
});
9686

9787
// Return array of HTML elements

0 commit comments

Comments
 (0)