From b940874decf31347b547158201a85c8b5474c302 Mon Sep 17 00:00:00 2001
From: Tom Robinson <tlrobinson@gmail.com>
Date: Fri, 19 May 2017 18:00:34 -0700
Subject: [PATCH] Disable brush for dashboard multi series + SQL

---
 .../visualizations/lib/LineAreaBarRenderer.js         | 11 ++++++++++-
 .../src/metabase/visualizations/lib/graph/brush.js    |  3 ++-
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/frontend/src/metabase/visualizations/lib/LineAreaBarRenderer.js b/frontend/src/metabase/visualizations/lib/LineAreaBarRenderer.js
index e2a79ed02dc..84cf65d7606 100644
--- a/frontend/src/metabase/visualizations/lib/LineAreaBarRenderer.js
+++ b/frontend/src/metabase/visualizations/lib/LineAreaBarRenderer.js
@@ -32,6 +32,7 @@ import { determineSeriesIndexFromElement } from "./tooltip";
 
 import { formatValue } from "metabase/lib/formatting";
 import { parseTimestamp } from "metabase/lib/time";
+import { isStructured } from "metabase/meta/Card";
 
 import { datasetContainsNoResults } from "metabase/lib/dataset";
 import { updateDateTimeFilter, updateNumericFilter } from "metabase/qb/lib/actions";
@@ -107,6 +108,8 @@ function initChart(chart, element) {
     chart.height(getAvailableCanvasHeight(element));
     // disable animations
     chart.transitionDuration(0);
+    // disable brush
+    chart.brushOn(false);
 }
 
 function applyChartTimeseriesXAxis(chart, settings, series, xValues, xDomain, xInterval) {
@@ -873,6 +876,12 @@ export default function lineAreaBar(element, {
     const isQuantitative = ["linear", "log", "pow"].indexOf(settings["graph.x_axis.scale"]) >= 0;
     const isOrdinal = !isTimeseries && !isQuantitative;
 
+    // is this a dashboard multiseries?
+    // TODO: better way to detect this?
+    const isMultiCardSeries = series.length > 1 && series[0].card.id !== series[1].card.id;
+
+    const enableBrush = !!(onChangeCardAndRun && !isMultiCardSeries && isStructured(series[0].card));
+
     // find the first nonempty single series
     // $FlowFixMe
     const firstSeries: Series = _.find(series, (s) => !datasetContainsNoResults(s.data));
@@ -1071,7 +1080,7 @@ export default function lineAreaBar(element, {
     let charts = groups.map((group, index) => {
         let chart = getDcjsChart(chartType, parent);
 
-        if (onChangeCardAndRun) {
+        if (enableBrush) {
             initBrush(parent, chart, onBrushChange, onBrushEnd);
         }
 
diff --git a/frontend/src/metabase/visualizations/lib/graph/brush.js b/frontend/src/metabase/visualizations/lib/graph/brush.js
index 2583813d48d..14a039fb868 100644
--- a/frontend/src/metabase/visualizations/lib/graph/brush.js
+++ b/frontend/src/metabase/visualizations/lib/graph/brush.js
@@ -2,11 +2,12 @@ import { KEYCODE_ESCAPE } from "metabase/lib/keyboard";
 import { moveToBack, moveToFront } from "metabase/lib/dom";
 
 export function initBrush(parent, child, onBrushChange, onBrushEnd) {
-    if (!child.brushOn) {
+    if (!parent.brushOn || !child.brushOn) {
         return;
     }
 
     // enable brush
+    parent.brushOn(true);
     child.brushOn(true);
 
     // normally dots are disabled if brush is on but we want them anyway
-- 
GitLab