189 lines
6.2 KiB
TypeScript
189 lines
6.2 KiB
TypeScript
import { Input } from "../../ui/input";
|
||
import { Textarea } from "../../shared/ui/textarea";
|
||
import { Label } from "../../shared/ui/label";
|
||
import { Button } from "../../shared/ui/button";
|
||
|
||
import less from "./SkillTree.module.less";
|
||
import { Switch } from "../../shared/ui/switch";
|
||
import { Link } from "react-router-dom";
|
||
import { ToastAction } from "../../shared/ui/toast";
|
||
import { useToast } from "../../shared/ui/use-toast";
|
||
import { buttonVariants } from "../../ui/button";
|
||
import { addEvent, submitRegister } from "../../widgets/Header/AuthAPI";
|
||
import { addEvent, deleteEvent, submitRegister } from "../../widgets/Header/AuthAPI";
|
||
import {
|
||
Card,
|
||
CardContent,
|
||
CardDescription,
|
||
CardHeader,
|
||
CardTitle,
|
||
} from "../../ui/card";
|
||
import { TrashIcon } from "lucide-react";
|
||
import {
|
||
Dialog,
|
||
DialogContent,
|
||
DialogDescription,
|
||
DialogHeader,
|
||
DialogTitle,
|
||
DialogTrigger,
|
||
} from "../../shared/ui/dialog";
|
||
import { t } from "i18next";
|
||
import { useEffect, useState } from "react";
|
||
import { eventList } from "../AdminEventPage/AdminEventAPI";
|
||
|
||
const SkillTree = () => {
|
||
const { toast } = useToast();
|
||
const [events, setEvents] = useState<Event[]>([]);
|
||
|
||
useEffect(() => {
|
||
eventList()
|
||
.then((data) => {
|
||
setEvents(data);
|
||
})
|
||
.catch((error) => {
|
||
console.error("Возникла ошибка с получением:", error);
|
||
});
|
||
}, []);
|
||
|
||
return (
|
||
<div className={`${less["general"]} container`}>
|
||
<div className={less["left"]}>
|
||
<Link
|
||
to={"/dash/admin"}
|
||
className={`border ${buttonVariants({ variant: "outline" })} mb-4`}
|
||
>
|
||
⟵ Back
|
||
</Link>
|
||
|
||
<h3
|
||
className={"text-2xl font-semibold leading-none tracking-tight mb-5"}
|
||
>
|
||
Create event
|
||
</h3>
|
||
<form
|
||
className={less["input-form"]}
|
||
onSubmit={(event) => {
|
||
addEvent(event);
|
||
toast({
|
||
title: "Scheduled: Catch up ",
|
||
description: "Friday, February 10, 2023 at 5:57 PM",
|
||
action: (
|
||
<ToastAction altText="Goto schedule to undo">Undo</ToastAction>
|
||
),
|
||
});
|
||
}}
|
||
>
|
||
<Input
|
||
type="text"
|
||
name="title"
|
||
placeholder="Event name"
|
||
className="mb-3"
|
||
/>
|
||
<Input
|
||
type="date"
|
||
name="start_date"
|
||
placeholder="Start date"
|
||
className="mb-3"
|
||
/>
|
||
<Input
|
||
type="date"
|
||
name="end_date"
|
||
placeholder="End date"
|
||
className="mb-3"
|
||
/>
|
||
<Textarea
|
||
name="description"
|
||
placeholder="Description"
|
||
className="mb-3"
|
||
/>
|
||
<div className="flex items-center space-x-2">
|
||
<Switch className="mb-3" id="is_online" />
|
||
<Label htmlFor="is_online">Is online</Label>
|
||
</div>
|
||
<br />
|
||
<Button>Create</Button>
|
||
</form>
|
||
</div>
|
||
<div className={less["right"]}>
|
||
{events.map((event) => (
|
||
<Card className={`${less["card"]} flex flex-row `}>
|
||
<div className="flex flex-col">
|
||
<CardHeader className={less["header"]}>
|
||
<div className={less["up"]}>
|
||
<CardTitle className="p-0">{event.title}</CardTitle>
|
||
<CardDescription>
|
||
Дата начала: {event.start_date}
|
||
</CardDescription>
|
||
</div>
|
||
{false && (
|
||
<Button size="icon" variant="ghost">
|
||
<TrashIcon />
|
||
</Button>
|
||
)}
|
||
</CardHeader>
|
||
<CardContent className="p-0 mt-4">
|
||
<p>{event.description}</p>
|
||
</CardContent>
|
||
<Button>
|
||
{" "}
|
||
<Link to={`../admin/${event.id}`}>Event Management</Link>
|
||
</Button>
|
||
</div>
|
||
</Card>
|
||
))}
|
||
</div>
|
||
</div>
|
||
);
|
||
};
|
||
export default SkillTree;
|
||
|
||
useEffect(() => {
|
||
eventList()
|
||
.then((data) => {
|
||
setEvents(data);
|
||
})
|
||
.catch((error) => {
|
||
console.error("Возникла ошибка с получением:", error);
|
||
});
|
||
}, []);
|
||
|
||
return (
|
||
<div className={less["general"]}>
|
||
<div className={less["left"]}>
|
||
<form className={less["input-form"]} onSubmit={(event) => addEvent(event)}>
|
||
<Input type="text" name="title" placeholder="Event name" />
|
||
<Input type="text" name="description" placeholder="Last name" />
|
||
<Input type="date" name="start_date" placeholder="Start date" />
|
||
<Input type="date" name="end_date" placeholder="End date" />
|
||
<Textarea name="description" placeholder="Description" />
|
||
<Switch/>
|
||
<Button>{t("buttonLoginInSystem")}</Button>
|
||
</form>
|
||
</div>
|
||
<div className={less["right"]}>
|
||
{events.map((event) => (
|
||
<Card className={`${less["card"]} flex flex-row `}>
|
||
<div className="flex flex-col">
|
||
<CardHeader className={less["header"]}>
|
||
<div className={less["up"]}>
|
||
<CardTitle className="p-0">{event.title}</CardTitle>
|
||
<CardDescription>Дата начала: {event.start_date}</CardDescription>
|
||
</div>
|
||
{true && (
|
||
<Button size="icon" variant="ghost" onClick={() => {deleteEvent(event.id)}}><TrashIcon /></Button>
|
||
)}
|
||
</CardHeader>
|
||
<CardContent className="p-0 mt-4" >
|
||
<p>{event.description}</p>
|
||
</CardContent>
|
||
<Button> <Link to={`../admin/${event.id}`}>Event Management</Link></Button>
|
||
|
||
</div>
|
||
</Card>
|
||
))}
|
||
</div>
|
||
</div>
|
||
);
|
||
}
|
||
export default SkillTree;
|
||
|