نظرة عامة على وحدة Timers
كيف تتكامل وحدة Timers: الـ Studio على /id/ والـ Player على /player/ والـ DashboardPanel والـ rundown وجسر Gateway الذي يُبقي كل الواجهات متزامنة.
آخر تحديث
نظرة عامة على وحدة Timers
وحدة Timers هي نواة Timers Studio. هي ما يقوده المُخرج طوال العرض، وما يراه الجمهور — أو المتحدث على المسرح — على الشاشة. تصف هذه الصفحة الأجزاء التي ستراها، وأين تعيش في التطبيق، وكيف تتحاور فيما بينها.
مساران، وحدة واحدة
تُقدَّم الوحدة من عنوانين لنفس معرّف الغرفة.
timers.studio/id/<room>— الـ Studio، واجهة المُخرج. يصيّرهStudioView. يحتوي على الـ rundown والأزرار ومحرّر الرسائل وكل النوافذ (Customize وLinks وShortcuts وExport/Import وActivity logs).timers.studio/player/<room>— الـ Player، مخرج الشاشة. يصيّرهPlayerPage. يعرض مؤقّتًا واحدًا ويتفاعل مع الحالة المدفوعة من الـ Studio في أقل من 100 ميلي ثانية.
يشترك كلا المسارين في نفس قناة Supabase. أي تغيير تقوم به في الـ Studio يصل إلى كل Player مفتوح، وإلى كل واجهة Moderator، وإلى كل مصدر متصفح مضمَّن.
ما تراه داخل الـ Studio
يرتّب الـ Studio ثلاثة أعمدة عمودية على الشاشات العريضة، أو يُكدّسها على الشاشات الأضيق:
- العمود الأيسر — Rundown. يصيّره
RundownList. القائمة المرتبة للمؤقّتات في العرض. اسحب الصفوف لإعادة الترتيب. يعرض كل صف العنوان والمتحدث والنوع (DURATIONأوFINISH_TIMEأوTIME_OF_DAYأوCOUNT_UP) والمدة المخطّطة. - العمود الأوسط — معاينة Player وأزرار التشغيل. مرآة حيّة لما يراه الجمهور، إضافة إلى شريط التحكم: Play وPause وStop وNext وPrevious وأزرار الضبط (
+1mو+30sو-30sو-1m) الموصولة عبرControlPanel. - العمود الأيمن — رسائل وانتركوم. يصيّره
MessageControl. يتقاسم هذا الجزء محرّر الرسائل للمتحدث وقائمة Q&A المباشرة ومحادثة الانتركوم مع المُشرف.
فوق الأعمدة، الـ Header: اسم الغرفة واللغة وزر Customize وShortcuts وExport/Import وLinks وActivity logs وقائمة المستخدم.
الـ rundown
الـ rundown هو القائمة المرتبة للمؤقّتات التي سيمرّ بها العرض. كل عنصر هو TimerItem بنوع type، ومدة durationSec أو targetTime، وعنوان title، ومتحدث speaker، وبيانات وصفية اختيارية (تسمية مقطع، أيقونة متحدث، ملاحظات). يقود الـ rundown الـ Player — فقط العنصر النشط يُصيَّر على الشاشة. تغيير المؤشر الحالي (عبر Next أو Previous أو النقر على صف) يُبدّل كل Player فورًا.
الحالة والتزامن
تُحفظ كل جلسة Studio في Supabase تحت room_state.controller_id. ينشر الـ Studio التغييرات عبر قناة Realtime؛ ويطبّقها الـ Player عبر ساعة مربوطة بالخادم بحيث يرى كل المشاهدين نفس عُشر الثانية مهما كان انحراف ساعتهم المحلية. يعيش الحساب في PlayerPage.tsx (syncElapsedRef وsyncReceivedAtRef).
وحدات مرتبطة
- Agenda —
/agenda/<room>يشتقّ ترتيب المرور من نفس قائمة المؤقّتات. لا يوجد rundown منفصل. - Moderator —
/moderator/<room>يعرض مجموعة فرعية من الأدوات إضافةً إلى شبكة الودجتات (انتركوم، polls، visual pager، ساعة Wharton، Q&A). - Gateway —
/ask/<room>هو الصفحة التي يهبط عليها الجمهور لإرسال الأسئلة أو التصويت. الـ Gateway كذلك هو طبقة النقل لكل تحديث آني.
للمتابعة
- أنشئ أول مؤقّت لك — ثلاث دقائق من الصفر إلى ساعة تسير.
- تشغيل الـ Player والتحكم فيه — فتح واجهة الـ Player وعرضها ملء الشاشة وتضمينها في OBS.
- إرسال رسائل إلى المسرح — بثّ نصوص وفلاش وطبقات ملء الشاشة إلى كل المشاهدين.
- اختصارات لوحة المفاتيح — كل المفاتيح المتاحة في الـ Studio.
- الروابط والصلاحيات — نسخ الروابط الأربعة لكل دور وضبط كلمة سر المُشرف.