From af8716399d32b5597ba3823652476ba1a8d4cc22 Mon Sep 17 00:00:00 2001 From: Jose Ivan Vargas Date: Wed, 4 Apr 2018 15:00:52 -0500 Subject: Componetize the legend component --- .../javascripts/monitoring/components/graph.vue | 12 ++-- .../monitoring/components/graph/flag.vue | 28 ++------- .../monitoring/components/graph/legend.vue | 72 +++++++++------------- .../monitoring/components/graph/track_info.vue | 29 +++++++++ .../monitoring/components/graph/track_line.vue | 36 +++++++++++ .../monitoring/utils/multiple_time_series.js | 38 ++++++++++-- 6 files changed, 139 insertions(+), 76 deletions(-) create mode 100644 app/assets/javascripts/monitoring/components/graph/track_info.vue create mode 100644 app/assets/javascripts/monitoring/components/graph/track_line.vue diff --git a/app/assets/javascripts/monitoring/components/graph.vue b/app/assets/javascripts/monitoring/components/graph.vue index d9f2b9ba7cb..f93b1da4f58 100644 --- a/app/assets/javascripts/monitoring/components/graph.vue +++ b/app/assets/javascripts/monitoring/components/graph.vue @@ -1,6 +1,7 @@ @@ -165,22 +162,7 @@ export default { v-for="(series, index) in timeSeries" :key="index" > - - - - - + {{ series.track }} {{ seriesMetricLabel(index, series) }} {{ seriesMetricValue(series) }} diff --git a/app/assets/javascripts/monitoring/components/graph/legend.vue b/app/assets/javascripts/monitoring/components/graph/legend.vue index 140190d34a9..e91c1a267fe 100644 --- a/app/assets/javascripts/monitoring/components/graph/legend.vue +++ b/app/assets/javascripts/monitoring/components/graph/legend.vue @@ -1,7 +1,12 @@ @@ -35,41 +25,37 @@ export default { - {{ series.track }} - - - - - + {{ series.trackName }} + - - + v-if="timeSeries.length > 1"> + + + {{ legendTitle }} series {{ index + 1 }} + - {{ legendTitle }} {{ summaryMetrics(series) }} + + {{ legendTitle }} + + diff --git a/app/assets/javascripts/monitoring/components/graph/track_info.vue b/app/assets/javascripts/monitoring/components/graph/track_info.vue new file mode 100644 index 00000000000..ec1c2222af9 --- /dev/null +++ b/app/assets/javascripts/monitoring/components/graph/track_info.vue @@ -0,0 +1,29 @@ + + + diff --git a/app/assets/javascripts/monitoring/components/graph/track_line.vue b/app/assets/javascripts/monitoring/components/graph/track_line.vue new file mode 100644 index 00000000000..d529ac1ceb9 --- /dev/null +++ b/app/assets/javascripts/monitoring/components/graph/track_line.vue @@ -0,0 +1,36 @@ + + + diff --git a/app/assets/javascripts/monitoring/utils/multiple_time_series.js b/app/assets/javascripts/monitoring/utils/multiple_time_series.js index 633f3509f3c..8a93c7e6bae 100644 --- a/app/assets/javascripts/monitoring/utils/multiple_time_series.js +++ b/app/assets/javascripts/monitoring/utils/multiple_time_series.js @@ -31,6 +31,8 @@ const defaultStyleOrder = ['solid', 'dashed', 'dotted']; function queryTimeSeries(query, graphWidth, graphHeight, graphHeightOffset, xDom, yDom, lineStyle) { let usedColors = []; + let renderCanary = false; + const timeSeriesParsed = []; function pickColor(name) { let pick; @@ -49,14 +51,19 @@ function queryTimeSeries(query, graphWidth, graphHeight, graphHeightOffset, xDom return defaultColorPalette[pick]; } - return query.result.map((timeSeries, timeSeriesNumber) => { + query.result.forEach((timeSeries, timeSeriesNumber) => { let metricTag = ''; let lineColor = ''; let areaColor = ''; + let shouldRenderLegend = true; const timeSeriesValues = timeSeries.values.map(d => d.value); const maximumValue = d3.max(timeSeriesValues); const accum = d3.sum(timeSeriesValues); - const track = capitalizeFirstCharacter(query.track ? query.track : 'Stable'); + const trackName = capitalizeFirstCharacter(query.track ? query.track : 'Stable'); + + if (trackName === 'Canary') { + renderCanary = true; + } const timeSeriesScaleX = d3.scaleTime().range([0, graphWidth - 70]); @@ -90,12 +97,29 @@ function queryTimeSeries(query, graphWidth, graphHeight, graphHeightOffset, xDom if (seriesCustomizationData) { metricTag = seriesCustomizationData.value || timeSeriesMetricLabel; [lineColor, areaColor] = pickColor(seriesCustomizationData.color); + shouldRenderLegend = false; } else { metricTag = timeSeriesMetricLabel || query.label || `series ${timeSeriesNumber + 1}`; [lineColor, areaColor] = pickColor(); + if (timeSeriesParsed.length > 1) { + shouldRenderLegend = false; + } } - return { + if (!shouldRenderLegend) { + if (!timeSeriesParsed[0].tracksLegend) { + timeSeriesParsed[0].tracksLegend = []; + } + timeSeriesParsed[0].tracksLegend.push({ + max: maximumValue, + average: accum / timeSeries.values.length, + lineStyle, + lineColor, + metricTag, + }); + } + + timeSeriesParsed.push({ linePath: lineFunction(timeSeries.values), areaPath: areaFunction(timeSeries.values), timeSeriesScaleX, @@ -106,9 +130,13 @@ function queryTimeSeries(query, graphWidth, graphHeight, graphHeightOffset, xDom lineColor, areaColor, metricTag, - track, - }; + trackName, + shouldRenderLegend, + renderCanary, + }); }); + + return timeSeriesParsed; } export default function createTimeSeries(queries, graphWidth, graphHeight, graphHeightOffset) { -- cgit v1.2.1