Skip to content

Commit 4e7f7f6

Browse files
authored
Merge pull request #390 from FormidableLabs/event-duration
Display event duration in the side panel
2 parents 1573812 + be4b2bb commit 4e7f7f6

File tree

5 files changed

+28
-11
lines changed

5 files changed

+28
-11
lines changed
14 Bytes
Loading
15 Bytes
Loading

src/panel/context/Timeline.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { DebugEvent } from "@urql/core";
1616
import { DevtoolsContext } from "./Devtools";
1717

1818
interface TimelineContextValue {
19-
selectedEvent?: DebugEvent;
19+
selectedEvent?: DebugEvent & { duration?: number };
2020
setSelectedEvent: Dispatch<SetStateAction<DebugEvent | undefined>>;
2121
container: HTMLDivElement;
2222
setContainer: (e: HTMLDivElement) => void;
@@ -278,9 +278,9 @@ export const TimelineProvider: FC = ({ children }) => {
278278
const [eventOrder, setEventOrder] = useState<
279279
TimelineContextValue["eventOrder"]
280280
>([]);
281-
const [selectedEvent, setSelectedEvent] = useState<DebugEvent | undefined>(
282-
undefined
283-
);
281+
const [selectedEvent, setSelectedEvent] = useState<
282+
(DebugEvent & { duration?: number }) | undefined
283+
>(undefined);
284284

285285
useEffect(() => {
286286
return addMessageHandler((message) => {

src/panel/pages/events/components/TimelinePane/TimelinePane.tsx

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@ import React, { FC, ComponentProps, useMemo } from "react";
22
import styled from "styled-components";
33
import { DebugEvent, Operation } from "@urql/core";
44
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
5-
import { faQuoteLeft, faStopwatch } from "@fortawesome/free-solid-svg-icons";
5+
import {
6+
faQuoteLeft,
7+
faStopwatch,
8+
faClock,
9+
} from "@fortawesome/free-solid-svg-icons";
610
import { print } from "graphql";
711
import { Pane, CodeHighlight } from "../../../../components";
812
import { useTimelineContext } from "../../../../context";
@@ -46,10 +50,12 @@ export const TimelinePane: FC<
4650
};
4751

4852
/** Info about the event clicked by the user. */
49-
const EventSection: FC<{ event: DebugEvent }> = ({ event }) => {
53+
const EventSection: FC<{ event: DebugEvent & { duration?: number } }> = ({
54+
event,
55+
}) => {
5056
const { startTime } = useTimelineContext();
5157

52-
const timestamp = useMemo(() => `${event.timestamp - startTime}ms`, [
58+
const timestamp = useMemo(() => `${event.timestamp - startTime} ms`, [
5359
startTime,
5460
]);
5561

@@ -80,6 +86,15 @@ const EventSection: FC<{ event: DebugEvent }> = ({ event }) => {
8086
{timestamp}
8187
</p>
8288
</Pane.Item>
89+
{event.duration && (
90+
<Pane.Item>
91+
<Pane.ItemTitle>Duration</Pane.ItemTitle>
92+
<p>
93+
<Icon icon={faClock} />
94+
{(event.duration / 1000).toFixed(2)} seconds
95+
</p>
96+
</Pane.Item>
97+
)}
8398
{event.data && (
8499
<Pane.Item>
85100
<Pane.ItemTitle>Metadata</Pane.ItemTitle>

src/panel/pages/events/components/TimelineRow.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,10 @@ export const TimelineRow: FC<
103103
p: ReduceState,
104104
e: DebugEvent<T>
105105
) => {
106-
const handleClick = () =>
107-
setSelectedEvent((event) => (event === e ? undefined : e));
106+
const handleClick = (duration: number) => () =>
107+
setSelectedEvent((event) =>
108+
event?.timestamp === e.timestamp ? undefined : { ...e, duration }
109+
);
108110

109111
// Request started
110112
if (p.start === undefined && e.type === "fetchRequest") {
@@ -130,7 +132,7 @@ export const TimelineRow: FC<
130132
right: container.clientWidth - scale(e.timestamp),
131133
bottom: 0,
132134
}}
133-
onClick={handleClick}
135+
onClick={handleClick(e.timestamp - p.start.timestamp)}
134136
/>
135137
);
136138
p.start = undefined;
@@ -149,7 +151,7 @@ export const TimelineRow: FC<
149151
right: container.clientWidth - scale(e.timestamp),
150152
bottom: 0,
151153
}}
152-
onClick={handleClick}
154+
onClick={handleClick(e.timestamp - p.start.timestamp)}
153155
/>
154156
);
155157
p.start = undefined;

0 commit comments

Comments
 (0)