Code format

This commit is contained in:
2025-07-07 20:10:09 +02:00
parent e30cac00ea
commit f3ab31ce76
10 changed files with 21 additions and 22 deletions

View File

@@ -150,7 +150,7 @@ const BatchTransactionForm: React.FC<BatchTransactionFormProps> = ({ onClose, on
isDuplicate
};
pasteTransactionMap.set(transactionKey, newTransaction);
if (!isDuplicate) {
seenTransactions.add(transactionKey);
}

View File

@@ -29,11 +29,11 @@ const JobCard: React.FC<JobCardProps> = ({
const handleCardClick = (e: React.MouseEvent) => {
const target = e.target as HTMLElement;
const hasNoNavigate = target.closest('[data-no-navigate]');
if (hasNoNavigate) {
return;
}
navigate(`/${job.id}`);
};

View File

@@ -1,5 +1,5 @@
import {
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,

View File

@@ -48,9 +48,9 @@ const JobTransactionPopover: React.FC<JobTransactionPopoverProps> = ({
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<JobTransactionPopoverProps> = ({
className="flex justify-between items-center p-2 rounded hover:bg-gray-700/50 transition-colors border-l-2 border-l-gray-600"
>
<div className="flex-1 min-w-0">
<div className="text-sm font-medium text-white truncate" title={transaction.item}>
{transaction.item}
<div className="text-sm font-medium text-white truncate" title={transaction.itemName}>
{transaction.itemName}
</div>
<div className="text-xs text-gray-400">
Qty: {transaction.quantity.toLocaleString()} {new Date(transaction.date).toLocaleDateString()}

View File

@@ -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<RecapPopoverProps> = ({
// 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);
}

View File

@@ -9,7 +9,7 @@ export function useJobs() {
useEffect(() => {
let mounted = true;
const loadJobs = async (visibleStatuses?: string[]) => {
try {
setLoading(true);

View File

@@ -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);

View File

@@ -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];
}
});

View File

@@ -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]);
}

View File

@@ -16,14 +16,14 @@ const expand = 'billOfMaterials,consumedMaterials,expenditures,income';
export async function getJobs(statuses?: string[]): Promise<IndJob[]> {
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) {