11import { Button } from "@progress/kendo-react-buttons" ;
2- import { Grid , GridColumn , GridCustomCellProps } from "@progress/kendo-react-grid" ;
2+ import { Grid , GridColumn } from "@progress/kendo-react-grid" ;
33import { Badge } from "@progress/kendo-react-indicators" ;
44import { Checkbox } from "@progress/kendo-react-inputs" ;
55import { Avatar , Card , CardBody , CardFooter , CardHeader , CardSubtitle , CardTitle } from "@progress/kendo-react-layout" ;
66import { Calendar } from "@progress/kendo-react-dateinputs" ;
77import { ListView , ListViewItemWrapper } from "@progress/kendo-react-listview" ;
88import { pencilIcon , plusIcon , trashIcon } from "@progress/kendo-svg-icons" ;
9- import { gridData , listData } from "./data" ;
9+ import { tasksData , listData , projectsData , teamsData } from "./data" ;
10+ import React from "react" ;
11+ import { useNavigate } from "react-router-dom" ;
1012
1113const ListItemRender = ( props : any ) => {
1214 let item = props . dataItem ;
@@ -20,13 +22,34 @@ const ListItemRender = (props: any) => {
2022 </ ListViewItemWrapper > ;
2123} ;
2224
23- const TaskNameCells = ( props : GridCustomCellProps ) => {
24- return < td { ...props . tdProps } >
25- < div className = "truncate" > { props . dataItem . taskName } </ div >
26- </ td > ;
27- }
25+ // const TaskNameCells = (props: GridCustomCellProps) => {
26+ // return <td {...props.tdProps}>
27+ // <div className="truncate">{props.dataItem.taskName}</div>
28+ // </td>;
29+ // }
2830
2931export default function Home ( ) {
32+ const navigate = useNavigate ( ) ;
33+ const [ showAllProjects , setShowAllProjects ] = React . useState ( false ) ;
34+ const [ showAllTeams , setShowAllTeams ] = React . useState ( false ) ;
35+ const [ showAllTasks , setShowAllTasks ] = React . useState ( false ) ;
36+
37+ const handleSeeAllProjectsClick = ( ) => {
38+ setShowAllProjects ( ! showAllProjects ) ;
39+ } ;
40+
41+ const handleSeeAllTeamsClick = ( ) => {
42+ setShowAllTeams ( ! showAllTeams ) ;
43+ } ;
44+
45+ const handleSeeAllTasksClick = ( ) => {
46+ setShowAllTasks ( ! showAllTasks ) ;
47+ }
48+
49+ const projectsToShow = showAllProjects ? projectsData : projectsData . slice ( 0 , 5 ) ;
50+ const teamsToShow = showAllTeams ? teamsData : teamsData . slice ( 0 , 4 ) ;
51+
52+ const tasksToShow = showAllTasks ? tasksData : tasksData . slice ( 0 , 5 ) ;
3053 return (
3154 < >
3255 < div style = { { minHeight : 'calc(100vh - 106px)' } } className = "bg-linear-[119deg,_#F8F9FF_-1.78%,_#F3F2FF_47.75%,_#E6F5FF_97.28%] p-10" >
@@ -38,41 +61,31 @@ export default function Home() {
3861 < CardTitle className = "font-medium" > Projects</ CardTitle >
3962 </ CardHeader >
4063 < CardBody >
41- < div className = "grid grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5 gap-2" >
42- < Card >
43- < CardBody className = "flex flex-col justify-between" >
44- < CardTitle className = "font-medium line-clamp-5 h-25.5" > AI-Powered Bug Tracking and Resolution System</ CardTitle >
45- < div > < Badge themeColor = "warning" rounded = "full" position = { 'inside' } align = { { vertical : 'bottom' , horizontal : 'start' } } className = "relative z-0" > Medium priority</ Badge > </ div >
46- </ CardBody >
47- </ Card >
48- < Card >
49- < CardBody className = "flex flex-col justify-between" >
50- < CardTitle className = "font-medium line-clamp-5 h-25.5" > Virtual Reality Training Module for Employee Onboarding</ CardTitle >
51- < div > < Badge themeColor = "success" rounded = "full" position = { 'inside' } align = { { vertical : 'bottom' , horizontal : 'start' } } className = "relative z-0" > Low priority</ Badge > </ div >
52- </ CardBody >
53- </ Card >
54- < Card >
55- < CardBody className = "flex flex-col justify-between" >
56- < CardTitle className = "font-medium line-clamp-5 h-25.5" > Online Learning Management System (LMS)</ CardTitle >
57- < div > < Badge themeColor = "error" rounded = "full" position = { 'inside' } align = { { vertical : 'bottom' , horizontal : 'start' } } className = "relative z-0" > Urgent</ Badge > </ div >
58- </ CardBody >
59- </ Card >
60- < Card className = "hidden xl:flex" >
61- < CardBody className = "flex flex-col justify-between" >
62- < CardTitle className = "font-medium line-clamp-5 h-25.5" > Telehealth and Health Tracking Application</ CardTitle >
63- < div > < Badge themeColor = "success" rounded = "full" position = { 'inside' } align = { { vertical : 'bottom' , horizontal : 'start' } } className = "relative z-0" > Low priority</ Badge > </ div >
64- </ CardBody >
65- </ Card >
66- < Card className = "hidden 2xl:flex" >
67- < CardBody className = "flex flex-col justify-between" >
68- < CardTitle className = "font-medium line-clamp-5 h-25.5" > Market Research and Analytics Tool</ CardTitle >
69- < div > < Badge themeColor = "success" rounded = "full" position = { 'inside' } align = { { vertical : 'bottom' , horizontal : 'start' } } className = "relative z-0" > Low priority</ Badge > </ div >
70- </ CardBody >
71- </ Card >
64+ < div className = "grid grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5 gap-2" >
65+ { projectsToShow . map ( ( project , index ) => {
66+ return < Card key = { 'project-' + index } >
67+ < CardBody className = "flex flex-col justify-between" >
68+ < div onClick = { ( ) => navigate ( '/projects' ) } className = "cursor-pointer" >
69+ < CardTitle className = "font-medium line-clamp-5 h-25.5" > { project . ProjectName } </ CardTitle >
70+ < div > < Badge themeColor = {
71+ project . Priority === "Urgent"
72+ ? "error"
73+ : project . Priority === "Medium priority"
74+ ? "warning"
75+ : project . Priority === "Low priority"
76+ ? "success"
77+ : project . Priority === "Routine"
78+ ? "tertiary"
79+ : "primary"
80+ } rounded = "full" position = { 'inside' } align = { { vertical : 'bottom' , horizontal : 'start' } } className = "relative z-0" > { project . Priority } </ Badge > </ div >
81+ </ div >
82+ </ CardBody >
83+ </ Card >
84+ } ) }
7285 </ div >
7386 </ CardBody >
7487 < CardFooter className = "border-0 p-2" >
75- < Button fillMode = "flat" themeColor = "primary" > See all</ Button >
88+ < Button fillMode = "flat" themeColor = "primary" onClick = { handleSeeAllProjectsClick } > See all</ Button >
7689 </ CardFooter >
7790 </ Card >
7891 </ div >
@@ -85,45 +98,22 @@ export default function Home() {
8598 < CardTitle className = "font-medium" > Teams</ CardTitle >
8699 </ CardHeader >
87100 < CardBody className = "flex flex-col gap-2" >
88- < Card >
89- < CardBody className = "flex items-center" >
90- < Avatar > FE</ Avatar >
91- < div className = "hidden lg:block" >
92- < CardTitle className = "m-0 font-medium" > Frontend</ CardTitle >
93- < CardSubtitle className = "m-0 truncate text-subtle" > 10 members</ CardSubtitle >
94- </ div >
95- </ CardBody >
96- </ Card >
97- < Card >
98- < CardBody className = "flex items-center" >
99- < Avatar themeColor = "secondary" > BE</ Avatar >
100- < div className = "hidden lg:block" >
101- < CardTitle className = "m-0 font-medium" > Backend</ CardTitle >
102- < CardSubtitle className = "m-0 truncate text-subtle" > 10 members</ CardSubtitle >
103- </ div >
104- </ CardBody >
105- </ Card >
106- < Card className = "hidden lg:flex" >
107- < CardBody className = "flex items-center" >
108- < Avatar themeColor = "tertiary" > DO</ Avatar >
109- < div className = "hidden lg:block" >
110- < CardTitle className = "m-0 font-medium" > DevOps</ CardTitle >
111- < CardSubtitle className = "m-0 truncate text-subtle" > 10 members</ CardSubtitle >
112- </ div >
113- </ CardBody >
114- </ Card >
115- < Card className = "hidden lg:flex" >
116- < CardBody className = "flex items-center" >
117- < Avatar > QA</ Avatar >
118- < div className = "hidden lg:block" >
119- < CardTitle className = "m-0 font-medium" > QA</ CardTitle >
120- < CardSubtitle className = "m-0 truncate text-subtle" > 10 members</ CardSubtitle >
121- </ div >
122- </ CardBody >
123- </ Card >
101+ { teamsToShow . map ( ( team , index ) => {
102+ return < Card key = { 'team-' + index } >
103+ < div onClick = { ( ) => navigate ( '/team-management' ) } className = "cursor-pointer" >
104+ < CardBody className = "flex items-center" >
105+ < Avatar style = { { background : team . avatarColor } } > { team . teamCode } </ Avatar >
106+ < div className = "hidden lg:block" >
107+ < CardTitle className = "m-0 font-medium" > { team . teamName . replace ( "Team" , "" ) } </ CardTitle >
108+ < CardSubtitle className = "m-0 truncate text-subtle" > { team . teamMembers . length } members</ CardSubtitle >
109+ </ div >
110+ </ CardBody >
111+ </ div >
112+ </ Card >
113+ } ) }
124114 </ CardBody >
125115 < CardFooter className = "border-0 p-2" >
126- < Button fillMode = "flat" themeColor = "primary" > See all</ Button >
116+ < Button fillMode = "flat" themeColor = "primary" onClick = { handleSeeAllTeamsClick } > See all</ Button >
127117 </ CardFooter >
128118 </ Card >
129119 </ div >
@@ -144,13 +134,15 @@ export default function Home() {
144134 < CardTitle className = "font-medium" > Tasks</ CardTitle >
145135 </ CardHeader >
146136 < CardBody className = "h-full overflow-y-hidden" >
147- < Grid className = "h-full" data = { gridData } >
148- < GridColumn field = "taskName" title = "Task Name" editable = { false } filterable = { false } cells = { { data : TaskNameCells } } />
149- < GridColumn field = "status" title = "Status" editable = { false } filterable = { false } />
137+ < Grid className = "h-full" data = { tasksToShow } >
138+ < GridColumn field = "taskName" title = "Task Name"
139+ // cells={{ data: TaskNameCells }}
140+ />
141+ < GridColumn field = "status" title = "Status" width = { 115 } />
150142 </ Grid >
151143 </ CardBody >
152144 < CardFooter className = "border-0 p-2" >
153- < Button fillMode = "flat" themeColor = "primary" > See all</ Button >
145+ < Button fillMode = "flat" themeColor = "primary" onClick = { handleSeeAllTasksClick } > See all</ Button >
154146 </ CardFooter >
155147 </ Card >
156148 </ div >
0 commit comments