Refactor Index page

Refactor `src/pages/Index.tsx` into smaller components.
This commit is contained in:
gpt-engineer-app[bot]
2025-07-09 19:17:46 +00:00
committed by PhatPhuckDave
parent 81e9a98315
commit 5af53723cc
4 changed files with 317 additions and 167 deletions

30
src/utils/jobFiltering.ts Normal file
View File

@@ -0,0 +1,30 @@
import { IndJob } from '@/lib/types';
import { getStatusPriority } from '@/utils/jobStatusUtils';
export const filterJobs = (jobs: IndJob[], searchQuery: string) => {
if (!searchQuery) return jobs;
const query = searchQuery.toLowerCase();
return jobs.filter(job =>
job.outputItem.toLowerCase().includes(query)
);
};
export const sortJobs = (jobs: IndJob[]) => {
return [...jobs].sort((a, b) => {
const priorityA = getStatusPriority(a.status);
const priorityB = getStatusPriority(b.status);
if (priorityA === priorityB) {
return new Date(b.created || '').getTime() - new Date(a.created || '').getTime();
}
return priorityA - priorityB;
});
};
export const categorizeJobs = (jobs: IndJob[], searchQuery: string) => {
const sortedJobs = sortJobs(jobs);
const regularJobs = filterJobs(sortedJobs.filter(job => job.status !== 'Tracked'), searchQuery);
const trackedJobs = filterJobs(sortedJobs.filter(job => job.status === 'Tracked'), searchQuery);
return { regularJobs, trackedJobs };
};