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
parent d2b80b4f02
commit 01ccd2e758
3 changed files with 14 additions and 11 deletions

View File

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

View File

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

View File

@ -69,4 +69,13 @@ export const formatNumber = (num) => {
}; };
export const formatUTCToLocalTime = (datetime) =>{ export const formatUTCToLocalTime = (datetime) =>{
return moment.utc(datetime).local().format("MMMM DD, YYYY [at] hh:mm A"); 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);
} }