From aec4d826b51a9826a8ac6eabc9d9b7d1f3f22ddb Mon Sep 17 00:00:00 2001 From: 1ilit Date: Tue, 19 Sep 2023 15:50:53 +0300 Subject: [PATCH] todo list --- src/assets/group.png | Bin 15352 -> 15034 bytes src/components/sidebar.jsx | 44 +++---- src/components/todo.jsx | 254 +++++++++++++++++++++++++++++++++++++ src/pages/editor.jsx | 53 +++++--- 4 files changed, 306 insertions(+), 45 deletions(-) create mode 100644 src/components/todo.jsx diff --git a/src/assets/group.png b/src/assets/group.png index 83559520946a8488e7e819ec9390f05c3aa7a20c..3cc74c0c10cbb0e36f4646ca3fb95ae4f12489ee 100644 GIT binary patch literal 15034 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 H=Ar)s&6v{@ literal 15352 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 ODm{8CS0G~?@P7cm-;Xl@ diff --git a/src/components/sidebar.jsx b/src/components/sidebar.jsx index 5079378..127ce41 100644 --- a/src/components/sidebar.jsx +++ b/src/components/sidebar.jsx @@ -6,10 +6,7 @@ import timeLine from "../assets/process.png"; import todo from "../assets/calendar.png"; import { Tooltip, SideSheet } from "@douyinfe/semi-ui"; import { UndoRedoContext } from "../pages/editor"; -// import { -// IllustrationNoContent, -// IllustrationNoContentDark, -// } from "@douyinfe/semi-illustrations"; +import Todo from "./todo"; export default function Sidebar() { const SidesheetType = { @@ -20,8 +17,8 @@ export default function Sidebar() { TIMELINE: 4, BOT: 5, }; - const [sidesheet, setSidesheet] = useState(SidesheetType.NONE); const { undoStack } = useContext(UndoRedoContext); + const [sidesheet, setSidesheet] = useState(SidesheetType.NONE); const getTitle = (type) => { switch (type) { @@ -39,11 +36,11 @@ export default function Sidebar() {
Chat
); - case SidesheetType.TEAM: + case SidesheetType.TODO: return (
- chat icon -
Your team
+ todo icon +
To-do list
); default: @@ -54,7 +51,9 @@ export default function Sidebar() { const getContent = (type) => { switch (type) { case SidesheetType.TIMELINE: - return getTimeline(); + return renderTimeline(); + case SidesheetType.TODO: + return ; default: break; } @@ -77,8 +76,11 @@ export default function Sidebar() { - @@ -97,20 +99,23 @@ export default function Sidebar() { setSidesheet(SidesheetType.NONE)} + onCancel={() => { + setSidesheet(SidesheetType.NONE); + }} width={340} title={getTitle(sidesheet)} style={{ paddingBottom: "16px" }} + bodyStyle={{ padding: "0px" }} > {getContent(sidesheet)} ); - function getTimeline() { + function renderTimeline() { if (undoStack.length > 0) { return ( -
+

{[...undoStack].reverse().map((e) => ( <> @@ -125,18 +130,9 @@ export default function Sidebar() { ); } else { return ( -
+
You havent added anything to your diagram yet.
- // } - // darkModeImage={ - // - // } - // title="No activity" - // description="You have not added anything to your diagram yet." - // /> ); } } diff --git a/src/components/todo.jsx b/src/components/todo.jsx new file mode 100644 index 0000000..4ed9b87 --- /dev/null +++ b/src/components/todo.jsx @@ -0,0 +1,254 @@ +import React, { useContext, useState } from "react"; +import { + Checkbox, + Input, + TextArea, + Row, + Col, + Dropdown, + Button, + Popover, + Tag, + List, + RadioGroup, + Radio, +} from "@douyinfe/semi-ui"; +import { + IconPlus, + IconMore, + IconDeleteStroked, + IconCaretdown, +} from "@douyinfe/semi-icons"; +import { TaskContext } from "../pages/editor"; +export default function Todo() { + const Priority = { + NONE: 0, + LOW: 1, + MEDIUM: 2, + HIGH: 3, + }; + const SortOrder = { + ORIGINAL: "My order", + PRIORITY: "Priority", + COMPLETED: "Completed", + ALPHABETICALLY: "Alphabetically", + }; + const [activeTask, setActiveTask] = useState(-1); + const [, setSortOrder] = useState(SortOrder.ORIGINAL); + const { tasks, setTasks, updateTask } = useContext(TaskContext); + + const priorityLabel = (p) => { + switch (p) { + case Priority.NONE: + return "None"; + case Priority.LOW: + return "Low"; + case Priority.MEDIUM: + return "Medium"; + case Priority.HIGH: + return "High"; + default: + return ""; + } + }; + + const priorityColor = (p) => { + switch (p) { + case Priority.NONE: + return "blue"; + case Priority.LOW: + return "green"; + case Priority.MEDIUM: + return "yellow"; + case Priority.HIGH: + return "red"; + default: + return ""; + } + }; + + const sort = (s) => { + switch (s) { + case SortOrder.ORIGINAL: + setTasks((prev) => prev.sort((a, b) => a.order - b.order)); + return; + case SortOrder.PRIORITY: + setTasks((prev) => prev.sort((a, b) => b.priority - a.priority)); + return; + case SortOrder.COMPLETED: + setTasks((prev) => + prev.sort((a, b) => { + if (a.complete && !b.complete) { + return 1; + } else if (!a.complete && b.complete) { + return -1; + } else { + return 0; + } + }) + ); + break; + case SortOrder.ALPHABETICALLY: + setTasks((prev) => prev.sort((a, b) => a.title.localeCompare(b.title))); + break; + default: + break; + } + }; + + return ( + <> +
+ + {Object.values(SortOrder).map((order) => ( + { + setSortOrder(order); + sort(order); + }} + > + {order} + + ))} + + } + trigger="click" + > + + + +
+ + {tasks.map((t, i) => ( + setActiveTask(i)} + > +
+ + + + updateTask(i, { complete: e.target.checked }) + } + > + + + updateTask(i, { title: v })} + value={t.title} + > + + + +
Set priority:
+ + updateTask(i, { priority: e.target.value }) + } + value={t.priority} + direction="vertical" + > + + + {priorityLabel(Priority.NONE)} + + + + + {priorityLabel(Priority.LOW)} + + + + + {priorityLabel(Priority.MEDIUM)} + + + + + {priorityLabel(Priority.HIGH)} + + + + +
+ } + trigger="click" + showArrow + className="w-[180px]" + > + + + + + {activeTask === i && ( + + + + + + + )} + + + + Priority:{" "} + + {priorityLabel(t.priority)} + + + +
+ + ))} + + + ); +} diff --git a/src/pages/editor.jsx b/src/pages/editor.jsx index 45defb6..4bd5bde 100644 --- a/src/pages/editor.jsx +++ b/src/pages/editor.jsx @@ -19,6 +19,7 @@ export const NoteContext = createContext(); export const SettingsContext = createContext(); export const UndoRedoContext = createContext(); export const SelectContext = createContext(); +export const TaskContext = createContext(); export default function Editor(props) { const [tables, setTables] = useState([]); @@ -47,6 +48,7 @@ export default function Editor(props) { pan: { x: 0, y: 0 }, showGrid: true, }); + const [tasks, setTasks] = useState([]); const [undoStack, setUndoStack] = useState([]); const [redoStack, setRedoStack] = useState([]); const [selectedElement, setSelectedElement] = useState({ @@ -386,6 +388,11 @@ export default function Editor(props) { ); }; + const updateTask = (id, values) => + setTasks((prev) => + prev.map((task, i) => (id === i ? { ...task, ...values } : task)) + ); + useEffect(() => { document.title = "Editor - drawDB"; }, []); @@ -420,28 +427,32 @@ export default function Editor(props) { -
- -
setResize(false)} - onMouseMove={dragHandler} - > - {layout.sidebar && ( - - )} - - {layout.services && } + +
+ +
setResize(false)} + onMouseMove={dragHandler} + > + {layout.sidebar && ( + + )} + + {layout.services && } +
-
+