Možnost skrytí polévek
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
import { useEffect, useState } from "react";
|
||||
import { Navbar, Nav, NavDropdown } from "react-bootstrap";
|
||||
import { useAuth } from "../context/auth";
|
||||
import BankAccountModal from "./modals/BankAccountModal";
|
||||
import { useBank } from "../context/bank";
|
||||
import SettingsModal from "./modals/SettingsModal";
|
||||
import { useSettings } from "../context/settings";
|
||||
import FeaturesVotingModal from "./modals/FeaturesVotingModal";
|
||||
import { FeatureRequest } from "../types";
|
||||
import { errorHandler } from "../api/Api";
|
||||
@@ -12,8 +12,8 @@ import PizzaCalculatorModal from "./modals/PizzaCalculatorModal";
|
||||
|
||||
export default function Header() {
|
||||
const auth = useAuth();
|
||||
const bank = useBank();
|
||||
const [bankModalOpen, setBankModalOpen] = useState<boolean>(false);
|
||||
const settings = useSettings();
|
||||
const [settingsModalOpen, setSettingsModalOpen] = useState<boolean>(false);
|
||||
const [votingModalOpen, setVotingModalOpen] = useState<boolean>(false);
|
||||
const [pizzaModalOpen, setPizzaModalOpen] = useState<boolean>(false);
|
||||
const [featureVotes, setFeatureVotes] = useState<FeatureRequest[]>([]);
|
||||
@@ -26,8 +26,8 @@ export default function Header() {
|
||||
}
|
||||
}, [auth?.login]);
|
||||
|
||||
const closeBankModal = () => {
|
||||
setBankModalOpen(false);
|
||||
const closeSettingsModal = () => {
|
||||
setSettingsModalOpen(false);
|
||||
}
|
||||
|
||||
const closeVotingModal = () => {
|
||||
@@ -48,7 +48,7 @@ export default function Header() {
|
||||
return n !== Infinity && String(n) === str && n >= 0;
|
||||
}
|
||||
|
||||
const saveBankAccount = (bankAccountNumber?: string, bankAccountHolderName?: string) => {
|
||||
const saveSettings = (bankAccountNumber?: string, bankAccountHolderName?: string, hideSoupsOption?: boolean) => {
|
||||
if (bankAccountNumber) {
|
||||
try {
|
||||
// Validace kódu banky
|
||||
@@ -90,9 +90,10 @@ export default function Header() {
|
||||
return
|
||||
}
|
||||
}
|
||||
bank?.setBankAccountNumber(bankAccountNumber);
|
||||
bank?.setBankAccountHolderName(bankAccountHolderName);
|
||||
closeBankModal();
|
||||
settings?.setBankAccountNumber(bankAccountNumber);
|
||||
settings?.setBankAccountHolderName(bankAccountHolderName);
|
||||
settings?.setHideSoupsOption(hideSoupsOption);
|
||||
closeSettingsModal();
|
||||
}
|
||||
|
||||
const saveFeatureVote = async (option: FeatureRequest, active: boolean) => {
|
||||
@@ -112,7 +113,7 @@ export default function Header() {
|
||||
<Navbar.Collapse id="basic-navbar-nav">
|
||||
<Nav className="nav">
|
||||
<NavDropdown align="end" title={auth?.login} id="basic-nav-dropdown">
|
||||
<NavDropdown.Item onClick={() => setBankModalOpen(true)}>Nastavit číslo účtu</NavDropdown.Item>
|
||||
<NavDropdown.Item onClick={() => setSettingsModalOpen(true)}>Nastavení</NavDropdown.Item>
|
||||
<NavDropdown.Item onClick={() => setVotingModalOpen(true)}>Hlasovat o nových funkcích</NavDropdown.Item>
|
||||
<NavDropdown.Item onClick={() => setPizzaModalOpen(true)}>Pizza kalkulačka</NavDropdown.Item>
|
||||
<NavDropdown.Divider />
|
||||
@@ -120,7 +121,7 @@ export default function Header() {
|
||||
</NavDropdown>
|
||||
</Nav>
|
||||
</Navbar.Collapse>
|
||||
<BankAccountModal isOpen={bankModalOpen} onClose={closeBankModal} onSave={saveBankAccount} />
|
||||
<SettingsModal isOpen={settingsModalOpen} onClose={closeSettingsModal} onSave={saveSettings} />
|
||||
<FeaturesVotingModal isOpen={votingModalOpen} onClose={closeVotingModal} onChange={saveFeatureVote} initialValues={featureVotes} />
|
||||
<PizzaCalculatorModal isOpen={pizzaModalOpen} onClose={closePizzaModal} />
|
||||
</Navbar>
|
||||
|
||||
@@ -1,33 +1,40 @@
|
||||
import { useRef } from "react";
|
||||
import { Modal, Button } from "react-bootstrap"
|
||||
import { useBank } from "../../context/bank";
|
||||
import { useSettings } from "../../context/settings";
|
||||
|
||||
type Props = {
|
||||
isOpen: boolean,
|
||||
onClose: () => void,
|
||||
onSave: (bankAccountNumber?: string, bankAccountHolderName?: string) => void,
|
||||
onSave: (bankAccountNumber?: string, bankAccountHolderName?: string, hideSoupsOption?: boolean) => void,
|
||||
}
|
||||
|
||||
/** Modální dialog pro nastavení čísla účtu a jména majitele. */
|
||||
export default function BankAccountModal({ isOpen, onClose, onSave }: Props) {
|
||||
const bank = useBank();
|
||||
/** Modální dialog pro uživatelská nastavení. */
|
||||
export default function SettingsModal({ isOpen, onClose, onSave }: Props) {
|
||||
const settings = useSettings();
|
||||
const bankAccountRef = useRef<HTMLInputElement>(null);
|
||||
const nameRef = useRef<HTMLInputElement>(null);
|
||||
const hideSoupsRef = useRef<HTMLInputElement>(null);
|
||||
|
||||
return <Modal show={isOpen} onHide={onClose} size="lg">
|
||||
<Modal.Header closeButton>
|
||||
<Modal.Title>Bankovní účet</Modal.Title>
|
||||
<Modal.Title><h2>Nastavení</h2></Modal.Title>
|
||||
</Modal.Header>
|
||||
<Modal.Body>
|
||||
<h4>Obecné</h4>
|
||||
<span title="V nabídkách nebudou zobrazovány polévky. Tato funkce je experimentální, a zejména u TechTower bývá často problém polévky spolehlivě rozeznat. V případě využití této funkce průběžně nahlašujte stále se zobrazující polévky." style={{ "cursor": "help" }}>
|
||||
<input ref={hideSoupsRef} type="checkbox" defaultChecked={settings?.hideSoups} /> Skrýt polévky
|
||||
</span>
|
||||
<hr />
|
||||
<h4>Bankovní účet</h4>
|
||||
<p>Nastavením čísla účtu umožníte automatické generování QR kódů pro úhradu za vámi provedené objednávky v rámci Pizza day.<br />Pokud vaše číslo účtu neobsahuje předčíslí, je možné ho zcela vynechat.<br /><br />Číslo účtu není ukládáno na serveru, posílá se na něj pouze za účelem vygenerování QR kódů.</p>
|
||||
Číslo účtu: <input className="mb-3" ref={bankAccountRef} type="text" placeholder="123456-1234567890/1234" defaultValue={bank?.bankAccount} /> <br />
|
||||
Název příjemce (jméno majitele účtu): <input ref={nameRef} type="text" placeholder="Jan Novák" defaultValue={bank?.holderName} />
|
||||
Číslo účtu: <input className="mb-3" ref={bankAccountRef} type="text" placeholder="123456-1234567890/1234" defaultValue={settings?.bankAccount} /> <br />
|
||||
Název příjemce (jméno majitele účtu): <input ref={nameRef} type="text" placeholder="Jan Novák" defaultValue={settings?.holderName} />
|
||||
</Modal.Body>
|
||||
<Modal.Footer>
|
||||
<Button variant="secondary" onClick={onClose}>
|
||||
Storno
|
||||
</Button>
|
||||
<Button variant="primary" onClick={() => onSave(bankAccountRef.current?.value, nameRef.current?.value)}>
|
||||
<Button variant="primary" onClick={() => onSave(bankAccountRef.current?.value, nameRef.current?.value, hideSoupsRef.current?.checked)}>
|
||||
Uložit
|
||||
</Button>
|
||||
</Modal.Footer>
|
||||
Reference in New Issue
Block a user