File tree Expand file tree Collapse file tree 3 files changed +44
-6
lines changed
Expand file tree Collapse file tree 3 files changed +44
-6
lines changed Original file line number Diff line number Diff line change 1- import { useEffect , useRef } from "react" ;
1+ import { useEffect , useRef , useState } from "react" ;
22import { useKeyboardEvents } from "./hooks/useKeyboardEvents" ;
33import { TextareaInput } from "./components/TextareaInput" ;
44import { EventOptions } from "./components/EventOptions" ;
@@ -7,6 +7,7 @@ import { EventTable } from "./components/EventTable";
77
88function App ( ) {
99 const textareaRef = useRef < HTMLTextAreaElement | null > ( null ) ;
10+ const [ showDelays , setShowDelays ] = useState ( true ) ;
1011 const {
1112 events,
1213 allEvents,
@@ -66,13 +67,15 @@ function App() {
6667 eventCount = { filteredEventCount }
6768 totalEvents = { totalEvents }
6869 events = { allEvents }
70+ showDelays = { showDelays }
71+ onShowDelaysChange = { setShowDelays }
6972 />
7073
7174 { /* Timeline */ }
7275 < Timeline events = { events } />
7376
7477 { /* Event Table */ }
75- < EventTable events = { events } filters = { filters } />
78+ < EventTable events = { events } filters = { filters } showDelays = { showDelays } />
7679 </ div >
7780 </ div >
7881 ) ;
Original file line number Diff line number Diff line change @@ -7,6 +7,8 @@ interface EventOptionsProps {
77 eventCount : number ;
88 totalEvents : number ;
99 events : EventData [ ] ;
10+ showDelays : boolean ;
11+ onShowDelaysChange : ( showDelays : boolean ) => void ;
1012}
1113
1214export function EventOptions ( {
@@ -15,6 +17,8 @@ export function EventOptions({
1517 eventCount,
1618 totalEvents,
1719 events,
20+ showDelays,
21+ onShowDelaysChange,
1822} : EventOptionsProps ) {
1923 // Calculate event counts by type
2024 const eventCounts = events . reduce ( ( counts , event ) => {
@@ -93,6 +97,36 @@ export function EventOptions({
9397 >
9498 Hide All
9599 </ button >
100+ < label className = "flex items-center cursor-pointer text-xs text-text" >
101+ < input
102+ type = "checkbox"
103+ checked = { showDelays }
104+ onChange = { ( e ) => onShowDelaysChange ( e . target . checked ) }
105+ className = "sr-only"
106+ />
107+ < div
108+ className = { `w-4 h-4 rounded border-2 flex items-center justify-center transition-all duration-200 mr-2 ${
109+ showDelays
110+ ? "border-main bg-main shadow-sm"
111+ : "border-sub hover:border-main/70 bg-bg"
112+ } `}
113+ >
114+ { showDelays && (
115+ < svg
116+ className = "w-2.5 h-2.5 text-bg"
117+ fill = "currentColor"
118+ viewBox = "0 0 20 20"
119+ >
120+ < path
121+ fillRule = "evenodd"
122+ d = "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z"
123+ clipRule = "evenodd"
124+ />
125+ </ svg >
126+ ) }
127+ </ div >
128+ Show Delays
129+ </ label >
96130 </ div >
97131 </ div >
98132
Original file line number Diff line number Diff line change @@ -11,11 +11,12 @@ import { addDelayRowsToEvents } from "../utils/delayRows";
1111interface EventTableProps {
1212 events : EventData [ ] ;
1313 filters : EventFilters ;
14+ showDelays : boolean ;
1415}
1516
16- export function EventTable ( { events, filters } : EventTableProps ) {
17+ export function EventTable ( { events, filters, showDelays } : EventTableProps ) {
1718 const visibleColumns = getVisibleColumns ( filters ) ;
18- const eventsWithDelays = addDelayRowsToEvents ( events ) ;
19+ const eventsWithDelays = showDelays ? addDelayRowsToEvents ( events ) : events ;
1920
2021 if ( events . length === 0 ) {
2122 return (
@@ -59,7 +60,7 @@ export function EventTable({ events, filters }: EventTableProps) {
5960 < tbody className = "divide-y divide-sub/10" >
6061 { eventsWithDelays . map ( ( event ) => {
6162 // Handle delay rows
62- if ( "isDelayRow" in event ) {
63+ if ( showDelays && "isDelayRow" in event ) {
6364 return (
6465 < tr
6566 key = { event . id }
@@ -116,7 +117,7 @@ export function EventTable({ events, filters }: EventTableProps) {
116117 < div className = "flex items-center justify-between text-xs text-sub" >
117118 < span >
118119 Showing { events . length } events
119- { eventsWithDelays . filter ( ( e ) => "isDelayRow" in e ) . length > 0 &&
120+ { showDelays && eventsWithDelays . filter ( ( e ) => "isDelayRow" in e ) . length > 0 &&
120121 ` with ${
121122 eventsWithDelays . filter ( ( e ) => "isDelayRow" in e ) . length
122123 } delay rows`}
You can’t perform that action at this time.
0 commit comments