Fixed timeline height
Moved export and fixed data output Added project budget amount widget to project listing
This commit is contained in:
@@ -19,8 +19,9 @@ import {
|
||||
getMilestones,
|
||||
getProjectIndicators,
|
||||
getProjectRisks,
|
||||
getBudgets,
|
||||
} from '../../services/api';
|
||||
import { Project, ApprovalStatus } from '../../types';
|
||||
import { Project, ApprovalStatus, Budget } from '../../types';
|
||||
import {
|
||||
formatDate,
|
||||
formatZAR,
|
||||
@@ -70,6 +71,21 @@ export const ProjectExpandedRow: React.FC<ProjectExpandedRowProps> = ({
|
||||
queryFn: () => getProjectRisks(projectId),
|
||||
});
|
||||
|
||||
const { data: allBudgets = [] } = useQuery({
|
||||
queryKey: ['budgets'],
|
||||
queryFn: () => getBudgets(1, 100),
|
||||
});
|
||||
|
||||
const projectBudgets = allBudgets.filter((b) => String(b.projectId) === String(projectId));
|
||||
const approvedBudgets = projectBudgets.filter(
|
||||
(b) =>
|
||||
b.status === undefined ||
|
||||
b.status === null ||
|
||||
Number(b.status) === ApprovalStatus.Approved ||
|
||||
Number(b.status) === 3
|
||||
);
|
||||
const approvedBudgetTotal = approvedBudgets.reduce((sum, b) => sum + (Number(b.amount) || 0), 0);
|
||||
|
||||
const verifiedMilestonesCount = milestones.filter((m) => m.status === ApprovalStatus.Approved).length;
|
||||
const milestoneProgress = milestones.length > 0 ? Math.round((verifiedMilestonesCount / milestones.length) * 100) : 0;
|
||||
const totalActivityBudget = activities.reduce((sum, a) => sum + (Number(a.amount) || 0), 0);
|
||||
@@ -86,6 +102,14 @@ export const ProjectExpandedRow: React.FC<ProjectExpandedRowProps> = ({
|
||||
<span className="text-xs text-slate-400">
|
||||
Owner / Created by: <strong className="text-slate-200">{getUserEmail(project.createdBy)}</strong>
|
||||
</span>
|
||||
{approvedBudgetTotal > 0 && (
|
||||
<>
|
||||
<span className="text-slate-600">•</span>
|
||||
<span className="text-xs text-emerald-400 font-mono font-semibold">
|
||||
Approved Budget: {formatZAR(approvedBudgetTotal)}
|
||||
</span>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
<p className="text-xs text-slate-300 leading-relaxed">{project.description}</p>
|
||||
</div>
|
||||
@@ -114,6 +138,8 @@ export const ProjectExpandedRow: React.FC<ProjectExpandedRowProps> = ({
|
||||
project={project}
|
||||
milestones={milestones}
|
||||
activities={activities}
|
||||
approvedBudgetTotal={approvedBudgetTotal}
|
||||
approvedBudgetsCount={approvedBudgets.length}
|
||||
onManageMilestones={onOpenMilestonesModal}
|
||||
onManageActivities={onOpenActivitiesModal}
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user