From 734a053967ba3631ca1c173a750f338e4a3a2ff3 Mon Sep 17 00:00:00 2001
From: Tom Robinson <tlrobinson@gmail.com>
Date: Wed, 12 Sep 2018 13:05:51 -0700
Subject: [PATCH] Move graph specific settings functions to settings/graph.js

---
 .../metabase/visualizations/lib/settings.js   | 64 +----------------
 .../visualizations/lib/settings/graph.js      | 71 +++++++++++++++++--
 2 files changed, 68 insertions(+), 67 deletions(-)

diff --git a/frontend/src/metabase/visualizations/lib/settings.js b/frontend/src/metabase/visualizations/lib/settings.js
index 2331906775d..669a75cf376 100644
--- a/frontend/src/metabase/visualizations/lib/settings.js
+++ b/frontend/src/metabase/visualizations/lib/settings.js
@@ -5,12 +5,10 @@ import {
   getChartTypeFromData,
   DIMENSION_DIMENSION_METRIC,
   DIMENSION_METRIC,
-  DIMENSION_METRIC_METRIC,
-  getColumnCardinality,
   getFriendlyName,
 } from "./utils";
 
-import { isDate, isMetric, isDimension } from "metabase/lib/schema_metadata";
+import { isMetric, isDimension } from "metabase/lib/schema_metadata";
 
 import ChartSettingInput from "metabase/visualizations/components/settings/ChartSettingInput.jsx";
 import ChartSettingInputGroup from "metabase/visualizations/components/settings/ChartSettingInputGroup.jsx";
@@ -36,66 +34,6 @@ const WIDGETS = {
   colors: ChartSettingColorsPicker,
 };
 
-export function getDefaultColumns(series) {
-  if (series[0].card.display === "scatter") {
-    return getDefaultScatterColumns(series);
-  } else {
-    return getDefaultLineAreaBarColumns(series);
-  }
-}
-
-function getDefaultScatterColumns([{ data: { cols, rows } }]) {
-  let dimensions = cols.filter(isDimension);
-  let metrics = cols.filter(isMetric);
-  if (dimensions.length === 2 && metrics.length < 2) {
-    return {
-      dimensions: [dimensions[0].name],
-      metrics: [dimensions[1].name],
-      bubble: metrics.length === 1 ? metrics[0].name : null,
-    };
-  } else {
-    return {
-      dimensions: [null],
-      metrics: [null],
-      bubble: null,
-    };
-  }
-}
-
-function getDefaultLineAreaBarColumns([{ data: { cols, rows } }]) {
-  let type = getChartTypeFromData(cols, rows, false);
-  if (type === DIMENSION_DIMENSION_METRIC) {
-    let dimensions = [cols[0], cols[1]];
-    if (isDate(dimensions[1]) && !isDate(dimensions[0])) {
-      // if the series dimension is a date but the axis dimension is not then swap them
-      dimensions.reverse();
-    } else if (
-      getColumnCardinality(cols, rows, 1) > getColumnCardinality(cols, rows, 0)
-    ) {
-      // if the series dimension is higher cardinality than the axis dimension then swap them
-      dimensions.reverse();
-    }
-    return {
-      dimensions: dimensions.map(col => col.name),
-      metrics: [cols[2].name],
-    };
-  } else if (type === DIMENSION_METRIC) {
-    return {
-      dimensions: [cols[0].name],
-      metrics: [cols[1].name],
-    };
-  } else if (type === DIMENSION_METRIC_METRIC) {
-    return {
-      dimensions: [cols[0].name],
-      metrics: cols.slice(1).map(col => col.name),
-    };
-  }
-  return {
-    dimensions: [null],
-    metrics: [null],
-  };
-}
-
 export function getDefaultDimensionAndMetric([{ data }]) {
   const type = data && getChartTypeFromData(data.cols, data.rows, false);
   if (type === DIMENSION_METRIC) {
diff --git a/frontend/src/metabase/visualizations/lib/settings/graph.js b/frontend/src/metabase/visualizations/lib/settings/graph.js
index 93e865edf94..d527fc366df 100644
--- a/frontend/src/metabase/visualizations/lib/settings/graph.js
+++ b/frontend/src/metabase/visualizations/lib/settings/graph.js
@@ -4,16 +4,19 @@ import {
   isMetric,
   isNumeric,
   isAny,
+  isDate,
 } from "metabase/lib/schema_metadata";
 import { t } from "c-3po";
-import {
-  getDefaultColumns,
-  getOptionFromColumn,
-} from "metabase/visualizations/lib/settings";
+import { getOptionFromColumn } from "metabase/visualizations/lib/settings";
 import {
   columnsAreValid,
   getCardColors,
   getFriendlyName,
+  getChartTypeFromData,
+  getColumnCardinality,
+  DIMENSION_DIMENSION_METRIC,
+  DIMENSION_METRIC,
+  DIMENSION_METRIC_METRIC,
 } from "metabase/visualizations/lib/utils";
 import { dimensionIsNumeric } from "metabase/visualizations/lib/numeric";
 import { dimensionIsTimeseries } from "metabase/visualizations/lib/timeseries";
@@ -40,6 +43,66 @@ function getSeriesTitles(series, vizSettings) {
   );
 }
 
+export function getDefaultColumns(series) {
+  if (series[0].card.display === "scatter") {
+    return getDefaultScatterColumns(series);
+  } else {
+    return getDefaultLineAreaBarColumns(series);
+  }
+}
+
+function getDefaultScatterColumns([{ data: { cols, rows } }]) {
+  let dimensions = cols.filter(isDimension);
+  let metrics = cols.filter(isMetric);
+  if (dimensions.length === 2 && metrics.length < 2) {
+    return {
+      dimensions: [dimensions[0].name],
+      metrics: [dimensions[1].name],
+      bubble: metrics.length === 1 ? metrics[0].name : null,
+    };
+  } else {
+    return {
+      dimensions: [null],
+      metrics: [null],
+      bubble: null,
+    };
+  }
+}
+
+function getDefaultLineAreaBarColumns([{ data: { cols, rows } }]) {
+  let type = getChartTypeFromData(cols, rows, false);
+  if (type === DIMENSION_DIMENSION_METRIC) {
+    let dimensions = [cols[0], cols[1]];
+    if (isDate(dimensions[1]) && !isDate(dimensions[0])) {
+      // if the series dimension is a date but the axis dimension is not then swap them
+      dimensions.reverse();
+    } else if (
+      getColumnCardinality(cols, rows, 1) > getColumnCardinality(cols, rows, 0)
+    ) {
+      // if the series dimension is higher cardinality than the axis dimension then swap them
+      dimensions.reverse();
+    }
+    return {
+      dimensions: dimensions.map(col => col.name),
+      metrics: [cols[2].name],
+    };
+  } else if (type === DIMENSION_METRIC) {
+    return {
+      dimensions: [cols[0].name],
+      metrics: [cols[1].name],
+    };
+  } else if (type === DIMENSION_METRIC_METRIC) {
+    return {
+      dimensions: [cols[0].name],
+      metrics: cols.slice(1).map(col => col.name),
+    };
+  }
+  return {
+    dimensions: [null],
+    metrics: [null],
+  };
+}
+
 export const GRAPH_DATA_SETTINGS = {
   "graph._dimension_filter": {
     getDefault: ([{ card }]) =>
-- 
GitLab