@ -163,7 +163,7 @@ class UnthemedLogs extends PureComponent<Props, State> {
}
}
} ;
} ;
onChangew rapLogMessage = ( event : React.ChangeEvent < HTMLInputElement > ) = > {
onChangeW rapLogMessage = ( event : React.ChangeEvent < HTMLInputElement > ) = > {
const { target } = event ;
const { target } = event ;
if ( target ) {
if ( target ) {
const wrapLogMessage = target . checked ;
const wrapLogMessage = target . checked ;
@ -249,6 +249,20 @@ class UnthemedLogs extends PureComponent<Props, State> {
return filterLogLevels ( logRows , new Set ( hiddenLogLevels ) ) ;
return filterLogLevels ( logRows , new Set ( hiddenLogLevels ) ) ;
} ) ;
} ) ;
createNavigationRange = memoizeOne ( ( logRows : LogRowModel [ ] ) : { from : number ; to : number } | undefined = > {
if ( ! logRows || logRows . length === 0 ) {
return undefined ;
}
const firstTimeStamp = logRows [ 0 ] . timeEpochMs ;
const lastTimeStamp = logRows [ logRows . length - 1 ] . timeEpochMs ;
if ( lastTimeStamp < firstTimeStamp ) {
return { from : lastTimeStamp , to : firstTimeStamp } ;
}
return { from : firstTimeStamp , to : lastTimeStamp } ;
} ) ;
scrollToTopLogs = ( ) = > this . topLogsRef . current ? . scrollIntoView ( ) ;
scrollToTopLogs = ( ) = > this . topLogsRef . current ? . scrollIntoView ( ) ;
render() {
render() {
@ -295,8 +309,10 @@ class UnthemedLogs extends PureComponent<Props, State> {
const filteredLogs = this . filterRows ( logRows , hiddenLogLevels ) ;
const filteredLogs = this . filterRows ( logRows , hiddenLogLevels ) ;
const { dedupedRows , dedupCount } = this . dedupRows ( filteredLogs , dedupStrategy ) ;
const { dedupedRows , dedupCount } = this . dedupRows ( filteredLogs , dedupStrategy ) ;
const navigationRange = this . createNavigationRange ( logRows ) ;
const scanText = scanRange ? ` Scanning ${ rangeUtil . describeTimeRange ( scanRange ) } ` : 'Scanning...' ;
const scanText = scanRange ? ` Scanning ${ rangeUtil . describeTimeRange ( scanRange ) } ` : 'Scanning...' ;
return (
return (
< >
< >
{ logsSeries && logsSeries . length ? (
{ logsSeries && logsSeries . length ? (
@ -342,7 +358,7 @@ class UnthemedLogs extends PureComponent<Props, State> {
< InlineField label = "Wrap lines" className = { styles . horizontalInlineLabel } transparent >
< InlineField label = "Wrap lines" className = { styles . horizontalInlineLabel } transparent >
< InlineSwitch
< InlineSwitch
value = { wrapLogMessage }
value = { wrapLogMessage }
onChange = { this . onChangew rapLogMessage }
onChange = { this . onChangeW rapLogMessage }
className = { styles . horizontalInlineSwitch }
className = { styles . horizontalInlineSwitch }
transparent
transparent
id = { ` wrap-lines_ ${ exploreId } ` }
id = { ` wrap-lines_ ${ exploreId } ` }
@ -430,7 +446,7 @@ class UnthemedLogs extends PureComponent<Props, State> {
< / div >
< / div >
< LogsNavigation
< LogsNavigation
logsSortOrder = { logsSortOrder }
logsSortOrder = { logsSortOrder }
visibleRange = { visible Range ? ? absoluteRange }
visibleRange = { navigation Range ? ? absoluteRange }
absoluteRange = { absoluteRange }
absoluteRange = { absoluteRange }
timeZone = { timeZone }
timeZone = { timeZone }
onChangeTime = { onChangeTime }
onChangeTime = { onChangeTime }