task status implementation
This commit is contained in:
+21
-4
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user