From b5a390a6896b2167f6650e56477ec5d602dba49f Mon Sep 17 00:00:00 2001 From: cv <34649812+cpvalente@users.noreply.github.com> Date: Tue, 23 Mar 2021 22:52:58 +0100 Subject: [PATCH] default view temp changes to default view - countdown setup - prepare to create a separate preview window --- src/common/components/countdown/Countdown.jsx | 20 +++++++- src/features/editors/Editor.jsx | 2 +- src/features/viewers/DefaultPresenter.jsx | 50 +++++++++++++------ src/features/viewers/PreviewContainer.jsx | 25 +++++++--- 4 files changed, 72 insertions(+), 25 deletions(-) diff --git a/src/common/components/countdown/Countdown.jsx b/src/common/components/countdown/Countdown.jsx index 728210fad..49ce8fa58 100644 --- a/src/common/components/countdown/Countdown.jsx +++ b/src/common/components/countdown/Countdown.jsx @@ -1,5 +1,21 @@ -import styles from './Countdown.module.css' +import { useEffect, useState } from 'react'; +import styles from './Countdown.module.css'; + +function display(seconds) { + const format = (val) => `0${Math.floor(val)}`.slice(-2); + const hours = seconds / 3600; + const minutes = (seconds % 3600) / 60; + + if (hours < 1) return [minutes, seconds % 60].map(format).join(':'); + else return [hours, minutes, seconds % 60].map(format).join(':'); +} export default function Countdown({ time }) { - return
{time}
; + const [counter, setCounter] = useState(time); + + useEffect(() => { + counter > 0 && setTimeout(() => setCounter(counter - 1), 1000); + }, [counter]); + + return
{display(counter)}
; } diff --git a/src/features/editors/Editor.jsx b/src/features/editors/Editor.jsx index 207e175b2..e99f64dfa 100644 --- a/src/features/editors/Editor.jsx +++ b/src/features/editors/Editor.jsx @@ -78,7 +78,7 @@ export default function Editor() { List Events
- +
diff --git a/src/features/viewers/DefaultPresenter.jsx b/src/features/viewers/DefaultPresenter.jsx index ae0c91799..a32b06b23 100644 --- a/src/features/viewers/DefaultPresenter.jsx +++ b/src/features/viewers/DefaultPresenter.jsx @@ -1,33 +1,55 @@ -import { format } from 'date-fns'; -import { useState } from 'react'; +import { differenceInSeconds, format, subMinutes } from 'date-fns'; +import addMinutes from 'date-fns/addMinutes'; import { sampleData } from '../../app/sampleData'; import Countdown from '../../common/components/countdown/Countdown'; import MyProgressBar from '../../common/components/myProgressBar/MyProgressBar'; import SmallTimer from '../../common/components/smallTimer/SmallTimer'; import './viewers.css'; -export default function DefaultPresenter() { - const [data, setData] = useState(sampleData); - const [timer, setTimer] = useState(sampleData.timerDuration); - const [elapsed, setElapsed] = useState(0); +export default function DefaultPresenter(props) { + const data = sampleData; + const now = new Date(); + const values = props.data ?? { + title: 'Presentation Title', + subtitle: 'Presentation Subtitle', + presenter: 'Presenter Name', + timerDuration: 10, + timeStart: now, + timeEnd: now, + }; - const timeNow = new Date(); + // NITE: test only + const clockStarted = addMinutes(now, 6); + + const timer = differenceInSeconds( + now, + subMinutes(clockStarted, values.timerDuration) + ); + + const timeStart = format(values.timeStart, 'HH:mm'); + const currentTime = format(now, 'HH:mm'); + const timeEnd = format(values.timeEnd, 'HH:mm'); + const elapsed = timer / (values.timerDuration * 60); + + console.log('timers', timer, timeStart, currentTime, timeEnd, elapsed); + + if (props?.preview) return
Preview
; return (
-
{data.title}
-
{data.subtitle}
- - {!data.message.active && } +
{values.title}
+
{values.subtitle}
+ + {!data.message.active && }
{data.message.text}
- - - + + +
); diff --git a/src/features/viewers/PreviewContainer.jsx b/src/features/viewers/PreviewContainer.jsx index c5f5657c2..d2dda4aac 100644 --- a/src/features/viewers/PreviewContainer.jsx +++ b/src/features/viewers/PreviewContainer.jsx @@ -1,18 +1,27 @@ import DefaultPresenter from './DefaultPresenter'; import styles from './PreviewContainer.module.css'; -export default function PreviewContainer() { +export default function PreviewContainer(props) { return (
- -
- {/* */} +
+
+ +
+
Default Presenter
-
Default Presenter
- -
+
+
+
Audience
+
+
+
+
Stage Manager
+
+
+
+
Lower third
-
Audience
); }