Neorientovat se dle datumu klienta

This commit is contained in:
Martin Berka 2023-09-22 19:41:33 +02:00
parent 8ec87ec200
commit 3a357f077f
3 changed files with 9 additions and 14 deletions

View File

@ -172,12 +172,6 @@ function App() {
} }
}, [handleKeyDown]); }, [handleKeyDown]);
// Index v týdnu dnešního dne (0-6)
// TODO tohle má posílat server, klient je nespolehlivý
const currentDayIndex = useMemo(() => {
return (((new Date().getDay() - 1) % 7) + 7) % 7;
}, [])
const doAddChoice = async (event: React.ChangeEvent<HTMLSelectElement>) => { const doAddChoice = async (event: React.ChangeEvent<HTMLSelectElement>) => {
const index = Object.keys(Locations).indexOf(event.target.value as unknown as Locations); const index = Object.keys(Locations).indexOf(event.target.value as unknown as Locations);
if (auth?.login) { if (auth?.login) {
@ -381,7 +375,7 @@ function App() {
{dayIndex != null && {dayIndex != null &&
<div className='day-navigator'> <div className='day-navigator'>
{dayIndex > 0 && <FontAwesomeIcon title="Předchozí den" icon={faChevronLeft} style={{ cursor: "pointer" }} onClick={() => handleDayChange(dayIndex - 1)} />} {dayIndex > 0 && <FontAwesomeIcon title="Předchozí den" icon={faChevronLeft} style={{ cursor: "pointer" }} onClick={() => handleDayChange(dayIndex - 1)} />}
<h1 className='title'>{`${dayIndex === currentDayIndex ? "(Dnes) " : ""}${data.date}`}</h1> <h1 className='title'>{`${dayIndex === data.todayWeekIndex ? "(Dnes) " : ""}${data.date}`}</h1>
{dayIndex < 4 && <FontAwesomeIcon title="Následující den" icon={faChevronRight} style={{ cursor: "pointer" }} onClick={() => handleDayChange(dayIndex + 1)} />} {dayIndex < 4 && <FontAwesomeIcon title="Následující den" icon={faChevronRight} style={{ cursor: "pointer" }} onClick={() => handleDayChange(dayIndex + 1)} />}
</div> </div>
} }
@ -392,8 +386,8 @@ function App() {
</Row> </Row>
<div className='content-wrapper'> <div className='content-wrapper'>
<div className='content'> <div className='content'>
{dayIndex == null || dayIndex >= currentDayIndex && <> {dayIndex == null || dayIndex >= data.todayWeekIndex && <>
<p>{`Jak to ${dayIndex == null || dayIndex === currentDayIndex ? 'dnes' : 'tento den'} vidíš s obědem?`}</p> <p>{`Jak to ${dayIndex == null || dayIndex === data.todayWeekIndex ? 'dnes' : 'tento den'} vidíš s obědem?`}</p>
<Form.Select ref={choiceRef} onChange={doAddChoice}> <Form.Select ref={choiceRef} onChange={doAddChoice}>
<option></option> <option></option>
{Object.entries(Locations) {Object.entries(Locations)
@ -482,7 +476,7 @@ function App() {
: <div className='mt-5'><i>Zatím nikdo nehlasoval...</i></div> : <div className='mt-5'><i>Zatím nikdo nehlasoval...</i></div>
} }
</div> </div>
{dayIndex === currentDayIndex && {dayIndex === data.todayWeekIndex &&
<div className='mt-5'> <div className='mt-5'>
{!data.pizzaDay && {!data.pizzaDay &&
<div style={{ textAlign: 'center' }}> <div style={{ textAlign: 'center' }}>

View File

@ -32,7 +32,7 @@ export const getDateForWeekIndex = (index: number) => {
/** Vrátí "prázdná" (implicitní) data pro předaný den. */ /** Vrátí "prázdná" (implicitní) data pro předaný den. */
function getEmptyData(date?: Date): ClientData { function getEmptyData(date?: Date): ClientData {
const usedDate = date || getToday(); const usedDate = date || getToday();
return { date: getHumanDate(usedDate), isWeekend: getIsWeekend(usedDate), weekIndex: getDayOfWeekIndex(usedDate), choices: {} }; return { date: getHumanDate(usedDate), isWeekend: getIsWeekend(usedDate), weekIndex: getDayOfWeekIndex(usedDate), todayWeekIndex: getDayOfWeekIndex(getToday()), choices: {} };
} }
/** /**

View File

@ -68,9 +68,10 @@ interface PizzaDay {
/** Veškerá data pro zobrazení na klientovi */ /** Veškerá data pro zobrazení na klientovi */
export interface ClientData { export interface ClientData {
date: string, // dnešní datum pro zobrazení date: string, // datum vybraného dne pro zobrazení
isWeekend: boolean, // příznak, zda je dnes víkend isWeekend: boolean, // příznak, zda je zvolené datum víkend
weekIndex: number, // index aktuálního dne v týdnu (0-6) weekIndex: number, // index zvoleného dne v týdnu (0-6)
todayWeekIndex: number, // index dnešního dne v týdnu (0-6)
choices: Choices, // seznam voleb choices: Choices, // seznam voleb
menus?: { [restaurant in Restaurants]?: Menu }, // menu jednotlivých restaurací menus?: { [restaurant in Restaurants]?: Menu }, // menu jednotlivých restaurací
pizzaDay?: PizzaDay, // pizza day pro dnešní den, pokud existuje pizzaDay?: PizzaDay, // pizza day pro dnešní den, pokud existuje