mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-22 15:39:11 +00:00
send data to component
- title data - added note to title data - add total events info into socket
This commit is contained in:
@@ -1,15 +1,76 @@
|
|||||||
|
import { useEffect } from 'react';
|
||||||
|
import { useSocket } from 'app/context/socketContext';
|
||||||
import style from './Info.module.css';
|
import style from './Info.module.css';
|
||||||
import InfoTitle from './InfoTitle';
|
import InfoTitle from './InfoTitle';
|
||||||
import InfoLogger from './InfoLogger';
|
import InfoLogger from './InfoLogger';
|
||||||
|
import { useState } from 'react';
|
||||||
|
|
||||||
export default function Info() {
|
export default function Info() {
|
||||||
const data = {};
|
const socket = useSocket();
|
||||||
|
const [titles, setTitles] = useState({
|
||||||
|
titleNow: '',
|
||||||
|
subtitleNow: '',
|
||||||
|
presenterNow: '',
|
||||||
|
noteNow: '',
|
||||||
|
titleNext: '',
|
||||||
|
subtitleNext: '',
|
||||||
|
presenterNext: '',
|
||||||
|
noteNext: '',
|
||||||
|
});
|
||||||
|
const [selected, setSelected] = useState('-/-');
|
||||||
const logData = [];
|
const logData = [];
|
||||||
|
|
||||||
|
// handle incoming messages
|
||||||
|
useEffect(() => {
|
||||||
|
if (socket == null) return;
|
||||||
|
|
||||||
|
// Ask for titles
|
||||||
|
socket.emit('get-titles');
|
||||||
|
|
||||||
|
// Handle titles
|
||||||
|
socket.on('titles', (data) => {
|
||||||
|
setTitles(data);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Ask for selection data
|
||||||
|
socket.emit('get-selected');
|
||||||
|
|
||||||
|
// Handle selection data
|
||||||
|
socket.on('selected', (data) => {
|
||||||
|
const formatedCurrent = `${data.index != null ? data.index + 1 : '-'}/${
|
||||||
|
data.total != null ? data.total : '-'
|
||||||
|
}`;
|
||||||
|
|
||||||
|
setSelected(formatedCurrent);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Clear listener
|
||||||
|
return () => {
|
||||||
|
socket.off('titles');
|
||||||
|
socket.off('selected');
|
||||||
|
};
|
||||||
|
}, [socket]);
|
||||||
|
|
||||||
|
// prepare data
|
||||||
|
const titlesNow = {
|
||||||
|
title: titles.titleNow,
|
||||||
|
subtitle: titles.subtitleNow,
|
||||||
|
presenter: titles.presenterNow,
|
||||||
|
note: titles.noteNow,
|
||||||
|
};
|
||||||
|
|
||||||
|
const titlesNext = {
|
||||||
|
title: titles.titleNext,
|
||||||
|
subtitle: titles.subtitleNext,
|
||||||
|
presenter: titles.presenterNext,
|
||||||
|
note: titles.noteNext,
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className={style.main}>Event 1/31</div>
|
<div className={style.main}>{`Event ${selected}`}</div>
|
||||||
<InfoTitle title={'Now'} data={data} />
|
<InfoTitle title={'Now'} data={titlesNow} />
|
||||||
<InfoTitle title={'Next'} data={data} />
|
<InfoTitle title={'Next'} data={titlesNext} />
|
||||||
<InfoLogger logData={logData} />
|
<InfoLogger logData={logData} />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -17,16 +17,20 @@ export default function InfoTitle(props) {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<span className={style.label}>Title: </span>Demo title
|
<span className={style.label}>Title: </span>
|
||||||
|
{data.title}
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span className={style.label}>Subtitle: </span>Demo Subtitle
|
<span className={style.label}>Subtitle: </span>
|
||||||
|
{data.subtitle}
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span className={style.label}>Presenter: </span>Demo Presenter Name
|
<span className={style.label}>Presenter: </span>
|
||||||
|
{data.presenter}
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span className={style.label}>Notes: </span>Demo Notes
|
<span className={style.label}>Notes: </span>
|
||||||
|
{data.note}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -44,9 +44,11 @@ export class EventTimer extends Timer {
|
|||||||
titleNow: null,
|
titleNow: null,
|
||||||
subtitleNow: null,
|
subtitleNow: null,
|
||||||
presenterNow: null,
|
presenterNow: null,
|
||||||
|
noteNow: null,
|
||||||
titleNext: null,
|
titleNext: null,
|
||||||
subtitleNext: null,
|
subtitleNext: null,
|
||||||
presenterNext: null,
|
presenterNext: null,
|
||||||
|
noteNext: null,
|
||||||
};
|
};
|
||||||
|
|
||||||
selectedEventIndex = null;
|
selectedEventIndex = null;
|
||||||
@@ -93,6 +95,7 @@ export class EventTimer extends Timer {
|
|||||||
this.io.emit('selected', {
|
this.io.emit('selected', {
|
||||||
id: this.selectedEventId,
|
id: this.selectedEventId,
|
||||||
index: this.selectedEventIndex,
|
index: this.selectedEventIndex,
|
||||||
|
total: this.numEvents,
|
||||||
});
|
});
|
||||||
this.io.emit('selected-id', this.selectedEventId);
|
this.io.emit('selected-id', this.selectedEventId);
|
||||||
this.io.emit('next-id', this.nextEventId);
|
this.io.emit('next-id', this.nextEventId);
|
||||||
@@ -289,6 +292,7 @@ export class EventTimer extends Timer {
|
|||||||
socket.emit('selected', {
|
socket.emit('selected', {
|
||||||
id: this.selectedEventId,
|
id: this.selectedEventId,
|
||||||
index: this.selectedEventIndex,
|
index: this.selectedEventIndex,
|
||||||
|
total: this.numEvents,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -588,6 +592,7 @@ export class EventTimer extends Timer {
|
|||||||
this.titles.titleNow = e.title;
|
this.titles.titleNow = e.title;
|
||||||
this.titles.subtitleNow = e.subtitle;
|
this.titles.subtitleNow = e.subtitle;
|
||||||
this.titles.presenterNow = e.presenter;
|
this.titles.presenterNow = e.presenter;
|
||||||
|
this.titles.noteNow = e.note;
|
||||||
this.selectedEventId = e.id;
|
this.selectedEventId = e.id;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@@ -601,6 +606,7 @@ export class EventTimer extends Timer {
|
|||||||
this.titles.titleNow = e.title;
|
this.titles.titleNow = e.title;
|
||||||
this.titles.subtitleNow = e.subtitle;
|
this.titles.subtitleNow = e.subtitle;
|
||||||
this.titles.presenterNow = e.presenter;
|
this.titles.presenterNow = e.presenter;
|
||||||
|
this.titles.noteNow = e.note;
|
||||||
this.selectedEventId = e.id;
|
this.selectedEventId = e.id;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -616,6 +622,7 @@ export class EventTimer extends Timer {
|
|||||||
this.titles.titleNext = e.title;
|
this.titles.titleNext = e.title;
|
||||||
this.titles.subtitleNext = e.subtitle;
|
this.titles.subtitleNext = e.subtitle;
|
||||||
this.titles.presenterNext = e.presenter;
|
this.titles.presenterNext = e.presenter;
|
||||||
|
this.titles.noteNext = e.note;
|
||||||
this.nextEventId = e.id;
|
this.nextEventId = e.id;
|
||||||
break;
|
break;
|
||||||
case 'next-public':
|
case 'next-public':
|
||||||
@@ -628,6 +635,7 @@ export class EventTimer extends Timer {
|
|||||||
this.titles.titleNext = e.title;
|
this.titles.titleNext = e.title;
|
||||||
this.titles.subtitleNext = e.subtitle;
|
this.titles.subtitleNext = e.subtitle;
|
||||||
this.titles.presenterNext = e.presenter;
|
this.titles.presenterNext = e.presenter;
|
||||||
|
this.titles.noteNext = e.note;
|
||||||
this.nextEventId = e.id;
|
this.nextEventId = e.id;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -644,6 +652,7 @@ export class EventTimer extends Timer {
|
|||||||
this.titles.titleNext = null;
|
this.titles.titleNext = null;
|
||||||
this.titles.subtitleNext = null;
|
this.titles.subtitleNext = null;
|
||||||
this.titles.presenterNext = null;
|
this.titles.presenterNext = null;
|
||||||
|
this.titles.noteNext = null;
|
||||||
this.nextEventId = null;
|
this.nextEventId = null;
|
||||||
|
|
||||||
this.titlesPublic.titleNext = null;
|
this.titlesPublic.titleNext = null;
|
||||||
@@ -682,9 +691,11 @@ export class EventTimer extends Timer {
|
|||||||
titleNow: null,
|
titleNow: null,
|
||||||
subtitleNow: null,
|
subtitleNow: null,
|
||||||
presenterNow: null,
|
presenterNow: null,
|
||||||
|
noteNow: null,
|
||||||
titleNext: null,
|
titleNext: null,
|
||||||
subtitleNext: null,
|
subtitleNext: null,
|
||||||
presenterNext: null,
|
presenterNext: null,
|
||||||
|
noteNext: null,
|
||||||
};
|
};
|
||||||
|
|
||||||
this.publicTitles = {
|
this.publicTitles = {
|
||||||
@@ -731,9 +742,11 @@ export class EventTimer extends Timer {
|
|||||||
Title Now = ${this.titles.titleNow}
|
Title Now = ${this.titles.titleNow}
|
||||||
Subtitle Now = ${this.titles.subtitleNow}
|
Subtitle Now = ${this.titles.subtitleNow}
|
||||||
Presenter Now = ${this.titles.presenterNow}
|
Presenter Now = ${this.titles.presenterNow}
|
||||||
|
Note Now = ${this.titles.noteNow}
|
||||||
Title Next = ${this.titles.titleNext}
|
Title Next = ${this.titles.titleNext}
|
||||||
Subtitle Next = ${this.titles.subtitleNext}
|
Subtitle Next = ${this.titles.subtitleNext}
|
||||||
Presenter Next = ${this.titles.presenterNext}
|
Presenter Next = ${this.titles.presenterNext}
|
||||||
|
Note Next = ${this.titles.noteNext}
|
||||||
|
|
||||||
Public Titles
|
Public Titles
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user