This is an automated email from the ASF dual-hosted git repository.

graceguo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git


The following commit(s) were added to refs/heads/master by this push:
     new d55fe54  refactor: remove unused code (#8300)
d55fe54 is described below

commit d55fe541989eb03fe6cacf3782f30631b4c50edc
Author: Krist Wongsuphasawat <[email protected]>
AuthorDate: Mon Sep 30 16:57:35 2019 -0700

    refactor: remove unused code (#8300)
---
 superset/assets/package.json                       |   1 -
 .../spec/javascripts/modules/colors_spec.jsx       |  47 --------
 .../assets/spec/javascripts/modules/geo_spec.jsx   |  42 -------
 .../spec/javascripts/modules/sandbox_spec.jsx      |  32 ------
 .../assets/spec/javascripts/modules/time_spec.js   |  99 ----------------
 .../assets/spec/javascripts/modules/utils_spec.jsx |   8 --
 .../components/controls/ViewportControl.jsx        |  11 +-
 superset/assets/src/explore/controls.jsx           |   4 +-
 superset/assets/src/modules/colors.js              |  27 -----
 superset/assets/src/modules/geo.js                 |  57 ----------
 superset/assets/src/modules/sandbox.js             |  51 ---------
 superset/assets/src/modules/time.js                | 124 ---------------------
 superset/assets/src/modules/utils.js               |  10 --
 13 files changed, 11 insertions(+), 502 deletions(-)

diff --git a/superset/assets/package.json b/superset/assets/package.json
index 2787cc7..657b8c6 100644
--- a/superset/assets/package.json
+++ b/superset/assets/package.json
@@ -144,7 +144,6 @@
     "redux-undo": "^1.0.0-beta9-9-7",
     "regenerator-runtime": "^0.13.3",
     "shortid": "^2.2.6",
-    "underscore": "^1.8.3",
     "urijs": "^1.18.10"
   },
   "devDependencies": {
diff --git a/superset/assets/spec/javascripts/modules/colors_spec.jsx 
b/superset/assets/spec/javascripts/modules/colors_spec.jsx
deleted file mode 100644
index b4a02de..0000000
--- a/superset/assets/spec/javascripts/modules/colors_spec.jsx
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-import { hexToRGB } from '../../../src/modules/colors';
-
-describe('hexToRGB', () => {
-  it('is a function', () => {
-    expect(typeof hexToRGB).toBe('function');
-  });
-
-  it('hexToRGB converts properly', () => {
-    expect(hexToRGB('#FFFFFF')).toEqual(expect.arrayContaining([255, 255, 255, 
255]));
-    expect(hexToRGB('#000000')).toEqual(expect.arrayContaining([0, 0, 0, 
255]));
-    expect(hexToRGB('#FF0000')).toEqual(expect.arrayContaining([255, 0, 0, 
255]));
-    expect(hexToRGB('#00FF00')).toEqual(expect.arrayContaining([0, 255, 0, 
255]));
-    expect(hexToRGB('#0000FF')).toEqual(expect.arrayContaining([0, 0, 255, 
255]));
-  });
-
-  it('works with falsy values', () => {
-    expect(hexToRGB()).toEqual([0, 0, 0, 255]);
-    /* eslint-disable quotes */
-    [false, 0, -0, 0.0, '', "", ``, null, undefined, NaN].forEach((value) => {
-      expect(hexToRGB(value)).toEqual(expect.arrayContaining([0, 0, 0, 255]));
-    });
-  });
-
-  it('takes and alpha argument', () => {
-    expect(hexToRGB('#FF0000', 128)).toEqual(expect.arrayContaining([255, 0, 
0, 128]));
-    expect(hexToRGB('#000000', 100)).toEqual(expect.arrayContaining([0, 0, 0, 
100]));
-    expect(hexToRGB('#ffffff', 0)).toEqual(expect.arrayContaining([255, 255, 
255, 0]));
-  });
-});
diff --git a/superset/assets/spec/javascripts/modules/geo_spec.jsx 
b/superset/assets/spec/javascripts/modules/geo_spec.jsx
deleted file mode 100644
index da985d8..0000000
--- a/superset/assets/spec/javascripts/modules/geo_spec.jsx
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-import { unitToRadius } from '../../../src/modules/geo';
-
-const METER_TO_MILE = 1609.34;
-
-describe('unitToRadius', () => {
-  it('converts to square meters', () => {
-    expect(unitToRadius('square_m', 4 * Math.PI)).toBe(2);
-  });
-  it('converts to square kilometers', () => {
-    expect(unitToRadius('square_km', 25 * Math.PI)).toBe(5000);
-  });
-  it('converts to radius meters', () => {
-    expect(unitToRadius('radius_m', 1000)).toBe(1000);
-  });
-  it('converts to radius km', () => {
-    expect(unitToRadius('radius_km', 1)).toBe(1000);
-  });
-  it('converts to radius miles', () => {
-    expect(unitToRadius('radius_miles', 1)).toBe(METER_TO_MILE);
-  });
-  it('converts to square miles', () => {
-    expect(unitToRadius('square_miles', 25 * Math.PI)).toBe(5000 * 
(METER_TO_MILE / 1000));
-  });
-});
diff --git a/superset/assets/spec/javascripts/modules/sandbox_spec.jsx 
b/superset/assets/spec/javascripts/modules/sandbox_spec.jsx
deleted file mode 100644
index 92ac6dd..0000000
--- a/superset/assets/spec/javascripts/modules/sandbox_spec.jsx
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-import sandboxedEval from '../../../src/modules/sandbox';
-
-describe('sandboxedEval', () => {
-  it('works like a basic eval', () => {
-    expect(sandboxedEval('100')).toBe(100);
-    expect(sandboxedEval('v => v * 2')(5)).toBe(10);
-  });
-  it('d3 is in context and works', () => {
-    expect(sandboxedEval("l => _.find(l, s => s === 'bar')")(['foo', 
'bar'])).toBe('bar');
-  });
-  it('passes context as expected', () => {
-    expect(sandboxedEval('foo', { foo: 'bar' })).toBe('bar');
-  });
-});
diff --git a/superset/assets/spec/javascripts/modules/time_spec.js 
b/superset/assets/spec/javascripts/modules/time_spec.js
deleted file mode 100644
index e419f0c..0000000
--- a/superset/assets/spec/javascripts/modules/time_spec.js
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-import moment from 'moment';
-import { getPlaySliderParams, truncate } from '../../../src/modules/time';
-
-describe('truncate', () => {
-  it('truncates timestamps', () => {
-    const timestamp = moment('2018-03-03T03:03:03.333');
-    const isoDurations = [
-      // basic units
-      [moment.duration('PT1S'), moment('2018-03-03T03:03:03')],
-      [moment.duration('PT1M'), moment('2018-03-03T03:03:00')],
-      [moment.duration('PT1H'), moment('2018-03-03T03:00:00')],
-      [moment.duration('P1D'), moment('2018-03-03T00:00:00')],
-      [moment.duration('P1M'), moment('2018-03-01T00:00:00')],
-      [moment.duration('P1Y'), moment('2018-01-01T00:00:00')],
-
-      // durations that are multiples
-      [moment.duration('PT2H'), moment('2018-03-03T02:00:00')],
-      [moment.duration('P2D'), moment('2018-03-03T00:00:00')],
-    ];
-    let result;
-    isoDurations.forEach(([step, expected]) => {
-      result = truncate(timestamp, step);
-      expect(result.format()).toBe(expected.format());
-    });
-  });
-});
-
-describe('getPlaySliderParams', () => {
-  it('is a function', () => {
-    expect(typeof getPlaySliderParams).toBe('function');
-  });
-
-  it('handles durations', () => {
-    const timestamps = [
-      moment('2018-01-01T00:00:00'),
-      moment('2018-01-02T00:00:00'),
-      moment('2018-01-03T00:00:00'),
-      moment('2018-01-04T00:00:00'),
-      moment('2018-01-05T00:00:00'),
-      moment('2018-01-06T00:00:00'),
-      moment('2018-01-07T00:00:00'),
-      moment('2018-01-08T00:00:00'),
-      moment('2018-01-09T00:00:00'),
-      moment('2018-01-10T00:00:00'),
-    ].map(d => parseInt(d.format('x'), 10));
-    const { start, end, getStep, values, disabled } = 
getPlaySliderParams(timestamps, 'P2D');
-    
expect(moment(start).format()).toBe(moment('2018-01-01T00:00:00').format());
-    expect(moment(end).format()).toBe(moment('2018-01-11T00:00:00').format());
-    expect(getStep(start)).toBe(2 * 24 * 60 * 60 * 1000);
-    expect(values.map(v => moment(v).format())).toEqual([
-      moment('2018-01-01T00:00:00').format(),
-      moment('2018-01-03T00:00:00').format(),
-    ]);
-    expect(disabled).toBe(false);
-  });
-
-  it('handles intervals', () => {
-    const timestamps = [
-      moment('2018-01-01T00:00:00'),
-      moment('2018-01-02T00:00:00'),
-      moment('2018-01-03T00:00:00'),
-      moment('2018-01-04T00:00:00'),
-      moment('2018-01-05T00:00:00'),
-      moment('2018-01-06T00:00:00'),
-      moment('2018-01-07T00:00:00'),
-      moment('2018-01-08T00:00:00'),
-      moment('2018-01-09T00:00:00'),
-      moment('2018-01-10T00:00:00'),
-    ].map(d => parseInt(d.format('x'), 10));
-    // 1970-01-03 was a Saturday
-    const { start, end, getStep, values, disabled } = 
getPlaySliderParams(timestamps, 'P1W/1970-01-03T00:00:00Z');
-    
expect(moment(start).format()).toBe(moment('2017-12-30T00:00:00Z').format());  
// Saturday
-    
expect(moment(end).format()).toBe(moment('2018-01-13T00:00:00Z').format());  // 
Saturday
-    expect(getStep(start)).toBe(7 * 24 * 60 * 60 * 1000);
-    expect(values.map(v => moment(v).format())).toEqual([
-      moment('2017-12-30T00:00:00Z').format(),
-      moment('2018-01-06T00:00:00Z').format(),
-    ]);
-    expect(disabled).toBe(false);
-  });
-});
diff --git a/superset/assets/spec/javascripts/modules/utils_spec.jsx 
b/superset/assets/spec/javascripts/modules/utils_spec.jsx
index d030cda..842f54b 100644
--- a/superset/assets/spec/javascripts/modules/utils_spec.jsx
+++ b/superset/assets/spec/javascripts/modules/utils_spec.jsx
@@ -19,7 +19,6 @@
 import {
   formatSelectOptionsForRange,
   mainMetric,
-  roundDecimal,
 } from '../../../src/modules/utils';
 
 describe('utils', () => {
@@ -66,11 +65,4 @@ describe('utils', () => {
       expect(mainMetric(metrics)).toBe('foo');
     });
   });
-  describe('roundDecimal', () => {
-    it('rounding method to limit the number of decimal digits', () => {
-      expect(roundDecimal(1.139, 2)).toBe(1.14);
-      expect(roundDecimal(1.13929, 3)).toBe(1.139);
-      expect(roundDecimal(1.13929)).toBe(1);
-    });
-  });
 });
