68 lines
1.4 KiB
TypeScript
68 lines
1.4 KiB
TypeScript
lib_plankton.zoo_page.register(
|
|
"list",
|
|
(parameters, target_element) => {
|
|
type type_item = {
|
|
id : int;
|
|
preview : {
|
|
membership_number : string;
|
|
name_real_value : string;
|
|
name_real_index : int;
|
|
};
|
|
};
|
|
const term : (null | string) = (parameters["term"] ?? null);
|
|
const search : lib_plankton.zoo_search.type_search<type_item> = lib_plankton.zoo_search.make<type_item>(
|
|
(term) => _espe.backend.member_list(term),
|
|
{
|
|
"encode_item": (item) => lib_plankton.string.coin(
|
|
"{{membership_number}} | {{name}}{{addition}}",
|
|
{
|
|
"membership_number": item.preview.membership_number,
|
|
"name": item.preview.name_real_value,
|
|
"addition": (
|
|
(
|
|
(item.preview.name_real_index === null)
|
|
||
|
|
(item.preview.name_real_index <= 1)
|
|
)
|
|
? ""
|
|
: (" (" + item.preview.name_real_index.toFixed(0) + ")")
|
|
),
|
|
}
|
|
),
|
|
"hooks_begin": [
|
|
(term) => {
|
|
lib_plankton.zoo_page.set(
|
|
{
|
|
"name": "list",
|
|
"parameters": {
|
|
"term": term,
|
|
}
|
|
}
|
|
);
|
|
}
|
|
],
|
|
"hooks_select": [
|
|
(item) => {
|
|
lib_plankton.zoo_page.set(
|
|
{
|
|
"name": "view",
|
|
"parameters": {
|
|
"id": item.id.toFixed(0),
|
|
}
|
|
}
|
|
);
|
|
}
|
|
]
|
|
}
|
|
);
|
|
lib_plankton.zoo_search.render(
|
|
search,
|
|
target_element,
|
|
{
|
|
"state": {
|
|
"term": term,
|
|
}
|
|
}
|
|
);
|
|
}
|
|
);
|