124 lines
2.5 KiB
TypeScript
124 lines
2.5 KiB
TypeScript
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<mod_platform.app.web.type_state>,
|
|
) : Promise<void>
|
|
{
|
|
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<void>(undefined);
|
|
}
|
|
|
|
|
|
/**
|
|
*/
|
|
function update
|
|
(
|
|
state : type_state,
|
|
platform : lib_mvc.type_model<mod_platform.app.web.type_state>,
|
|
event : lib_mvc.type_event<any>
|
|
) : Promise<void>
|
|
{
|
|
switch (event.type)
|
|
{
|
|
default:
|
|
{
|
|
// do nothing
|
|
break;
|
|
}
|
|
case "login":
|
|
case "logout":
|
|
{
|
|
set_condition(state, platform.state.model.state.condition);
|
|
break;
|
|
}
|
|
}
|
|
return Promise.resolve<void>(undefined);
|
|
}
|
|
|
|
|
|
/**
|
|
*/
|
|
export function implementation_view
|
|
(
|
|
) : lib_mvc.type_view<mod_platform.app.web.type_state>
|
|
{
|
|
let state : type_state = make();
|
|
return {
|
|
"setup": (model) => setup(state, model),
|
|
"update": (model, event) => update(state, model, event),
|
|
};
|
|
}
|
|
|
|
}
|