From dc219e6fceb43b853f1b0bd41ae1daddb1ca343d Mon Sep 17 00:00:00 2001 From: BrunoQuaresma Date: Fri, 22 Nov 2024 17:14:24 +0000 Subject: [PATCH 1/2] fix: deduplicate agent script timings --- .../WorkspaceTiming/WorkspaceTimings.stories.tsx | 14 ++++++++++++++ .../WorkspaceTiming/WorkspaceTimings.tsx | 15 +++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.stories.tsx b/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.stories.tsx index 5e3ccb86151d0..b52189100927d 100644 --- a/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.stories.tsx @@ -104,3 +104,17 @@ export const NavigateToStartStage: Story = { await canvas.findByText("Startup Script"); }, }; + +// Test case for https://github.com/coder/coder/issues/15413 +export const DuplicatedScriptTiming: Story = { + args: { + agentScriptTimings: [ + WorkspaceTimingsResponse.agent_script_timings[0], + { + ...WorkspaceTimingsResponse.agent_script_timings[0], + started_at: "2021-09-01T00:00:00Z", + ended_at: "2021-09-01T00:00:00Z", + }, + ], + }, +} diff --git a/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.tsx b/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.tsx index 9fe12b122a35c..fc1ed9e43dd4d 100644 --- a/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.tsx +++ b/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.tsx @@ -19,6 +19,8 @@ import { agentStages, provisioningStages, } from "./StagesChart"; +import sortBy from "lodash/sortBy"; +import uniqBy from "lodash/uniqBy"; type TimingView = | { name: "default" } @@ -42,11 +44,20 @@ export const WorkspaceTimings: FC = ({ defaultIsOpen = false, }) => { const [view, setView] = useState({ name: "default" }); + // This is a workaround to deal with the BE returning multiple timings for a + // single agent script when it should return only one. Reference: + // https://github.com/coder/coder/issues/15413#issuecomment-2493663571 + const uniqScriptTimings = uniqBy( + sortBy(agentScriptTimings, (t) => new Date(t.started_at).getTime() * -1), + (t) => t.display_name, + ) const timings = [ ...provisionerTimings, - ...agentScriptTimings, + ...uniqScriptTimings, ...agentConnectionTimings, - ]; + ].sort((a, b) => { + return new Date(a.started_at).getTime() - new Date(b.started_at).getTime(); + }); const [isOpen, setIsOpen] = useState(defaultIsOpen); const isLoading = timings.length === 0; From 3b39fba6ebbf46d2928e2570c9a5768d2258f2b7 Mon Sep 17 00:00:00 2001 From: BrunoQuaresma Date: Fri, 22 Nov 2024 17:17:13 +0000 Subject: [PATCH 2/2] Fix fmt --- .../workspaces/WorkspaceTiming/WorkspaceTimings.stories.tsx | 2 +- .../modules/workspaces/WorkspaceTiming/WorkspaceTimings.tsx | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.stories.tsx b/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.stories.tsx index b52189100927d..02a544ea9a718 100644 --- a/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.stories.tsx @@ -117,4 +117,4 @@ export const DuplicatedScriptTiming: Story = { }, ], }, -} +}; diff --git a/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.tsx b/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.tsx index fc1ed9e43dd4d..47873f8aaaede 100644 --- a/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.tsx +++ b/site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.tsx @@ -9,6 +9,8 @@ import type { AgentScriptTiming, ProvisionerTiming, } from "api/typesGenerated"; +import sortBy from "lodash/sortBy"; +import uniqBy from "lodash/uniqBy"; import { type FC, useState } from "react"; import { type TimeRange, calcDuration, mergeTimeRanges } from "./Chart/utils"; import { ResourcesChart, isCoderResource } from "./ResourcesChart"; @@ -19,8 +21,6 @@ import { agentStages, provisioningStages, } from "./StagesChart"; -import sortBy from "lodash/sortBy"; -import uniqBy from "lodash/uniqBy"; type TimingView = | { name: "default" } @@ -50,7 +50,7 @@ export const WorkspaceTimings: FC = ({ const uniqScriptTimings = uniqBy( sortBy(agentScriptTimings, (t) => new Date(t.started_at).getTime() * -1), (t) => t.display_name, - ) + ); const timings = [ ...provisionerTimings, ...uniqScriptTimings, pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy