diff --git a/client/src/features/control/PlaybackControl.jsx b/client/src/features/control/PlaybackControl.jsx index 6dfb30d56..aa6af46f3 100644 --- a/client/src/features/control/PlaybackControl.jsx +++ b/client/src/features/control/PlaybackControl.jsx @@ -8,6 +8,9 @@ import { FiSkipForward, FiClock, } from 'react-icons/fi'; +import { format } from 'date-fns'; +import { timeFormatSeconds } from '../../common/dateConfig'; +import { useState } from 'react'; // BUTTON DEFINITION const defProps = { @@ -18,22 +21,68 @@ const defProps = { const size = { width: 90, }; + export default function PlaybackControl(props) { - const { time, roll } = props; + const { timer, roll } = props; + const { playback } = useState(props.playback); + + const playbackControl = async (action, payload) => { + switch (action) { + case 'play': { + const pb = await fetch('http://localhost:4001/play').then((res) => + console.log(res) + ); + break; + } + case 'pause': { + const pb = await fetch('http://localhost:4001/pause').then((res) => + console.log(res) + ); + break; + } + case 'roll': { + const pb = await fetch('http://localhost:4001/roll').then((res) => + console.log(res) + ); + break; + } + case 'previous': { + const pb = await fetch('http://localhost:4001/previous').then((res) => + console.log(res) + ); + break; + } + case 'next': { + const pb = await fetch('http://localhost:4001/next').then((res) => + console.log(res) + ); + break; + } + default: + break; + } + }; + + const started = timer.started + ? format(timer.started, timeFormatSeconds) + : '...'; + const finish = timer.started + ? format(timer.finish, timeFormatSeconds) + : '...'; return (
- +
Started at - 12:01 + {started}
Finish at - 13:01 + {finish}
@@ -42,31 +91,31 @@ export default function PlaybackControl(props) { {...size} icon={} colorScheme='green' - onClick={() => props.playbackControl('play')} + onClick={() => playbackControl('play')} /> } colorScheme='orange' - onClick={() => props.playbackControl('pause')} + onClick={() => playbackControl('pause')} /> } - onClick={() => props.playbackControl('previous')} + onClick={() => playbackControl('previous')} /> } - onClick={() => props.playbackControl('next')} + onClick={() => playbackControl('next')} /> } colorScheme='blue' - onClick={() => props.playbackControl('roll')} + onClick={() => playbackControl('roll')} />
diff --git a/client/src/features/editors/Editor.jsx b/client/src/features/editors/Editor.jsx index b6938c931..8d9432fd9 100644 --- a/client/src/features/editors/Editor.jsx +++ b/client/src/features/editors/Editor.jsx @@ -2,8 +2,6 @@ import { IconButton } from '@chakra-ui/button'; import { SettingsIcon } from '@chakra-ui/icons'; import { Grid, GridItem, Heading } from '@chakra-ui/layout'; import { Box } from '@chakra-ui/layout'; -import { addSeconds, getHours, getMinutes, getSeconds } from 'date-fns'; -import { differenceInSeconds } from 'date-fns/esm'; import { useContext } from 'react'; import { useEffect, useState } from 'react'; import { EventContext } from '../../app/context/eventContext'; @@ -19,6 +17,7 @@ import { io } from 'socket.io-client'; export default function Editor() { const [formMode, setFormMode] = useState(null); const [events] = useContext(EventListContext); + const [webEvents, setWebEvents] = useState(null); const [event, setEvent] = useContext(EventContext); const [playback, setPlayback] = useState({ current: null, @@ -28,10 +27,18 @@ export default function Editor() { state: 'pause', prevState: 'pause', }); - const updatePlayback = (vals) => { setPlayback({ ...playback, ...vals }); }; + const [timer, setTimer] = useState({ + current: null, + duration: null, + started: null, + finished: null, + }); + const updateTimer = (vals) => { + setTimer({ ...timer, ...vals }); + }; // WEBSOCKETZ useEffect(() => { @@ -39,94 +46,23 @@ export default function Editor() { const socket = io('http://localhost:4001', { transport: ['websocket'] }); console.log('websocket started'); - socket.on('timerSeconds', (data) => { + // Handle timer + socket.on('timer', (data) => { console.log('got time', data); - updatePlayback({ currentTimer: data }); + updateTimer(data); }); + // Handle events socket.on('eventdata', (data) => { console.log('got eventdata', data); + setWebEvents(data); }); return () => socket.disconnect(); }, []); - // timer playback control - const setTimerState = (state) => { - switch (state) { - case 'play': { - break; - } - case 'pause': { - break; - } - - default: - break; - } - }; - - const playbackControl = (action, payload) => { - switch (action) { - case 'play': { - if (playback.state !== 'play') { - updatePlayback({ state: 'play', prevState: playback.state }); - setTimerState('play'); - } - break; - } - case 'pause': { - if (playback.state !== 'pause') { - updatePlayback({ state: 'pause', prevState: playback.state }); - setTimerState('pause'); - } - break; - } - case 'roll': { - if (playback.state === 'roll' && playback.prevState !== 'roll') { - updatePlayback({ state: playback.prevState, prevState: 'roll' }); - } else { - updatePlayback({ state: 'roll', prevState: playback.state }); - } - break; - } - case 'previous': { - if (playback.numEvents !== null) { - let cur = null, - nxt = null; - if (playback.current === null || playback.current === 0) { - cur = 0; - } else { - cur = playback.current - 1; - } - if (playback.numEvents > 1) nxt = cur + 1; - if (nxt > playback.numEvents) nxt = playback.numEvents; - // update playback - updatePlayback({ current: cur, next: nxt }); - } - break; - } - case 'next': { - if (playback.numEvents !== null) { - let cur = null, - nxt = null; - if (playback.current === null) { - cur = 0; - } else { - cur = playback.next; - } - if (playback.numEvents > 1) nxt = cur + 1; - if (nxt >= playback.numEvents) nxt = playback.numEvents - 1; - updatePlayback({ current: cur, next: nxt }); - } - break; - } - default: - break; - } - }; - console.log('playback here', playback); + console.log('events here', webEvents); return (