improved assignments table formatting
This commit is contained in:
@@ -2,19 +2,29 @@
|
|||||||
|
|
||||||
import AddEvent from "@/components/Event/AddEvent";
|
import AddEvent from "@/components/Event/AddEvent";
|
||||||
import LocalDate from "@/components/LocalDate";
|
import LocalDate from "@/components/LocalDate";
|
||||||
import { apiCall } from "@/lib";
|
import { apiCall, getTasks } from "@/lib";
|
||||||
import { Availability, EventData, getTasks, Task } from "@/Zustand";
|
import { EventData } from "@/Zustand";
|
||||||
import { Add, Copy, Edit, TrashCan } from "@carbon/icons-react";
|
import {
|
||||||
|
Add,
|
||||||
|
AddLarge,
|
||||||
|
Copy,
|
||||||
|
Edit,
|
||||||
|
NotAvailable,
|
||||||
|
TrashCan,
|
||||||
|
} from "@carbon/icons-react";
|
||||||
import {
|
import {
|
||||||
Button,
|
Button,
|
||||||
ButtonGroup,
|
ButtonGroup,
|
||||||
|
Chip,
|
||||||
|
Dropdown,
|
||||||
|
DropdownItem,
|
||||||
|
DropdownMenu,
|
||||||
|
DropdownTrigger,
|
||||||
Modal,
|
Modal,
|
||||||
ModalBody,
|
ModalBody,
|
||||||
ModalContent,
|
ModalContent,
|
||||||
ModalFooter,
|
ModalFooter,
|
||||||
ModalHeader,
|
ModalHeader,
|
||||||
Select,
|
|
||||||
SelectItem,
|
|
||||||
Table,
|
Table,
|
||||||
TableBody,
|
TableBody,
|
||||||
TableCell,
|
TableCell,
|
||||||
@@ -131,7 +141,7 @@ export default function AdminPanel() {
|
|||||||
</LocalDate>
|
</LocalDate>
|
||||||
);
|
);
|
||||||
case "description":
|
case "description":
|
||||||
return <span className="italic">{event[key]}</span>;
|
return <span className="whitespace-pre-wrap italic">{event[key]}</span>;
|
||||||
case "actions":
|
case "actions":
|
||||||
return (
|
return (
|
||||||
<div className="flex justify-end">
|
<div className="flex justify-end">
|
||||||
@@ -164,33 +174,65 @@ export default function AdminPanel() {
|
|||||||
// only show the selector, if the task is needed for the event
|
// only show the selector, if the task is needed for the event
|
||||||
if (Object.keys(event.tasks).includes(key as string)) {
|
if (Object.keys(event.tasks).includes(key as string)) {
|
||||||
return (
|
return (
|
||||||
<Select
|
<Dropdown>
|
||||||
variant="underlined"
|
<DropdownTrigger>
|
||||||
fullWidth
|
{!!event.tasks[key as string] ? (
|
||||||
selectedKeys={new Set([event.tasks[key as Task] ?? ""])}
|
<Chip onClose={() => alert("implement")}>
|
||||||
classNames={{
|
{event.tasks[key as string]}
|
||||||
popoverContent: "w-fit",
|
</Chip>
|
||||||
value: "mr-6",
|
) : (
|
||||||
label: "mr-6",
|
<Button isIconOnly size="sm" radius="md" variant="flat">
|
||||||
}}
|
<AddLarge className="mx-auto" />
|
||||||
className="[&_*]:overflow-visible"
|
</Button>
|
||||||
>
|
)}
|
||||||
{Object.entries(event.availabilities).map(
|
</DropdownTrigger>
|
||||||
([volunteer, availability]) => (
|
<DropdownMenu>
|
||||||
<SelectItem
|
{Object.entries(event.availabilities).map(
|
||||||
key={volunteer}
|
([volunteer, availability]) => (
|
||||||
// color={availability2Color(availability)}
|
<DropdownItem
|
||||||
className={[
|
key={volunteer}
|
||||||
// "text-" + availability2Color(availability),
|
// color={availability2Color(availability)}
|
||||||
// availability2Tailwind(availability),
|
className={[
|
||||||
].join(" ")}
|
// "text-" + availability2Color(availability),
|
||||||
>
|
// availability2Tailwind(availability),
|
||||||
{volunteer} ({availability})
|
].join(" ")}
|
||||||
</SelectItem>
|
>
|
||||||
),
|
{volunteer} ({availability})
|
||||||
)}
|
</DropdownItem>
|
||||||
</Select>
|
),
|
||||||
|
)}
|
||||||
|
</DropdownMenu>
|
||||||
|
</Dropdown>
|
||||||
|
// <Select
|
||||||
|
// aria-label={`User selection for task ${key} and event ${event.date}`}
|
||||||
|
// variant="underlined"
|
||||||
|
// fullWidth
|
||||||
|
// selectedKeys={new Set([event.tasks[key as string] ?? ""])}
|
||||||
|
// classNames={{
|
||||||
|
// popoverContent: "w-fit",
|
||||||
|
// value: "mr-6",
|
||||||
|
// label: "mr-6",
|
||||||
|
// }}
|
||||||
|
// className="[&_*]:overflow-visible"
|
||||||
|
// >
|
||||||
|
// {Object.entries(event.availabilities).map(
|
||||||
|
// ([volunteer, availability]) => (
|
||||||
|
// <SelectItem
|
||||||
|
// key={volunteer}
|
||||||
|
// // color={availability2Color(availability)}
|
||||||
|
// className={[
|
||||||
|
// // "text-" + availability2Color(availability),
|
||||||
|
// // availability2Tailwind(availability),
|
||||||
|
// ].join(" ")}
|
||||||
|
// >
|
||||||
|
// {volunteer} ({availability})
|
||||||
|
// </SelectItem>
|
||||||
|
// ),
|
||||||
|
// )}
|
||||||
|
// </Select>
|
||||||
);
|
);
|
||||||
|
} else {
|
||||||
|
return <NotAvailable className="mx-auto text-foreground-300" />;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -253,7 +295,11 @@ export default function AdminPanel() {
|
|||||||
</TableBody>
|
</TableBody>
|
||||||
</Table>
|
</Table>
|
||||||
|
|
||||||
<AddEvent isOpen={showAddEvent} onOpenChange={setShowAddEvent} />
|
<AddEvent
|
||||||
|
isOpen={showAddEvent}
|
||||||
|
onOpenChange={setShowAddEvent}
|
||||||
|
onSuccess={() => events.reload()}
|
||||||
|
/>
|
||||||
|
|
||||||
{activeEvent !== undefined ? (
|
{activeEvent !== undefined ? (
|
||||||
<Modal
|
<Modal
|
||||||
|
|||||||
Reference in New Issue
Block a user