@@ -10,6 +10,25 @@ const LogsPage = () => {
1010 const [ logs , setLogs ] = useState ( [ ] ) ;
1111 const [ showLegends , setShowLegends ] = useState ( false ) ;
1212 const [ loading , setLoading ] = useState ( true ) ;
13+ const [ hiddenLegends , setHiddenLegends ] = useState ( [ ] ) ;
14+
15+ const handleLegendClick = ( legend ) => {
16+ setHiddenLegends ( ( prevHiddenLegends ) => {
17+ if ( prevHiddenLegends . includes ( legend ) ) {
18+ return prevHiddenLegends . filter ( ( item ) => item !== legend ) ;
19+ } else {
20+ return [ ...prevHiddenLegends , legend ] ;
21+ }
22+ } ) ;
23+ } ;
24+
25+ const [ filteredLogs , setFilteredLogs ] = useState ( [ ] ) ;
26+
27+ useEffect ( ( ) => {
28+ setFilteredLogs (
29+ logs . filter ( ( log ) => ! hiddenLegends . includes ( log . category ) )
30+ ) ;
31+ } , [ logs , hiddenLegends ] ) ;
1332
1433 useEffect ( ( ) => {
1534 const fetchLogs = async ( ) => {
@@ -74,12 +93,15 @@ const LogsPage = () => {
7493 </ div >
7594 { showLegends && (
7695 < div className = "mx-auto p-6 border border-gray-700 shadow-lg text-center bg-gray-900 mt-[-16px] mb-8" >
77- < h2 className = "text-2xl font-semibold tracking-tight text-white" > Legends</ h2 >
78- < ColorLegends />
96+ < h2 className = "mb-[-16px] text-2xl font-semibold tracking-tight text-white" > Legends</ h2 >
97+ < ColorLegends
98+ onLegendClick = { handleLegendClick }
99+ hiddenLegends = { hiddenLegends }
100+ />
79101 </ div >
80102 ) }
81103 < div className = { `grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8 ${ ! showLegends ? 'mt-8' : '' } ` } >
82- { logs . map ( ( log , index ) => (
104+ { filteredLogs . map ( ( log , index ) => (
83105 < LogCard key = { index } log = { log } index = { index } totalLogs = { logs . length } />
84106 ) ) }
85107 </ div >
0 commit comments