69 lines
1.4 KiB
TypeScript
69 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,
|
||
|
}
|
||
|
}
|
||
|
);
|
||
|
}
|
||
|
);
|