85 lines
1.3 KiB
TypeScript
85 lines
1.3 KiB
TypeScript
|
|
namespace formgen
|
||
|
|
{
|
||
|
|
|
||
|
|
/**
|
||
|
|
*/
|
||
|
|
let _input : (null | formgen.input.interface_input<unknown>) = null;
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
*/
|
||
|
|
async function render(
|
||
|
|
raw : string,
|
||
|
|
element_target : Element
|
||
|
|
) : Promise<void>
|
||
|
|
{
|
||
|
|
element_target.innerHTML = "";
|
||
|
|
try
|
||
|
|
{
|
||
|
|
const description : any = formgen.helpers.json.decode(raw);
|
||
|
|
const input : formgen.input.interface_input<unknown> = formgen.input.from_raw(description);
|
||
|
|
/*
|
||
|
|
const form : formgen.class_form<unknown> = new formgen.class_form<unknown>(
|
||
|
|
input,
|
||
|
|
[
|
||
|
|
{"target": "/", "label": "abschicken"},
|
||
|
|
]
|
||
|
|
);
|
||
|
|
await form.setup(element_target)
|
||
|
|
*/
|
||
|
|
await input.setup(element_target);
|
||
|
|
_input = input;
|
||
|
|
}
|
||
|
|
catch (error)
|
||
|
|
{
|
||
|
|
console.error(error);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
*/
|
||
|
|
function main(
|
||
|
|
) : void
|
||
|
|
{
|
||
|
|
document.querySelector("#render").addEventListener(
|
||
|
|
"click",
|
||
|
|
() => {
|
||
|
|
render(
|
||
|
|
(document.querySelector("#input") as HTMLInputElement).value,
|
||
|
|
document.querySelector("#output")
|
||
|
|
);
|
||
|
|
}
|
||
|
|
);
|
||
|
|
document.querySelector("#read").addEventListener(
|
||
|
|
"click",
|
||
|
|
async () => {
|
||
|
|
if (_input === null)
|
||
|
|
{
|
||
|
|
console.warn("no input present");
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
const value = await _input.read();
|
||
|
|
console.info(value);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
*/
|
||
|
|
export function entry(
|
||
|
|
) : void
|
||
|
|
{
|
||
|
|
document.addEventListener(
|
||
|
|
"DOMContentLoaded",
|
||
|
|
() => {
|
||
|
|
main();
|
||
|
|
}
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|