diff --git 
a/superset/assets/src/explore/components/controls/ViewportControl.jsx 
b/superset/assets/src/explore/components/controls/ViewportControl.jsx
index f3d7628..b7c06be 100644
--- a/superset/assets/src/explore/components/controls/ViewportControl.jsx
+++ b/superset/assets/src/explore/components/controls/ViewportControl.jsx
@@ -23,7 +23,14 @@ import { decimal2sexagesimal } from 'geolib';
 
 import TextControl from './TextControl';
 import ControlHeader from '../ControlHeader';
-import { defaultViewport } from '../../../modules/geo';
+
+export const DEFAULT_VIEWPORT = {
+  longitude: 6.85236157047845,
+  latitude: 31.222656842808707,
+  zoom: 1,
+  bearing: 0,
+  pitch: 0,
+};
 
 const PARAMS = [
   'longitude',
@@ -49,7 +56,7 @@ const propTypes = {
 const defaultProps = {
   onChange: () => {},
   default: { type: 'fix', value: 5 },
-  value: defaultViewport,
+  value: DEFAULT_VIEWPORT,
 };
 
 export default class ViewportControl extends React.Component {
diff --git a/superset/assets/src/explore/controls.jsx 
b/superset/assets/src/explore/controls.jsx
index 05d7f8e..8f06ae6 100644
--- a/superset/assets/src/explore/controls.jsx
+++ b/superset/assets/src/explore/controls.jsx
@@ -66,9 +66,9 @@ import {
   mainMetric,
 } from '../modules/utils';
 import * as v from './validators';
-import { defaultViewport } from '../modules/geo';
 import ColumnOption from '../components/ColumnOption';
 import OptionDescription from '../components/OptionDescription';
+import { DEFAULT_VIEWPORT } from 
'../explore/components/controls/ViewportControl';
 
 const categoricalSchemeRegistry = getCategoricalSchemeRegistry();
 const sequentialSchemeRegistry = getSequentialSchemeRegistry();
@@ -1866,7 +1866,7 @@ export const controls = {
     renderTrigger: false,
     description: t('Parameters related to the view and perspective on the 
map'),
     // default is whole world mostly centered
-    default: defaultViewport,
+    default: DEFAULT_VIEWPORT,
     // Viewport changes shouldn't prompt user to re-run query
     dontRefreshOnChange: true,
   },
diff --git a/superset/assets/src/modules/colors.js 
b/superset/assets/src/modules/colors.js
deleted file mode 100644
index 6b0f72a..0000000
--- a/superset/assets/src/modules/colors.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-import { rgb } from 'd3-color';
-
-export function hexToRGB(hex, alpha = 255) {
-  if (!hex) {
-    return [0, 0, 0, alpha];
-  }
-  const { r, g, b } = rgb(hex);
-  return [r, g, b, alpha];
-}
diff --git a/superset/assets/src/modules/geo.js 
b/superset/assets/src/modules/geo.js
deleted file mode 100644
index 7dce24e..0000000
--- a/superset/assets/src/modules/geo.js
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-import { roundDecimal } from '../modules/utils';
-
-export const defaultViewport = {
-  longitude: 6.85236157047845,
-  latitude: 31.222656842808707,
-  zoom: 1,
-  bearing: 0,
-  pitch: 0,
-};
-
-const METER_TO_MILE = 1609.34;
-
-export function unitToRadius(unit, num) {
-  if (unit === 'square_m') {
-    return Math.sqrt(num / Math.PI);
-  } else if (unit === 'radius_m') {
-    return num;
-  } else if (unit === 'radius_km') {
-    return num * 1000;
-  } else if (unit === 'radius_miles') {
-    return num * METER_TO_MILE;
-  } else if (unit === 'square_km') {
-    return Math.sqrt(num / Math.PI) * 1000;
-  } else if (unit === 'square_miles') {
-    return Math.sqrt(num / Math.PI) * METER_TO_MILE;
-  }
-  return null;
-}
-
-export const EARTH_CIRCUMFERENCE_KM = 40075.16;
-export const MILES_PER_KM = 1.60934;
-
-export function kmToPixels(kilometers, latitude, zoomLevel) {
-  // Algorithm from: https://wiki.openstreetmap.org/wiki/Zoom_levels
-  const latitudeRad = latitude * (Math.PI / 180);
-  // Seems like the zoomLevel is off by one
-  const kmPerPixel = (EARTH_CIRCUMFERENCE_KM * Math.cos(latitudeRad)) / 
Math.pow(2, zoomLevel + 9);
-  return roundDecimal(kilometers / kmPerPixel, 2);
-}
diff --git a/superset/assets/src/modules/sandbox.js 
b/superset/assets/src/modules/sandbox.js
deleted file mode 100644
index 7c2e77b..0000000
--- a/superset/assets/src/modules/sandbox.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-// A safe alternative to JS's eval
-import vm from 'vm';
-import _ from 'underscore';
-import * as d3array from 'd3-array';
-import * as colors from './colors';
-
-// Objects exposed here should be treated like a public API
-// if `underscore` had backwards incompatible changes in a future release, we'd
-// have to be careful about bumping the library as those changes could break 
user charts
-const GLOBAL_CONTEXT = {
-  console,
-  _,
-  colors,
-  d3array,
-};
-
-// Copied/modified from 
https://github.com/hacksparrow/safe-eval/blob/master/index.js
-export default function sandboxedEval(code, context, opts) {
-  const sandbox = {};
-  const resultKey = 'SAFE_EVAL_' + Math.floor(Math.random() * 1000000);
-  sandbox[resultKey] = {};
-  const codeToEval = resultKey + '=' + code;
-  const sandboxContext = { ...GLOBAL_CONTEXT, ...context };
-  Object.keys(sandboxContext).forEach(function (key) {
-    sandbox[key] = sandboxContext[key];
-  });
-  try {
-    vm.runInNewContext(codeToEval, sandbox, opts);
-    return sandbox[resultKey];
-  } catch (error) {
-    return () => error;
-  }
-}
diff --git a/superset/assets/src/modules/time.js 
b/superset/assets/src/modules/time.js
deleted file mode 100644
index 3d4466f..0000000
--- a/superset/assets/src/modules/time.js
+++ /dev/null
@@ -1,124 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-import moment from 'moment';
-
-
-// array with the minimum values of each part of a timestamp -- note that
-// months are zero-indexed in Javascript
-const truncatePartTo = [
-  1,  // year
-  0,  // month
-  1,  // day
-  0,  // hour
-  0,  // minute
-  0,  // second
-  0,  // millisecond
-];
-
-
-export function truncate(timestamp, step) {
-  /*
-   * Truncate timestamp down to duration resolution.
-   */
-  const lowerBound = moment(timestamp).subtract(step);
-  const explodedTimestamp = timestamp.toArray();
-  const explodedLowerBound = lowerBound.toArray();
-
-  const firstDiffIndex = explodedTimestamp
-    .map((part, i) => (explodedLowerBound[i] !== part))
-    .indexOf(true);
-  const dateParts = explodedTimestamp.map((part, i) => {
-    if (i === firstDiffIndex) {
-      // truncate down to closest `truncatePartTo[i] + n * step`
-      const difference = part - explodedLowerBound[i];
-      return part - ((part - truncatePartTo[i]) % difference);
-    } else if (i < firstDiffIndex || firstDiffIndex === -1) {
-      return part;
-    }
-    return truncatePartTo[i];
-  });
-
-  return moment(dateParts);
-}
-
-function getStepSeconds(step, start) {
-  /* Return number of seconds in a step.
-   *
-   * The step might be ambigous, eg, "1 month" has a variable number of
-   * seconds, which is why we need to know the start time.
-   */
-  const startMillliseconds = parseInt(moment(start).format('x'), 10);
-  const endMilliseconds = parseInt(moment(start).add(step).format('x'), 10);
-  return endMilliseconds - startMillliseconds;
-}
-
-export const getPlaySliderParams = function (timestamps, timeGrain) {
-  const minTimestamp = moment(Math.min(...timestamps));
-  const maxTimestamp = moment(Math.max(...timestamps));
-  let step;
-  let reference;
-
-  if (timeGrain.indexOf('/') !== -1) {
-    // Here, time grain is a time interval instead of a simple duration, either
-    // `reference/duration` or `duration/reference`. We need to parse the
-    // duration and make sure that start and end are in the right places. For
-    // example, if `reference` is a Saturday and `duration` is 1 week (P1W)
-    // then both start and end should be Saturdays.
-    const parts = timeGrain.split('/', 2);
-    if (parts[0].endsWith('Z')) {  // ISO string
-      reference = moment(parts[0]);
-      step = moment.duration(parts[1]);
-    } else {
-      reference = moment(parts[1]);
-      step = moment.duration(parts[0]);
-    }
-  } else {
-    step = moment.duration(timeGrain);
-    reference = truncate(minTimestamp, step);
-  }
-
-  // find the largest `reference + n * step` smaller than the minimum timestamp
-  const start = moment(reference);
-  while (start < minTimestamp) {
-    start.add(step);
-  }
-  while (start > minTimestamp) {
-    start.subtract(step);
-  }
-
-  // find the smallest `reference + n * step` larger than the maximum timestamp
-  const end = moment(reference);
-  while (end > maxTimestamp) {
-    end.subtract(step);
-  }
-  while (end < maxTimestamp) {
-    end.add(step);
-  }
-
-  const values = timeGrain != null ? [start, moment(start).add(step)] : 
[start, end];
-  const disabled = timestamps.every(timestamp => timestamp === null);
-
-  return {
-    start: parseInt(start.format('x'), 10),
-    end: parseInt(end.format('x'), 10),
-    getStep: getStepSeconds.bind(this, step),
-    values: values.map(v => parseInt(v.format('x'), 10)),
-    disabled,
-  };
-};
diff --git a/superset/assets/src/modules/utils.js 
b/superset/assets/src/modules/utils.js
index 1e5f311..25e0a01 100644
--- a/superset/assets/src/modules/utils.js
+++ b/superset/assets/src/modules/utils.js
@@ -86,13 +86,3 @@ export function mainMetric(savedMetrics) {
   }
   return metric;
 }
-
-export function roundDecimal(number, precision) {
-  let roundedNumber;
-  if (precision) {
-    roundedNumber = Math.round(number * (precision = Math.pow(10, precision))) 
/ precision;
-  } else {
-    roundedNumber = Math.round(number);
-  }
-  return roundedNumber;
-}

Reply via email to