From ec1cbf332b5b62f2f2136593760e0782fe86f7e4 Mon Sep 17 00:00:00 2001 From: Martin Berka Date: Fri, 2 Jun 2023 21:12:38 +0200 Subject: [PATCH] =?UTF-8?q?Podpora=20v=C3=ADkend=C5=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/App.tsx | 90 ++++++++++++++++++++++--------------------- client/src/Types.tsx | 1 + server/src/service.ts | 4 +- server/src/types.ts | 1 + server/src/utils.ts | 11 ++++-- 5 files changed, 58 insertions(+), 49 deletions(-) diff --git a/client/src/App.tsx b/client/src/App.tsx index ad85ef7..f4f11cf 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -93,51 +93,53 @@ function App() { <>
- - Tvé zobrazované jméno je {auth.login}. Změnu můžeš provést v local storage prohlížeče.
- Pro gamer move: Změň si své jméno na cizí. Můžeš pak libovolně měnit jejich volbu. -
-

Dnes je {data.date}

- - {renderFoodTable('Sladovnická', food.sladovnicka)} - {renderFoodTable('U Motlíků', food["uMotliku:"])} - {renderFoodTable('TechTower', food.techTower)} - -
-
-

Jak to dnes vidíš s obědem?

- - - - - - - - - - -

- Aktuálně je možné vybrat pouze jednu variantu. Vyber prázdnou položku pro odstranění. -

- {Object.keys(data.choices).length > 0 ? - - - {Object.keys(data.choices).map((key: string, index: number) => - - - - - )} - -
{Object.values(Locations)[Number(key)]} -
    - {data.choices[Number(key)].map((p: string, index: number) =>
  • {p}
  • )} -
-
- :
Zatím nikdo nehlasoval...
- } + {data.isWeekend ?

Užívejte víkend :)

: <> + + Tvé zobrazované jméno je {auth.login}. Změnu můžeš provést v local storage prohlížeče.
+ Pro gamer move: Změň si své jméno na cizí. Můžeš pak libovolně měnit jejich volbu. +
+

Dnes je {data.date}

+ + {renderFoodTable('Sladovnická', food.sladovnicka)} + {renderFoodTable('U Motlíků', food["uMotliku:"])} + {renderFoodTable('TechTower', food.techTower)} + +
+
+

Jak to dnes vidíš s obědem?

+ + + + + + + + + + +

+ Aktuálně je možné vybrat pouze jednu variantu. Vyber prázdnou položku pro odstranění. +

+ {Object.keys(data.choices).length > 0 ? + + + {Object.keys(data.choices).map((key: string, index: number) => + + + + + )} + +
{Object.values(Locations)[Number(key)]} +
    + {data.choices[Number(key)].map((p: string, index: number) =>
  • {p}
  • )} +
+
+ :
Zatím nikdo nehlasoval...
+ } +
-
+ } {/* {!pizzaDayExists &&

Pro dnešní den není aktuálně založen Pizza day.

diff --git a/client/src/Types.tsx b/client/src/Types.tsx index 363960f..9ae4a6f 100644 --- a/client/src/Types.tsx +++ b/client/src/Types.tsx @@ -19,6 +19,7 @@ export interface Choices { export interface ClientData { date: string, // dnešní datum pro zobrazení + isWeekend: boolean, // příznak zda je dnešní den víkend choices: Choices, // seznam voleb } diff --git a/server/src/service.ts b/server/src/service.ts index 307658d..b458ee1 100644 --- a/server/src/service.ts +++ b/server/src/service.ts @@ -1,6 +1,6 @@ import { ClientData, Locations } from "./types"; import { db } from "./database"; -import { getTodayString } from "./utils"; +import { getHumanDate, getIsWeekend } from "./utils"; import { getDate } from "./utils"; // /** Jedna konkrétní pizza */ @@ -33,7 +33,7 @@ import { getDate } from "./utils"; /** Vrátí "prázdná" (implicitní) data, pokud ještě nikdo nehlasoval. */ function getEmptyData(): ClientData { - return { date: getTodayString(), choices: {} }; + return { date: getHumanDate(new Date()), isWeekend: getIsWeekend(new Date()), choices: {} }; } /** diff --git a/server/src/types.ts b/server/src/types.ts index fd3af1d..69b7bfd 100644 --- a/server/src/types.ts +++ b/server/src/types.ts @@ -4,6 +4,7 @@ export interface Choices { export interface ClientData { date: string, // dnešní datum pro zobrazení + isWeekend: boolean, // příznak, zda je dnes víkend choices: Choices, // seznam voleb } diff --git a/server/src/utils.ts b/server/src/utils.ts index 39edddb..0868dc2 100644 --- a/server/src/utils.ts +++ b/server/src/utils.ts @@ -6,12 +6,17 @@ export function getDate() { return `${currentYear}-${currentMonth}-${currentDay}`; } -/** Vrátí human-readable reprezentaci dnešního data pro zobrazení. */ -export function getTodayString() { - const date = new Date(); +/** Vrátí human-readable reprezentaci předaného data pro zobrazení. */ +export function getHumanDate(date: Date) { let currentDay = String(date.getDate()).padStart(2, '0'); let currentMonth = String(date.getMonth() + 1).padStart(2, "0"); let currentYear = date.getFullYear(); let currentDayOfWeek = date.toLocaleDateString("CZ-cs", { weekday: 'long' }); return `${currentDay}.${currentMonth}.${currentYear} (${currentDayOfWeek})`; +} + +/** Vrátí true, pokud je předané datum o víkendu. */ +export function getIsWeekend(date: Date) { + const dayName = date.toLocaleDateString("CZ-cs", { weekday: 'long' }).toLowerCase() + return dayName === 'sobota' || dayName === 'neděle' } \ No newline at end of file