namespace mod_view.app.web { /** */ export type type_style = { sheet_name : string; force_language : (null | string); }; /** */ export type type_state = { context_dom : (null | HTMLElement); }; /** */ function set_condition ( state : type_state, condition : mod_model.app.enum_condition ) : void { state.context_dom.classList.toggle("empty", false); state.context_dom.classList.toggle("logged_in", (condition === mod_model.app.enum_condition.logged_in)); state.context_dom.classList.toggle("logged_out", (condition === mod_model.app.enum_condition.logged_out)); } /** */ export function make ( ) : type_state { return { "context_dom": null, }; } /** */ export function setup ( state : type_state, platform : lib_mvc.type_model, ) : Promise { let context_dom : HTMLElement = platform.state.element_dom; state.context_dom = context_dom; // translate stuff { lib_loc.translate_item(".app_username > input", "username", {"context": context_dom, "kind": "attribute", "parameters": {"key": "placeholder"}}); lib_loc.translate_item(".app_password > input", "password", {"context": context_dom, "kind": "attribute", "parameters": {"key": "placeholder"}}); lib_loc.translate_item(".app_login > button", "login", {"context": context_dom}); lib_loc.translate_item(".app_logout > button", "logout", {"context": context_dom}); lib_loc.translate_item(".app_rent > button", "rent", {"context": context_dom}); } // list rentals { /* let rentals_dom : HTMLElement = document.querySelector("#rentals"); rentals_dom.innerHTML = ""; model.rentals.order.forEach ( (rental_id) => { } ); */ } set_condition(state, platform.state.model.state.condition); return Promise.resolve(undefined); } /** */ function update ( state : type_state, platform : lib_mvc.type_model, event : lib_mvc.type_event ) : Promise { switch (event.type) { default: { // do nothing break; } case "login": case "logout": { set_condition(state, platform.state.model.state.condition); break; } } return Promise.resolve(undefined); } /** */ export function implementation_view ( ) : lib_mvc.type_view { let state : type_state = make(); return { "setup": (model) => setup(state, model), "update": (model, event) => update(state, model, event), }; } }