From e37ef9985637a13d5c9c9cd60e4b8837b657384f Mon Sep 17 00:00:00 2001 From: JB Date: Thu, 9 Oct 2025 14:20:36 -0700 Subject: [PATCH] feat: Add speaker mode selection and skip logic for speakers step in the wizard --- abogen/web/static/prepare.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/abogen/web/static/prepare.js b/abogen/web/static/prepare.js index 0296505..1e16171 100644 --- a/abogen/web/static/prepare.js +++ b/abogen/web/static/prepare.js @@ -243,6 +243,7 @@ document.addEventListener("DOMContentLoaded", () => { const prevButtons = Array.from(wizard.querySelectorAll('[data-role="step-prev"]')); const panels = new Map(); const initialStep = wizard.dataset.initialStep || "chapters"; + const speakerModeSelect = form.querySelector("#speaker_mode"); stepOrder.forEach((step) => { const panel = wizard.querySelector(`[data-step-panel="${step}"]`); if (panel) { @@ -259,6 +260,27 @@ document.addEventListener("DOMContentLoaded", () => { } let currentStep = initialStep; + const shouldSkipSpeakersStep = () => { + const modeValue = (speakerModeSelect?.value || "").toLowerCase(); + if (!modeValue) { + return true; + } + return modeValue !== "multi"; + }; + + const submitFinalize = () => { + if (!form.reportValidity()) { + return; + } + if (activeStepInput) { + activeStepInput.value = currentStep; + } + if (finalizeAction) { + form.action = finalizeAction; + } + form.submit(); + }; + const updateIndicator = (activeStep) => { const activeIndex = indicatorOrder.indexOf(activeStep); indicatorSteps.forEach((item) => { @@ -358,6 +380,10 @@ document.addEventListener("DOMContentLoaded", () => { button.addEventListener("click", () => { const target = button.dataset.stepTarget || "speakers"; if (target === "speakers") { + if (shouldSkipSpeakersStep()) { + submitFinalize(); + return; + } submitForAnalysis(); return; }