Sort jobs such and such

This commit is contained in:
2025-07-04 17:17:18 +02:00
parent f12fdc8195
commit b18b05c675
3 changed files with 46 additions and 17 deletions

View File

@@ -2,7 +2,7 @@ import { useState, useEffect } from 'react';
import { Button } from '@/components/ui/button';
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
import { Plus, Factory, TrendingUp, Briefcase } from 'lucide-react';
import { IndTransactionRecordNoId, IndJobRecordNoId, IndTransactionRecord } from '@/lib/pbtypes';
import { IndTransactionRecordNoId, IndJobRecordNoId, IndTransactionRecord, IndJobStatusOptions } from '@/lib/pbtypes';
import * as jobService from '@/services/jobService';
import * as transactionService from '@/services/transactionService';
import { formatISK } from '@/utils/priceUtils';
@@ -36,6 +36,29 @@ const Index = () => {
}
};
// Sort jobs by status priority
const getStatusPriority = (status: IndJobStatusOptions): number => {
switch (status) {
case 'Planned': return 6;
case 'Acquisition': return 1;
case 'Running': return 2;
case 'Done': return 3;
case 'Selling': return 4;
case 'Closed': return 5;
default: return 0;
}
};
const sortedJobs = [...jobs].sort((a, b) => {
const priorityA = getStatusPriority(a.status);
const priorityB = getStatusPriority(b.status);
if (priorityA === priorityB) {
// If same status, sort by creation date (newest first)
return new Date(b.created || '').getTime() - new Date(a.created || '').getTime();
}
return priorityA - priorityB;
});
const handleCreateJob = async (jobData: IndJobRecordNoId) => {
try {
const newJob = await createJob(jobData);
@@ -296,7 +319,7 @@ const Index = () => {
</Card>
) : (
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-2 gap-6">
{jobs.map((job) => (
{sortedJobs.map((job) => (
<div key={job.id} onClick={() => setSelectedJob(job)} className="cursor-pointer">
<JobCard
job={job}