Verfahrensablauf: re-surface hidden optional events — add 'show hidden' toggle #122
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
m's report (2026-05-26 09:26)
Scope
atlas's #96 Slice A added per-card 'skip optional' choices (stored in
paliad.project_event_choices). Once an optional card is skipped, there's no obvious way to un-skip — the card is gone from the timeline.Fix: add a 'show hidden' toggle on the Verfahrensablauf page. When toggled ON, all skipped-optional cards render again with a visual indicator that they're hidden (e.g. faded background + a small 'wieder einblenden' chip on each).
What to do
Hidden=trueflag.?show_hidden=1so the state survives reload + is shareable.Files most likely touched
frontend/src/client/verfahrensablauf.ts— toggle UI + URL statefrontend/src/client/views/verfahrensablauf-core.ts— render hidden cards conditionallyfrontend/src/client/views/event-card-choices.ts(atlas's #96 module) — 're-surface' buttonfrontend/src/styles/global.css— faded-hidden stylinginternal/services/projection_service.go— include-hidden flag in the projection callfrontend/src/client/i18n.ts+frontend/src/i18n-keys.tsHard rules
go build ./... && go test ./internal/... && cd frontend && bun run buildclean.mai/<worker>/resurface-hidden-optionals.Out of scope
Reporting
mai report completedwith branch + SHAs + UX path: open a project where you previously hid an optional event → toggle 'Ausgeblendete anzeigen' → confirm the hidden card re-appears faded → click 'Wieder einblenden' → confirm card returns to normal opacity + skip choice cleared from DB.Shipped on
mai/artemis/gitster-re-surface@80883ea.What landed
Backend (
internal/services/fristenrechner.go+internal/handlers/fristenrechner.go)CalcOptions.IncludeHidden bool(defaultfalse). Whentrue, the rule loop no longer dropsskipRulesentries: it marks the resultingUIDeadline.IsHidden=trueand bypasses descendant cascade-suppression (so children compute their dates off the un-suppressed parent, exactly as if the user had never hidden it). Defaultfalsepreserves atlas's #96 skip semantic.UIDeadline.IsHidden+UIResponse.HiddenCounton the wire (camelCase JSON,omitemptyon the bool).HiddenCountis independent of the toggle — it always counts gate-passed rules whosesubmission_codeis inskipRules, so the badge stays accurate even when the toggle is OFF.POST /api/tools/fristenrechneracceptsincludeHidden: trueon the body.Frontend
frontend/src/client/verfahrensablauf.ts—showHiddenstate hydrated from?show_hidden=1, written back on toggle change, passed asincludeHiddentocalculateDeadlines. Recalc on flip (response shape changes; can't reuselastResponse). NewsyncHiddenBadge(n)updates the badge after every calc and hides the whole row whencount == 0.frontend/src/client/views/verfahrensablauf-core.ts—CalculatedDeadline.isHidden?+DeadlineResponse.hiddenCount?+CalcParams.includeHidden?in TS types.deadlineCardHtmlemits a<button class="event-card-choices-unhide" data-submission-code=…>Wieder einblenden</button>whenisHidden && code !== "".renderTimelineBody/renderColumnsBodywrap items withtimeline-item--hidden/fr-col-item--hiddenso the fade is consistent across both views.frontend/src/client/views/event-card-choices.ts— new delegated click handler on.event-card-choices-unhidecallsstate.opts.remove(code, "skip")thenreseedChips(). The page's existingremovecallback already triggers a recalc, so the un-hide chip works on both/tools/verfahrensablauf(URL state) and any future project-bound consumer (server persistence).frontend/src/verfahrensablauf.tsx— new row#show-hidden-rowinside.verfahrensablauf-perspective, hidden by default; the client reveals it wheneverhiddenCount > 0. Badge textAusgeblendete (3)lives in a#show-hidden-countspan.frontend/src/styles/global.css—.timeline-item--hidden .timeline-contentand.fr-col-item--hidden:opacity: 0.55+1px dotted border+ rounded corners..event-card-choices-unhideis a lime-accent chip withopacity: 1so it stays high-contrast against the faded parent..show-hidden-countis the muted badge text.choices.show_hidden.label("Ausgeblendete anzeigen" / "Show hidden"),choices.show_hidden.count("Ausgeblendete ({n})" / "Hidden ({n})"),choices.unhide.chip("Wieder einblenden" / "Show again").Hard-rules compliance
DELETEonpaliad.project_event_choicesvia the existingEventChoiceService.Deletepath (URL-state on the unbound surface; sameremovecallback regardless).go build ./... && go test ./internal/...clean.bun test src/— 172 pass / 0 fail (3 new cases pin the unhide-chip contract).bun run buildclean — 2903 i18n keys, no data-i18n leaks, IIFE-prologue intact.mai/artemis/gitster-re-surface.UX path (manual smoke pending)
/tools/verfahrensablauf(no project).?event_choices=…:skip=true.Ausgeblendete (1).?show_hidden=1.event_choices, badge count drops.Project-bound
/tools/fristenrechneris unaffected (no toggle added there per the issue scope: "on the Verfahrensablauf page"). The sharedverfahrensablauf-core.tsmodule stays a no-op for it becauseincludeHiddendefaults toundefined.Commit: https://mgit.msbls.de/m/paliad/commit/80883ea