fixed due today and made it due within 12 hrs either way. Also added 'complete until' language to recurring task status update dropdown

This commit is contained in:
2026-02-21 12:19:12 -06:00
parent 6356a7f653
commit 759c873b63
3 changed files with 56 additions and 10 deletions
+11 -8
View File
@@ -1,12 +1,12 @@
import { type Component, createMemo, For, Show } from "solid-js";
import { type Task, calculateUrgencyFromDate, setActiveTaskId, store, copyTask, updateTask, currentTaskContext } from "@/store";
import { type Task, calculateUrgencyFromDate, setActiveTaskId, store, copyTask, updateTask, currentTaskContext, now } from "@/store";
import { cn } from "@/lib/utils";
import { Clock, ArrowUpCircle, Copy, Users2 } from "lucide-solid";
import { Badge } from "@/components/ui/badge";
import { useTheme } from "./ThemeProvider";
import { getThemeAdjustedColor } from "@/lib/colors";
import { Select, SelectContent, SelectItem, SelectTrigger } from "@/components/ui/select";
import { STATUS_OPTIONS } from "@/lib/constants";
import { getStatusOptionsForTask } from "@/lib/constants";
import { StatusCircle } from "./StatusCircle";
export const TaskCard: Component<{ task: Task }> = (props) => {
@@ -40,17 +40,20 @@ export const TaskCard: Component<{ task: Task }> = (props) => {
return tags;
});
const isDueToday = createMemo(() => {
const isDueWithin12Hours = createMemo(() => {
if (!props.task.dueDate) return false;
try {
const todayStr = new Date().toLocaleDateString('en-CA');
const dueStr = new Date(props.task.dueDate).toLocaleDateString('en-CA');
return todayStr === dueStr;
const dueMs = new Date(props.task.dueDate).getTime();
const diffMs = dueMs - now();
const twelveHoursMs = 12 * 60 * 60 * 1000;
return Math.abs(diffMs) <= twelveHoursMs;
} catch {
return false;
}
});
const statusOptions = createMemo(() => getStatusOptionsForTask(props.task.recurrence));
return (
<div
class={cn(
@@ -60,7 +63,7 @@ export const TaskCard: Component<{ task: Task }> = (props) => {
onClick={() => setActiveTaskId(props.task.id)}
>
{/* Today indicator */}
<Show when={isDueToday() && !props.task.completed}>
<Show when={isDueWithin12Hours() && !props.task.completed}>
<div class="absolute left-0 top-3 bottom-3 w-1 bg-primary rounded-r-md" />
</Show>
{/* Status Dropdown */}
@@ -74,7 +77,7 @@ export const TaskCard: Component<{ task: Task }> = (props) => {
if (!isNaN(s)) updateTask(props.task.id, { status: s });
}
}}
options={STATUS_OPTIONS}
options={statusOptions()}
optionValue="value"
optionTextValue="label"
placeholder="Status"