diff --git a/src/core_plugins/metrics/public/components/vis_editor_visualization.js b/src/core_plugins/metrics/public/components/vis_editor_visualization.js index 70f8544dc8990..92f82d1c8e955 100644 --- a/src/core_plugins/metrics/public/components/vis_editor_visualization.js +++ b/src/core_plugins/metrics/public/components/vis_editor_visualization.js @@ -1,4 +1,5 @@ import React, { Component, PropTypes } from 'react'; +import { findDOMNode } from 'react-dom'; import Visualization from './visualization'; class VisEditorVisualization extends Component { @@ -40,6 +41,11 @@ class VisEditorVisualization extends Component { window.removeEventListener('mouseup', this.handleMouseUp); } + componentDidMount() { + const el = findDOMNode(this.visDiv); + el.setAttribute('render-counter', 'disabled'); + } + render() { const style = { height: this.state.height }; if (this.state.dragging) { @@ -48,7 +54,11 @@ class VisEditorVisualization extends Component { const visBackgroundColor = '#FFF'; return (
-
+
this.visDiv = el} + className="vis_editor__visualization"> -
+
+
- + { tooltip }
diff --git a/src/core_plugins/metrics/public/visualizations/components/flot_chart.js b/src/core_plugins/metrics/public/visualizations/components/flot_chart.js index 87cdb98ef994e..b58385cff461c 100644 --- a/src/core_plugins/metrics/public/visualizations/components/flot_chart.js +++ b/src/core_plugins/metrics/public/visualizations/components/flot_chart.js @@ -228,19 +228,16 @@ class FlotChart extends Component { } render() { - const style = { - position: 'relative', - display: 'flex', - rowDirection: 'column', - flex: '1 0 auto', - }; return ( this.resize = el} - style={style}> -
this.target = el} style={style}/> - ); + className="rhythm_chart__timeseries-container"> +
this.target = el} + className="rhythm_chart__timeseries-container" /> + + ); } } diff --git a/src/core_plugins/metrics/public/visualizations/components/gauge.js b/src/core_plugins/metrics/public/visualizations/components/gauge.js index 5f0a7597db7ac..f401848d2d942 100644 --- a/src/core_plugins/metrics/public/visualizations/components/gauge.js +++ b/src/core_plugins/metrics/public/visualizations/components/gauge.js @@ -67,6 +67,11 @@ class Gauge extends Component { left: this.state.left || 0, transform: `matrix(${scale}, 0, 0, ${scale}, ${translateX}, ${translateY})` } + }, + valueColor: { + value: { + color: this.props.valueColor + } } }, this.props); @@ -80,10 +85,6 @@ class Gauge extends Component { color: metric && metric.color || '#8ac336', type }; - const valueStyle = {}; - if (this.props.valueColor) { - valueStyle.color = this.props.valueColor; - } let metrics; if (type === 'half') { @@ -97,7 +98,7 @@ class Gauge extends Component { ref="title">{ title }
{ formatter(value) }
); @@ -109,7 +110,7 @@ class Gauge extends Component { style={styles.inner}>
{ formatter(value) }
- - + + ); } else { diff --git a/src/core_plugins/metrics/public/visualizations/components/horizontal_legend.js b/src/core_plugins/metrics/public/visualizations/components/horizontal_legend.js index 96bf73717709f..a1e0fbc7dba3c 100644 --- a/src/core_plugins/metrics/public/visualizations/components/horizontal_legend.js +++ b/src/core_plugins/metrics/public/visualizations/components/horizontal_legend.js @@ -1,12 +1,18 @@ import React, { PropTypes } from 'react'; import createLegendSeries from '../lib/create_legend_series'; +import reactcss from 'reactcss'; function HorizontalLegend(props) { const rows = props.series.map(createLegendSeries(props)); - const legendStyle = { }; + const styles = reactcss({ + hideLegned: { + legend: { + display: 'none' + } + } + }, { hideLegned: !props.showLegend }); let legendControlClass = 'fa fa-chevron-down'; if (!props.showLegend) { - legendStyle.display = 'none'; legendControlClass = 'fa fa-chevron-up'; } return ( @@ -14,7 +20,7 @@ function HorizontalLegend(props) {
-
+
{ rows }
diff --git a/src/core_plugins/metrics/public/visualizations/components/timeseries.js b/src/core_plugins/metrics/public/visualizations/components/timeseries.js index 9c50b319f2fab..13f8d6dd891d2 100644 --- a/src/core_plugins/metrics/public/visualizations/components/timeseries.js +++ b/src/core_plugins/metrics/public/visualizations/components/timeseries.js @@ -4,6 +4,7 @@ import getLastValue from '../lib/get_last_value'; import TimeseriesChart from './timeseries_chart'; import Legend from './legend'; import eventBus from '../lib/events'; +import reactcss from 'reactcss'; class Timeseries extends Component { @@ -108,13 +109,16 @@ class Timeseries extends Component { if (this.props.reversed) { className += ' reversed'; } - const style = {}; - if (this.props.legendPosition === 'bottom') { - style.flexDirection = 'column'; - } + const styles = reactcss({ + bottomLegend: { + content: { + flexDirection: 'column' + } + } + }, { bottomLegend: this.props.legendPosition === 'bottom' }); return (
-
+
this.container = el} style={container}> +
this.container = el} className="rhythm_chart__timeseries-container"> { tooltip } { annotations } diff --git a/src/core_plugins/metrics/public/visualizations/components/top_n.js b/src/core_plugins/metrics/public/visualizations/components/top_n.js index e50ea366b2355..464cddd7dffbe 100644 --- a/src/core_plugins/metrics/public/visualizations/components/top_n.js +++ b/src/core_plugins/metrics/public/visualizations/components/top_n.js @@ -1,6 +1,7 @@ import React, { Component, PropTypes } from 'react'; import _ from 'lodash'; import getLastValue from '../lib/get_last_value'; +import reactcss from 'reactcss'; class TopN extends Component { @@ -20,18 +21,27 @@ class TopN extends Component { const value = formatter(lastValue); const width = `${100 * (lastValue / maxValue)}%`; const backgroundColor = item.color; - const style = {}; - if (this.props.onClick) { - style.cursor = 'pointer'; - } + const styles = reactcss({ + default: { + innerBar: { + width, + backgroundColor + } + }, + onClick: { + row: { + cursor: 'pointer' + } + } + }, this.props); return ( + style={styles.row}> { item.label }
+ style={styles.innerBar}/> { value } @@ -40,7 +50,7 @@ class TopN extends Component { } render() { - if (!this.props.series) return (
); + if (!this.props.series) return null; const maxValue = this.props.series.reduce((max, series) => { const lastValue = getLastValue(series.data, series.data.length); return lastValue > max ? lastValue : max; diff --git a/src/core_plugins/metrics/public/visualizations/components/vertical_legend.js b/src/core_plugins/metrics/public/visualizations/components/vertical_legend.js index 32f83c0c42a0d..4a789ace72204 100644 --- a/src/core_plugins/metrics/public/visualizations/components/vertical_legend.js +++ b/src/core_plugins/metrics/public/visualizations/components/vertical_legend.js @@ -1,32 +1,36 @@ import React, { PropTypes } from 'react'; import createLegendSeries from '../lib/create_legend_series'; +import reactcss from 'reactcss'; function VerticalLegend(props) { const rows = props.series.map(createLegendSeries(props)); - const seriesStyle = {}; - const legendStyle = {}; - const controlStyle = {}; - let openClass = 'fa-chevron-left'; - let closeClass = 'fa-chevron-right'; - if (props.legendPosition === 'left') { - openClass = 'fa-chevron-right'; - closeClass = 'fa-chevron-left'; - legendStyle.order = '-1'; - controlStyle.order = '2'; - } - let legendControlClass = `fa ${closeClass}`; - legendStyle.width = 200; - if (!props.showLegend) { - legendStyle.width = 12; - seriesStyle.display = 'none'; - legendControlClass = `fa ${openClass}`; - } + const hideLegend = !props.showLegend; + const leftLegend = props.legendPosition === 'left'; + + const styles = reactcss({ + default: { + legend: { width: 200 } + }, + leftLegend: { + legend: { order: '-1' }, + control: { order: '2' } + }, + hideLegend: { + legend: { width: 12 }, + series: { display: 'none' }, + } + }, { hideLegend, leftLegend }); + + const openClass = leftLegend ? 'fa-chevron-right' : 'fa-chevron-left'; + const closeClass = leftLegend ? 'fa-chevron-left' : 'fa-chevron-right'; + const legendControlClass = hideLegend ? `fa ${openClass}` : `fa ${closeClass}`; + return ( -
-
+
+
-
+
{ rows }
diff --git a/src/core_plugins/metrics/public/visualizations/less/includes/chart.less b/src/core_plugins/metrics/public/visualizations/less/includes/chart.less index c80436d9c6048..ea8ae6036aad5 100644 --- a/src/core_plugins/metrics/public/visualizations/less/includes/chart.less +++ b/src/core_plugins/metrics/public/visualizations/less/includes/chart.less @@ -115,6 +115,13 @@ } } +.rhythm_chart__timeseries-container { + position: relative; + display: flex; + row-direction: column; + flex: 1 0 auto; +} + .annotation { position: absolute; display: flex; @@ -124,6 +131,7 @@ } .annotation__line { flex: 1 0 auto; + width: 2px; } .annotation__icon { position: relative;