/** */ namespace _zeitbild.frontend_web { /** */ export async function main( ) : Promise { // conf await _zeitbild.frontend_web.conf.init("conf.json"); // init await _zeitbild.frontend_web.backend.init(); lib_plankton.zoo_page.init( document.querySelector("main"), { "pool": { "login": async (parameters, target_element) => { target_element.innerHTML = await _zeitbild.frontend_web.helpers.template_coin( "login", { "form": "", } ); const form : lib_plankton.zoo_form.class_form< {name : string; password : string;}, {name : string; password : string;} > = new lib_plankton.zoo_form.class_form< {name : string; password : string;}, {name : string; password : string;} >( x => x, x => x, new lib_plankton.zoo_input.class_input_group< {name : string; password : string;} >( [ { "name": "name", "input": new lib_plankton.zoo_input.class_input_text(), "label": "Name", // TODO: translate }, { "name": "password", "input": new lib_plankton.zoo_input.class_input_password(), "label": "Kennwort", // TODO: translate }, ] ), [ { "label": "Anmelden", // TODO: translate "target": "submit", "procedure": async (get_value, get_representation) => { const value : any = await get_value(); try { await _zeitbild.frontend_web.backend.session_begin( value.name, value.password ); lib_plankton.zoo_page.set( { "name": "events", "parameters": {} } ); } catch (error) { lib_plankton.zoo_page.set( { "name": "login", "parameters": { "name": value.name, } } ); } } }, ] ); await form.setup(document.querySelector("#login")); await form.input_write( { "name": (parameters.name ?? ""), "password": "", } ); }, "logout": async (parameters, target_element) => { await _zeitbild.frontend_web.backend.session_end( ); lib_plankton.zoo_page.set( { "name": "login", "parameters": { } } ); }, "events": async (parameters, target_element) => { const content = await _zeitbild.frontend_web.view.calendar_view_table_html( { "calendar_ids": null, "from": { "year": 2024, "week": 37 }, "to": { "year": 2024, "week": 43 }, "timezone_shift": /*conf.timezone_shift*/0, } ); target_element.innerHTML = content; }, }, "fallback": { "name": "login", "parameters": {} } } ); lib_plankton.zoo_page.add_nav_entry({"name": "login", "parameters": {}}); lib_plankton.zoo_page.add_nav_entry({"name": "events", "parameters": {}}); lib_plankton.zoo_page.add_nav_entry({"name": "logout", "parameters": {}}); // exec lib_plankton.zoo_page.start(); return Promise.resolve(undefined); } }