@@ -220,14 +220,15 @@ export const RawLogTable = memo(
220
220
isLoading,
221
221
logs,
222
222
onInstructionsClick,
223
- // onPropertySearchClick,
224
223
onRowExpandClick,
225
224
onScroll,
226
225
onSettingsClick,
227
226
onShowPatternsClick,
228
227
wrapLines,
229
228
columnNameMap,
230
229
showServiceColumn = true ,
230
+ order,
231
+ setOrder,
231
232
} : {
232
233
wrapLines : boolean ;
233
234
displayedColumns : string [ ] ;
@@ -244,10 +245,6 @@ export const RawLogTable = memo(
244
245
isLoading : boolean ;
245
246
fetchNextPage : ( arg0 ?: { cb ?: VoidFunction } ) => any ;
246
247
onRowExpandClick : ( id : string , sortKey : string ) => void ;
247
- // onPropertySearchClick: (
248
- // name: string,
249
- // value: string | number | boolean,
250
- // ) => void;
251
248
hasNextPage : boolean ;
252
249
highlightedLineId : string | undefined ;
253
250
onScroll : ( scrollTop : number ) => void ;
@@ -256,6 +253,8 @@ export const RawLogTable = memo(
256
253
tableId ?: string ;
257
254
columnNameMap ?: Record < string , string > ;
258
255
showServiceColumn ?: boolean ;
256
+ order ?: 'asc' | 'desc' ;
257
+ setOrder ?: ( order : 'asc' | 'desc' ) => void ;
259
258
} ) => {
260
259
const dedupLogs = useMemo ( ( ) => {
261
260
const lIds = new Set ( ) ;
@@ -324,10 +323,39 @@ export const RawLogTable = memo(
324
323
} ,
325
324
{
326
325
accessorKey : 'timestamp' ,
327
- header : ( ) =>
328
- isSmallScreen
329
- ? 'Time'
330
- : `Timestamp${ isUTC ? ' (UTC)' : ' (Local)' } ` ,
326
+ header : ( ) => (
327
+ < div
328
+ className = { cx ( 'd-flex align-items-center' , {
329
+ 'cursor-pointer text-muted-hover' : ! isLive ,
330
+ 'text-muted' : isLive ,
331
+ } ) }
332
+ title = {
333
+ order
334
+ ? isLive
335
+ ? 'Sort order is fixed in live mode'
336
+ : `Sort ${ order === 'desc' ? 'ascending' : 'descending' } `
337
+ : ''
338
+ }
339
+ onClick = { ( ) => {
340
+ setOrder ?.( order === 'desc' ? 'asc' : 'desc' ) ;
341
+ } }
342
+ >
343
+ { isSmallScreen
344
+ ? 'Time'
345
+ : `Timestamp${ isUTC ? ' (UTC)' : ' (Local)' } ` }
346
+ { order && (
347
+ < i
348
+ className = { `ms-2 fs-7 bi ${
349
+ isLive
350
+ ? 'bi-record-fill effect-pulse text-success'
351
+ : order === 'desc'
352
+ ? 'bi-arrow-down text-white'
353
+ : 'bi-arrow-up text-white'
354
+ } `}
355
+ />
356
+ ) }
357
+ </ div >
358
+ ) ,
331
359
cell : info => {
332
360
// FIXME: since original timestamp doesn't come with timezone info
333
361
const date = new Date ( info . getValue < string > ( ) ) ;
@@ -429,6 +457,8 @@ export const RawLogTable = memo(
429
457
columnSizeStorage ,
430
458
showServiceColumn ,
431
459
columnNameMap ,
460
+ order ,
461
+ setOrder ,
432
462
] ,
433
463
) ;
434
464
@@ -829,10 +859,21 @@ export default function LogTable({
829
859
const [ instructionsOpen , setInstructionsOpen ] = useState ( false ) ;
830
860
const [ settingsOpen , setSettingsOpen ] = useState ( false ) ;
831
861
const [ wrapLines , setWrapLines ] = useState ( false ) ;
862
+ const [ _order , setOrder ] = useState < 'asc' | 'desc' > ( 'desc' ) ;
832
863
833
864
const prevQueryConfig = usePrevious ( { searchedQuery, isLive } ) ;
834
865
835
- const resultsKey = [ searchedQuery , displayedColumns , isLive ] . join ( ':' ) ;
866
+ // Ensure order is always 'desc' in live mode
867
+ const order = isLive ? 'desc' : _order ;
868
+ useEffect ( ( ) => {
869
+ // Force set to 'desc' after switching to live mode to ensure
870
+ // scrolling down while in live mode doesn't reset the order to 'asc'
871
+ if ( isLive && _order === 'asc' ) {
872
+ setOrder ( 'desc' ) ;
873
+ }
874
+ } , [ _order , isLive , setOrder ] ) ;
875
+
876
+ const resultsKey = [ searchedQuery , displayedColumns , isLive , order ] . join ( ':' ) ;
836
877
837
878
const {
838
879
userPreferences : { isUTC } ,
@@ -851,7 +892,7 @@ export default function LogTable({
851
892
startDate : searchedTimeRange ?. [ 0 ] ?? new Date ( ) ,
852
893
endDate : searchedTimeRange ?. [ 1 ] ?? new Date ( ) ,
853
894
extraFields : displayedColumns ,
854
- order : 'desc' ,
895
+ order,
855
896
onEnd,
856
897
resultsKey,
857
898
} ,
@@ -931,13 +972,14 @@ export default function LogTable({
931
972
( args : any ) => fetchNextPage ( { limit : 200 , ...args } ) ,
932
973
[ fetchNextPage ] ,
933
974
) }
934
- // onPropertySearchClick={onPropertySearchClick}
935
975
hasNextPage = { hasNextPageWhenNotLive }
936
976
onRowExpandClick = { onRowExpandClick }
937
977
onScroll = { onScroll }
938
978
onShowPatternsClick = { onShowPatternsClick }
939
979
columnNameMap = { columnNameMap }
940
980
showServiceColumn = { showServiceColumn }
981
+ order = { order }
982
+ setOrder = { setOrder }
941
983
/>
942
984
</ >
943
985
) ;
0 commit comments