Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit88589ef

Browse files
fix: fix build timeline scale for longer builds (#17514)
Fix#15374
1 parent71dbd0c commit88589ef

File tree

3 files changed

+70
-4
lines changed

3 files changed

+70
-4
lines changed

‎site/src/modules/workspaces/WorkspaceTiming/Chart/utils.ts

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,20 @@ export const calcDuration = (range: TimeRange): number => {
2929
// data in 200ms intervals. However, if the total time is 1 minute, we should
3030
// display the data in 5 seconds intervals. To achieve this, we define the
3131
// dimensions object that contains the time intervals for the chart.
32-
constscales=[5_000,500,100];
32+
constsecond=1_000;
33+
constminute=60*second;
34+
consthour=60*minute;
35+
constday=24*hour;
36+
constscales=[
37+
day,
38+
hour,
39+
5*minute,
40+
minute,
41+
10*second,
42+
5*second,
43+
500,
44+
100,
45+
];
3346

3447
constpickScale=(totalTime:number):number=>{
3548
for(constsofscales){
@@ -48,7 +61,29 @@ export const makeTicks = (time: number) => {
4861
};
4962

5063
exportconstformatTime=(time:number):string=>{
51-
return`${time.toLocaleString()}ms`;
64+
constseconds=Math.floor(time/1000);
65+
constminutes=Math.floor(seconds/60);
66+
consthours=Math.floor(minutes/60);
67+
constdays=Math.floor(hours/24);
68+
69+
constparts:string[]=[];
70+
if(days>0){
71+
parts.push(`${days}d`);
72+
}
73+
if(hours>0){
74+
parts.push(`${hours%24}h`);
75+
}
76+
if(minutes>0){
77+
parts.push(`${minutes%60}m`);
78+
}
79+
if(seconds>0){
80+
parts.push(`${seconds%60}s`);
81+
}
82+
if(time%1000>0){
83+
parts.push(`${time%1000}ms`);
84+
}
85+
86+
returnparts.join(" ");
5287
};
5388

5489
exportconstcalcOffset=(range:TimeRange,baseRange:TimeRange):number=>{

‎site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.stories.tsx

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,3 +126,29 @@ export const LoadingWhenAgentScriptTimingsAreEmpty: Story = {
126126
agentScriptTimings:undefined,
127127
},
128128
};
129+
130+
exportconstLongTimeRange={
131+
args:{
132+
provisionerTimings:[
133+
{
134+
...WorkspaceTimingsResponse.provisioner_timings[0],
135+
started_at:"2021-09-01T00:00:00Z",
136+
ended_at:"2021-09-01T00:10:00Z",
137+
},
138+
],
139+
agentConnectionTimings:[
140+
{
141+
...WorkspaceTimingsResponse.agent_connection_timings[0],
142+
started_at:"2021-09-01T00:10:00Z",
143+
ended_at:"2021-09-01T00:35:00Z",
144+
},
145+
],
146+
agentScriptTimings:[
147+
{
148+
...WorkspaceTimingsResponse.agent_script_timings[0],
149+
started_at:"2021-09-01T00:35:00Z",
150+
ended_at:"2021-09-01T01:00:00Z",
151+
},
152+
],
153+
},
154+
};

‎site/src/modules/workspaces/WorkspaceTiming/WorkspaceTimings.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,12 @@ import type {
1212
importsortByfrom"lodash/sortBy";
1313
importuniqByfrom"lodash/uniqBy";
1414
import{typeFC,useState}from"react";
15-
import{typeTimeRange,calcDuration,mergeTimeRanges}from"./Chart/utils";
15+
import{
16+
typeTimeRange,
17+
calcDuration,
18+
formatTime,
19+
mergeTimeRanges,
20+
}from"./Chart/utils";
1621
import{ResourcesChart,isCoderResource}from"./ResourcesChart";
1722
import{ScriptsChart}from"./ScriptsChart";
1823
import{
@@ -85,7 +90,7 @@ export const WorkspaceTimings: FC<WorkspaceTimingsProps> = ({
8590
constdisplayProvisioningTime=()=>{
8691
consttotalRange=mergeTimeRanges(timings.map(toTimeRange));
8792
consttotalDuration=calcDuration(totalRange);
88-
returnhumanizeDuration(totalDuration);
93+
returnformatTime(totalDuration);
8994
};
9095

9196
return(

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp