Skip to content

Commit 2a74b20

Browse files
committed
merged issue-7-Allow_CRUD_Operations_on_Tasks's latest change to add delete button to tasks
2 parents cfa4379 + dd588c0 commit 2a74b20

4 files changed

Lines changed: 45 additions & 0 deletions

File tree

client/src/components/task_item.tsx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ type ItemProps = {
3232
item: Item;
3333
onToggle?: (id: number) => void;
3434
onUpdate: (item: Item) => void;
35+
onDelete: (id: number) => void;
3536
availableTopics: Topic[];
3637
};
3738

@@ -43,6 +44,7 @@ export function TaskItem({
4344
item,
4445
onToggle,
4546
onUpdate,
47+
onDelete,
4648
availableTopics,
4749
}: ItemProps) {
4850
{
@@ -210,6 +212,8 @@ export function TaskItem({
210212
)}
211213
</div>
212214

215+
{/* Edit Button */}
216+
213217
<div className="task-edit flex gap-2">
214218
{isEditing ? (
215219
<div className="flex w-full flex-row justify-center text-lg">
@@ -233,6 +237,18 @@ export function TaskItem({
233237
</button>
234238
)}
235239
</div>
240+
241+
{/* Delete Button */}
242+
<div>
243+
{!isEditing && (
244+
<button
245+
onClick={() => onDelete(item.id)}
246+
className="mt-2 text-red-500"
247+
>
248+
Delete Task
249+
</button>
250+
)}
251+
</div>
236252
</div>
237253
);
238254
}

client/src/components/task_list.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,15 @@ type ListProps = {
2727
items: Item[];
2828
onToggleTask?: (id: number) => void;
2929
onUpdate: (item: Item) => void;
30+
onDelete: (id: number) => void;
3031
availableTopics: Topic[];
3132
};
3233

3334
export function TaskList({
3435
items,
3536
onToggleTask,
3637
onUpdate,
38+
onDelete,
3739
availableTopics,
3840
}: ListProps) {
3941
if (items.length === 0) {
@@ -51,6 +53,7 @@ export function TaskList({
5153
item={item}
5254
onToggle={onToggleTask}
5355
onUpdate={onUpdate}
56+
onDelete={onDelete}
5457
availableTopics={availableTopics}
5558
/>
5659
</li>

client/src/pages/[id]/tasks.tsx

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,25 @@ export default function TasksPage() {
103103
setItems((prev) => prev.map((t) => (t.id === updated.id ? updated : t)));
104104
}
105105

106+
async function handleTaskDeleted(id: number) {
107+
if (!window.confirm("Delete this task?")) return;
108+
109+
try {
110+
const response = await fetch(
111+
`http://localhost:8000/api/planner/tasks/${id}/`,
112+
{ method: "DELETE" },
113+
);
114+
115+
if (!response.ok) {
116+
throw new Error("Failed to delete task");
117+
}
118+
119+
setItems((prev) => prev.filter((item) => item.id !== id));
120+
} catch (error) {
121+
console.error("Error deleting task:", error);
122+
}
123+
}
124+
106125
return (
107126
<div className="content-container min-w-screen flex h-[85vh] flex-row items-center justify-center bg-slate-950 p-3">
108127
<div className="task-list-border h-full w-full rounded-lg bg-slate-900 p-3">
@@ -122,6 +141,7 @@ export default function TasksPage() {
122141
items={items}
123142
onToggleTask={handleToggleTask}
124143
onUpdate={handleTaskUpdated}
144+
onDelete={handleTaskDeleted}
125145
availableTopics={availableTopics}
126146
/>
127147
</div>

server/package-lock.json

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)