diff --git a/src/components/BatchTransactionForm.tsx b/src/components/BatchTransactionForm.tsx index e52db95..5522de8 100644 --- a/src/components/BatchTransactionForm.tsx +++ b/src/components/BatchTransactionForm.tsx @@ -150,7 +150,7 @@ const BatchTransactionForm: React.FC = ({ onClose, on isDuplicate }; pasteTransactionMap.set(transactionKey, newTransaction); - + if (!isDuplicate) { seenTransactions.add(transactionKey); } diff --git a/src/components/JobCard.tsx b/src/components/JobCard.tsx index 6d209df..0862c39 100644 --- a/src/components/JobCard.tsx +++ b/src/components/JobCard.tsx @@ -29,11 +29,11 @@ const JobCard: React.FC = ({ const handleCardClick = (e: React.MouseEvent) => { const target = e.target as HTMLElement; const hasNoNavigate = target.closest('[data-no-navigate]'); - + if (hasNoNavigate) { return; } - + navigate(`/${job.id}`); }; diff --git a/src/components/JobStatusDropdown.tsx b/src/components/JobStatusDropdown.tsx index c745b5e..47897f6 100644 --- a/src/components/JobStatusDropdown.tsx +++ b/src/components/JobStatusDropdown.tsx @@ -1,5 +1,5 @@ -import { +import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, diff --git a/src/components/JobTransactionPopover.tsx b/src/components/JobTransactionPopover.tsx index 0607afe..fc9cc79 100644 --- a/src/components/JobTransactionPopover.tsx +++ b/src/components/JobTransactionPopover.tsx @@ -48,9 +48,9 @@ const JobTransactionPopover: React.FC = ({ const transactions = getTransactions() .map(transaction => ({ ...transaction, - displayValue: type === 'costs' ? transaction.totalPrice : - type === 'revenue' ? transaction.totalPrice : - transaction.totalPrice // For profit, we'll show the actual value + displayValue: type === 'costs' ? transaction.totalPrice : + type === 'revenue' ? transaction.totalPrice : + transaction.totalPrice })) .filter(transaction => transaction.displayValue !== 0) .sort((a, b) => { @@ -113,8 +113,8 @@ const JobTransactionPopover: React.FC = ({ className="flex justify-between items-center p-2 rounded hover:bg-gray-700/50 transition-colors border-l-2 border-l-gray-600" >
-
- {transaction.item} +
+ {transaction.itemName}
Qty: {transaction.quantity.toLocaleString()} • {new Date(transaction.date).toLocaleDateString()} diff --git a/src/components/RecapPopover.tsx b/src/components/RecapPopover.tsx index 925ae8a..cf0b975 100644 --- a/src/components/RecapPopover.tsx +++ b/src/components/RecapPopover.tsx @@ -2,7 +2,7 @@ import { useState } from 'react'; import { IndJob } from '@/lib/types'; import { formatISK } from '@/utils/priceUtils'; -import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; +import { CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover'; import { useNavigate } from 'react-router-dom'; import { ChevronDown, ChevronUp } from 'lucide-react'; @@ -45,7 +45,7 @@ const RecapPopover: React.FC = ({ // Check if the clicked element or its parent has data-no-navigate const target = e.target as HTMLElement; const hasNoNavigate = target.closest('[data-no-navigate]'); - + if (!hasNoNavigate) { handleJobClick(jobId); } diff --git a/src/hooks/useDataService.ts b/src/hooks/useDataService.ts index cb31776..0237497 100644 --- a/src/hooks/useDataService.ts +++ b/src/hooks/useDataService.ts @@ -9,7 +9,7 @@ export function useJobs() { useEffect(() => { let mounted = true; - + const loadJobs = async (visibleStatuses?: string[]) => { try { setLoading(true); diff --git a/src/hooks/useJobMetrics.ts b/src/hooks/useJobMetrics.ts index 636cc43..409a990 100644 --- a/src/hooks/useJobMetrics.ts +++ b/src/hooks/useJobMetrics.ts @@ -2,7 +2,7 @@ import { IndJob } from '@/lib/types'; export const useJobMetrics = (jobs: IndJob[]) => { - const calculateJobRevenue = (job: IndJob) => + const calculateJobRevenue = (job: IndJob) => job.income.reduce((sum, tx) => sum + tx.totalPrice, 0); const calculateJobProfit = (job: IndJob) => { @@ -12,7 +12,7 @@ export const useJobMetrics = (jobs: IndJob[]) => { }; const totalJobs = jobs.length; - + const totalProfit = jobs.reduce((sum, job) => { const expenditure = job.expenditures.reduce((sum, tx) => sum + tx.totalPrice, 0); const income = job.income.reduce((sum, tx) => sum + tx.totalPrice, 0); diff --git a/src/lib/pocketbase.ts b/src/lib/pocketbase.ts index c6ace76..f441ebb 100644 --- a/src/lib/pocketbase.ts +++ b/src/lib/pocketbase.ts @@ -41,7 +41,7 @@ const wrappedPb = new Proxy(pb, { return (collectionName: string) => { // Get the original collection const originalCollection = target.collection(collectionName); - + // Return a proxy for the collection that ensures auth return new Proxy(originalCollection, { get(collectionTarget, methodName) { @@ -61,7 +61,7 @@ const wrappedPb = new Proxy(pb, { }); }; } - + return target[prop as keyof typeof target]; } }); diff --git a/src/pages/Index.tsx b/src/pages/Index.tsx index 5c40d2c..20c745a 100644 --- a/src/pages/Index.tsx +++ b/src/pages/Index.tsx @@ -5,7 +5,6 @@ import { Plus, Factory, TrendingUp, Briefcase, FileText } from 'lucide-react'; import { IndTransactionRecordNoId, IndJobRecordNoId } from '@/lib/pbtypes'; import { formatISK } from '@/utils/priceUtils'; import { getStatusPriority } from '@/utils/jobStatusUtils'; -import JobCard from '@/components/JobCard'; import JobForm from '@/components/JobForm'; import JobGroup from '@/components/JobGroup'; import { IndJob } from '@/lib/types'; @@ -69,7 +68,7 @@ const Index = () => { const filterJobs = (jobs: IndJob[]) => { if (!searchQuery) return jobs; const query = searchQuery.toLowerCase(); - return jobs.filter(job => + return jobs.filter(job => job.outputItem.toLowerCase().includes(query) ); }; @@ -158,7 +157,7 @@ const Index = () => { const newState = { ...collapsedGroups, [status]: !collapsedGroups[status] }; setCollapsedGroups(newState); localStorage.setItem('jobGroupsCollapsed', JSON.stringify(newState)); - + if (collapsedGroups[status]) { loadJobsForStatuses([status]); } diff --git a/src/services/jobService.ts b/src/services/jobService.ts index bae76ce..9606d1c 100644 --- a/src/services/jobService.ts +++ b/src/services/jobService.ts @@ -16,14 +16,14 @@ const expand = 'billOfMaterials,consumedMaterials,expenditures,income'; export async function getJobs(statuses?: string[]): Promise { console.log('Getting jobs', statuses ? `for statuses: ${statuses.join(', ')}` : ''); - + let options: any = { expand }; - + if (statuses && statuses.length > 0) { const statusFilters = statuses.map(status => `status = "${status}"`).join(' || '); options.filter = statusFilters; } - + const result = await pb.collection('ind_job').getFullList(10000, options); const jobs: IndJob[] = []; for (const job of result) {