diff --git a/mast-react-vite/src/App.tsx b/mast-react-vite/src/App.tsx index 64a8dc4..025b5b1 100644 --- a/mast-react-vite/src/App.tsx +++ b/mast-react-vite/src/App.tsx @@ -255,6 +255,28 @@ function App({ ctx, syncWorker, dbname, roomId }) { } }; + // Callback to toggle task priority + const handleTogglePriority = (taskId: number) => { + const sqlQuery = ` + UPDATE todos + SET priority = CASE + WHEN priority = 1 THEN 0 + ELSE 1 + END + WHERE id = ? + `; + + ctx.db.exec(sqlQuery, [taskId]); + + // Trigger sync with small delay to ensure changes are committed + setTimeout(() => { + syncWorker.postMessage({ + type: 'SYNC_CHANGES', + dbname + }); + }, 100); + }; + // Use previewTodos if available, otherwise use regular todos const displayTodos = previewTodos.length > 0 ? previewTodos : todos; @@ -476,7 +498,7 @@ function App({ ctx, syncWorker, dbname, roomId }) { />
- +
@@ -516,7 +538,7 @@ function App({ ctx, syncWorker, dbname, roomId }) { />
- +
diff --git a/mast-react-vite/src/components/ui/data-table.tsx b/mast-react-vite/src/components/ui/data-table.tsx index d0950b6..8234f53 100644 --- a/mast-react-vite/src/components/ui/data-table.tsx +++ b/mast-react-vite/src/components/ui/data-table.tsx @@ -13,10 +13,11 @@ import { interface DataTableProps { data: TData[]; onMarkDone?: (selectedIds: number[]) => void; + onTogglePriority?: (taskId: number) => void; scrollToPreviewIndex?: number; // Index of item to scroll to (for preview positioning) } -export function DataTable({ data, onMarkDone, scrollToPreviewIndex }: DataTableProps) { +export function DataTable({ data, onMarkDone, onTogglePriority, scrollToPreviewIndex }: DataTableProps) { const desktopScrollRef = useRef(null); const mobileScrollRef = useRef(null); @@ -49,7 +50,7 @@ export function DataTable({ data, onMarkDone, scrollToPreviewIndex }: Dat
{data.length ? ( - data.map((item, index) => ) + data.map((item, index) => ) ) : (
No results. @@ -62,7 +63,7 @@ export function DataTable({ data, onMarkDone, scrollToPreviewIndex }: Dat
{data.length ? ( - data.map((item, index) => ) + data.map((item, index) => ) ) : (
No results. diff --git a/mast-react-vite/src/components/ui/task.tsx b/mast-react-vite/src/components/ui/task.tsx index 805c0a4..27f4f90 100644 --- a/mast-react-vite/src/components/ui/task.tsx +++ b/mast-react-vite/src/components/ui/task.tsx @@ -14,9 +14,10 @@ interface TaskProps { data: any; index?: number; onMarkDone?: (selectedIds: number[]) => void; // Callback to mark tasks as done + onTogglePriority?: (taskId: number) => void; // Callback to toggle task priority } -export function Task({ selected, onSelect, data, onMarkDone }: TaskProps) { +export function Task({ selected, onSelect, data, onMarkDone, onTogglePriority }: TaskProps) { // Track whether this task should be visible or exit-animating const [isVisible, setIsVisible] = React.useState(true); const { isSelected, toggleSelection, selectItem, sharedDragX, selectedItems, clearSelection} = useSelection(); @@ -192,16 +193,22 @@ export function Task({ selected, onSelect, data, onMarkDone }: TaskProps) {
{/* Priority flag icon in top right */} - {displayPriority && ( -
- -
- )} - {!displayPriority && ( -
- -
- )} + {/* Display due date in bottom right */} {(data.due || (hasPreview && data.preview.due)) && (