mirror of
https://github.com/apache/superset.git
synced 2026-04-18 23:55:00 +00:00
Use chart plugins and remove code under visualizations (#6838)
* add dependencies * add the basic charts * use plugins except tables * remove old vis code * Clean dependencies * remove paired-t-test code and a few more dependencies * remove tests * remove unused packages * integrate nvd3 * bump version * update ref * fix issue with table and pivottable * delete table, pivot table and dependency * Resolve bubble chart issue by using lib instead of esm * add comments * delete nvd3 * add mapbox
This commit is contained in:
committed by
GitHub
parent
2132522fbb
commit
75e1045da4
@@ -1,67 +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 { getTimeOrNumberFormatter, formatLabel, tryNumify } from '../../../../src/visualizations/nvd3/utils';
|
||||
|
||||
describe('nvd3/utils', () => {
|
||||
describe('getTimeOrNumberFormatter(format)', () => {
|
||||
it('is a function', () => {
|
||||
expect(typeof getTimeOrNumberFormatter).toBe('function');
|
||||
});
|
||||
it('returns a date formatter if format is smart_date', () => {
|
||||
const time = new Date(Date.UTC(2018, 10, 21, 22, 11));
|
||||
expect(getTimeOrNumberFormatter('smart_date')(time)).toBe('10:11');
|
||||
});
|
||||
it('returns a number formatter otherwise', () => {
|
||||
expect(getTimeOrNumberFormatter('.3s')(3000000)).toBe('3.00M');
|
||||
expect(getTimeOrNumberFormatter()(3000100)).toBe('3.00M');
|
||||
});
|
||||
});
|
||||
|
||||
describe('formatLabel()', () => {
|
||||
const verboseMap = {
|
||||
foo: 'Foo',
|
||||
bar: 'Bar',
|
||||
};
|
||||
|
||||
it('formats simple labels', () => {
|
||||
expect(formatLabel('foo')).toBe('foo');
|
||||
expect(formatLabel(['foo'])).toBe('foo');
|
||||
expect(formatLabel(['foo', 'bar'])).toBe('foo, bar');
|
||||
});
|
||||
it('formats simple labels with lookups', () => {
|
||||
expect(formatLabel('foo', verboseMap)).toBe('Foo');
|
||||
expect(formatLabel('baz', verboseMap)).toBe('baz');
|
||||
expect(formatLabel(['foo'], verboseMap)).toBe('Foo');
|
||||
expect(formatLabel(['foo', 'bar', 'baz'], verboseMap)).toBe('Foo, Bar, baz');
|
||||
});
|
||||
it('deals with time shift properly', () => {
|
||||
expect(formatLabel(['foo', '1 hour offset'], verboseMap)).toBe('Foo, 1 hour offset');
|
||||
expect(formatLabel(['foo', 'bar', 'baz', '2 hours offset'], verboseMap)).toBe('Foo, Bar, baz, 2 hours offset');
|
||||
});
|
||||
});
|
||||
|
||||
describe('tryNumify()', () => {
|
||||
it('tryNumify works as expected', () => {
|
||||
expect(tryNumify(5)).toBe(5);
|
||||
expect(tryNumify('5')).toBe(5);
|
||||
expect(tryNumify('5.1')).toBe(5.1);
|
||||
expect(tryNumify('a string')).toBe('a string');
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -1,118 +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 $ from 'jquery';
|
||||
import '../../helpers/shim';
|
||||
import Table from '../../../src/visualizations/Table/Table';
|
||||
import transformProps from '../../../src/visualizations/Table/transformProps';
|
||||
|
||||
describe('table viz', () => {
|
||||
const div = '<div id="slice-container"></div>';
|
||||
const BASE_CHART_PROPS = {
|
||||
height: 100,
|
||||
datasource: {
|
||||
verboseMap: {},
|
||||
},
|
||||
filters: {},
|
||||
formData: {
|
||||
metrics: ['count'],
|
||||
timeseriesLimitMetric: null,
|
||||
},
|
||||
onAddFilter() {},
|
||||
payload: {
|
||||
data: {
|
||||
records: [
|
||||
{ gender: 'boy', count: 39245 },
|
||||
{ gender: 'girl', count: 36446 },
|
||||
],
|
||||
columns: ['gender', 'count'],
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const PAYLOAD2 = {
|
||||
data: {
|
||||
records: [
|
||||
{ gender: 'boy', count: 39245, 'SUM(sum_boys)': 48133355 },
|
||||
{ gender: 'girl', count: 36446, 'SUM(sum_boys)': 0 },
|
||||
],
|
||||
columns: ['gender', 'count', 'SUM(sum_boys)'],
|
||||
},
|
||||
};
|
||||
|
||||
let container;
|
||||
let $container;
|
||||
|
||||
beforeEach(() => {
|
||||
$('body').html(div);
|
||||
container = document.getElementById('slice-container');
|
||||
$container = $(container);
|
||||
});
|
||||
|
||||
it('renders into a container', () => {
|
||||
expect($container.children()).toHaveLength(0);
|
||||
Table(container, transformProps(BASE_CHART_PROPS));
|
||||
expect($container.children()).toHaveLength(1);
|
||||
});
|
||||
|
||||
it('renders header and body datatables in container', () => {
|
||||
expect($container.find('.dataTable')).toHaveLength(0);
|
||||
Table(container, transformProps(BASE_CHART_PROPS));
|
||||
expect($container.find('.dataTable')).toHaveLength(2);
|
||||
|
||||
const tableHeader = $container.find('.dataTable')[0];
|
||||
expect($(tableHeader).find('thead tr')).toHaveLength(1);
|
||||
expect($(tableHeader).find('th')).toHaveLength(2);
|
||||
|
||||
const tableBody = $container.find('.dataTable')[1];
|
||||
expect($(tableBody).find('tbody tr')).toHaveLength(2);
|
||||
expect($(tableBody).find('th')).toHaveLength(2);
|
||||
});
|
||||
|
||||
it('hides the sort by column', () => {
|
||||
const chartProps = {
|
||||
...BASE_CHART_PROPS,
|
||||
formData: {
|
||||
...BASE_CHART_PROPS.formData,
|
||||
timeseriesLimitMetric: {
|
||||
label: 'SUM(sum_boys)',
|
||||
},
|
||||
},
|
||||
payload: PAYLOAD2,
|
||||
};
|
||||
|
||||
Table(container, transformProps(chartProps));
|
||||
const tableHeader = $container.find('.dataTable')[0];
|
||||
expect($(tableHeader).find('th')).toHaveLength(2);
|
||||
});
|
||||
|
||||
it('works with empty list for sort by', () => {
|
||||
const chartProps = {
|
||||
...BASE_CHART_PROPS,
|
||||
formData: {
|
||||
...BASE_CHART_PROPS.formData,
|
||||
timeseriesLimitMetric: [],
|
||||
},
|
||||
payload: PAYLOAD2,
|
||||
};
|
||||
|
||||
Table(container, transformProps(chartProps));
|
||||
const tableBody = $container.find('.dataTable')[1];
|
||||
expect($(tableBody).find('th')).toHaveLength(3);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user