diff --git a/site/src/pages/tools/fcc-compliance-check.astro b/site/src/pages/tools/fcc-compliance-check.astro index 532b7aa..b79acac 100644 --- a/site/src/pages/tools/fcc-compliance-check.astro +++ b/site/src/pages/tools/fcc-compliance-check.astro @@ -572,13 +572,13 @@ import Base from "../../layouts/Base.astro"; `; } - // BDC special + // BDC special — two-step: voice? then broadband? if (check.id === "bdc_filing" && status === "unknown") { - inner += `
-

Does ${eName} provide broadband internet access?

+ inner += `
+

Does ${eName} offer retail voice service (VoIP, CLEC, or wireline) to end users?

- - + +
`; } @@ -586,42 +586,60 @@ import Base from "../../layouts/Base.astro"; inner += `
`; card.innerHTML = inner; - // BDC button handlers + // BDC button handlers — two-step: voice then broadband if (check.id === "bdc_filing" && status === "unknown") { - function setBdcStatus(newStatus) { - check.status = newStatus; - const c = colorMap[newStatus]; - card.className = `${c.bg} ${c.border} border rounded-xl p-4 flex items-start gap-3`; - if (newStatus === "yellow") { - card.innerHTML = `
${icons.yellow}
-
-

${check.label || check.id}

-

BDC filing required — you provide broadband service.

- -
`; - } else if (newStatus === "green") { - card.innerHTML = `
${icons.green}
-
-

${check.label || check.id}

-

Not applicable — no broadband service.

- -
`; + let bdcHasVoice = false; + + function askBroadband() { + const qDiv = card.querySelector(".bdc-questions"); + if (!qDiv) return; + const c2 = colorMap.unknown; + qDiv.innerHTML = ` + ${bdcHasVoice ? '✓ Retail voice' : ''} +

Does ${eName} provide broadband internet access (resale or facilities-based)?

+
+ + +
`; + qDiv.querySelector(".bdc-bb-yes")?.addEventListener("click", () => finalizeBdc(true)); + qDiv.querySelector(".bdc-bb-no")?.addEventListener("click", () => finalizeBdc(false)); + } + + function finalizeBdc(hasBroadband) { + let newStatus, detail; + if (hasBroadband && bdcHasVoice) { + newStatus = "red"; detail = "Broadband + retail voice: both BDC Broadband and BDC Voice filings required. Filed semi-annually June 1 and December 1."; + } else if (hasBroadband) { + newStatus = "yellow"; detail = "BDC Broadband Deployment filing required. Filed semi-annually June 1 and December 1."; + } else if (bdcHasVoice) { + newStatus = "yellow"; detail = "BDC Voice Subscription filing required (formerly Form 477 Voice). Filed semi-annually June 1 and December 1."; + } else { + newStatus = "green"; detail = "Not applicable — no retail voice or broadband service."; } - // Undo button re-renders the original card with Yes/No + check.status = newStatus; + const c3 = colorMap[newStatus]; + card.className = `${c3.bg} ${c3.border} border rounded-xl p-4 flex items-start gap-3`; + card.innerHTML = `
${icons[newStatus]}
+
+

${check.label || check.id}

+

${detail}

+ +
`; card.querySelector(".bdc-undo")?.addEventListener("click", () => { check.status = "unknown"; + bdcHasVoice = false; const cu = colorMap.unknown; card.className = `${cu.bg} ${cu.border} border rounded-xl p-4 flex items-start gap-3`; card.innerHTML = inner; - // Re-attach Yes/No handlers - card.querySelector(".bdc-yes")?.addEventListener("click", () => setBdcStatus("yellow")); - card.querySelector(".bdc-no")?.addEventListener("click", () => setBdcStatus("green")); + card.querySelector(".bdc-voice-yes")?.addEventListener("click", () => { bdcHasVoice = true; askBroadband(); }); + card.querySelector(".bdc-voice-no")?.addEventListener("click", () => { bdcHasVoice = false; askBroadband(); }); renderCta(lastData); }); renderCta(lastData); } - card.querySelector(".bdc-yes")?.addEventListener("click", () => setBdcStatus("yellow")); - card.querySelector(".bdc-no")?.addEventListener("click", () => setBdcStatus("green")); + + card.querySelector(".bdc-voice-yes")?.addEventListener("click", () => { bdcHasVoice = true; askBroadband(); }); + card.querySelector(".bdc-voice-no")?.addEventListener("click", () => { bdcHasVoice = false; askBroadband(); }); } // RMD button handlers