import { type Component, For, createMemo } from "solid-js";
import { store, getCombinedScore, matchesFilter } from "@/store";
import { TaskCard } from "@/components/TaskCard";

export const ProgressView: Component = () => {
    const sortedTasks = createMemo(() => {
        return [...store.tasks]
            .filter(t => !t.deletedAt && matchesFilter(t))
            .sort((a, b) => {
                // 1. Completed tasks at the bottom
                if (a.completed !== b.completed) return a.completed ? 1 : -1;

                // 2. Sort by Progress (Status) Descending (Highest progress first)
                // Assuming status 0-9 are active states, 10 is completed (handled above)
                if (a.status !== b.status) return b.status - a.status;

                // 3. Then by Focus Score (Combined Score)
                return getCombinedScore(b) - getCombinedScore(a);
            });
    });

    return (
        <div class="space-y-6">
            <header>
                <h2 class="text-3xl font-bold tracking-tight">Progress</h2>
                <p class="text-muted-foreground mt-1 text-lg">Tasks sorted by progress status, then by focus score.</p>
            </header>

            <div class="grid gap-3">
                <For each={sortedTasks()}>
                    {(task) => <TaskCard task={task} />}
                </For>
            </div>

            {sortedTasks().length === 0 && (
                <div class="flex flex-col items-center justify-center py-20 text-center">
                    <div class="w-16 h-16 bg-muted rounded-full flex items-center justify-center mb-4">
                        <span class="text-2xl">📈</span>
                    </div>
                    <p class="text-muted-foreground">No tasks found in the current filter.</p>
                </div>
            )}
        </div>
    );
};
