From 8b2a44e1ea1ac4e169a5eb3b36f03457f51e4a68 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Tue, 8 Jul 2025 10:27:34 +0000 Subject: [PATCH] Refactor JobCardMetrics display Consistently style the revenue progress and performance indicator, either with or without a backdrop/icon. --- src/components/JobCardMetrics.tsx | 56 ++++++++++++++++++++----------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/src/components/JobCardMetrics.tsx b/src/components/JobCardMetrics.tsx index 1c65141..92f1e6c 100644 --- a/src/components/JobCardMetrics.tsx +++ b/src/components/JobCardMetrics.tsx @@ -84,7 +84,7 @@ const JobCardMetrics: React.FC = ({ job }) => { {job.projectedCost > 0 && ( -
+
vs {editingField === 'projectedCost' ? ( = ({ job }) => { {formatISK(job.projectedCost)} )} -
- {((totalExpenditure / job.projectedCost) * 100).toFixed(0)}% +
+ {totalExpenditure <= job.projectedCost ? '✅' : '⚠️'} {((totalExpenditure / job.projectedCost) * 100).toFixed(0)}%
)} @@ -119,7 +126,7 @@ const JobCardMetrics: React.FC = ({ job }) => {
{job.projectedRevenue > 0 && ( -
+
vs {editingField === 'projectedRevenue' ? ( = ({ job }) => { {formatISK(job.projectedRevenue)} )} -
= job.projectedRevenue ? 'text-green-400' : 'text-red-400'}`}> - {((totalIncome / job.projectedRevenue) * 100).toFixed(0)}% +
+
= job.projectedRevenue + ? 'bg-green-900/50 text-green-400' + : 'bg-yellow-900/50 text-yellow-400' + }`} + title={`Revenue progress: ${((totalIncome / job.projectedRevenue) * 100).toFixed(1)}% of projected revenue`} + > + {totalIncome >= job.projectedRevenue ? '🎯' : '📊'} {((totalIncome / job.projectedRevenue) * 100).toFixed(0)}% +
+ {showPerformanceIndicator && ( +
= 100 + ? 'bg-green-900/50 text-green-400' + : performancePercentage >= 90 + ? 'bg-yellow-900/50 text-yellow-400' + : 'bg-red-900/50 text-red-400' + }`} + title={`Performance: ${formatISK(actualRevenuePerItem)}/item vs ${formatISK(expectedRevenuePerItem)}/item expected (${performancePercentage.toFixed(1)}%)`} + > + {performancePercentage >= 100 ? '📈' : performancePercentage >= 90 ? '⚠️' : '📉'} {performancePercentage.toFixed(0)}% +
+ )}
)} - {showPerformanceIndicator && ( -
= 100 - ? 'bg-green-900/50 text-green-400' - : performancePercentage >= 90 - ? 'bg-yellow-900/50 text-yellow-400' - : 'bg-red-900/50 text-red-400' - }`} - title={`Performance: ${formatISK(actualRevenuePerItem)}/item vs ${formatISK(expectedRevenuePerItem)}/item expected (${performancePercentage.toFixed(1)}%)`} - > - {performancePercentage >= 100 ? '📈' : performancePercentage >= 90 ? '⚠️' : '📉'} {performancePercentage.toFixed(0)}% -
- )}
Profit