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