MCPcopy Create free account
hub / github.com/code100x/daily-code / EditTrackCard

Function EditTrackCard

apps/web/components/admin/EditTrackCard.tsx:16–140  ·  view source on GitHub ↗
({ Track, categories }: { Track: TrackCardProps; categories: Categories[] })

Source from the content-addressed store, hash-verified

14}
15
16const EditTrackCard = ({ Track, categories }: { Track: TrackCardProps; categories: Categories[] }) => {
17 const [isEditing, setIsEditing] = useState(false);
18 const [title, setTitle] = useState(Track.title);
19 const [description, setDescription] = useState(Track.description);
20 const [image, setImage] = useState(Track.image);
21 const [hidden, setHidden] = useState(Track.hidden);
22 const [cohort, setCohort] = useState(Track.cohort);
23 const [trackType, setTrackType] = useState(Track.trackType);
24 const [canvaLink, setCanvaLink] = useState(Track.canvaLink || "");
25
26 const [selectedCategory, setSelectedCategory] = useState<string[]>(Track.categories.map((item) => item.category.id));
27
28 function handleEdit(id: string) {
29 if (isEditing) {
30 updateTrack(id, { id, title, description, image, hidden, selectedCategory, cohort, trackType, canvaLink });
31 return setIsEditing(false);
32 }
33 setIsEditing(true);
34 }
35
36 function handleFilterButton(category: string) {
37 if (selectedCategory.includes(category)) {
38 setSelectedCategory(selectedCategory.filter((item) => item !== category));
39 } else {
40 setSelectedCategory([...selectedCategory, category]);
41 }
42 }
43
44 function handleDiscardButton() {
45 setTitle(Track.title);
46 setDescription(Track.description);
47 setImage(Track.image);
48 setHidden(Track.hidden);
49 setIsEditing(Track.hidden);
50 setCohort(Track.cohort);
51 }
52 return (
53 <Card key={Track.id}>
54 {!isEditing && (
55 <div className="grid grid-cols-6">
56 <img src={image} className="m-4 flex min-h-[130px] min-w-[130px] rounded-xl sm:h-[130px] sm:w-[130px]" />
57 <div className="col-span-5">
58 <CardHeader>
59 <div className="flex justify-between">
60 <CardTitle>{title}</CardTitle>
61 <Button variant={"outline"} className="" onClick={() => handleEdit(Track.id)}>
62 Edit
63 </Button>
64 </div>
65 <CardDescription>{description}</CardDescription>
66 <CardDescription>
67 {selectedCategory.map((item) => {
68 return <div key={item}>{item}</div>;
69 })}
70 </CardDescription>
71 </CardHeader>
72 <CardContent>{`hidden: ${hidden}`}</CardContent>
73 </div>

Callers

nothing calls this directly

Calls 3

handleEditFunction · 0.70
handleDiscardButtonFunction · 0.70
handleFilterButtonFunction · 0.70

Tested by

no test coverage detected