|
@@ -20,12 +20,22 @@ const ProgressByClientSearch: React.FC<Props> = ({ projects }) => { |
|
|
const { t } = useTranslation("dashboard"); |
|
|
const { t } = useTranslation("dashboard"); |
|
|
const router = useRouter(); |
|
|
const router = useRouter(); |
|
|
// If project searching is done on the server-side, then no need for this. |
|
|
// If project searching is done on the server-side, then no need for this. |
|
|
const [filteredProjects, setFilteredProjects] = useState(projects); |
|
|
|
|
|
|
|
|
// const [filteredProjects, setFilteredProjects] = useState(projects); |
|
|
|
|
|
|
|
|
|
|
|
const projectCombo = projects.map(project => ({ |
|
|
|
|
|
value: project.teamLeadId, |
|
|
|
|
|
label: `${project.teamCode} ${project.teamName ? '- ' + project.teamName : ''} (${project.projectNo})` |
|
|
|
|
|
})) |
|
|
|
|
|
|
|
|
const searchCriteria: Criterion<SearchParamNames>[] = useMemo( |
|
|
const searchCriteria: Criterion<SearchParamNames>[] = useMemo( |
|
|
() => [ |
|
|
() => [ |
|
|
{ label: t("Team Code"), paramName: "teamCode", type: "text" }, |
|
|
|
|
|
{ label: t("Team Name"), paramName: "teamName", type: "text" }, |
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
label: t("Team"), |
|
|
|
|
|
paramName: "teamLeadId", |
|
|
|
|
|
type: "autocomplete", |
|
|
|
|
|
options: projectCombo, |
|
|
|
|
|
needAll: false |
|
|
|
|
|
}, |
|
|
], |
|
|
], |
|
|
[t], |
|
|
[t], |
|
|
); |
|
|
); |
|
@@ -33,30 +43,20 @@ const ProgressByClientSearch: React.FC<Props> = ({ projects }) => { |
|
|
const onTaskClick = useCallback(async (teamProjectResult: TeamProjectResult) => { |
|
|
const onTaskClick = useCallback(async (teamProjectResult: TeamProjectResult) => { |
|
|
try { |
|
|
try { |
|
|
console.log(teamProjectResult) |
|
|
console.log(teamProjectResult) |
|
|
router.push( |
|
|
|
|
|
`/dashboard/ProjectStatusByTeam?teamLeadId=${teamProjectResult.teamLeadId}` |
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
if (teamProjectResult.teamLeadId > 0) { |
|
|
|
|
|
router.push( |
|
|
|
|
|
`/dashboard/ProjectStatusByTeam?teamLeadId=${teamProjectResult.teamLeadId}` |
|
|
|
|
|
); |
|
|
|
|
|
} else { |
|
|
|
|
|
router.push( |
|
|
|
|
|
`/dashboard/ProjectStatusByTeam` |
|
|
|
|
|
); |
|
|
|
|
|
} |
|
|
} catch (error) { |
|
|
} catch (error) { |
|
|
console.error('Error fetching team projects:', error); |
|
|
console.error('Error fetching team projects:', error); |
|
|
} |
|
|
} |
|
|
}, []); |
|
|
}, []); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const columns = useMemo<Column<TeamProjectResult>[]>( |
|
|
|
|
|
() => [ |
|
|
|
|
|
{ |
|
|
|
|
|
name: "id", |
|
|
|
|
|
label: t("Details"), |
|
|
|
|
|
onClick: onTaskClick, |
|
|
|
|
|
buttonIcon: <VisibilityIcon />, |
|
|
|
|
|
}, |
|
|
|
|
|
{ name: "teamCode", label: t("Team Code") }, |
|
|
|
|
|
{ name: "teamName", label: t("Team Name") }, |
|
|
|
|
|
{ name: "projectNo", label: t("No. of Projects") }, |
|
|
|
|
|
], |
|
|
|
|
|
[onTaskClick, t], |
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
return ( |
|
|
return ( |
|
|
<> |
|
|
<> |
|
|
<Typography variant="h4" marginInlineEnd={2}> |
|
|
<Typography variant="h4" marginInlineEnd={2}> |
|
@@ -65,19 +65,16 @@ const ProgressByClientSearch: React.FC<Props> = ({ projects }) => { |
|
|
<SearchBox |
|
|
<SearchBox |
|
|
criteria={searchCriteria} |
|
|
criteria={searchCriteria} |
|
|
onSearch={(query) => { |
|
|
onSearch={(query) => { |
|
|
setFilteredProjects( |
|
|
|
|
|
projects.filter( |
|
|
|
|
|
(cp) => |
|
|
|
|
|
cp.teamCode.toLowerCase().includes(query.teamCode.toLowerCase()) && |
|
|
|
|
|
cp.teamName.toLowerCase().includes(query.teamName.toLowerCase()) |
|
|
|
|
|
), |
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
console.log(query) |
|
|
|
|
|
onTaskClick({ |
|
|
|
|
|
...query, |
|
|
|
|
|
teamLeadId: Number(query.teamLeadId), |
|
|
|
|
|
teamId: Number(query.teamId), |
|
|
|
|
|
id: Number(query.teamId), |
|
|
|
|
|
projectNo: Number(query.projectNo) |
|
|
|
|
|
}) |
|
|
}} |
|
|
}} |
|
|
/> |
|
|
/> |
|
|
<SearchResults<TeamProjectResult> |
|
|
|
|
|
items={filteredProjects} |
|
|
|
|
|
columns={columns} |
|
|
|
|
|
/> |
|
|
|
|
|
</> |
|
|
</> |
|
|
); |
|
|
); |
|
|
}; |
|
|
}; |
|
|