Skip to content

نظرة عامة على وحدة 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 كذلك هو طبقة النقل لكل تحديث آني.

للمتابعة