frontend-zackeneule/source/pages/view/logic.ts

186 lines
5.2 KiB
TypeScript

lib_plankton.zoo_page.register(
"view",
async (parameters, target_element) => {
const id : int = parseInt(parameters["id"]);
const form = new lib_plankton.zoo_form.class_form<
{
membership_number : string;
name_real_value : string;
name_real_index : int;
email_address_private : (null | string);
registered : boolean;
enabled : boolean;
email_use_veiled_address : boolean;
email_use_nominal_address : boolean;
email_redirect_to_private_address : boolean;
email_allow_sending : boolean;
},
{
membership_number : string;
name_real_value : string;
name_real_index : int;
email_address_private : (null | string);
registered : boolean;
enabled : boolean;
email_use_veiled_address : boolean;
email_use_nominal_address : boolean;
email_redirect_to_private_address : boolean;
email_allow_sending : boolean;
}
>(
value => value,
representation => representation,
new lib_plankton.zoo_input.class_input_group(
[
{
"name": "membership_number",
"input": new lib_plankton.zoo_input.class_input_text({"read_only": true}),
"label": "Mitgliedsnummer",
},
{
"name": "name_real_value",
"input": new lib_plankton.zoo_input.class_input_text({"read_only": true}),
"label": "Echter Name",
},
{
"name": "name_real_index",
"input": new lib_plankton.zoo_input.class_input_number({"read_only": true}),
"label": "Namens-Index",
},
{
"name": "email_address_private",
"input": new lib_plankton.zoo_input.class_input_text(),
"label": "Private E-Mail-Adresse",
},
{
"name": "registered",
"input": new lib_plankton.zoo_input.class_input_checkbox({"read_only": true}),
"label": "registriert",
},
{
"name": "enabled",
"input": new lib_plankton.zoo_input.class_input_checkbox(),
"label": "für Netz-Dienste freigeschalten",
},
{
"name": "email_use_veiled_address",
"input": new lib_plankton.zoo_input.class_input_checkbox({"read_only": true}),
"label": "Pseudonymisierte E-Mail-Adresse verwenden",
},
{
"name": "email_use_nominal_address",
"input": new lib_plankton.zoo_input.class_input_checkbox({"read_only": true}),
"label": "Namentliche E-Mail-Adresse verwenden",
},
{
"name": "email_redirect_to_private_address",
"input": new lib_plankton.zoo_input.class_input_checkbox({"read_only": true}),
"label": "eingehende E-Mails zu privater Adresse umleiten",
},
{
"name": "email_allow_sending",
"input": new lib_plankton.zoo_input.class_input_checkbox(),
"label": "Versenden von E-Mails erlaubt",
},
/*
{
"name": "name_display",
"input": new lib_plankton.zoo_input.class_input_text({"read_only": true}),
"label": "Anzeigename",
},
*/
/*
{
"name": "name_login",
"input": new lib_plankton.zoo_input.class_input_text(
{
"pattern": "^[0-9a-zA-Z_]+$",
"read_only": true,
}
),
"label": "Anmeldename",
},
*/
]
),
[
{
"label": "Änderungen speichern",
"procedure": async (get_value, get_representation) => {
const value = await get_value();
await _espe.backend.member_modify(
id,
{
"email_address_private": value.email_address_private,
"enabled": value.enabled,
"registered": value.registered,
}
);
},
},
{
"label": "Zur Registrierung auffordern",
"procedure": async (get_value, get_representation) => {
const url : string = (
window.location.href.split("#")[0]
+
lib_plankton.zoo_page.encode(
{
"name": "register",
"parameters": {
"id": id,
"verification": "{{verification}}",
}
}
)
);
await _espe.backend.member_summon(id, url);
/*
lib_plankton.zoo_page.set(
{
"name": "index",
"parameters": {},
}
);
*/
alert("Benachrichtigung verschickt");
},
},
]
);
let dom_fragment : DocumentFragment = template_request("view");
(
Promise.all(
[
form.setup(dom_fragment.querySelector(".view-form") as HTMLElement),
_espe.backend.member_get(id),
// _espe.backend.member_info(id),
]
)
.then(
([_, member_object]) => {
form.input_write(
{
"membership_number": member_object.membership_number,
"name_real_value": member_object.name_real_value,
"name_real_index": member_object.name_real_index,
"email_address_private": member_object.email_address_private,
"registered": member_object.registered,
"enabled": member_object.enabled,
"email_use_veiled_address": member_object.email_use_veiled_address,
"email_use_nominal_address": member_object.email_use_nominal_address,
"email_redirect_to_private_address": member_object.email_redirect_to_private_address,
"email_allow_sending": member_object.email_allow_sending,
}
);
}
)
);
target_element.appendChild(dom_fragment);
},
);