// Tools.jsx — Admin-managed list of site tools / equipment. // Lives under Administration → Tools. The list feeds the multi-select // dropdown in Create Booking ("Tools to bring on site"). function ToolsPage({ role }) { const isAdmin = role === 'Admin'; const [tools, setTools] = React.useState(TOOLS); const [showAdd, setShowAdd] = React.useState(false); const [draft, setDraft] = React.useState({ name: '', category: 'Rigging', default: false }); const [editing, setEditing] = React.useState(null); // id of row being edited const [editDraft, setEditDraft] = React.useState(null); const grouped = {}; tools.forEach(t => { (grouped[t.category] = grouped[t.category] || []).push(t); }); const addTool = () => { if (!draft.name.trim()) return; const id = 'T-' + String(tools.length + 1).padStart(2, '0'); const next = [...tools, { id, ...draft, name: draft.name.trim() }]; setTools(next); TOOLS.length = 0; next.forEach(x => TOOLS.push(x)); // mutate global so Create Booking picks it up setDraft({ name: '', category: 'Rigging', default: false }); setShowAdd(false); }; const startEdit = (t) => { setEditing(t.id); setEditDraft({...t}); }; const saveEdit = () => { window.askAdminPassword('Edit tool · ' + editDraft.name, () => { const next = tools.map(t => t.id === editDraft.id ? editDraft : t); setTools(next); TOOLS.length = 0; next.forEach(x => TOOLS.push(x)); setEditing(null); setEditDraft(null); }); }; const deleteTool = (t) => { window.askAdminPassword('Delete tool · ' + t.name, () => { const next = tools.filter(x => x.id !== t.id); setTools(next); TOOLS.length = 0; next.forEach(x => TOOLS.push(x)); }); }; const toggleDefault = (t) => { window.askAdminPassword('Toggle default · ' + t.name, () => { const next = tools.map(x => x.id === t.id ? {...x, default: !x.default} : x); setTools(next); TOOLS.length = 0; next.forEach(x => TOOLS.push(x)); }); }; return (
| ID | Tool Name | Default | Actions |
|---|---|---|---|
| {t.id} | {editing === t.id ? ( setEditDraft({...editDraft, name: e.target.value})}/> ) : ( {t.name} )} | {editing === t.id ? ( ) : ( {t.default ? 'Default' : 'Optional'} )} |
{isAdmin ? (
editing === t.id ? (
|