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;
-}