Skip to content

Commit 37d1200

Browse files
committed
legends
1 parent 972d36c commit 37d1200

File tree

3 files changed

+41
-8
lines changed

3 files changed

+41
-8
lines changed

src/components/ColorLegends.js

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,27 @@ const categoryStyles = {
2727
},
2828
};
2929

30-
const ColorLegends = () => {
30+
const ColorLegends = ({ onLegendClick, hiddenLegends }) => {
3131
return (
3232
<div className="flex justify-center mt-8">
3333
<div className="flex items-center flex-wrap justify-center space-x-4">
3434
{Object.keys(categoryStyles).map((category) => (
3535
<div key={category} className="flex items-center mb-2">
3636
<div
37-
className="w-4 h-4 rounded-full mr-2"
37+
className={`w-4 h-4 rounded-full mr-2 cursor-pointer ${
38+
hiddenLegends.includes(category) ? "opacity-50" : "opacity-100"
39+
}`}
3840
style={{ backgroundColor: categoryStyles[category].backgroundColor, border: `1px solid ${categoryStyles[category].borderColor}` }}
41+
onClick={() => onLegendClick(category)}
3942
></div>
40-
<span>{category}</span>
43+
<span
44+
className={`cursor-pointer ${
45+
hiddenLegends.includes(category) ? "opacity-50 line-through" : "opacity-100"
46+
}`}
47+
onClick={() => onLegendClick(category)}
48+
>
49+
{category}
50+
</span>
4151
</div>
4252
))}
4353
</div>

src/components/Label.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import React from 'react';
22

3-
const Label = ({ children }) => {
3+
4+
const Label = ({ children, onClick }) => {
45
return (
5-
<span className="inline-block bg-gray-700 text-gray-300 text-xs font-semibold mr-2 px-2.5 py-0.5 rounded-full">
6+
<span className="inline-block bg-gray-700 text-gray-300 text-xs font-semibold mr-2 px-2.5 py-0.5 rounded-full" onClick={onClick}>
67
{children}
78
</span>
89
);

src/pages/LogsPage.js

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)