add utility to calculate and format completion percentage from planned and completed work
This commit is contained in:
parent
d2b80b4f02
commit
01ccd2e758
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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);
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user