Ver código fonte

update report

tags/Baseline_30082024_FRONTEND_UAT
cyril.tsui 1 ano atrás
pai
commit
f1a72cc57c
4 arquivos alterados com 20 adições e 20 exclusões
  1. +4
    -4
      src/app/api/reports/index.ts
  2. +12
    -12
      src/components/GenerateProjectPotentialDelayReport/GenerateProjectPotentialDelayReport.tsx
  3. +2
    -2
      src/i18n/en/report.json
  4. +2
    -2
      src/i18n/zh/report.json

+ 4
- 4
src/app/api/reports/index.ts Ver arquivo

@@ -38,15 +38,15 @@ export interface ProjectCashFlowReportRequest {
export interface ProjectPotentialDelayReportFilter {
team: string[];
client: AutocompleteOptions[];
numberOfDays: number;
projectCompletion: number;
daysUntilCurrentStageEnd: number;
resourceUtilizationPercentage: number;
}

export interface ProjectPotentialDelayReportRequest {
teamId: number | "All";
clientId: number | "All";
numberOfDays: number;
projectCompletion: number;
daysUntilCurrentStageEnd: number;
resourceUtilizationPercentage: number;
type: string;
}



+ 12
- 12
src/components/GenerateProjectPotentialDelayReport/GenerateProjectPotentialDelayReport.tsx Ver arquivo

@@ -36,16 +36,16 @@ const GenerateProjectPotentialDelayReport: React.FC<Props> = ({ teams, clients,
}))

const [errors, setErrors] = React.useState({
numberOfDays: false,
projectCompletion: false,
daysUntilCurrentStageEnd: false,
resourceUtilizationPercentage: false,
})

const searchCriteria: Criterion<SearchParamNames>[] = useMemo(
() => [
{ label: t("Team"), paramName: "team", type: "select", options: teamCombo },
{ 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],
);
@@ -57,18 +57,18 @@ const GenerateProjectPotentialDelayReport: React.FC<Props> = ({ teams, clients,
onSearch={async (query) => {

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
} 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
} else {
setErrors((prev) => ({...prev, projectCompletion: false}))
setErrors((prev) => ({...prev, resourceUtilizationPercentage: false}))
}

if (hasError) return false
@@ -80,8 +80,8 @@ const GenerateProjectPotentialDelayReport: React.FC<Props> = ({ teams, clients,
const response = await fetchProjectPotentialDelayReport({
teamId: teamIndex >= 0 ? teams[teamIndex].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",
})
if (response) {


+ 2
- 2
src/i18n/en/report.json Ver arquivo

@@ -1,6 +1,6 @@
{
"Number Of Days": "Number Of Days",
"Project Completion (<= %)": "Project Completion (<= %)",
"Days until current stage end": "Days until current stage end",
"Resource Utilization Percentage (<= %)": "Resource Utilization Percentage (<= %)",

"Project": "Project",
"Date Type": "Date Type",


+ 2
- 2
src/i18n/zh/report.json Ver arquivo

@@ -2,8 +2,8 @@
"Staff Monthly Work Hours Analysis Report": "Staff Monthly Work Hours Analysis Report",
"Project Resource Overconsumption Report": "Project Resource Overconsumption Report",

"Number Of Days": "天數",
"Project Completion (<= %)": "項目完成度 (<= %)",
"Days until current stage end": "當前階段結束剩餘天數",
"Resource Utilization Percentage (<= %)": "資源利用率百分比 (<= %)",

"Project": "項目",
"Date Type": "日期類型",


Carregando…
Cancelar
Salvar