add utility to calculate and format completion percentage from planned and completed work

This commit is contained in:
pramod mahajan 2025-07-14 20:30:53 +05:30 committed by pramod.mahajan
parent d7d759732b
commit 1c2b6eaac8
3 changed files with 14 additions and 11 deletions

View File

@ -1,6 +1,6 @@
import React, { useEffect, useState } from "react";
import moment from "moment";
import { formatNumber, getDateDifferenceInDays } from "../../utils/dateUtils";
import { formatNumber, getCompletionPercentage, getDateDifferenceInDays } from "../../utils/dateUtils";
import { useNavigate } from "react-router-dom";
import { useProjectDetails, useUpdateProject } from "../../hooks/useProjects";
import ManageProjectInfo from "./ManageProjectInfo";
@ -227,12 +227,7 @@ const ProjectCard = ({ projectData, recall }) => {
Task: {formatNumber(projectInfo.completedWork)} / {formatNumber(projectInfo.plannedWork)}
</small>
<small className="text-body">
{Math.floor(
getProgressInNumber(
projectInfo.plannedWork,
projectInfo.completedWork
)
) || 0}{" "}
{getCompletionPercentage(projectInfo.completedWork, projectInfo.plannedWork)}
% Completed
</small>
</div>

View File

@ -3,7 +3,7 @@ import {
useEmployeesByProjectAllocated,
useProjects,
} from "../../hooks/useProjects";
import { formatNumber } from "../../utils/dateUtils";
import { formatNumber, getCompletionPercentage } from "../../utils/dateUtils";
import ProgressBar from "../common/ProgressBar";
const ProjectOverview = ({ project }) => {
@ -49,9 +49,8 @@ const ProjectOverview = ({ project }) => {
)
) || 0}{" "} */}
{
(formatNumber(project_detail.plannedWork),
"/",
formatNumber(project_detail.completedWork))
getCompletionPercentage( formatNumber(project_detail.completedWork),formatNumber(project_detail.plannedWork))
}
% Completed
</small>

View File

@ -69,4 +69,13 @@ export const formatNumber = (num) => {
};
export const formatUTCToLocalTime = (datetime) =>{
return moment.utc(datetime).local().format("MMMM DD, YYYY [at] hh:mm A");
}
export const getCompletionPercentage = (completedWork, plannedWork)=> {
if (!plannedWork || plannedWork === 0) return 0;
const percentage = (completedWork / plannedWork) * 100;
const clamped = Math.min(Math.max(percentage, 0), 100);
return clamped.toFixed(2);
}