@@ -36,16 +36,16 @@ const GenerateProjectPotentialDelayReport: React.FC<Props> = ({ teams, clients,
}))
}))
const [errors, setErrors] = React.useState({
const [errors, setErrors] = React.useState({
numberOfDays : false,
projectCompletion : false,
daysUntilCurrentStageEnd : false,
resourceUtilizationPercentage : false,
})
})
const searchCriteria: Criterion<SearchParamNames>[] = useMemo(
const searchCriteria: Criterion<SearchParamNames>[] = useMemo(
() => [
() => [
{ label: t("Team"), paramName: "team", type: "select", options: teamCombo },
{ label: t("Team"), paramName: "team", type: "select", options: teamCombo },
{ label: t("Client"), paramName: "client", type: "autocomplete", options: [...subsidiaryCombo, ...clientCombo] },
{ label: t("Client"), paramName: "client", type: "autocomplete", options: [...subsidiaryCombo, ...clientCombo] },
{ label: t("Number Of Days"), paramName: "numberOfDays", type: "text", textType: "number", error: errors.numberOfDays , helperText: t("Can not be null and decimal, and should be >= 0") },
{ label: t("Project Completion (<= %)"), paramName: "projectCompletion", type: "text", textType: "number", error: errors.projectCompletion , helperText: t("Can not be null and decimal, and should be in range of 0 - 100") },
{ label: t("Days until current stage end"), paramName: "daysUntilCurrentStageEnd", type: "text", textType: "number", error: errors.daysUntilCurrentStageEnd , helperText: t("Can not be null and decimal, and should be >= 0") },
{ label: t("Resource Utilization Percentage (<= %)"), paramName: "resourceUtilizationPercentage", type: "text", textType: "number", error: errors.resourceUtilizationPercentage , helperText: t("Can not be null and decimal, and should be in range of 0 - 100") },
],
],
[t, errors],
[t, errors],
);
);
@@ -57,18 +57,18 @@ const GenerateProjectPotentialDelayReport: React.FC<Props> = ({ teams, clients,
onSearch={async (query) => {
onSearch={async (query) => {
let hasError = false
let hasError = false
if (query.numberOfDays.length === 0 || !Number.isInteger(parseFloat(query.numberOfDays)) || parseInt(query.numberOfDays ) < 0) {
setErrors((prev) => ({...prev, numberOfDays : true}))
if (query.daysUntilCurrentStageEnd.length === 0 || !Number.isInteger(parseFloat(query.daysUntilCurrentStageEnd)) || parseInt(query.daysUntilCurrentStageEnd ) < 0) {
setErrors((prev) => ({...prev, daysUntilCurrentStageEnd : true}))
hasError = true
hasError = true
} else {
} else {
setErrors((prev) => ({...prev, numberOfDays : false}))
setErrors((prev) => ({...prev, daysUntilCurrentStageEnd : false}))
}
}
if (query.projectCompletion.length === 0 || !Number.isInteger(parseFloat(query.projectCompletion)) || parseInt(query.projectCompletion) < 0 || parseInt(query.projectCompletion ) > 100) {
setErrors((prev) => ({...prev, projectCompletion : true}))
if (query.resourceUtilizationPercentage.length === 0 || !Number.isInteger(parseFloat(query.resourceUtilizationPercentage)) || parseInt(query.resourceUtilizationPercentage) < 0 || parseInt(query.resourceUtilizationPercentage ) > 100) {
setErrors((prev) => ({...prev, resourceUtilizationPercentage : true}))
hasError = true
hasError = true
} else {
} else {
setErrors((prev) => ({...prev, projectCompletion : false}))
setErrors((prev) => ({...prev, resourceUtilizationPercentage : false}))
}
}
if (hasError) return false
if (hasError) return false
@@ -80,8 +80,8 @@ const GenerateProjectPotentialDelayReport: React.FC<Props> = ({ teams, clients,
const response = await fetchProjectPotentialDelayReport({
const response = await fetchProjectPotentialDelayReport({
teamId: teamIndex >= 0 ? teams[teamIndex].id : "All",
teamId: teamIndex >= 0 ? teams[teamIndex].id : "All",
clientId: clientIndex >= 0 ? clients[clientIndex].id : subsidiaryIndex >= 0 ? subsidiaries[subsidiaryIndex].id : "All",
clientId: clientIndex >= 0 ? clients[clientIndex].id : subsidiaryIndex >= 0 ? subsidiaries[subsidiaryIndex].id : "All",
numberOfDays: parseInt(query.numberOfDays ),
projectCompletion: parseInt(query.projectCompletion ),
daysUntilCurrentStageEnd: parseInt(query.daysUntilCurrentStageEnd ),
resourceUtilizationPercentage: parseInt(query.resourceUtilizationPercentage ),
type: clientIndex >= 0 ? "client" : subsidiaryIndex >= 0 ? "subsidiary" : "All",
type: clientIndex >= 0 ? "client" : subsidiaryIndex >= 0 ? "subsidiary" : "All",
})
})
if (response) {
if (response) {