task status implementation

This commit is contained in:
2026-02-17 17:00:00 -06:00
parent 3d6e29d2c0
commit b8f5db030c
5 changed files with 196 additions and 39 deletions
+21 -4
View File
@@ -23,7 +23,8 @@ export interface Task {
startDate: string;
dueDate: string;
priority: number; // 1-10
completed: boolean;
status: number; // 0-10
completed: boolean; // Deprecated, kept for compat/computed from status = 10
tags: string[];
ownerId: string | null; // Add ownerId to interface
content?: string; // HTML content from Tiptap
@@ -46,7 +47,7 @@ export const checkRecurringTasks = () => {
const todayStr = nowObj.toLocaleDateString('en-CA'); // YYYY-MM-DD in local time
tasks.forEach(task => {
if (!task.completed || !task.recurrence) return;
if (task.status !== 10 || !task.recurrence) return;
// If deleted, we don't recurse?
if (task.deletedAt) return;
@@ -101,6 +102,7 @@ export const checkRecurringTasks = () => {
if (shouldReset) {
console.log(`Resetting recurring task: ${task.title}`);
updateTask(task.id, {
status: 0,
completed: false,
recurrence: {
...task.recurrence,
@@ -370,6 +372,13 @@ export const getCombinedScore = (task: Task): number => {
const sizeScore = ((task.size ?? 5) - 5) * -0.4;
baseScore += sizeScore;
// Status adjustment: 0-9 -> 0.0-2.0 weight
if (task.status < 10) {
// Map 0-9 to 0-2 range
const statusWeight = (task.status / 9) * 2.0;
baseScore += statusWeight;
}
return baseScore;
};
@@ -387,7 +396,8 @@ const mapRecordToTask = (r: any): Task => {
startDate: r.startDate,
dueDate: r.dueDate,
priority: r.priority,
completed: r.completed,
status: r.status ?? (r.completed ? 10 : 0),
completed: r.status === 10 || r.completed,
tags: tags,
ownerId: r.user || null,
content: r.content,
@@ -1013,6 +1023,7 @@ export const addTask = async (title: string, options?: { dueDate?: Date | string
startDate,
dueDate,
priority,
status: 0,
completed: false,
tags,
ownerId: pb.authStore.model?.id || "",
@@ -1032,6 +1043,7 @@ export const addTask = async (title: string, options?: { dueDate?: Date | string
startDate,
dueDate,
priority,
status: 0,
completed: false,
tags,
content,
@@ -1225,7 +1237,11 @@ export const setMatrixScaleDays = async (days: number) => {
export const toggleTask = (id: string) => {
const task = store.tasks.find(t => t.id === id);
if (task) {
updateTask(id, { completed: !task.completed });
const newCompleted = !task.completed;
updateTask(id, {
completed: newCompleted,
status: newCompleted ? 10 : 0
});
}
};
@@ -1672,6 +1688,7 @@ export const splitTask = async (taskId: string, userId: string) => {
tags: task.tags,
startDate: task.startDate,
dueDate: task.dueDate,
status: task.status,
completed: task.completed,
deletedAt: null,
sharedWith: [], // Start fresh with no shares