@@ -84,8 +84,6 @@ export default function Page() {
84
84
const repoOwner : string = ( router . query . repoOwner as string ) ?? "pytorch" ;
85
85
const repoName : string = ( router . query . repoName as string ) ?? "pytorch" ;
86
86
const branch : string = ( router . query . branch as string ) ?? "main" ;
87
- const jobNamesCompressed : string =
88
- ( router . query . jobNamesCompressed as string ) ?? "" ;
89
87
const [ startTime , setStartTime ] = useState ( dayjs ( ) . subtract ( 1 , "week" ) ) ;
90
88
const [ stopTime , setStopTime ] = useState ( dayjs ( ) ) ;
91
89
const [ granularity , setGranularity ] = useState < Granularity > ( "day" ) ;
@@ -95,6 +93,58 @@ export default function Page() {
95
93
[ key : string ] : boolean ;
96
94
} > ( { } ) ;
97
95
96
+ useEffect ( ( ) => {
97
+ if ( router . query . jobName ) {
98
+ setSelectedJobs ( ( prev ) => ( {
99
+ ...prev ,
100
+ [ router . query . jobName as string ] : true ,
101
+ } ) ) ;
102
+ }
103
+ if ( router . query . startTime ) {
104
+ setStartTime ( dayjs ( router . query . startTime as string ) ) ;
105
+ }
106
+ if ( router . query . stopTime ) {
107
+ setStopTime ( dayjs ( router . query . stopTime as string ) ) ;
108
+ }
109
+ if ( router . query . granularity ) {
110
+ setGranularity ( router . query . granularity as string as Granularity ) ;
111
+ }
112
+ if ( router . query . timeRange ) {
113
+ setTimeRange ( parseInt ( router . query . timeRange as string ) || 7 ) ;
114
+ }
115
+ if ( router . query . ttsPercentile ) {
116
+ setTtsPercentile ( parseFloat ( router . query . ttsPercentile as string ) || 0.5 ) ;
117
+ }
118
+
119
+ const jobNamesFromLink = JSON . parse (
120
+ router . query . jobNamesCompressed
121
+ ? decompressFromEncodedURIComponent (
122
+ router . query . jobNamesCompressed as string
123
+ )
124
+ : "[]"
125
+ ) ;
126
+
127
+ if ( router . query . jobName ) {
128
+ jobNamesFromLink . push ( router . query . jobName as string ) ;
129
+ }
130
+
131
+ if ( tts_true_series . length > 0 ) {
132
+ setSelectedJobs (
133
+ tts_true_series . reduce ( ( acc : any , item : any ) => {
134
+ acc [ item . name ] = jobNamesFromLink . includes ( item . name ) ;
135
+ return acc ;
136
+ } , { } as any )
137
+ ) ;
138
+ } else {
139
+ setSelectedJobs (
140
+ jobNamesFromLink . reduce ( ( acc : any , item : any ) => {
141
+ acc [ item ] = true ;
142
+ return acc ;
143
+ } , { } as any )
144
+ ) ;
145
+ }
146
+ } , [ router . query ] ) ;
147
+
98
148
const GRAPHS_HEIGHT = 800 ;
99
149
100
150
const queryParams : { [ key : string ] : any } = {
@@ -127,6 +177,19 @@ export default function Page() {
127
177
fetcher
128
178
) ;
129
179
180
+ useEffect ( ( ) => {
181
+ if ( data != undefined ) {
182
+ const jobNames = data . map ( ( item ) => item . full_name ) ;
183
+ setSelectedJobs ( ( prev ) => {
184
+ const newJobs = jobNames . reduce ( ( acc : any , jobName : string ) => {
185
+ acc [ jobName ] = false ;
186
+ return acc ;
187
+ } , { } ) ;
188
+ return { ...newJobs , ...prev } ;
189
+ } ) ;
190
+ }
191
+ } , [ data ] ) ;
192
+
130
193
const timeFieldName = "granularity_bucket" ;
131
194
const groupByFieldName = "full_name" ;
132
195
const tts_true_series = seriesWithInterpolatedTimes (
@@ -155,34 +218,6 @@ export default function Page() {
155
218
( item : any ) => selectedJobs [ item [ "name" ] ]
156
219
) ;
157
220
158
- useEffect ( ( ) => {
159
- const jobNamesFromLink = JSON . parse (
160
- jobNamesCompressed != ""
161
- ? decompressFromEncodedURIComponent ( jobNamesCompressed )
162
- : "[]"
163
- ) ;
164
-
165
- if ( router . query . jobName ) {
166
- jobNamesFromLink . push ( router . query . jobName as string ) ;
167
- }
168
-
169
- if ( tts_true_series . length > 0 ) {
170
- setSelectedJobs (
171
- tts_true_series . reduce ( ( acc : any , item : any ) => {
172
- acc [ item . name ] = jobNamesFromLink . includes ( item . name ) ;
173
- return acc ;
174
- } , { } as any )
175
- ) ;
176
- } else {
177
- setSelectedJobs (
178
- jobNamesFromLink . reduce ( ( acc : any , item : any ) => {
179
- acc [ item ] = true ;
180
- return acc ;
181
- } , { } as any )
182
- ) ;
183
- }
184
- } , [ data , jobNamesCompressed , router . query . jobName ] ) ;
185
-
186
221
const permalink =
187
222
typeof window !== "undefined" &&
188
223
`${ window . location . protocol } /${ window . location . host } ${ router . asPath . replace (
@@ -194,6 +229,11 @@ export default function Page() {
194
229
Object . keys ( selectedJobs ) . filter ( ( key ) => selectedJobs [ key ] )
195
230
)
196
231
) ,
232
+ startTime : startTime . utc ( ) . format ( "YYYY-MM-DDTHH:mm:ss.SSS" ) ,
233
+ stopTime : stopTime . utc ( ) . format ( "YYYY-MM-DDTHH:mm:ss.SSS" ) ,
234
+ granularity : granularity ,
235
+ timeRange : timeRange . toString ( ) ,
236
+ ttsPercentile : ttsPercentile . toString ( ) ,
197
237
} ) } `;
198
238
199
239
return (
0 commit comments