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]);
// 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 index = Object.keys(Locations).indexOf(event.target.value as unknown as Locations);
if (auth?.login) {
@ -381,7 +375,7 @@ function App() {
{dayIndex != null &&
<div className='day-navigator'>
{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)} />}
</div>
}
@ -392,8 +386,8 @@ function App() {
</Row>
<div className='content-wrapper'>
<div className='content'>
{dayIndex == null || dayIndex >= currentDayIndex && <>
<p>{`Jak to ${dayIndex == null || dayIndex === currentDayIndex ? 'dnes' : 'tento den'} vidíš s obědem?`}</p>
{dayIndex == null || dayIndex >= data.todayWeekIndex && <>
<p>{`Jak to ${dayIndex == null || dayIndex === data.todayWeekIndex ? 'dnes' : 'tento den'} vidíš s obědem?`}</p>
<Form.Select ref={choiceRef} onChange={doAddChoice}>
<option></option>
{Object.entries(Locations)
@ -482,7 +476,7 @@ function App() {
: <div className='mt-5'><i>Zatím nikdo nehlasoval...</i></div>
}
</div>
{dayIndex === currentDayIndex &&
{dayIndex === data.todayWeekIndex &&
<div className='mt-5'>
{!data.pizzaDay &&
<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. */
function getEmptyData(date?: Date): ClientData {
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 */
export interface ClientData {
date: string, // dnešní datum pro zobrazení
isWeekend: boolean, // příznak, zda je dnes víkend
weekIndex: number, // index aktuálního dne v týdnu (0-6)
date: string, // datum vybraného dne pro zobrazení
isWeekend: boolean, // příznak, zda je zvolené datum víkend
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
menus?: { [restaurant in Restaurants]?: Menu }, // menu jednotlivých restaurací
pizzaDay?: PizzaDay, // pizza day pro dnešní den, pokud existuje