diff --git a/ui/src/logs/components/ColorDropdown.tsx b/ui/src/logs/components/ColorDropdown.tsx index 155a43930..6c3a161ae 100644 --- a/ui/src/logs/components/ColorDropdown.tsx +++ b/ui/src/logs/components/ColorDropdown.tsx @@ -1,4 +1,4 @@ -import React, {Component} from 'react' +import React, {Component, MouseEvent} from 'react' import classnames from 'classnames' import {ClickOutside} from 'src/shared/components/ClickOutside' @@ -13,7 +13,8 @@ interface Props { selected: SeverityColor disabled?: boolean stretchToFit?: boolean - onChoose: (colors: SeverityColor) => void + onChoose: (severityLevel: string, colors: SeverityColor) => void + severityLevel: string } interface State { @@ -94,8 +95,10 @@ export default class ColorDropdown extends Component { className={classnames('color-dropdown--item', { active: color.name === selected.name, })} + data-tag-key={color.name} + data-tag-value={color.hex} key={i} - onClick={this.handleColorClick(color)} + onClick={this.handleColorClick} title={color.name} > { this.setState({expanded: false}) } - private handleColorClick = (color: SeverityColor) => (): void => { - this.props.onChoose(color) + private handleColorClick = (e: MouseEvent): void => { + const target = e.target as HTMLElement + const hex = target.dataset.tagValue || target.parentElement.dataset.tagValue + const name = target.dataset.tagKey || target.parentElement.dataset.tagKey + + const color: SeverityColor = {name, hex} + this.props.onChoose(this.props.severityLevel, color) this.setState({expanded: false}) } } diff --git a/ui/src/logs/components/OptionsOverlay.tsx b/ui/src/logs/components/OptionsOverlay.tsx index 14a50c000..ace497ab6 100644 --- a/ui/src/logs/components/OptionsOverlay.tsx +++ b/ui/src/logs/components/OptionsOverlay.tsx @@ -128,7 +128,8 @@ class OptionsOverlay extends Component { this.setState({workingSeverityLevels: DEFAULT_SEVERITY_LEVELS}) } - private handleChangeSeverityLevel = (severity: string) => ( + private handleChangeSeverityLevel = ( + severity: string, override: SeverityColor ): void => { const workingSeverityLevels = this.state.workingSeverityLevels.map( @@ -144,7 +145,7 @@ class OptionsOverlay extends Component { this.setState({workingSeverityLevels}) } - private handleChangeSeverityFormat = (format: SeverityFormat) => () => { + private handleChangeSeverityFormat = (format: SeverityFormat) => { this.setState({workingFormat: format}) } diff --git a/ui/src/logs/components/SeverityColumnFormat.tsx b/ui/src/logs/components/SeverityColumnFormat.tsx index 00fb5a636..ae54faace 100644 --- a/ui/src/logs/components/SeverityColumnFormat.tsx +++ b/ui/src/logs/components/SeverityColumnFormat.tsx @@ -1,11 +1,11 @@ -import React, {SFC} from 'react' +import React, {PureComponent, MouseEvent} from 'react' import {SeverityFormatOptions} from 'src/logs/constants' import {SeverityFormat} from 'src/types/logs' interface Props { format: SeverityFormat - onChangeFormat: (format: SeverityFormat) => () => void + onChangeFormat: (format: SeverityFormat) => void } const className = (name: SeverityFormat, format: SeverityFormat): string => { @@ -16,30 +16,51 @@ const className = (name: SeverityFormat, format: SeverityFormat): string => { return null } -const SeverityFormat: SFC = ({format, onChangeFormat}) => ( -
- -
    -
  • - Dot -
  • -
  • - Dot + Text -
  • -
  • - Text -
  • -
-
-) +class SeverityColumnFormat extends PureComponent { + constructor(props: Props) { + super(props) + } -export default SeverityFormat + public render() { + const {format} = this.props + + return ( +
+ +
    +
  • + Dot +
  • +
  • + Dot + Text +
  • +
  • + Text +
  • +
+
+ ) + } + + private handleClick = (e: MouseEvent) => { + const {onChangeFormat} = this.props + const target = e.target as HTMLElement + const value = target.dataset.tagValue + + onChangeFormat(SeverityFormatOptions[value]) + } +} + +export default SeverityColumnFormat diff --git a/ui/src/logs/components/SeverityOptions.tsx b/ui/src/logs/components/SeverityOptions.tsx index e3fb7538f..8836e03a8 100644 --- a/ui/src/logs/components/SeverityOptions.tsx +++ b/ui/src/logs/components/SeverityOptions.tsx @@ -7,9 +7,9 @@ import {SeverityLevel, SeverityColor, SeverityFormat} from 'src/types/logs' interface Props { severityLevels: SeverityLevel[] onReset: () => void - onChangeSeverityLevel: (severity: string) => (override: SeverityColor) => void + onChangeSeverityLevel: (severity: string, override: SeverityColor) => void severityFormat: SeverityFormat - onChangeSeverityFormat: (format: SeverityFormat) => () => void + onChangeSeverityFormat: (format: SeverityFormat) => void } const SeverityConfig: SFC = ({ @@ -30,8 +30,9 @@ const SeverityConfig: SFC = ({