aboutsummaryrefslogtreecommitdiff
path: root/_www/functions.ts
diff options
context:
space:
mode:
Diffstat (limited to '_www/functions.ts')
-rw-r--r--_www/functions.ts28
1 files changed, 28 insertions, 0 deletions
diff --git a/_www/functions.ts b/_www/functions.ts
index f927f80..48d916c 100644
--- a/_www/functions.ts
+++ b/_www/functions.ts
@@ -1,6 +1,7 @@
// SPDX-FileCopyrightText: 2021 M. Shulhan <ms@kilabit.info>
// SPDX-License-Identifier: GPL-3.0-or-later
+import { WuiInputFile } from "./wui/input/file.js";
import { WuiInputNumber, WuiInputNumberOpts } from "./wui/input/number.js";
import { WuiInputString, WuiInputStringOpts } from "./wui/input/string.js";
@@ -8,6 +9,7 @@ import {
CLASS_INPUT,
CLASS_INPUT_LABEL,
FormInput,
+ FormInputKindFile,
FormInputKindNumber,
HTTPTargetInterface,
TargetInterface,
@@ -28,8 +30,34 @@ export function generateFormInput(parent: HTMLElement, fi: FormInput) {
let wuiInputStringOpts: WuiInputStringOpts;
let wuiInputNumber: WuiInputNumber;
let wuiInputString: WuiInputString;
+ let wuiInputFile: WuiInputFile;
+ let reader: FileReader;
switch (fi.kind) {
+ case FormInputKindFile:
+ wuiInputFile = new WuiInputFile();
+ wuiInputFile.label = fi.label;
+ wuiInputFile.hint = fi.hint;
+ wuiInputFile.classInput = CLASS_INPUT;
+ wuiInputFile.classLabel = CLASS_INPUT_LABEL;
+ wuiInputFile.onChange = (file: File) => {
+ fi.filename = file.name;
+ fi.filetype = file.type;
+ fi.filesize = file.size;
+ fi.filemodms = file.lastModified;
+ fi.value = "";
+
+ reader = new FileReader();
+ reader.onload = (e) => {
+ if (e) {
+ fi.value = btoa(reader.result as string);
+ }
+ };
+ reader.readAsText(file);
+ };
+ parent.appendChild(wuiInputFile.element());
+ break;
+
case FormInputKindNumber:
wuiInputNumberOpts = {
label: fi.label,