feat(flomni): show the active at_each_angle hook on the status webpage

TQ_PARAM_DISPLAY (the queue job detail table) and _CURRENT_PARAM_KEYS
(the live 'Current measurement' section) are both hardcoded mirrors of
which tomo params to render -- at_each_angle_hook wasn't in either, so
a hook-driven job wouldn't crash the page but also wouldn't show that
anything non-standard was running. Adds at_each_angle_hook to
_CURRENT_PARAM_KEYS (Python side, gates inclusion in the JSON payload
on the value actually being set) and a conditional row in
buildParamRows() (JS side, only rendered when the value is present --
deliberately left out of TQ_PARAM_DISPLAY so a normal job doesn't grow
a "-" row nobody needs). Sim-validated: current_params includes
at_each_angle_hook when set and omits it when not.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
x01dc
2026-07-13 21:24:52 +02:00
co-authored by Claude Sonnet 5
parent 26e5466982
commit 08e1122230
@@ -1485,6 +1485,7 @@ class FlomniWebpageGenerator(WebpageGeneratorBase):
"frames_per_trigger",
"single_point_instead_of_fermat_scan",
"ptycho_reconstruct_foldername",
"at_each_angle_hook",
]
# label -> dotpath under device_manager.devices
@@ -2865,6 +2866,12 @@ function buildParamRows(params){{
if(nproj!=null) rows+='<tr><td>Projections</td><td>'+nproj+'</td></tr>';
}}
}});
// Only shown when actually set -- not in TQ_PARAM_DISPLAY since every
// normal job would otherwise show a "-" row nobody needs to see; this one
// is worth surfacing precisely because it's not the default.
if(params.at_each_angle_hook){{
rows+='<tr><td>At-each-angle hook</td><td>'+esc(fmtTqParam('at_each_angle_hook',params.at_each_angle_hook))+'</td></tr>';
}}
return rows;
}}