From e4b712593d55cc9491e29c612af4146fb50681a6 Mon Sep 17 00:00:00 2001 From: cv <34649812+cpvalente@users.noreply.github.com> Date: Thu, 28 Oct 2021 17:47:03 +0200 Subject: [PATCH 1/5] fix: roll active with upcoming event fixed an bug where the next event index 0 was treated as no event found --- server/src/classes/EventTimer.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/server/src/classes/EventTimer.js b/server/src/classes/EventTimer.js index 413848959..020872e53 100644 --- a/server/src/classes/EventTimer.js +++ b/server/src/classes/EventTimer.js @@ -988,16 +988,16 @@ export class EventTimer extends Timer { } // nothing to play next, unload - if (!foundNow && !nextIndex) { + if (foundNow == null && nextIndex == null) { this.unload(); return; } - if (nextIndex) { + if (nextIndex != null) { // load titles this._loadThisTitles(nextIndex, 'next'); - if (!foundNow) { + if (foundNow == null) { // timer counts to nextStart this.secondaryTimer = nextStart; } From 6648586c268d61a94931f106f4ecacd539b97c0a Mon Sep 17 00:00:00 2001 From: cv <34649812+cpvalente@users.noreply.github.com> Date: Fri, 29 Oct 2021 12:56:52 +0200 Subject: [PATCH 2/5] style: improve visibility of roll mode - display message when waiting - add tooltips - block non necessary buttons when rolling --- .../src/features/control/PlaybackButtons.jsx | 14 +++++-- .../src/features/control/PlaybackControl.jsx | 2 + .../control/PlaybackControl.module.css | 5 +++ client/src/features/control/PlaybackTimer.jsx | 40 ++++++++++++++----- 4 files changed, 47 insertions(+), 14 deletions(-) diff --git a/client/src/features/control/PlaybackButtons.jsx b/client/src/features/control/PlaybackButtons.jsx index 5e74204d8..081795df7 100644 --- a/client/src/features/control/PlaybackButtons.jsx +++ b/client/src/features/control/PlaybackButtons.jsx @@ -30,17 +30,24 @@ const Playback = ({ playback, selectedId, playbackControl }) => { /> playbackControl('roll')} /> ); }; -const Transport = ({ selectedId, playbackControl }) => { +const Transport = ({ playback, selectedId, playbackControl }) => { return (
- playbackControl('previous')} /> - playbackControl('next')} /> + playbackControl('previous')} + disabled={playback === 'roll'} + /> + playbackControl('next')} + disabled={playback === 'roll'} + /> playbackControl('reload')} disabled={!selectedId} @@ -60,6 +67,7 @@ const PlaybackButtons = (props) => { playbackControl={props.playbackControl} /> diff --git a/client/src/features/control/PlaybackControl.jsx b/client/src/features/control/PlaybackControl.jsx index af1201774..996e9f99a 100644 --- a/client/src/features/control/PlaybackControl.jsx +++ b/client/src/features/control/PlaybackControl.jsx @@ -12,6 +12,7 @@ export default function PlaybackControl() { running: null, startedAt: null, expectedFinish: null, + secondary: null, }); const [selectedId, setSelectedId] = useState(null); @@ -20,6 +21,7 @@ export default function PlaybackControl() { running: null, startedAt: null, expectedFinish: null, + secondary: null, }); }; diff --git a/client/src/features/control/PlaybackControl.module.css b/client/src/features/control/PlaybackControl.module.css index 69d1fca51..65838edd6 100644 --- a/client/src/features/control/PlaybackControl.module.css +++ b/client/src/features/control/PlaybackControl.module.css @@ -105,6 +105,11 @@ font-size: 0.9em; } +.rolltag { + color: #2b6cb0; + font-size: 0.9em; +} + .playbackContainer { display: flex; justify-content: space-evenly; diff --git a/client/src/features/control/PlaybackTimer.jsx b/client/src/features/control/PlaybackTimer.jsx index 037f8b5cc..4b44332a8 100644 --- a/client/src/features/control/PlaybackTimer.jsx +++ b/client/src/features/control/PlaybackTimer.jsx @@ -1,6 +1,7 @@ import style from './PlaybackControl.module.css'; import Countdown from 'common/components/countdown/Countdown'; import { stringFromMillis } from 'common/dateConfig'; +import { Tooltip } from '@chakra-ui/react'; import { Button } from '@chakra-ui/button'; import { memo } from 'react'; @@ -9,7 +10,8 @@ const areEqual = (prevProps, nextProps) => { prevProps.timer.running === nextProps.timer.running && prevProps.timer.expectedFinish === nextProps.timer.expectedFinish && prevProps.timer.startedAt === nextProps.timer.startedAt && - prevProps.playback === nextProps.playback + prevProps.playback === nextProps.playback && + prevProps.timer.secondary === nextProps.timer.secondary ); }; @@ -19,6 +21,7 @@ const PlaybackTimer = (props) => { const finish = stringFromMillis(timer.expectedFinish, true); const isNegative = timer.running < 0; const isRolling = playback === 'roll'; + const isWaiting = timer.secondary > 0 && timer.running == null; const incrementProps = { size: 'sm', @@ -32,23 +35,38 @@ const PlaybackTimer = (props) => { <>
-
+ +
+
- -
-
- Started at - {started} -
-
- Finish at - {finish} +
+ {isWaiting ? ( +
+ Roll: Countdown to start + {''} +
+ ) : ( + <> +
+ Started at + {started} +
+
+ Finish at + {finish} +
+ + )}