/* TargiApp — panel administratora: dodawanie osób + generowanie kodów PIN */ function AdminPage() { const store = useStore(); const [first, setFirst] = useState(""); const [last, setLast] = useState(""); const [isAdmin, setIsAdmin] = useState(false); const [justAdded, setJustAdded] = useState(null); const [showPins, setShowPins] = useState(false); // PIN-y domyślnie ukryte const [revealed, setRevealed] = useState(new Set()); // pojedyncze podglądy function toggleRow(id) { setRevealed((prev) => { const n = new Set(prev); n.has(id) ? n.delete(id) : n.add(id); return n; }); } function add() { if (!first.trim() || !last.trim()) return; Promise.resolve(store.addPerson(first, last, isAdmin)).then((p) => { if (p) { setJustAdded(p.id); setTimeout(() => setJustAdded(null), 2500); } }); setFirst(""); setLast(""); setIsAdmin(false); } const people = store.state.people.slice().sort((a, b) => Number(b.isAdmin) - Number(a.isAdmin) || a.lastName.localeCompare(b.lastName)); return (
| Osoba | Rola w systemie | Kod PIN | Akcje |
|---|---|---|---|
|
|
{p.isAdmin ? Administrator : Pracownik} |
{(() => {
const visible = showPins || revealed.has(p.id);
return (
{visible ? p.pin : "\u2022\u2022\u2022\u2022"}
{!showPins ? (
) : null}
);
})()}
|
|