/* ============================================================ ZENITH — Admin · Streams & subjects console Prepopulated official A/L catalog; admin toggles which streams (and which subjects within each stream) are offered at signup. Effective availability = stream ON AND subject ON. ============================================================ */ function StreamToggle({ on, disabled, onChange }) { return ( ); } function AdminStreams() { const { lang } = useApp(); const T = (en, si) => tx(lang, en, si); const [streams, setStreams] = useState((window.ZDATA.admin && window.ZDATA.admin.streams) || []); const [busy, setBusy] = useState(null); // "code" or "code/subject" while a toggle is in flight const apply = block => { setStreams(block); if (window.ZDATA.admin) window.ZDATA.admin.streams = block; }; const flipStream = async st => { if (busy) return; setBusy(st.code); try { apply((await window.ZAPI.toggleStream(st.code, !st.enabled)).streams); } catch (e) { console.error("toggleStream failed", e); } setBusy(null); }; const flipSubject = async (st, sub) => { if (busy) return; setBusy(st.code + "/" + sub.code); try { apply((await window.ZAPI.toggleStreamSubject(st.code, sub.code, !sub.enabled)).streams); } catch (e) { console.error("toggleStreamSubject failed", e); } setBusy(null); }; const enabledStreams = streams.filter(s => s.enabled).length; return (
{/* header strip */}

{T("A/L streams offered on the platform", "වේදිකාවේ පිරිනමන උ.පෙ විෂය ධාරා")}

{T("Students can only register under an enabled stream, and pick 3 subjects from its enabled list.", "සිසුන්ට ලියාපදිංචි විය හැක්කේ සක්‍රීය ධාරාවක් යටතේ පමණි; එහි සක්‍රීය ලැයිස්තුවෙන් විෂයයන් 3ක් තෝරාගත යුතුය.")}

0 ? "green" : "red"} icon="graduation-cap"> {enabledStreams} / {streams.length} {T("streams enabled", "ධාරා සක්‍රීයයි")}
{/* one card per stream */}
{streams.map(st => { const enabledSubs = st.subjects.filter(s => s.enabled).length; const short = st.enabled && enabledSubs < 3; // signup needs 3 picks return (
{T(st.name, st.nameSi || st.name)}
{st.studentCount > 0 ? st.studentCount + " " + T("registered students", "ලියාපදිංචි සිසුන්") : T("No registered students yet", "තවම ලියාපදිංචි සිසුන් නැත")}
flipStream(st)} />
{short && (
{T("Fewer than 3 subjects enabled — students cannot register for this stream.", "සක්‍රීය විෂයයන් 3කට අඩුයි — සිසුන්ට මෙම ධාරාවට ලියාපදිංචි විය නොහැක.")}
)}
{st.subjects.map(sub => (
{T(sub.name, sub.nameSi || sub.name)} flipSubject(st, sub)} />
))}
{enabledSubs} / {st.subjects.length} {T("subjects enabled", "විෂයයන් සක්‍රීයයි")}
); })}
); } Object.assign(window, { AdminStreams });