From 79acf53acc268eb514b6ea4af3f9a8c50e7b8e9c Mon Sep 17 00:00:00 2001 From: Brandon Farmer Date: Tue, 12 Jun 2018 14:19:33 -0700 Subject: [PATCH] Handle scrollleft correctly Co-authored-by: Deniz Kusefoglu --- ui/src/logs/components/LogsTable.tsx | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/ui/src/logs/components/LogsTable.tsx b/ui/src/logs/components/LogsTable.tsx index 152ac2daf..d4edba426 100644 --- a/ui/src/logs/components/LogsTable.tsx +++ b/ui/src/logs/components/LogsTable.tsx @@ -159,7 +159,7 @@ class LogsTable extends Component { width={width} scrollLeft={this.state.scrollLeft} scrollTop={this.state.scrollTop} - onScroll={this.handleScroll} + onScroll={this.handleGridScroll} cellRenderer={this.cellRenderer} onSectionRendered={this.handleRowRender(onRowsRendered)} columnCount={columnCount} @@ -179,6 +179,10 @@ class LogsTable extends Component { ) } + private handleGridScroll = ({scrollLeft}) => { + this.handleScroll({scrollLeft, scrollTop: this.state.scrollTop}) + } + private handleRowRender = onRowsRendered => ({ rowStartIndex, rowStopIndex, @@ -225,8 +229,12 @@ class LogsTable extends Component { this.setState({scrollLeft}) private handleScrollbarScroll = (e: MouseEvent): void => { - const {target} = e - this.handleScroll(target) + const target = e.target as HTMLElement + + this.handleScroll({ + scrollTop: target.scrollTop, + scrollLeft: this.state.scrollLeft, + }) } private getColumnWidth = ({index}: {index: number}): number => { @@ -261,6 +269,11 @@ class LogsTable extends Component { const columns = getColumnsFromData(this.props.data) const columnIndex = columns.indexOf('message') const value = getValueFromData(this.props.data, index, columnIndex) + + if (!value) { + return ROW_HEIGHT + } + const lines = Math.round(value.length / this.rowCharLimit + 0.25) return Math.max(lines, 1) * (ROW_HEIGHT - 14) + 14