Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 0 additions & 81 deletions site/src/modules/workspaces/WorkspaceTiming/Chart/Tooltip.tsx

This file was deleted.

50 changes: 32 additions & 18 deletions site/src/modules/workspaces/WorkspaceTiming/ResourcesChart.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
import { type Theme, useTheme } from "@emotion/react";
import {
Tooltip,
TooltipContent,
TooltipTrigger,
} from "components/Tooltip/Tooltip";
import { ExternalLinkIcon } from "lucide-react";
import { type FC, useState } from "react";
import { Link } from "react-router";
import { Bar } from "./Chart/Bar";
import {
Chart,
Expand All @@ -10,7 +17,6 @@ import {
ChartSearch,
ChartToolbar,
} from "./Chart/Chart";
import { Tooltip, TooltipLink, TooltipTitle } from "./Chart/Tooltip";
import {
calcDuration,
calcOffset,
Expand Down Expand Up @@ -116,23 +122,31 @@ export const ResourcesChart: FC<ResourcesChartProps> = ({
key={t.name}
yAxisLabelId={encodeURIComponent(t.name)}
>
<Tooltip
title={
<>
<TooltipTitle>{label}</TooltipTitle>
{/* Stage boundaries should not have these links */}
{!stageBoundary && (
<TooltipLink to="">view template</TooltipLink>
)}
</>
}
>
<Bar
value={duration}
offset={calcOffset(t.range, generalTiming)}
scale={scale}
colors={legend.colors}
/>
<Tooltip>
<TooltipTrigger asChild>
<Bar
value={duration}
offset={calcOffset(t.range, generalTiming)}
scale={scale}
colors={legend.colors}
/>
</TooltipTrigger>
<TooltipContent
side="bottom"
className="flex flex-col gap-1.5 border-surface-quaternary"
>
<p className="m-0 text-content-primary">{label}</p>
{/* Stage boundaries should not have these links */}
{!stageBoundary && (
<Link
to=""
className="flex items-center gap-1 no-underline text-xs text-inherit hover:text-content-primary"
>
<ExternalLinkIcon className="size-icon-xs" />
view template
</Link>
)}
</TooltipContent>
</Tooltip>
{formatTime(duration)}
</XAxisRow>
Expand Down
34 changes: 20 additions & 14 deletions site/src/modules/workspaces/WorkspaceTiming/ScriptsChart.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
import { type Theme, useTheme } from "@emotion/react";
import {
Tooltip,
TooltipContent,
TooltipTrigger,
} from "components/Tooltip/Tooltip";
import { type FC, useState } from "react";
import { Bar } from "./Chart/Bar";
import {
Expand All @@ -10,7 +15,6 @@ import {
ChartSearch,
ChartToolbar,
} from "./Chart/Chart";
import { Tooltip, TooltipTitle } from "./Chart/Tooltip";
import {
calcDuration,
calcOffset,
Expand Down Expand Up @@ -103,19 +107,21 @@ export const ScriptsChart: FC<ScriptsChartProps> = ({
key={t.name}
yAxisLabelId={encodeURIComponent(t.name)}
>
<Tooltip
title={
<TooltipTitle>
Script exited with <strong>code {t.exitCode}</strong>
</TooltipTitle>
}
>
<Bar
value={duration}
offset={calcOffset(t.range, generalTiming)}
scale={scale}
colors={legendsByStatus[t.status].colors}
/>
<Tooltip>
<TooltipTrigger asChild>
<Bar
value={duration}
offset={calcOffset(t.range, generalTiming)}
scale={scale}
colors={legendsByStatus[t.status].colors}
/>
</TooltipTrigger>
<TooltipContent
side="bottom"
className="border-surface-quaternary text-content-primary"
>
Script exited with <strong>code {t.exitCode}</strong>
</TooltipContent>
</Tooltip>

{formatTime(duration)}
Expand Down
102 changes: 40 additions & 62 deletions site/src/modules/workspaces/WorkspaceTiming/StagesChart.tsx
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
import type { Interpolation, Theme } from "@emotion/react";
import type { TimingStage } from "api/typesGenerated";
import {
Tooltip,
TooltipContent,
TooltipTrigger,
} from "components/Tooltip/Tooltip";
import { CircleAlertIcon, InfoIcon } from "lucide-react";
import type { FC } from "react";
import { Bar, ClickableBar } from "./Chart/Bar";
import { Blocks } from "./Chart/Blocks";
import { Chart, ChartContent } from "./Chart/Chart";
import {
Tooltip,
type TooltipProps,
TooltipShortDescription,
TooltipTitle,
} from "./Chart/Tooltip";
import {
calcDuration,
calcOffset,
Expand Down Expand Up @@ -45,7 +44,10 @@ export type Stage = {
/**
* The tooltip is used to provide additional information about the stage.
*/
tooltip: Omit<TooltipProps, "children">;
tooltip: {
heading: string;
description: string;
};
};

type StageTiming = {
Expand Down Expand Up @@ -105,11 +107,22 @@ export const StagesChart: FC<StagesChartProps> = ({
>
<span css={styles.stageLabel}>
{stage.label}
<Tooltip {...stage.tooltip}>
<InfoIcon
className="size-icon-xs"
css={styles.info}
/>
<Tooltip>
<TooltipTrigger asChild>
<InfoIcon
className="size-icon-xs"
css={styles.info}
/>
</TooltipTrigger>
<TooltipContent
side="bottom"
className="flex flex-col gap-1.5 max-w-xs border-surface-quaternary"
>
<p className="m-0 text-content-primary">
{stage.tooltip.heading}
</p>
<p className="m-0">{stage.tooltip.description}</p>
</TooltipContent>
</Tooltip>
</span>
</YAxisLabel>
Expand Down Expand Up @@ -219,61 +232,38 @@ export const provisioningStages: Stage[] = [
label: "init",
section: "provisioning",
tooltip: {
title: (
<>
<TooltipTitle>Terraform initialization</TooltipTitle>
<TooltipShortDescription>
Download providers & modules.
</TooltipShortDescription>
</>
),
heading: "Terraform initialization",
description: "Download providers & modules.",
},
},
{
name: "plan",
label: "plan",
section: "provisioning",
tooltip: {
title: (
<>
<TooltipTitle>Terraform plan</TooltipTitle>
<TooltipShortDescription>
Compare state of desired vs actual resources and compute changes to
be made.
</TooltipShortDescription>
</>
),
heading: "Terraform plan",
description:
"Compare state of desired vs actual resources and compute changes to be made.",
},
},
{
name: "graph",
label: "graph",
section: "provisioning",
tooltip: {
title: (
<>
<TooltipTitle>Terraform graph</TooltipTitle>
<TooltipShortDescription>
List all resources in plan, used to update coderd database.
</TooltipShortDescription>
</>
),
heading: "Terraform graph",
description:
"List all resources in plan, used to update coderd database.",
},
},
{
name: "apply",
label: "apply",
section: "provisioning",
tooltip: {
title: (
<>
<TooltipTitle>Terraform apply</TooltipTitle>
<TooltipShortDescription>
Execute Terraform plan to create/modify/delete resources into
desired states.
</TooltipShortDescription>
</>
),
heading: "Terraform apply",
description:
"Execute Terraform plan to create/modify/delete resources into desired states.",
},
},
];
Expand All @@ -285,29 +275,17 @@ export const agentStages = (section: string): Stage[] => {
label: "connect",
section,
tooltip: {
title: (
<>
<TooltipTitle>Connect</TooltipTitle>
<TooltipShortDescription>
Establish an RPC connection with the control plane.
</TooltipShortDescription>
</>
),
heading: "Connect",
description: "Establish an RPC connection with the control plane.",
},
},
{
name: "start",
label: "run startup scripts",
section,
tooltip: {
title: (
<>
<TooltipTitle>Run startup scripts</TooltipTitle>
<TooltipShortDescription>
Execute each agent startup script.
</TooltipShortDescription>
</>
),
heading: "Run startup scripts",
description: "Execute each agent startup script.",
},
},
];
Expand Down
Loading