From 27d21914aefa9215e032a2a5b7f4da3e245b3411 Mon Sep 17 00:00:00 2001 From: Brandon Farmer Date: Thu, 7 Jun 2018 15:43:41 -0700 Subject: [PATCH] Selecting source is reflected in the dropdown --- ui/src/logs/components/LogViewerHeader.tsx | 11 +++++++- ui/src/logs/components/LogsSearchBar.tsx | 2 +- ui/src/logs/components/LogsTable.tsx | 29 ++++++++++++++++------ ui/src/logs/containers/LogsPage.tsx | 12 ++++++--- ui/src/logs/utils/index.ts | 2 +- ui/src/style/pages/logs-viewer.scss | 4 +++ 6 files changed, 46 insertions(+), 14 deletions(-) diff --git a/ui/src/logs/components/LogViewerHeader.tsx b/ui/src/logs/components/LogViewerHeader.tsx index c61068cba2..2b463746be 100644 --- a/ui/src/logs/components/LogViewerHeader.tsx +++ b/ui/src/logs/components/LogViewerHeader.tsx @@ -99,7 +99,16 @@ class LogViewerHeader extends PureComponent { return '' } - return this.sourceDropDownItems[0].text + const id = _.get(this.props, 'currentSource.id', '') + const currentItem = _.find(this.sourceDropDownItems, item => { + return item.id === id + }) + + if (currentItem) { + return currentItem.text + } + + return '' } private get selectedNamespace(): string { diff --git a/ui/src/logs/components/LogsSearchBar.tsx b/ui/src/logs/components/LogsSearchBar.tsx index a563ab28d3..cb1049b43d 100644 --- a/ui/src/logs/components/LogsSearchBar.tsx +++ b/ui/src/logs/components/LogsSearchBar.tsx @@ -26,7 +26,7 @@ class LogsSearchBar extends PureComponent {
{ facility: 120, severity: 22, severity_1: 120, + host: 300, } } @@ -185,12 +186,18 @@ class LogsTable extends Component { } } + private get rowCharLimit(): number { + return Math.floor(this.messageWidth / CHAR_WIDTH) + } + + private get columns(): string[] { + return getDeep(this.props, 'data.columns', []) + } + private calculateMessageHeight = (index: number): number => { - const columns = getDeep(this.props, 'data.columns', []) - const columnIndex = columns.indexOf('message') + const columnIndex = this.columns.indexOf('message') const value = getDeep(this.props, `data.values.${index}.${columnIndex}`, '') - const ROW_CHAR_LIMIT = Math.floor(this.messageWidth / CHAR_WIDTH) - const lines = Math.ceil(value.length / ROW_CHAR_LIMIT) + const lines = Math.round(value.length / this.rowCharLimit + 0.25) return Math.max(lines, 1) * (ROW_HEIGHT - 14) + 14 } @@ -287,7 +294,9 @@ class LogsTable extends Component { value = moment(+value / 1000000).format('YYYY/MM/DD HH:mm:ss') break case 'message': - value = _.replace(value, '\\n', '') + if (value.indexOf(' ') > this.rowCharLimit - 5) { + value = _.truncate(value, {length: this.rowCharLimit - 5}) + } break case 'severity': value = ( @@ -306,7 +315,7 @@ class LogsTable extends Component { if (this.isClickable(column)) { return (
{ data-tag-key={column} data-tag-value={value} onClick={this.handleTagClick} + data-index={rowIndex} + onMouseOver={this.handleMouseEnter} className="logs-viewer--clickable" > {value} @@ -329,7 +340,9 @@ class LogsTable extends Component { return (
{ ) } + private get isSpecificTimeRange(): boolean { + return !!this.props.timeRange.upper + } + private startUpdating = () => { if (this.interval) { clearInterval(this.interval) } - this.interval = setInterval(this.handleInterval, 10000) - this.setState({liveUpdating: true}) + if (!this.isSpecificTimeRange) { + this.interval = setInterval(this.handleInterval, 10000) + this.setState({liveUpdating: true}) + } } private handleScrollToTop = () => { @@ -180,7 +186,7 @@ class LogsPage extends PureComponent { return ( { const createGroupBy = (range: TimeRange) => { const seconds = computeSeconds(range) - const time = `${Math.floor(seconds / BIN_COUNT)}s` + const time = `${Math.max(Math.floor(seconds / BIN_COUNT), 1)}s` const tags = [] return {time, tags} diff --git a/ui/src/style/pages/logs-viewer.scss b/ui/src/style/pages/logs-viewer.scss index 2d771d4656..4790be2453 100644 --- a/ui/src/style/pages/logs-viewer.scss +++ b/ui/src/style/pages/logs-viewer.scss @@ -242,6 +242,10 @@ $logs-viewer-gutter: 60px; } } +.message--cell { + word-break: break-all; +} + // Table Cell Styles .logs-viewer--cell { font-size: 12px;