diff --git a/superset/assets/package.json b/superset/assets/package.json
index 78545cfa3b640..ceb34c74a2eb8 100644
--- a/superset/assets/package.json
+++ b/superset/assets/package.json
@@ -17,7 +17,7 @@
"build": "NODE_ENV=production webpack --colors --progress",
"lint": "eslint --ignore-path=.eslintignore --ext .js,.jsx .",
"lint-fix": "eslint --fix --ignore-path=.eslintignore --ext .js,.jsx .",
- "sync-backend": "babel-node --presets env javascripts/syncBackend.js"
+ "sync-backend": "babel-node --presets env src/syncBackend.js"
},
"repository": {
"type": "git",
diff --git a/superset/assets/spec/javascripts/addSlice/AddSliceContainer_spec.jsx b/superset/assets/spec/javascripts/addSlice/AddSliceContainer_spec.jsx
index f91b301cdf491..96ed089599736 100644
--- a/superset/assets/spec/javascripts/addSlice/AddSliceContainer_spec.jsx
+++ b/superset/assets/spec/javascripts/addSlice/AddSliceContainer_spec.jsx
@@ -4,7 +4,7 @@ import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
import { Button } from 'react-bootstrap';
import Select from 'react-virtualized-select';
-import AddSliceContainer from '../../../javascripts/addSlice/AddSliceContainer';
+import AddSliceContainer from '../../../src/addSlice/AddSliceContainer';
const defaultProps = {
datasources: [
diff --git a/superset/assets/spec/javascripts/chart/Chart_spec.jsx b/superset/assets/spec/javascripts/chart/Chart_spec.jsx
index 9d45e85c905a0..b766d9f8f4387 100644
--- a/superset/assets/spec/javascripts/chart/Chart_spec.jsx
+++ b/superset/assets/spec/javascripts/chart/Chart_spec.jsx
@@ -4,10 +4,10 @@ import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
-import { chart as initChart } from '../../../javascripts/chart/chartReducer';
-import Chart from '../../../javascripts/chart/Chart';
-import ChartBody from '../../../javascripts/chart/ChartBody';
-import Loading from '../../../javascripts/components/Loading';
+import { chart as initChart } from '../../../src/chart/chartReducer';
+import Chart from '../../../src/chart/Chart';
+import ChartBody from '../../../src/chart/ChartBody';
+import Loading from '../../../src/components/Loading';
describe('Chart', () => {
const chart = {
diff --git a/superset/assets/spec/javascripts/components/AlteredSliceTag_spec.jsx b/superset/assets/spec/javascripts/components/AlteredSliceTag_spec.jsx
index f3b746bbb361c..79947201e604a 100644
--- a/superset/assets/spec/javascripts/components/AlteredSliceTag_spec.jsx
+++ b/superset/assets/spec/javascripts/components/AlteredSliceTag_spec.jsx
@@ -5,9 +5,9 @@ import { expect } from 'chai';
import { Table, Thead, Td, Th, Tr } from 'reactable';
-import AlteredSliceTag from '../../../javascripts/components/AlteredSliceTag';
-import ModalTrigger from '../../../javascripts/components/ModalTrigger';
-import TooltipWrapper from '../../../javascripts/components/TooltipWrapper';
+import AlteredSliceTag from '../../../src/components/AlteredSliceTag';
+import ModalTrigger from '../../../src/components/ModalTrigger';
+import TooltipWrapper from '../../../src/components/TooltipWrapper';
const defaultProps = {
origFormData: {
diff --git a/superset/assets/spec/javascripts/components/AsyncSelect_spec.jsx b/superset/assets/spec/javascripts/components/AsyncSelect_spec.jsx
index 35b6f8141108c..a672716bfe3a1 100644
--- a/superset/assets/spec/javascripts/components/AsyncSelect_spec.jsx
+++ b/superset/assets/spec/javascripts/components/AsyncSelect_spec.jsx
@@ -5,7 +5,7 @@ import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
-import AsyncSelect from '../../../javascripts/components/AsyncSelect';
+import AsyncSelect from '../../../src/components/AsyncSelect';
describe('AsyncSelect', () => {
const mockedProps = {
diff --git a/superset/assets/spec/javascripts/components/CachedLabel_spec.jsx b/superset/assets/spec/javascripts/components/CachedLabel_spec.jsx
index a720a8ce575d4..8a7f74abcdbb3 100644
--- a/superset/assets/spec/javascripts/components/CachedLabel_spec.jsx
+++ b/superset/assets/spec/javascripts/components/CachedLabel_spec.jsx
@@ -4,7 +4,7 @@ import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import { Label } from 'react-bootstrap';
-import CachedLabel from '../../../javascripts/components/CachedLabel';
+import CachedLabel from '../../../src/components/CachedLabel';
describe('CachedLabel', () => {
const defaultProps = {
diff --git a/superset/assets/spec/javascripts/components/Checkbox_spec.jsx b/superset/assets/spec/javascripts/components/Checkbox_spec.jsx
index 72b615c690a2d..b53fbfab53745 100644
--- a/superset/assets/spec/javascripts/components/Checkbox_spec.jsx
+++ b/superset/assets/spec/javascripts/components/Checkbox_spec.jsx
@@ -4,7 +4,7 @@ import { describe, it } from 'mocha';
import sinon from 'sinon';
import { shallow } from 'enzyme';
-import Checkbox from '../../../javascripts/components/Checkbox';
+import Checkbox from '../../../src/components/Checkbox';
describe('Checkbox', () => {
const defaultProps = {
diff --git a/superset/assets/spec/javascripts/components/ColumnOption_spec.jsx b/superset/assets/spec/javascripts/components/ColumnOption_spec.jsx
index d8f6ada663c8a..1c531a1ff19a1 100644
--- a/superset/assets/spec/javascripts/components/ColumnOption_spec.jsx
+++ b/superset/assets/spec/javascripts/components/ColumnOption_spec.jsx
@@ -3,9 +3,9 @@ import { expect } from 'chai';
import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
-import ColumnOption from '../../../javascripts/components/ColumnOption';
-import ColumnTypeLabel from '../../../javascripts/components/ColumnTypeLabel';
-import InfoTooltipWithTrigger from '../../../javascripts/components/InfoTooltipWithTrigger';
+import ColumnOption from '../../../src/components/ColumnOption';
+import ColumnTypeLabel from '../../../src/components/ColumnTypeLabel';
+import InfoTooltipWithTrigger from '../../../src/components/InfoTooltipWithTrigger';
describe('ColumnOption', () => {
const defaultProps = {
diff --git a/superset/assets/spec/javascripts/components/ColumnTypeLabel_spec.jsx b/superset/assets/spec/javascripts/components/ColumnTypeLabel_spec.jsx
index 7ce058be73ad5..9e3cfe82a3c5f 100644
--- a/superset/assets/spec/javascripts/components/ColumnTypeLabel_spec.jsx
+++ b/superset/assets/spec/javascripts/components/ColumnTypeLabel_spec.jsx
@@ -3,7 +3,7 @@ import { expect } from 'chai';
import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
-import ColumnTypeLabel from '../../../javascripts/components/ColumnTypeLabel';
+import ColumnTypeLabel from '../../../src/components/ColumnTypeLabel';
describe('ColumnOption', () => {
const defaultProps = {
diff --git a/superset/assets/spec/javascripts/components/CopyToClipboard_spec.jsx b/superset/assets/spec/javascripts/components/CopyToClipboard_spec.jsx
index e6e7408a4c304..84357d799e1d9 100644
--- a/superset/assets/spec/javascripts/components/CopyToClipboard_spec.jsx
+++ b/superset/assets/spec/javascripts/components/CopyToClipboard_spec.jsx
@@ -2,7 +2,7 @@ import React from 'react';
import { expect } from 'chai';
import { describe, it } from 'mocha';
-import CopyToClipboard from '../../../javascripts/components/CopyToClipboard';
+import CopyToClipboard from '../../../src/components/CopyToClipboard';
describe('CopyToClipboard', () => {
const defaultProps = {
diff --git a/superset/assets/spec/javascripts/components/FilterableTable/FilterableTable_spec.jsx b/superset/assets/spec/javascripts/components/FilterableTable/FilterableTable_spec.jsx
index a4ca9141ccfed..81c8f15016e01 100644
--- a/superset/assets/spec/javascripts/components/FilterableTable/FilterableTable_spec.jsx
+++ b/superset/assets/spec/javascripts/components/FilterableTable/FilterableTable_spec.jsx
@@ -2,7 +2,7 @@ import React from 'react';
import { describe, it } from 'mocha';
import { expect } from 'chai';
import { mount } from 'enzyme';
-import FilterableTable from '../../../../javascripts/components/FilterableTable/FilterableTable';
+import FilterableTable from '../../../../src/components/FilterableTable/FilterableTable';
describe('FilterableTable', () => {
const mockedProps = {
diff --git a/superset/assets/spec/javascripts/components/MetricOption_spec.jsx b/superset/assets/spec/javascripts/components/MetricOption_spec.jsx
index 0da6c62573a8d..7af2cebd60993 100644
--- a/superset/assets/spec/javascripts/components/MetricOption_spec.jsx
+++ b/superset/assets/spec/javascripts/components/MetricOption_spec.jsx
@@ -3,9 +3,9 @@ import { expect } from 'chai';
import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
-import MetricOption from '../../../javascripts/components/MetricOption';
-import ColumnTypeLabel from '../../../javascripts/components/ColumnTypeLabel';
-import InfoTooltipWithTrigger from '../../../javascripts/components/InfoTooltipWithTrigger';
+import MetricOption from '../../../src/components/MetricOption';
+import ColumnTypeLabel from '../../../src/components/ColumnTypeLabel';
+import InfoTooltipWithTrigger from '../../../src/components/InfoTooltipWithTrigger';
describe('MetricOption', () => {
const defaultProps = {
diff --git a/superset/assets/spec/javascripts/components/ModalTrigger_spec.jsx b/superset/assets/spec/javascripts/components/ModalTrigger_spec.jsx
index 3fb7d3eb58b21..6f132a9bcc3ee 100644
--- a/superset/assets/spec/javascripts/components/ModalTrigger_spec.jsx
+++ b/superset/assets/spec/javascripts/components/ModalTrigger_spec.jsx
@@ -2,7 +2,7 @@ import React from 'react';
import { expect } from 'chai';
import { describe, it } from 'mocha';
-import ModalTrigger from '../../../javascripts/components/ModalTrigger';
+import ModalTrigger from '../../../src/components/ModalTrigger';
describe('ModalTrigger', () => {
const defaultProps = {
diff --git a/superset/assets/spec/javascripts/components/OnPasteSelect_spec.jsx b/superset/assets/spec/javascripts/components/OnPasteSelect_spec.jsx
index 949ca03f3b683..278a1ac24a1b6 100644
--- a/superset/assets/spec/javascripts/components/OnPasteSelect_spec.jsx
+++ b/superset/assets/spec/javascripts/components/OnPasteSelect_spec.jsx
@@ -7,7 +7,7 @@ import { describe, it } from 'mocha';
import VirtualizedSelect from 'react-virtualized-select';
import Select, { Creatable } from 'react-select';
-import OnPasteSelect from '../../../javascripts/components/OnPasteSelect';
+import OnPasteSelect from '../../../src/components/OnPasteSelect';
const defaultProps = {
onChange: sinon.spy(),
diff --git a/superset/assets/spec/javascripts/components/OptionDescription_spec.jsx b/superset/assets/spec/javascripts/components/OptionDescription_spec.jsx
index e9a6a9dfab8fd..cf45332ebb9af 100644
--- a/superset/assets/spec/javascripts/components/OptionDescription_spec.jsx
+++ b/superset/assets/spec/javascripts/components/OptionDescription_spec.jsx
@@ -3,8 +3,8 @@ import { shallow } from 'enzyme';
import { describe, it } from 'mocha';
import { expect } from 'chai';
-import InfoTooltipWithTrigger from '../../../javascripts/components/InfoTooltipWithTrigger';
-import OptionDescription from '../../../javascripts/components/OptionDescription';
+import InfoTooltipWithTrigger from '../../../src/components/InfoTooltipWithTrigger';
+import OptionDescription from '../../../src/components/OptionDescription';
const defaultProps = {
option: {
diff --git a/superset/assets/spec/javascripts/components/PopoverSection_spec.jsx b/superset/assets/spec/javascripts/components/PopoverSection_spec.jsx
index b9a638c8cfc87..e5a17b75c1c89 100644
--- a/superset/assets/spec/javascripts/components/PopoverSection_spec.jsx
+++ b/superset/assets/spec/javascripts/components/PopoverSection_spec.jsx
@@ -3,7 +3,7 @@ import { expect } from 'chai';
import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
-import PopoverSection from '../../../javascripts/components/PopoverSection';
+import PopoverSection from '../../../src/components/PopoverSection';
describe('PopoverSection', () => {
const defaultProps = {
diff --git a/superset/assets/spec/javascripts/components/VirtualizedRendererWrap_spec.jsx b/superset/assets/spec/javascripts/components/VirtualizedRendererWrap_spec.jsx
index 1cd4c4e9c00a3..e793fef2c48df 100644
--- a/superset/assets/spec/javascripts/components/VirtualizedRendererWrap_spec.jsx
+++ b/superset/assets/spec/javascripts/components/VirtualizedRendererWrap_spec.jsx
@@ -6,7 +6,7 @@ import { expect } from 'chai';
import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
-import VirtualizedRendererWrap from '../../../javascripts/components/VirtualizedRendererWrap';
+import VirtualizedRendererWrap from '../../../src/components/VirtualizedRendererWrap';
const defaultProps = {
focusedOption: { label: 'focusedOn', value: 'focusedOn' },
diff --git a/superset/assets/spec/javascripts/dashboard/CodeModal_spec.jsx b/superset/assets/spec/javascripts/dashboard/CodeModal_spec.jsx
index b71401ecd6a59..a93c5573ed67a 100644
--- a/superset/assets/spec/javascripts/dashboard/CodeModal_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/CodeModal_spec.jsx
@@ -3,7 +3,7 @@ import { mount } from 'enzyme';
import { describe, it } from 'mocha';
import { expect } from 'chai';
-import CodeModal from '../../../javascripts/dashboard/components/CodeModal';
+import CodeModal from '../../../src/dashboard/components/CodeModal';
describe('CodeModal', () => {
const mockedProps = {
diff --git a/superset/assets/spec/javascripts/dashboard/CssEditor_spec.jsx b/superset/assets/spec/javascripts/dashboard/CssEditor_spec.jsx
index 1da5624cf9a36..c325dc1b78689 100644
--- a/superset/assets/spec/javascripts/dashboard/CssEditor_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/CssEditor_spec.jsx
@@ -3,7 +3,7 @@ import { mount } from 'enzyme';
import { describe, it } from 'mocha';
import { expect } from 'chai';
-import CssEditor from '../../../javascripts/dashboard/components/CssEditor';
+import CssEditor from '../../../src/dashboard/components/CssEditor';
describe('CssEditor', () => {
const mockedProps = {
diff --git a/superset/assets/spec/javascripts/dashboard/Dashboard_spec.jsx b/superset/assets/spec/javascripts/dashboard/Dashboard_spec.jsx
index 1ac495992a630..c6e94d87d9552 100644
--- a/superset/assets/spec/javascripts/dashboard/Dashboard_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/Dashboard_spec.jsx
@@ -4,9 +4,9 @@ import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
-import * as dashboardActions from '../../../javascripts/dashboard/actions';
-import * as chartActions from '../../../javascripts/chart/chartAction';
-import Dashboard from '../../../javascripts/dashboard/components/Dashboard';
+import * as dashboardActions from '../../../src/dashboard/actions';
+import * as chartActions from '../../../src/chart/chartAction';
+import Dashboard from '../../../src/dashboard/components/Dashboard';
import { defaultFilters, dashboard, charts } from './fixtures';
describe('Dashboard', () => {
diff --git a/superset/assets/spec/javascripts/dashboard/RefreshIntervalModal_spec.jsx b/superset/assets/spec/javascripts/dashboard/RefreshIntervalModal_spec.jsx
index 7537074765f37..3a2f7000dfb83 100644
--- a/superset/assets/spec/javascripts/dashboard/RefreshIntervalModal_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/RefreshIntervalModal_spec.jsx
@@ -3,7 +3,7 @@ import { mount } from 'enzyme';
import { describe, it } from 'mocha';
import { expect } from 'chai';
-import RefreshIntervalModal from '../../../javascripts/dashboard/components/RefreshIntervalModal';
+import RefreshIntervalModal from '../../../src/dashboard/components/RefreshIntervalModal';
describe('RefreshIntervalModal', () => {
const mockedProps = {
diff --git a/superset/assets/spec/javascripts/dashboard/fixtures.jsx b/superset/assets/spec/javascripts/dashboard/fixtures.jsx
index 1b9cf21b62c1b..371b02c02ca43 100644
--- a/superset/assets/spec/javascripts/dashboard/fixtures.jsx
+++ b/superset/assets/spec/javascripts/dashboard/fixtures.jsx
@@ -1,4 +1,4 @@
-import { getInitialState } from '../../../javascripts/dashboard/reducers';
+import { getInitialState } from '../../../src/dashboard/reducers';
export const defaultFilters = {
256: { region: [] },
diff --git a/superset/assets/spec/javascripts/dashboard/reducers_spec.js b/superset/assets/spec/javascripts/dashboard/reducers_spec.js
index 8022928ddf4b5..6421fec83cfcb 100644
--- a/superset/assets/spec/javascripts/dashboard/reducers_spec.js
+++ b/superset/assets/spec/javascripts/dashboard/reducers_spec.js
@@ -1,8 +1,8 @@
import { describe, it } from 'mocha';
import { expect } from 'chai';
-import { dashboard as reducers } from '../../../javascripts/dashboard/reducers';
-import * as actions from '../../../javascripts/dashboard/actions';
+import { dashboard as reducers } from '../../../src/dashboard/reducers';
+import * as actions from '../../../src/dashboard/actions';
import { defaultFilters, dashboard as initState } from './fixtures';
describe('Dashboard reducers', () => {
diff --git a/superset/assets/spec/javascripts/explore/AdhocMetric_spec.js b/superset/assets/spec/javascripts/explore/AdhocMetric_spec.js
index 5fa837af0f197..432be7620a2da 100644
--- a/superset/assets/spec/javascripts/explore/AdhocMetric_spec.js
+++ b/superset/assets/spec/javascripts/explore/AdhocMetric_spec.js
@@ -1,8 +1,8 @@
import { expect } from 'chai';
import { describe, it } from 'mocha';
-import AdhocMetric, { EXPRESSION_TYPES } from '../../../javascripts/explore/AdhocMetric';
-import { AGGREGATES } from '../../../javascripts/explore/constants';
+import AdhocMetric, { EXPRESSION_TYPES } from '../../../src/explore/AdhocMetric';
+import { AGGREGATES } from '../../../src/explore/constants';
const valueColumn = { type: 'DOUBLE', column_name: 'value' };
diff --git a/superset/assets/spec/javascripts/explore/chartActions_spec.js b/superset/assets/spec/javascripts/explore/chartActions_spec.js
index d0f6c6b3d4f8f..f1e49efee2ef6 100644
--- a/superset/assets/spec/javascripts/explore/chartActions_spec.js
+++ b/superset/assets/spec/javascripts/explore/chartActions_spec.js
@@ -2,8 +2,8 @@ import { it, describe } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
import $ from 'jquery';
-import * as exploreUtils from '../../../javascripts/explore/exploreUtils';
-import * as actions from '../../../javascripts/chart/chartAction';
+import * as exploreUtils from '../../../src/explore/exploreUtils';
+import * as actions from '../../../src/chart/chartAction';
describe('chart actions', () => {
let dispatch;
diff --git a/superset/assets/spec/javascripts/explore/components/AdhocMetricEditPopoverTitle_spec.jsx b/superset/assets/spec/javascripts/explore/components/AdhocMetricEditPopoverTitle_spec.jsx
index b732a5a78fc65..4acb24e279dd3 100644
--- a/superset/assets/spec/javascripts/explore/components/AdhocMetricEditPopoverTitle_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/AdhocMetricEditPopoverTitle_spec.jsx
@@ -6,9 +6,9 @@ import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import { OverlayTrigger } from 'react-bootstrap';
-import AdhocMetric from '../../../../javascripts/explore/AdhocMetric';
-import AdhocMetricEditPopoverTitle from '../../../../javascripts/explore/components/AdhocMetricEditPopoverTitle';
-import { AGGREGATES } from '../../../../javascripts/explore/constants';
+import AdhocMetric from '../../../../src/explore/AdhocMetric';
+import AdhocMetricEditPopoverTitle from '../../../../src/explore/components/AdhocMetricEditPopoverTitle';
+import { AGGREGATES } from '../../../../src/explore/constants';
const columns = [
{ type: 'VARCHAR(255)', column_name: 'source' },
diff --git a/superset/assets/spec/javascripts/explore/components/AdhocMetricEditPopover_spec.jsx b/superset/assets/spec/javascripts/explore/components/AdhocMetricEditPopover_spec.jsx
index 8a79e0cd22c38..eebc70386903e 100644
--- a/superset/assets/spec/javascripts/explore/components/AdhocMetricEditPopover_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/AdhocMetricEditPopover_spec.jsx
@@ -6,9 +6,9 @@ import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import { Button, FormGroup, Popover } from 'react-bootstrap';
-import AdhocMetric, { EXPRESSION_TYPES } from '../../../../javascripts/explore/AdhocMetric';
-import AdhocMetricEditPopover from '../../../../javascripts/explore/components/AdhocMetricEditPopover';
-import { AGGREGATES } from '../../../../javascripts/explore/constants';
+import AdhocMetric, { EXPRESSION_TYPES } from '../../../../src/explore/AdhocMetric';
+import AdhocMetricEditPopover from '../../../../src/explore/components/AdhocMetricEditPopover';
+import { AGGREGATES } from '../../../../src/explore/constants';
const columns = [
{ type: 'VARCHAR(255)', column_name: 'source' },
diff --git a/superset/assets/spec/javascripts/explore/components/AdhocMetricOption_spec.jsx b/superset/assets/spec/javascripts/explore/components/AdhocMetricOption_spec.jsx
index ac3682598414d..4ed5d68d7dd84 100644
--- a/superset/assets/spec/javascripts/explore/components/AdhocMetricOption_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/AdhocMetricOption_spec.jsx
@@ -6,9 +6,9 @@ import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import { Label, OverlayTrigger } from 'react-bootstrap';
-import AdhocMetric from '../../../../javascripts/explore/AdhocMetric';
-import AdhocMetricOption from '../../../../javascripts/explore/components/AdhocMetricOption';
-import { AGGREGATES } from '../../../../javascripts/explore/constants';
+import AdhocMetric from '../../../../src/explore/AdhocMetric';
+import AdhocMetricOption from '../../../../src/explore/components/AdhocMetricOption';
+import { AGGREGATES } from '../../../../src/explore/constants';
const columns = [
{ type: 'VARCHAR(255)', column_name: 'source' },
diff --git a/superset/assets/spec/javascripts/explore/components/AggregateOption_spec.jsx b/superset/assets/spec/javascripts/explore/components/AggregateOption_spec.jsx
index a1fb317969c37..233eb8d75f2af 100644
--- a/superset/assets/spec/javascripts/explore/components/AggregateOption_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/AggregateOption_spec.jsx
@@ -4,7 +4,7 @@ import { expect } from 'chai';
import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
-import AggregateOption from '../../../../javascripts/explore/components/AggregateOption';
+import AggregateOption from '../../../../src/explore/components/AggregateOption';
describe('AggregateOption', () => {
it('renders the aggregate', () => {
diff --git a/superset/assets/spec/javascripts/explore/components/BoundsControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/BoundsControl_spec.jsx
index b4318e4be3326..522329a512b28 100644
--- a/superset/assets/spec/javascripts/explore/components/BoundsControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/BoundsControl_spec.jsx
@@ -6,7 +6,7 @@ import { expect } from 'chai';
import { describe, it, beforeEach } from 'mocha';
import { mount } from 'enzyme';
-import BoundsControl from '../../../../javascripts/explore/components/controls/BoundsControl';
+import BoundsControl from '../../../../src/explore/components/controls/BoundsControl';
const defaultProps = {
name: 'y_axis_bounds',
diff --git a/superset/assets/spec/javascripts/explore/components/CheckboxControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/CheckboxControl_spec.jsx
index 66b11a41980f2..a3312450b0777 100644
--- a/superset/assets/spec/javascripts/explore/components/CheckboxControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/CheckboxControl_spec.jsx
@@ -5,9 +5,9 @@ import { expect } from 'chai';
import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
-import CheckboxControl from '../../../../javascripts/explore/components/controls/CheckboxControl';
-import ControlHeader from '../../../../javascripts/explore/components/ControlHeader';
-import Checkbox from '../../../../javascripts/components/Checkbox';
+import CheckboxControl from '../../../../src/explore/components/controls/CheckboxControl';
+import ControlHeader from '../../../../src/explore/components/ControlHeader';
+import Checkbox from '../../../../src/components/Checkbox';
const defaultProps = {
name: 'show_legend',
diff --git a/superset/assets/spec/javascripts/explore/components/ColorPickerControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/ColorPickerControl_spec.jsx
index 9ce2f478645f2..ec586385695d5 100644
--- a/superset/assets/spec/javascripts/explore/components/ColorPickerControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/ColorPickerControl_spec.jsx
@@ -7,8 +7,8 @@ import { OverlayTrigger } from 'react-bootstrap';
import { SketchPicker } from 'react-color';
import ColorPickerControl from
- '../../../../javascripts/explore/components/controls/ColorPickerControl';
-import ControlHeader from '../../../../javascripts/explore/components/ControlHeader';
+ '../../../../src/explore/components/controls/ColorPickerControl';
+import ControlHeader from '../../../../src/explore/components/ControlHeader';
const defaultProps = {
value: { },
diff --git a/superset/assets/spec/javascripts/explore/components/ColorScheme_spec.jsx b/superset/assets/spec/javascripts/explore/components/ColorScheme_spec.jsx
index 1f5ee69f6c96c..a7d4d66ab6762 100644
--- a/superset/assets/spec/javascripts/explore/components/ColorScheme_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/ColorScheme_spec.jsx
@@ -6,8 +6,8 @@ import { mount } from 'enzyme';
import { Creatable } from 'react-select';
import ColorSchemeControl from
- '../../../../javascripts/explore/components/controls/ColorSchemeControl';
-import { ALL_COLOR_SCHEMES } from '../../../../javascripts/modules/colors';
+ '../../../../src/explore/components/controls/ColorSchemeControl';
+import { ALL_COLOR_SCHEMES } from '../../../../src/modules/colors';
const defaultProps = {
options: Object.keys(ALL_COLOR_SCHEMES).map(s => ([s, s])),
diff --git a/superset/assets/spec/javascripts/explore/components/ControlPanelSection_spec.jsx b/superset/assets/spec/javascripts/explore/components/ControlPanelSection_spec.jsx
index 05eac64572941..c63392e41ec1b 100644
--- a/superset/assets/spec/javascripts/explore/components/ControlPanelSection_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/ControlPanelSection_spec.jsx
@@ -5,10 +5,10 @@ import { shallow } from 'enzyme';
import { Panel } from 'react-bootstrap';
import InfoTooltipWithTrigger from
- '../../../../javascripts/components/InfoTooltipWithTrigger';
+ '../../../../src/components/InfoTooltipWithTrigger';
import ControlPanelSection from
- '../../../../javascripts/explore/components/ControlPanelSection';
+ '../../../../src/explore/components/ControlPanelSection';
const defaultProps = {
children:
a child element
,
diff --git a/superset/assets/spec/javascripts/explore/components/ControlPanelsContainer_spec.jsx b/superset/assets/spec/javascripts/explore/components/ControlPanelsContainer_spec.jsx
index 1f4dd6e2a99e4..54579906a6cbc 100644
--- a/superset/assets/spec/javascripts/explore/components/ControlPanelsContainer_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/ControlPanelsContainer_spec.jsx
@@ -3,11 +3,11 @@ import { expect } from 'chai';
import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
import { getFormDataFromControls, defaultControls }
- from '../../../../javascripts/explore/stores/store';
+ from '../../../../src/explore/stores/store';
import {
ControlPanelsContainer,
-} from '../../../../javascripts/explore/components/ControlPanelsContainer';
-import ControlPanelSection from '../../../../javascripts/explore/components/ControlPanelSection';
+} from '../../../../src/explore/components/ControlPanelsContainer';
+import ControlPanelSection from '../../../../src/explore/components/ControlPanelSection';
const defaultProps = {
datasource_type: 'table',
diff --git a/superset/assets/spec/javascripts/explore/components/ControlRow_spec.jsx b/superset/assets/spec/javascripts/explore/components/ControlRow_spec.jsx
index d472583c3e269..118799eb8eba3 100644
--- a/superset/assets/spec/javascripts/explore/components/ControlRow_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/ControlRow_spec.jsx
@@ -2,7 +2,7 @@ import React from 'react';
import { expect } from 'chai';
import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
-import ControlSetRow from '../../../../javascripts/explore/components/ControlRow';
+import ControlSetRow from '../../../../src/explore/components/ControlRow';
describe('ControlSetRow', () => {
it('renders a single row with one element', () => {
diff --git a/superset/assets/spec/javascripts/explore/components/DatasourceControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/DatasourceControl_spec.jsx
index d206829cd726f..c8d139085037b 100644
--- a/superset/assets/spec/javascripts/explore/components/DatasourceControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/DatasourceControl_spec.jsx
@@ -4,7 +4,7 @@ import { expect } from 'chai';
import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
import { Modal } from 'react-bootstrap';
-import DatasourceControl from '../../../../javascripts/explore/components/controls/DatasourceControl';
+import DatasourceControl from '../../../../src/explore/components/controls/DatasourceControl';
const defaultProps = {
name: 'datasource',
diff --git a/superset/assets/spec/javascripts/explore/components/DateFilterControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/DateFilterControl_spec.jsx
index 54db5c9cf32bc..0892d05abbb23 100644
--- a/superset/assets/spec/javascripts/explore/components/DateFilterControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/DateFilterControl_spec.jsx
@@ -6,8 +6,8 @@ import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
import { Button } from 'react-bootstrap';
-import DateFilterControl from '../../../../javascripts/explore/components/controls/DateFilterControl';
-import ControlHeader from '../../../../javascripts/explore/components/ControlHeader';
+import DateFilterControl from '../../../../src/explore/components/controls/DateFilterControl';
+import ControlHeader from '../../../../src/explore/components/ControlHeader';
const defaultProps = {
animation: false,
diff --git a/superset/assets/spec/javascripts/explore/components/DisplayQueryButton_spec.jsx b/superset/assets/spec/javascripts/explore/components/DisplayQueryButton_spec.jsx
index 3a30dc6e3b9fc..196e07751c5a0 100644
--- a/superset/assets/spec/javascripts/explore/components/DisplayQueryButton_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/DisplayQueryButton_spec.jsx
@@ -3,9 +3,9 @@ import { expect } from 'chai';
import { describe, it } from 'mocha';
import { mount } from 'enzyme';
import { Modal } from 'react-bootstrap';
-import ModalTrigger from './../../../../javascripts/components/ModalTrigger';
+import ModalTrigger from './../../../../src/components/ModalTrigger';
-import DisplayQueryButton from '../../../../javascripts/explore/components/DisplayQueryButton';
+import DisplayQueryButton from '../../../../src/explore/components/DisplayQueryButton';
describe('DisplayQueryButton', () => {
const defaultProps = {
diff --git a/superset/assets/spec/javascripts/explore/components/EmbedCodeButton_spec.jsx b/superset/assets/spec/javascripts/explore/components/EmbedCodeButton_spec.jsx
index f60b254ee0276..3789fcc8afedb 100644
--- a/superset/assets/spec/javascripts/explore/components/EmbedCodeButton_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/EmbedCodeButton_spec.jsx
@@ -5,8 +5,8 @@ import { shallow, mount } from 'enzyme';
import { OverlayTrigger } from 'react-bootstrap';
import sinon from 'sinon';
-import EmbedCodeButton from '../../../../javascripts/explore/components/EmbedCodeButton';
-import * as exploreUtils from '../../../../javascripts/explore/exploreUtils';
+import EmbedCodeButton from '../../../../src/explore/components/EmbedCodeButton';
+import * as exploreUtils from '../../../../src/explore/exploreUtils';
describe('EmbedCodeButton', () => {
const defaultProps = {
diff --git a/superset/assets/spec/javascripts/explore/components/ExploreActionButtons_spec.jsx b/superset/assets/spec/javascripts/explore/components/ExploreActionButtons_spec.jsx
index 545446ecbe6e9..03be96fecf42a 100644
--- a/superset/assets/spec/javascripts/explore/components/ExploreActionButtons_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/ExploreActionButtons_spec.jsx
@@ -3,7 +3,7 @@ import { expect } from 'chai';
import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import ExploreActionButtons from
- '../../../../javascripts/explore/components/ExploreActionButtons';
+ '../../../../src/explore/components/ExploreActionButtons';
describe('ExploreActionButtons', () => {
const defaultProps = {
diff --git a/superset/assets/spec/javascripts/explore/components/ExploreChartHeader_spec.jsx b/superset/assets/spec/javascripts/explore/components/ExploreChartHeader_spec.jsx
index 2875e8398eac4..03c6ad17f983e 100644
--- a/superset/assets/spec/javascripts/explore/components/ExploreChartHeader_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/ExploreChartHeader_spec.jsx
@@ -3,9 +3,9 @@ import { expect } from 'chai';
import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
-import ExploreChartHeader from '../../../../javascripts/explore/components/ExploreChartHeader';
-import ExploreActionButtons from '../../../../javascripts/explore/components/ExploreActionButtons';
-import EditableTitle from '../../../../javascripts/components/EditableTitle';
+import ExploreChartHeader from '../../../../src/explore/components/ExploreChartHeader';
+import ExploreActionButtons from '../../../../src/explore/components/ExploreActionButtons';
+import EditableTitle from '../../../../src/components/EditableTitle';
const mockProps = {
actions: {},
diff --git a/superset/assets/spec/javascripts/explore/components/ExploreChartPanel_spec.js b/superset/assets/spec/javascripts/explore/components/ExploreChartPanel_spec.js
index 1417d5eeea0e4..b159f17cb62e1 100644
--- a/superset/assets/spec/javascripts/explore/components/ExploreChartPanel_spec.js
+++ b/superset/assets/spec/javascripts/explore/components/ExploreChartPanel_spec.js
@@ -5,7 +5,7 @@
// import { expect } from 'chai';
// import { describe, it } from 'mocha';
-// import ChartContainer from '../../../../javascripts/explore/components/ChartContainer';
+// import ChartContainer from '../../../../src/explore/components/ChartContainer';
// describe('ChartContainer', () => {
// const mockProps = {
diff --git a/superset/assets/spec/javascripts/explore/components/ExploreViewContainer_spec.js b/superset/assets/spec/javascripts/explore/components/ExploreViewContainer_spec.js
index 0db058fcdde33..9fe35e8bcbac2 100644
--- a/superset/assets/spec/javascripts/explore/components/ExploreViewContainer_spec.js
+++ b/superset/assets/spec/javascripts/explore/components/ExploreViewContainer_spec.js
@@ -7,13 +7,13 @@
// import { shallow } from 'enzyme';
// import ExploreViewContainer
-// from '../../../../javascripts/explore/components/ExploreViewContainer';
+// from '../../../../src/explore/components/ExploreViewContainer';
// import QueryAndSaveBtns
-// from '../../../../javascripts/explore/components/QueryAndSaveBtns';
+// from '../../../../src/explore/components/QueryAndSaveBtns';
// import ControlPanelsContainer
-// from '../../../../javascripts/explore/components/ControlPanelsContainer';
+// from '../../../../src/explore/components/ControlPanelsContainer';
// import ChartContainer
-// from '../../../../javascripts/explore/components/ChartContainer';
+// from '../../../../src/explore/components/ChartContainer';
// describe('ExploreViewContainer', () => {
// it('renders', () => {
diff --git a/superset/assets/spec/javascripts/explore/components/FilterControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/FilterControl_spec.jsx
index 02beedcc87c22..69f8b2794f1f0 100644
--- a/superset/assets/spec/javascripts/explore/components/FilterControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/FilterControl_spec.jsx
@@ -5,8 +5,8 @@ import sinon from 'sinon';
import { expect } from 'chai';
import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
-import FilterControl from '../../../../javascripts/explore/components/controls/FilterControl';
-import Filter from '../../../../javascripts/explore/components/controls/Filter';
+import FilterControl from '../../../../src/explore/components/controls/FilterControl';
+import Filter from '../../../../src/explore/components/controls/Filter';
const $ = window.$ = require('jquery');
diff --git a/superset/assets/spec/javascripts/explore/components/Filter_spec.jsx b/superset/assets/spec/javascripts/explore/components/Filter_spec.jsx
index 854f940a256fe..1a4c395807ec2 100644
--- a/superset/assets/spec/javascripts/explore/components/Filter_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/Filter_spec.jsx
@@ -6,8 +6,8 @@ import sinon from 'sinon';
import { expect } from 'chai';
import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
-import Filter from '../../../../javascripts/explore/components/controls/Filter';
-import SelectControl from '../../../../javascripts/explore/components/controls/SelectControl';
+import Filter from '../../../../src/explore/components/controls/Filter';
+import SelectControl from '../../../../src/explore/components/controls/SelectControl';
const defaultProps = {
changeFilter: sinon.spy(),
diff --git a/superset/assets/spec/javascripts/explore/components/FixedOrMetricControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/FixedOrMetricControl_spec.jsx
index 6f5a1aa5b5c60..97a685822c4e3 100644
--- a/superset/assets/spec/javascripts/explore/components/FixedOrMetricControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/FixedOrMetricControl_spec.jsx
@@ -6,12 +6,12 @@ import { shallow } from 'enzyme';
import { OverlayTrigger } from 'react-bootstrap';
import FixedOrMetricControl from
- '../../../../javascripts/explore/components/controls/FixedOrMetricControl';
+ '../../../../src/explore/components/controls/FixedOrMetricControl';
import SelectControl from
- '../../../../javascripts/explore/components/controls/SelectControl';
+ '../../../../src/explore/components/controls/SelectControl';
import TextControl from
- '../../../../javascripts/explore/components/controls/TextControl';
-import ControlHeader from '../../../../javascripts/explore/components/ControlHeader';
+ '../../../../src/explore/components/controls/TextControl';
+import ControlHeader from '../../../../src/explore/components/ControlHeader';
const defaultProps = {
value: { },
diff --git a/superset/assets/spec/javascripts/explore/components/MetricDefinitionOption_spec.jsx b/superset/assets/spec/javascripts/explore/components/MetricDefinitionOption_spec.jsx
index e39c225b6a0c1..18129666cdced 100644
--- a/superset/assets/spec/javascripts/explore/components/MetricDefinitionOption_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/MetricDefinitionOption_spec.jsx
@@ -4,10 +4,10 @@ import { expect } from 'chai';
import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
-import MetricDefinitionOption from '../../../../javascripts/explore/components/MetricDefinitionOption';
-import MetricOption from '../../../../javascripts/components/MetricOption';
-import ColumnOption from '../../../../javascripts/components/ColumnOption';
-import AggregateOption from '../../../../javascripts/explore/components/AggregateOption';
+import MetricDefinitionOption from '../../../../src/explore/components/MetricDefinitionOption';
+import MetricOption from '../../../../src/components/MetricOption';
+import ColumnOption from '../../../../src/components/ColumnOption';
+import AggregateOption from '../../../../src/explore/components/AggregateOption';
describe('MetricDefinitionOption', () => {
it('renders a MetricOption given a saved metric', () => {
diff --git a/superset/assets/spec/javascripts/explore/components/MetricDefinitionValue_spec.jsx b/superset/assets/spec/javascripts/explore/components/MetricDefinitionValue_spec.jsx
index 5690c21010664..896a5276e297c 100644
--- a/superset/assets/spec/javascripts/explore/components/MetricDefinitionValue_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/MetricDefinitionValue_spec.jsx
@@ -4,11 +4,11 @@ import { expect } from 'chai';
import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
-import MetricDefinitionValue from '../../../../javascripts/explore/components/MetricDefinitionValue';
-import MetricOption from '../../../../javascripts/components/MetricOption';
-import AdhocMetricOption from '../../../../javascripts/explore/components/AdhocMetricOption';
-import AdhocMetric from '../../../../javascripts/explore/AdhocMetric';
-import { AGGREGATES } from '../../../../javascripts/explore/constants';
+import MetricDefinitionValue from '../../../../src/explore/components/MetricDefinitionValue';
+import MetricOption from '../../../../src/components/MetricOption';
+import AdhocMetricOption from '../../../../src/explore/components/AdhocMetricOption';
+import AdhocMetric from '../../../../src/explore/AdhocMetric';
+import { AGGREGATES } from '../../../../src/explore/constants';
const sumValueAdhocMetric = new AdhocMetric({
column: { type: 'DOUBLE', column_name: 'value' },
diff --git a/superset/assets/spec/javascripts/explore/components/MetricsControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/MetricsControl_spec.jsx
index 285f2b26b038b..e52161a89c7fe 100644
--- a/superset/assets/spec/javascripts/explore/components/MetricsControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/MetricsControl_spec.jsx
@@ -5,10 +5,10 @@ import { expect } from 'chai';
import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
-import MetricsControl from '../../../../javascripts/explore/components/controls/MetricsControl';
-import { AGGREGATES } from '../../../../javascripts/explore/constants';
-import OnPasteSelect from '../../../../javascripts/components/OnPasteSelect';
-import AdhocMetric, { EXPRESSION_TYPES } from '../../../../javascripts/explore/AdhocMetric';
+import MetricsControl from '../../../../src/explore/components/controls/MetricsControl';
+import { AGGREGATES } from '../../../../src/explore/constants';
+import OnPasteSelect from '../../../../src/components/OnPasteSelect';
+import AdhocMetric, { EXPRESSION_TYPES } from '../../../../src/explore/AdhocMetric';
const defaultProps = {
name: 'metrics',
diff --git a/superset/assets/spec/javascripts/explore/components/QueryAndSaveBtns_spec.jsx b/superset/assets/spec/javascripts/explore/components/QueryAndSaveBtns_spec.jsx
index fcb6371896d8a..c22a7bb7ab3ad 100644
--- a/superset/assets/spec/javascripts/explore/components/QueryAndSaveBtns_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/QueryAndSaveBtns_spec.jsx
@@ -4,8 +4,8 @@ import { expect } from 'chai';
import { shallow } from 'enzyme';
import sinon from 'sinon';
-import QueryAndSaveButtons from '../../../../javascripts/explore/components/QueryAndSaveBtns';
-import Button from '../../../../javascripts/components/Button';
+import QueryAndSaveButtons from '../../../../src/explore/components/QueryAndSaveBtns';
+import Button from '../../../../src/components/Button';
describe('QueryAndSaveButtons', () => {
const defaultProps = {
diff --git a/superset/assets/spec/javascripts/explore/components/RowCountLabel_spec.jsx b/superset/assets/spec/javascripts/explore/components/RowCountLabel_spec.jsx
index 1642fd7df680f..9cdd4851b5790 100644
--- a/superset/assets/spec/javascripts/explore/components/RowCountLabel_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/RowCountLabel_spec.jsx
@@ -4,9 +4,9 @@ import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import { Label } from 'react-bootstrap';
-import TooltipWrapper from './../../../../javascripts/components/TooltipWrapper';
+import TooltipWrapper from './../../../../src/components/TooltipWrapper';
-import RowCountLabel from '../../../../javascripts/explore/components/RowCountLabel';
+import RowCountLabel from '../../../../src/explore/components/RowCountLabel';
describe('RowCountLabel', () => {
const defaultProps = {
diff --git a/superset/assets/spec/javascripts/explore/components/RunQueryActionButton_spec.jsx b/superset/assets/spec/javascripts/explore/components/RunQueryActionButton_spec.jsx
index 141e471d00176..33ab84487a9ff 100644
--- a/superset/assets/spec/javascripts/explore/components/RunQueryActionButton_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/RunQueryActionButton_spec.jsx
@@ -4,8 +4,8 @@ import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
import RunQueryActionButton
- from '../../../../javascripts/SqlLab/components/RunQueryActionButton';
-import Button from '../../../../javascripts/components/Button';
+ from '../../../../src/SqlLab/components/RunQueryActionButton';
+import Button from '../../../../src/components/Button';
describe('RunQueryActionButton', () => {
let wrapper;
diff --git a/superset/assets/spec/javascripts/explore/components/SaveModal_spec.jsx b/superset/assets/spec/javascripts/explore/components/SaveModal_spec.jsx
index 00d040aa1efd1..6f452b3a22b7a 100644
--- a/superset/assets/spec/javascripts/explore/components/SaveModal_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/SaveModal_spec.jsx
@@ -8,9 +8,9 @@ import { shallow, mount } from 'enzyme';
import { Modal, Button, Radio } from 'react-bootstrap';
import sinon from 'sinon';
-import * as exploreUtils from '../../../../javascripts/explore/exploreUtils';
-import * as saveModalActions from '../../../../javascripts/explore/actions/saveModalActions';
-import SaveModal from '../../../../javascripts/explore/components/SaveModal';
+import * as exploreUtils from '../../../../src/explore/exploreUtils';
+import * as saveModalActions from '../../../../src/explore/actions/saveModalActions';
+import SaveModal from '../../../../src/explore/components/SaveModal';
const $ = window.$ = require('jquery');
diff --git a/superset/assets/spec/javascripts/explore/components/SelectControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/SelectControl_spec.jsx
index d0eea9c801d64..38194e5cba407 100644
--- a/superset/assets/spec/javascripts/explore/components/SelectControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/SelectControl_spec.jsx
@@ -6,9 +6,9 @@ import sinon from 'sinon';
import { expect } from 'chai';
import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
-import OnPasteSelect from '../../../../javascripts/components/OnPasteSelect';
-import VirtualizedRendererWrap from '../../../../javascripts/components/VirtualizedRendererWrap';
-import SelectControl from '../../../../javascripts/explore/components/controls/SelectControl';
+import OnPasteSelect from '../../../../src/components/OnPasteSelect';
+import VirtualizedRendererWrap from '../../../../src/components/VirtualizedRendererWrap';
+import SelectControl from '../../../../src/explore/components/controls/SelectControl';
const defaultProps = {
choices: [['1 year ago', '1 year ago'], ['today', 'today']],
diff --git a/superset/assets/spec/javascripts/explore/components/TextArea_spec.jsx b/superset/assets/spec/javascripts/explore/components/TextArea_spec.jsx
index 701e2d5151654..c1253f093361b 100644
--- a/superset/assets/spec/javascripts/explore/components/TextArea_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/TextArea_spec.jsx
@@ -7,7 +7,7 @@ import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
import AceEditor from 'react-ace';
-import TextAreaControl from '../../../../javascripts/explore/components/controls/TextAreaControl';
+import TextAreaControl from '../../../../src/explore/components/controls/TextAreaControl';
const defaultProps = {
name: 'x_axis_label',
diff --git a/superset/assets/spec/javascripts/explore/components/TimeSeriesColumnControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/TimeSeriesColumnControl_spec.jsx
index 2f8cd6b913d50..7e28ab0d8ae5f 100644
--- a/superset/assets/spec/javascripts/explore/components/TimeSeriesColumnControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/TimeSeriesColumnControl_spec.jsx
@@ -6,7 +6,7 @@ import { expect } from 'chai';
import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
-import TimeSeriesColumnControl from '../../../../javascripts/explore/components/controls/TimeSeriesColumnControl';
+import TimeSeriesColumnControl from '../../../../src/explore/components/controls/TimeSeriesColumnControl';
const defaultProps = {
name: 'x_axis_label',
diff --git a/superset/assets/spec/javascripts/explore/components/URLShortLinkButton_spec.jsx b/superset/assets/spec/javascripts/explore/components/URLShortLinkButton_spec.jsx
index 74d0d041a87bb..986daaa434a9a 100644
--- a/superset/assets/spec/javascripts/explore/components/URLShortLinkButton_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/URLShortLinkButton_spec.jsx
@@ -4,7 +4,7 @@ import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import { OverlayTrigger } from 'react-bootstrap';
-import URLShortLinkButton from '../../../../javascripts/explore/components/URLShortLinkButton';
+import URLShortLinkButton from '../../../../src/explore/components/URLShortLinkButton';
describe('URLShortLinkButton', () => {
const defaultProps = {
diff --git a/superset/assets/spec/javascripts/explore/components/ViewportControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/ViewportControl_spec.jsx
index 9864d83890ca6..a840e7cbb3798 100644
--- a/superset/assets/spec/javascripts/explore/components/ViewportControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/ViewportControl_spec.jsx
@@ -6,10 +6,10 @@ import { shallow } from 'enzyme';
import { OverlayTrigger, Label } from 'react-bootstrap';
import ViewportControl from
- '../../../../javascripts/explore/components/controls/ViewportControl';
+ '../../../../src/explore/components/controls/ViewportControl';
import TextControl from
- '../../../../javascripts/explore/components/controls/TextControl';
-import ControlHeader from '../../../../javascripts/explore/components/ControlHeader';
+ '../../../../src/explore/components/controls/TextControl';
+import ControlHeader from '../../../../src/explore/components/ControlHeader';
const defaultProps = {
value: {
diff --git a/superset/assets/spec/javascripts/explore/components/VizTypeControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/VizTypeControl_spec.jsx
index ba0ba5814630f..03b73c9eae28f 100644
--- a/superset/assets/spec/javascripts/explore/components/VizTypeControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/VizTypeControl_spec.jsx
@@ -4,7 +4,7 @@ import { expect } from 'chai';
import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
import { Modal } from 'react-bootstrap';
-import VizTypeControl from '../../../../javascripts/explore/components/controls/VizTypeControl';
+import VizTypeControl from '../../../../src/explore/components/controls/VizTypeControl';
const defaultProps = {
name: 'viz_type',
diff --git a/superset/assets/spec/javascripts/explore/exploreActions_spec.js b/superset/assets/spec/javascripts/explore/exploreActions_spec.js
index d37fc46dccea3..31d92510adcde 100644
--- a/superset/assets/spec/javascripts/explore/exploreActions_spec.js
+++ b/superset/assets/spec/javascripts/explore/exploreActions_spec.js
@@ -3,10 +3,10 @@ import { it, describe } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
import $ from 'jquery';
-import * as chartActions from '../../../javascripts/chart/chartAction';
-import * as actions from '../../../javascripts/explore/actions/exploreActions';
-import { defaultState } from '../../../javascripts/explore/stores/store';
-import exploreReducer from '../../../javascripts/explore/reducers/exploreReducer';
+import * as chartActions from '../../../src/chart/chartAction';
+import * as actions from '../../../src/explore/actions/exploreActions';
+import { defaultState } from '../../../src/explore/stores/store';
+import exploreReducer from '../../../src/explore/reducers/exploreReducer';
describe('reducers', () => {
it('sets correct control value given a key and value', () => {
diff --git a/superset/assets/spec/javascripts/explore/utils_spec.jsx b/superset/assets/spec/javascripts/explore/utils_spec.jsx
index 9f855d2f398bf..8bfea68464042 100644
--- a/superset/assets/spec/javascripts/explore/utils_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/utils_spec.jsx
@@ -1,7 +1,7 @@
import { it, describe } from 'mocha';
import { expect } from 'chai';
import URI from 'urijs';
-import { getExploreUrlAndPayload, getExploreLongUrl } from '../../../javascripts/explore/exploreUtils';
+import { getExploreUrlAndPayload, getExploreLongUrl } from '../../../src/explore/exploreUtils';
describe('exploreUtils', () => {
const location = window.location;
diff --git a/superset/assets/spec/javascripts/modules/colors_spec.jsx b/superset/assets/spec/javascripts/modules/colors_spec.jsx
index 2a24633fe7bb5..e83b4732b115c 100644
--- a/superset/assets/spec/javascripts/modules/colors_spec.jsx
+++ b/superset/assets/spec/javascripts/modules/colors_spec.jsx
@@ -1,7 +1,7 @@
import { it, describe } from 'mocha';
import { expect } from 'chai';
-import { ALL_COLOR_SCHEMES, getColorFromScheme, hexToRGB } from '../../../javascripts/modules/colors';
+import { ALL_COLOR_SCHEMES, getColorFromScheme, hexToRGB } from '../../../src/modules/colors';
describe('colors', () => {
it('default to bnbColors', () => {
diff --git a/superset/assets/spec/javascripts/modules/dates_spec.js b/superset/assets/spec/javascripts/modules/dates_spec.js
index 9eecaf19c461c..94dbfa6b1b1cb 100644
--- a/superset/assets/spec/javascripts/modules/dates_spec.js
+++ b/superset/assets/spec/javascripts/modules/dates_spec.js
@@ -8,7 +8,7 @@ import {
epochTimeXHoursAgo,
epochTimeXDaysAgo,
epochTimeXYearsAgo,
- } from '../../../javascripts/modules/dates';
+ } from '../../../src/modules/dates';
describe('tickMultiFormat', () => {
it('is a function', () => {
diff --git a/superset/assets/spec/javascripts/modules/geo_spec.jsx b/superset/assets/spec/javascripts/modules/geo_spec.jsx
index 758bf15a135d2..db51bb4f0618e 100644
--- a/superset/assets/spec/javascripts/modules/geo_spec.jsx
+++ b/superset/assets/spec/javascripts/modules/geo_spec.jsx
@@ -1,7 +1,7 @@
import { it, describe } from 'mocha';
import { expect } from 'chai';
-import { unitToRadius } from '../../../javascripts/modules/geo';
+import { unitToRadius } from '../../../src/modules/geo';
const METER_TO_MILE = 1609.34;
diff --git a/superset/assets/spec/javascripts/modules/sandbox_spec.jsx b/superset/assets/spec/javascripts/modules/sandbox_spec.jsx
index 85b36472fca65..05283b046156e 100644
--- a/superset/assets/spec/javascripts/modules/sandbox_spec.jsx
+++ b/superset/assets/spec/javascripts/modules/sandbox_spec.jsx
@@ -1,7 +1,7 @@
import { it, describe } from 'mocha';
import { expect } from 'chai';
-import sandboxedEval from '../../../javascripts/modules/sandbox';
+import sandboxedEval from '../../../src/modules/sandbox';
describe('sandboxedEval', () => {
it('works like a basic eval', () => {
diff --git a/superset/assets/spec/javascripts/modules/utils_spec.jsx b/superset/assets/spec/javascripts/modules/utils_spec.jsx
index 309d62f4cf486..f219c6e706219 100644
--- a/superset/assets/spec/javascripts/modules/utils_spec.jsx
+++ b/superset/assets/spec/javascripts/modules/utils_spec.jsx
@@ -4,7 +4,7 @@ import {
tryNumify, slugify, formatSelectOptionsForRange, d3format,
d3FormatPreset, d3TimeFormatPreset, defaultNumberFormatter,
mainMetric,
-} from '../../../javascripts/modules/utils';
+} from '../../../src/modules/utils';
describe('utils', () => {
it('tryNumify works as expected', () => {
diff --git a/superset/assets/spec/javascripts/profile/App_spec.jsx b/superset/assets/spec/javascripts/profile/App_spec.jsx
index 6484416cf8dfa..dcef27be7a42e 100644
--- a/superset/assets/spec/javascripts/profile/App_spec.jsx
+++ b/superset/assets/spec/javascripts/profile/App_spec.jsx
@@ -5,7 +5,7 @@ import { describe, it } from 'mocha';
import { expect } from 'chai';
import { user } from './fixtures';
-import App from '../../../javascripts/profile/components/App';
+import App from '../../../src/profile/components/App';
describe('App', () => {
const mockedProps = {
diff --git a/superset/assets/spec/javascripts/profile/CreatedContent_spec.jsx b/superset/assets/spec/javascripts/profile/CreatedContent_spec.jsx
index 64e72fccb4475..ac33d99ea5bb1 100644
--- a/superset/assets/spec/javascripts/profile/CreatedContent_spec.jsx
+++ b/superset/assets/spec/javascripts/profile/CreatedContent_spec.jsx
@@ -3,8 +3,8 @@ import { mount } from 'enzyme';
import { describe, it } from 'mocha';
import { expect } from 'chai';
import { user } from './fixtures';
-import CreatedContent from '../../../javascripts/profile/components/CreatedContent';
-import TableLoader from '../../../javascripts/profile/components/TableLoader';
+import CreatedContent from '../../../src/profile/components/CreatedContent';
+import TableLoader from '../../../src/profile/components/TableLoader';
describe('CreatedContent', () => {
diff --git a/superset/assets/spec/javascripts/profile/EditableTitle_spec.jsx b/superset/assets/spec/javascripts/profile/EditableTitle_spec.jsx
index 9a9e55148a964..de0ca80d535de 100644
--- a/superset/assets/spec/javascripts/profile/EditableTitle_spec.jsx
+++ b/superset/assets/spec/javascripts/profile/EditableTitle_spec.jsx
@@ -4,7 +4,7 @@ import { describe, it } from 'mocha';
import sinon from 'sinon';
import { expect } from 'chai';
-import EditableTable from '../../../javascripts/components/EditableTitle';
+import EditableTable from '../../../src/components/EditableTitle';
describe('EditableTitle', () => {
const callback = sinon.spy();
diff --git a/superset/assets/spec/javascripts/profile/Favorites_spec.jsx b/superset/assets/spec/javascripts/profile/Favorites_spec.jsx
index 592dc43933b07..c9315dcd3c889 100644
--- a/superset/assets/spec/javascripts/profile/Favorites_spec.jsx
+++ b/superset/assets/spec/javascripts/profile/Favorites_spec.jsx
@@ -4,8 +4,8 @@ import { describe, it } from 'mocha';
import { expect } from 'chai';
import { user } from './fixtures';
-import Favorites from '../../../javascripts/profile/components/Favorites';
-import TableLoader from '../../../javascripts/profile/components/TableLoader';
+import Favorites from '../../../src/profile/components/Favorites';
+import TableLoader from '../../../src/profile/components/TableLoader';
describe('Favorites', () => {
const mockedProps = {
diff --git a/superset/assets/spec/javascripts/profile/RecentActivity_spec.jsx b/superset/assets/spec/javascripts/profile/RecentActivity_spec.jsx
index 64a1908e80d4e..f3c200f7a89f9 100644
--- a/superset/assets/spec/javascripts/profile/RecentActivity_spec.jsx
+++ b/superset/assets/spec/javascripts/profile/RecentActivity_spec.jsx
@@ -4,8 +4,8 @@ import { describe, it } from 'mocha';
import { expect } from 'chai';
import { user } from './fixtures';
-import RecentActivity from '../../../javascripts/profile/components/RecentActivity';
-import TableLoader from '../../../javascripts/profile/components/TableLoader';
+import RecentActivity from '../../../src/profile/components/RecentActivity';
+import TableLoader from '../../../src/profile/components/TableLoader';
describe('RecentActivity', () => {
diff --git a/superset/assets/spec/javascripts/profile/Security_spec.jsx b/superset/assets/spec/javascripts/profile/Security_spec.jsx
index 1ea7387addf9c..20376d24160be 100644
--- a/superset/assets/spec/javascripts/profile/Security_spec.jsx
+++ b/superset/assets/spec/javascripts/profile/Security_spec.jsx
@@ -4,7 +4,7 @@ import { describe, it } from 'mocha';
import { expect } from 'chai';
import { user, userNoPerms } from './fixtures';
-import Security from '../../../javascripts/profile/components/Security';
+import Security from '../../../src/profile/components/Security';
describe('Security', () => {
diff --git a/superset/assets/spec/javascripts/profile/UserInfo_spec.jsx b/superset/assets/spec/javascripts/profile/UserInfo_spec.jsx
index 360443635b043..315dd6fd1fd56 100644
--- a/superset/assets/spec/javascripts/profile/UserInfo_spec.jsx
+++ b/superset/assets/spec/javascripts/profile/UserInfo_spec.jsx
@@ -6,7 +6,7 @@ import { describe, it } from 'mocha';
import { expect } from 'chai';
import { user } from './fixtures';
-import UserInfo from '../../../javascripts/profile/components/UserInfo';
+import UserInfo from '../../../src/profile/components/UserInfo';
describe('UserInfo', () => {
diff --git a/superset/assets/spec/javascripts/sqllab/AlertsWrapper_spec.jsx b/superset/assets/spec/javascripts/sqllab/AlertsWrapper_spec.jsx
index 2dc31a3510f95..9adec4fbbb99f 100644
--- a/superset/assets/spec/javascripts/sqllab/AlertsWrapper_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/AlertsWrapper_spec.jsx
@@ -3,7 +3,7 @@ import { describe, it } from 'mocha';
import { expect } from 'chai';
import { shallow } from 'enzyme';
import AlertContainer from 'react-alert';
-import AlertsWrapper from '../../../javascripts/components/AlertsWrapper';
+import AlertsWrapper from '../../../src/components/AlertsWrapper';
describe('AlertsWrapper', () => {
let wrapper;
diff --git a/superset/assets/spec/javascripts/sqllab/App_spec.jsx b/superset/assets/spec/javascripts/sqllab/App_spec.jsx
index b52f475f83967..8d9facb0c2fc4 100644
--- a/superset/assets/spec/javascripts/sqllab/App_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/App_spec.jsx
@@ -7,9 +7,9 @@ import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
-import App from '../../../javascripts/SqlLab/components/App';
-import TabbedSqlEditors from '../../../javascripts/SqlLab/components/TabbedSqlEditors';
-import { sqlLabReducer } from '../../../javascripts/SqlLab/reducers';
+import App from '../../../src/SqlLab/components/App';
+import TabbedSqlEditors from '../../../src/SqlLab/components/TabbedSqlEditors';
+import { sqlLabReducer } from '../../../src/SqlLab/reducers';
describe('App', () => {
const middlewares = [thunk];
diff --git a/superset/assets/spec/javascripts/sqllab/ColumnElement_spec.jsx b/superset/assets/spec/javascripts/sqllab/ColumnElement_spec.jsx
index 236576c4cf37f..fe4e9c413a845 100644
--- a/superset/assets/spec/javascripts/sqllab/ColumnElement_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/ColumnElement_spec.jsx
@@ -4,7 +4,7 @@ import { describe, it } from 'mocha';
import { expect } from 'chai';
import { mockedActions, table } from './fixtures';
-import ColumnElement from '../../../javascripts/SqlLab/components/ColumnElement';
+import ColumnElement from '../../../src/SqlLab/components/ColumnElement';
describe('ColumnElement', () => {
diff --git a/superset/assets/spec/javascripts/sqllab/CopyQueryTabUrl_spec.jsx b/superset/assets/spec/javascripts/sqllab/CopyQueryTabUrl_spec.jsx
index 895e2c3b60d74..dcbb64e1a15cf 100644
--- a/superset/assets/spec/javascripts/sqllab/CopyQueryTabUrl_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/CopyQueryTabUrl_spec.jsx
@@ -3,7 +3,7 @@ import { describe, it } from 'mocha';
import { expect } from 'chai';
import { initialState } from './fixtures';
-import CopyQueryTabUrl from '../../../javascripts/SqlLab/components/CopyQueryTabUrl';
+import CopyQueryTabUrl from '../../../src/SqlLab/components/CopyQueryTabUrl';
describe('CopyQueryTabUrl', () => {
const mockedProps = {
diff --git a/superset/assets/spec/javascripts/sqllab/HighlightedSql_spec.jsx b/superset/assets/spec/javascripts/sqllab/HighlightedSql_spec.jsx
index 0b9ae88f5f9b1..634e8a9d4f398 100644
--- a/superset/assets/spec/javascripts/sqllab/HighlightedSql_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/HighlightedSql_spec.jsx
@@ -4,8 +4,8 @@ import { mount, shallow } from 'enzyme';
import { describe, it } from 'mocha';
import { expect } from 'chai';
-import HighlightedSql from '../../../javascripts/SqlLab/components/HighlightedSql';
-import ModalTrigger from '../../../javascripts/components/ModalTrigger';
+import HighlightedSql from '../../../src/SqlLab/components/HighlightedSql';
+import ModalTrigger from '../../../src/components/ModalTrigger';
describe('HighlightedSql', () => {
diff --git a/superset/assets/spec/javascripts/sqllab/Link_spec.jsx b/superset/assets/spec/javascripts/sqllab/Link_spec.jsx
index 083874ad55232..e884d2384173c 100644
--- a/superset/assets/spec/javascripts/sqllab/Link_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/Link_spec.jsx
@@ -3,7 +3,7 @@ import { shallow } from 'enzyme';
import { describe, it } from 'mocha';
import { expect } from 'chai';
-import Link from '../../../javascripts/SqlLab/components/Link';
+import Link from '../../../src/SqlLab/components/Link';
describe('Link', () => {
const mockedProps = {
diff --git a/superset/assets/spec/javascripts/sqllab/QuerySearch_spec.jsx b/superset/assets/spec/javascripts/sqllab/QuerySearch_spec.jsx
index 38927459668d1..cff450137d831 100644
--- a/superset/assets/spec/javascripts/sqllab/QuerySearch_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/QuerySearch_spec.jsx
@@ -6,7 +6,7 @@ import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
-import QuerySearch from '../../../javascripts/SqlLab/components/QuerySearch';
+import QuerySearch from '../../../src/SqlLab/components/QuerySearch';
describe('QuerySearch', () => {
const mockedProps = {
diff --git a/superset/assets/spec/javascripts/sqllab/QueryStateLabel_spec.jsx b/superset/assets/spec/javascripts/sqllab/QueryStateLabel_spec.jsx
index 597706587d8df..b8f6dd51850f5 100644
--- a/superset/assets/spec/javascripts/sqllab/QueryStateLabel_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/QueryStateLabel_spec.jsx
@@ -4,7 +4,7 @@ import { shallow } from 'enzyme';
import { describe, it } from 'mocha';
import { expect } from 'chai';
-import QueryStateLabel from '../../../javascripts/SqlLab/components/QueryStateLabel';
+import QueryStateLabel from '../../../src/SqlLab/components/QueryStateLabel';
describe('SavedQuery', () => {
const mockedProps = {
diff --git a/superset/assets/spec/javascripts/sqllab/QueryTable_spec.jsx b/superset/assets/spec/javascripts/sqllab/QueryTable_spec.jsx
index 7c593b76eef1e..5e2560a15ab1f 100644
--- a/superset/assets/spec/javascripts/sqllab/QueryTable_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/QueryTable_spec.jsx
@@ -5,7 +5,7 @@ import { expect } from 'chai';
import { Table } from 'reactable';
import { queries } from './fixtures';
-import QueryTable from '../../../javascripts/SqlLab/components/QueryTable';
+import QueryTable from '../../../src/SqlLab/components/QueryTable';
describe('QueryTable', () => {
const mockedProps = {
diff --git a/superset/assets/spec/javascripts/sqllab/ResultSet_spec.jsx b/superset/assets/spec/javascripts/sqllab/ResultSet_spec.jsx
index ab79f2981f33c..b1f2708a5b6d3 100644
--- a/superset/assets/spec/javascripts/sqllab/ResultSet_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/ResultSet_spec.jsx
@@ -5,9 +5,9 @@ import { expect } from 'chai';
import sinon from 'sinon';
import { Alert, ProgressBar, Button } from 'react-bootstrap';
-import FilterableTable from '../../../javascripts/components/FilterableTable/FilterableTable';
-import VisualizeModal from '../../../javascripts/SqlLab/components/VisualizeModal';
-import ResultSet from '../../../javascripts/SqlLab/components/ResultSet';
+import FilterableTable from '../../../src/components/FilterableTable/FilterableTable';
+import VisualizeModal from '../../../src/SqlLab/components/VisualizeModal';
+import ResultSet from '../../../src/SqlLab/components/ResultSet';
import { queries, stoppedQuery, runningQuery, cachedQuery } from './fixtures';
describe('ResultSet', () => {
diff --git a/superset/assets/spec/javascripts/sqllab/SaveQuery_spec.jsx b/superset/assets/spec/javascripts/sqllab/SaveQuery_spec.jsx
index 146a0746b833f..865b67aa4498e 100644
--- a/superset/assets/spec/javascripts/sqllab/SaveQuery_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/SaveQuery_spec.jsx
@@ -3,8 +3,8 @@ import { FormControl } from 'react-bootstrap';
import { shallow } from 'enzyme';
import { describe, it } from 'mocha';
import { expect } from 'chai';
-import SaveQuery from '../../../javascripts/SqlLab/components/SaveQuery';
-import ModalTrigger from '../../../javascripts/components/ModalTrigger';
+import SaveQuery from '../../../src/SqlLab/components/SaveQuery';
+import ModalTrigger from '../../../src/components/ModalTrigger';
describe('SavedQuery', () => {
const mockedProps = {
diff --git a/superset/assets/spec/javascripts/sqllab/SqlEditorLeftBar_spec.jsx b/superset/assets/spec/javascripts/sqllab/SqlEditorLeftBar_spec.jsx
index 5755c658d9245..df7035a96d829 100644
--- a/superset/assets/spec/javascripts/sqllab/SqlEditorLeftBar_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/SqlEditorLeftBar_spec.jsx
@@ -6,8 +6,8 @@ import { expect } from 'chai';
import $ from 'jquery';
import { table, defaultQueryEditor, databases, tables } from './fixtures';
-import SqlEditorLeftBar from '../../../javascripts/SqlLab/components/SqlEditorLeftBar';
-import TableElement from '../../../javascripts/SqlLab/components/TableElement';
+import SqlEditorLeftBar from '../../../src/SqlLab/components/SqlEditorLeftBar';
+import TableElement from '../../../src/SqlLab/components/TableElement';
global.notify = {
error: () => {},
diff --git a/superset/assets/spec/javascripts/sqllab/SqlEditor_spec.jsx b/superset/assets/spec/javascripts/sqllab/SqlEditor_spec.jsx
index 739120f9be410..d1b58d32ed84e 100644
--- a/superset/assets/spec/javascripts/sqllab/SqlEditor_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/SqlEditor_spec.jsx
@@ -4,8 +4,8 @@ import { describe, it } from 'mocha';
import { expect } from 'chai';
import { initialState, queries, table } from './fixtures';
-import SqlEditor from '../../../javascripts/SqlLab/components/SqlEditor';
-import SqlEditorLeftBar from '../../../javascripts/SqlLab/components/SqlEditorLeftBar';
+import SqlEditor from '../../../src/SqlLab/components/SqlEditor';
+import SqlEditorLeftBar from '../../../src/SqlLab/components/SqlEditorLeftBar';
describe('SqlEditor', () => {
const mockedProps = {
diff --git a/superset/assets/spec/javascripts/sqllab/TabStatusIcon_spec.jsx b/superset/assets/spec/javascripts/sqllab/TabStatusIcon_spec.jsx
index 1dde254cc3de5..d200d4037932e 100644
--- a/superset/assets/spec/javascripts/sqllab/TabStatusIcon_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/TabStatusIcon_spec.jsx
@@ -4,7 +4,7 @@ import { expect } from 'chai';
import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
-import TabStatusIcon from '../../../javascripts/SqlLab/components/TabStatusIcon';
+import TabStatusIcon from '../../../src/SqlLab/components/TabStatusIcon';
function setup() {
const onClose = sinon.spy();
diff --git a/superset/assets/spec/javascripts/sqllab/TabbedSqlEditors_spec.jsx b/superset/assets/spec/javascripts/sqllab/TabbedSqlEditors_spec.jsx
index 11e889eefb81a..c898662f573dd 100644
--- a/superset/assets/spec/javascripts/sqllab/TabbedSqlEditors_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/TabbedSqlEditors_spec.jsx
@@ -10,8 +10,8 @@ import { expect } from 'chai';
import sinon from 'sinon';
import { table, initialState } from './fixtures';
-import TabbedSqlEditors from '../../../javascripts/SqlLab/components/TabbedSqlEditors';
-import SqlEditor from '../../../javascripts/SqlLab/components/SqlEditor';
+import TabbedSqlEditors from '../../../src/SqlLab/components/TabbedSqlEditors';
+import SqlEditor from '../../../src/SqlLab/components/SqlEditor';
describe('TabbedSqlEditors', () => {
const middlewares = [thunk];
diff --git a/superset/assets/spec/javascripts/sqllab/TableElement_spec.jsx b/superset/assets/spec/javascripts/sqllab/TableElement_spec.jsx
index f28d43d9c3ddd..ff3087158599f 100644
--- a/superset/assets/spec/javascripts/sqllab/TableElement_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/TableElement_spec.jsx
@@ -3,9 +3,9 @@ import { mount, shallow } from 'enzyme';
import { describe, it } from 'mocha';
import { expect } from 'chai';
-import Link from '../../../javascripts/SqlLab/components/Link';
-import TableElement from '../../../javascripts/SqlLab/components/TableElement';
-import ColumnElement from '../../../javascripts/SqlLab/components/ColumnElement';
+import Link from '../../../src/SqlLab/components/Link';
+import TableElement from '../../../src/SqlLab/components/TableElement';
+import ColumnElement from '../../../src/SqlLab/components/ColumnElement';
import { mockedActions, table } from './fixtures';
describe('TableElement', () => {
diff --git a/superset/assets/spec/javascripts/sqllab/Timer_spec.jsx b/superset/assets/spec/javascripts/sqllab/Timer_spec.jsx
index e9172a928c1c2..681d73142666a 100644
--- a/superset/assets/spec/javascripts/sqllab/Timer_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/Timer_spec.jsx
@@ -4,8 +4,8 @@ import { describe, it, beforeEach } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
-import Timer from '../../../javascripts/components/Timer';
-import { now } from '../../../javascripts/modules/dates';
+import Timer from '../../../src/components/Timer';
+import { now } from '../../../src/modules/dates';
describe('Timer', () => {
diff --git a/superset/assets/spec/javascripts/sqllab/VisualizeModal_spec.jsx b/superset/assets/spec/javascripts/sqllab/VisualizeModal_spec.jsx
index 7c9907982f57a..cacebeb336855 100644
--- a/superset/assets/spec/javascripts/sqllab/VisualizeModal_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/VisualizeModal_spec.jsx
@@ -11,11 +11,11 @@ import sinon from 'sinon';
import $ from 'jquery';
import shortid from 'shortid';
import { queries } from './fixtures';
-import { sqlLabReducer } from '../../../javascripts/SqlLab/reducers';
-import * as actions from '../../../javascripts/SqlLab/actions';
-import { VISUALIZE_VALIDATION_ERRORS } from '../../../javascripts/SqlLab/constants';
-import VisualizeModal from '../../../javascripts/SqlLab/components/VisualizeModal';
-import * as exploreUtils from '../../../javascripts/explore/exploreUtils';
+import { sqlLabReducer } from '../../../src/SqlLab/reducers';
+import * as actions from '../../../src/SqlLab/actions';
+import { VISUALIZE_VALIDATION_ERRORS } from '../../../src/SqlLab/constants';
+import VisualizeModal from '../../../src/SqlLab/components/VisualizeModal';
+import * as exploreUtils from '../../../src/explore/exploreUtils';
global.notify = {
info: () => {},
diff --git a/superset/assets/spec/javascripts/sqllab/actions_spec.js b/superset/assets/spec/javascripts/sqllab/actions_spec.js
index 3a957b8f280b5..34c32a23a0d1a 100644
--- a/superset/assets/spec/javascripts/sqllab/actions_spec.js
+++ b/superset/assets/spec/javascripts/sqllab/actions_spec.js
@@ -3,7 +3,7 @@ import { it, describe } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
import $ from 'jquery';
-import * as actions from '../../../javascripts/SqlLab/actions';
+import * as actions from '../../../src/SqlLab/actions';
import { query } from './fixtures';
describe('async actions', () => {
diff --git a/superset/assets/spec/javascripts/sqllab/fixtures.js b/superset/assets/spec/javascripts/sqllab/fixtures.js
index 2fef334ef7b9a..c05a745884db7 100644
--- a/superset/assets/spec/javascripts/sqllab/fixtures.js
+++ b/superset/assets/spec/javascripts/sqllab/fixtures.js
@@ -1,5 +1,5 @@
import sinon from 'sinon';
-import * as actions from '../../../javascripts/SqlLab/actions';
+import * as actions from '../../../src/SqlLab/actions';
export const mockedActions = sinon.stub(Object.assign({}, actions));
diff --git a/superset/assets/spec/javascripts/sqllab/reducers_spec.js b/superset/assets/spec/javascripts/sqllab/reducers_spec.js
index a3a5dbf7b5771..a23ceb5d57b8f 100644
--- a/superset/assets/spec/javascripts/sqllab/reducers_spec.js
+++ b/superset/assets/spec/javascripts/sqllab/reducers_spec.js
@@ -1,8 +1,8 @@
import { describe, it } from 'mocha';
import { expect } from 'chai';
-import * as r from '../../../javascripts/SqlLab/reducers';
-import * as actions from '../../../javascripts/SqlLab/actions';
+import * as r from '../../../src/SqlLab/reducers';
+import * as actions from '../../../src/SqlLab/actions';
import { alert, table, initialState } from './fixtures';
describe('sqlLabReducer', () => {
diff --git a/superset/assets/spec/javascripts/utils/common_spec.jsx b/superset/assets/spec/javascripts/utils/common_spec.jsx
index a3490d476e0d4..5aa4b4334f43b 100644
--- a/superset/assets/spec/javascripts/utils/common_spec.jsx
+++ b/superset/assets/spec/javascripts/utils/common_spec.jsx
@@ -1,6 +1,6 @@
import { it, describe } from 'mocha';
import { expect } from 'chai';
-import { isTruthy } from '../../../javascripts/utils/common';
+import { isTruthy } from '../../../src/utils/common';
describe('utils/common', () => {
describe('isTruthy', () => {
diff --git a/superset/assets/spec/javascripts/visualizations/nvd3_viz_spec.jsx b/superset/assets/spec/javascripts/visualizations/nvd3_viz_spec.jsx
index c8117234ce9e2..c9ed4d87063ed 100644
--- a/superset/assets/spec/javascripts/visualizations/nvd3_viz_spec.jsx
+++ b/superset/assets/spec/javascripts/visualizations/nvd3_viz_spec.jsx
@@ -1,7 +1,7 @@
import { describe, it } from 'mocha';
import { expect } from 'chai';
-import { formatLabel } from '../../../visualizations/nvd3_vis';
+import { formatLabel } from '../../../src/visualizations/nvd3_vis';
describe('nvd3 viz', () => {
const verboseMap = {
diff --git a/superset/assets/spec/javascripts/welcome/App_spec.jsx b/superset/assets/spec/javascripts/welcome/App_spec.jsx
index 1fc2987a57275..46c6fdb90600f 100644
--- a/superset/assets/spec/javascripts/welcome/App_spec.jsx
+++ b/superset/assets/spec/javascripts/welcome/App_spec.jsx
@@ -4,7 +4,7 @@ import { shallow } from 'enzyme';
import { describe, it } from 'mocha';
import { expect } from 'chai';
-import App from '../../../javascripts/welcome/App';
+import App from '../../../src/welcome/App';
describe('App', () => {
const mockedProps = {};
diff --git a/superset/assets/spec/javascripts/welcome/DashboardTable_spec.jsx b/superset/assets/spec/javascripts/welcome/DashboardTable_spec.jsx
index 2a9727942d88b..113f00cd255ce 100644
--- a/superset/assets/spec/javascripts/welcome/DashboardTable_spec.jsx
+++ b/superset/assets/spec/javascripts/welcome/DashboardTable_spec.jsx
@@ -3,7 +3,7 @@ import { mount } from 'enzyme';
import { describe, it } from 'mocha';
import { expect } from 'chai';
-import DashboardTable from '../../../javascripts/welcome/DashboardTable';
+import DashboardTable from '../../../src/welcome/DashboardTable';
const $ = window.$ = require('jquery');
diff --git a/superset/assets/src/chart/Chart.jsx b/superset/assets/src/chart/Chart.jsx
index defe6e4cf3e0d..b69ee3ae3b52b 100644
--- a/superset/assets/src/chart/Chart.jsx
+++ b/superset/assets/src/chart/Chart.jsx
@@ -10,7 +10,7 @@ import Loading from '../components/Loading';
import { Logger, LOG_ACTIONS_RENDER_EVENT } from '../logger';
import StackTraceMessage from '../components/StackTraceMessage';
import RefreshChartOverlay from '../components/RefreshChartOverlay';
-import visMap from '../../visualizations/main';
+import visMap from '../visualizations/main';
import sandboxedEval from '../modules/sandbox';
import './chart.css';
diff --git a/superset/assets/src/explore/components/controls/AnnotationLayer.jsx b/superset/assets/src/explore/components/controls/AnnotationLayer.jsx
index f6c61030539fe..fe52905c88217 100644
--- a/superset/assets/src/explore/components/controls/AnnotationLayer.jsx
+++ b/superset/assets/src/explore/components/controls/AnnotationLayer.jsx
@@ -462,7 +462,7 @@ export default class AnnotationLayer extends React.PureComponent {
{t('For more information about objects are in context in the scope of this function, refer to the')}
diff --git a/superset/assets/src/modules/AnnotationTypes.js b/superset/assets/src/modules/AnnotationTypes.js
index 28684bbcb6884..fc8acb5d3d394 100644
--- a/superset/assets/src/modules/AnnotationTypes.js
+++ b/superset/assets/src/modules/AnnotationTypes.js
@@ -1,4 +1,4 @@
-import { VIZ_TYPES } from '../../visualizations/main';
+import { VIZ_TYPES } from '../visualizations/main';
import vizTypes from '../explore/stores/visTypes';
export const ANNOTATION_TYPES = {
diff --git a/superset/assets/src/visualizations/EventFlow.jsx b/superset/assets/src/visualizations/EventFlow.jsx
index 83811a5f465f4..e4b9685c697e9 100644
--- a/superset/assets/src/visualizations/EventFlow.jsx
+++ b/superset/assets/src/visualizations/EventFlow.jsx
@@ -9,7 +9,7 @@ import {
EVENT_NAME,
ENTITY_ID,
} from '@data-ui/event-flow';
-import { t } from '../javascripts/locales';
+import { t } from '../locales';
/*
* This function takes the slice object and json payload as input and renders a
diff --git a/superset/assets/src/visualizations/PlaySlider.jsx b/superset/assets/src/visualizations/PlaySlider.jsx
index d2e0e41303684..b72dc635ca832 100644
--- a/superset/assets/src/visualizations/PlaySlider.jsx
+++ b/superset/assets/src/visualizations/PlaySlider.jsx
@@ -8,7 +8,7 @@ import 'bootstrap-slider/dist/css/bootstrap-slider.min.css';
import ReactBootstrapSlider from 'react-bootstrap-slider';
import './PlaySlider.css';
-import { t } from '../javascripts/locales';
+import { t } from '../locales';
const propTypes = {
start: PropTypes.number.isRequired,
diff --git a/superset/assets/src/visualizations/big_number.js b/superset/assets/src/visualizations/big_number.js
index f0c3950a25932..a45c1aa262c66 100644
--- a/superset/assets/src/visualizations/big_number.js
+++ b/superset/assets/src/visualizations/big_number.js
@@ -1,9 +1,9 @@
import d3 from 'd3';
import d3tip from 'd3-tip';
-import { d3FormatPreset, d3TimeFormatPreset } from '../javascripts/modules/utils';
+import { d3FormatPreset, d3TimeFormatPreset } from '../modules/utils';
import './big_number.css';
-import '../stylesheets/d3tip.css';
+import '../../stylesheets/d3tip.css';
function bigNumberVis(slice, payload) {
const div = d3.select(slice.selector);
diff --git a/superset/assets/src/visualizations/cal_heatmap.js b/superset/assets/src/visualizations/cal_heatmap.js
index e7c396cc03897..97c6e57132516 100644
--- a/superset/assets/src/visualizations/cal_heatmap.js
+++ b/superset/assets/src/visualizations/cal_heatmap.js
@@ -1,11 +1,11 @@
import d3 from 'd3';
-import { colorScalerFactory } from '../javascripts/modules/colors';
-import CalHeatMap from '../vendor/cal-heatmap/cal-heatmap';
-import '../vendor/cal-heatmap/cal-heatmap.css';
-import { d3TimeFormatPreset, d3FormatPreset } from '../javascripts/modules/utils';
+import { colorScalerFactory } from '../modules/colors';
+import CalHeatMap from '../../vendor/cal-heatmap/cal-heatmap';
+import '../../vendor/cal-heatmap/cal-heatmap.css';
+import { d3TimeFormatPreset, d3FormatPreset } from '../modules/utils';
import './cal_heatmap.css';
-import { UTC } from '../javascripts/modules/dates';
+import { UTC } from '../modules/dates';
const UTCTS = uts => UTC(new Date(uts)).getTime();
diff --git a/superset/assets/src/visualizations/chord.jsx b/superset/assets/src/visualizations/chord.jsx
index dbb551ca36e4d..54b52617af2db 100644
--- a/superset/assets/src/visualizations/chord.jsx
+++ b/superset/assets/src/visualizations/chord.jsx
@@ -1,6 +1,6 @@
/* eslint-disable no-param-reassign */
import d3 from 'd3';
-import { getColorFromScheme } from '../javascripts/modules/colors';
+import { getColorFromScheme } from '../modules/colors';
import './chord.css';
function chordViz(slice, json) {
diff --git a/superset/assets/src/visualizations/country_map.js b/superset/assets/src/visualizations/country_map.js
index b4e84dc61f78d..a5ab3c431d4de 100644
--- a/superset/assets/src/visualizations/country_map.js
+++ b/superset/assets/src/visualizations/country_map.js
@@ -1,6 +1,6 @@
import d3 from 'd3';
import './country_map.css';
-import { colorScalerFactory } from '../javascripts/modules/colors';
+import { colorScalerFactory } from '../modules/colors';
function countryMapChart(slice, payload) {
diff --git a/superset/assets/src/visualizations/deckgl/layers/arc.jsx b/superset/assets/src/visualizations/deckgl/layers/arc.jsx
index 43583e01700fb..d34e7a13f60d3 100644
--- a/superset/assets/src/visualizations/deckgl/layers/arc.jsx
+++ b/superset/assets/src/visualizations/deckgl/layers/arc.jsx
@@ -6,7 +6,7 @@ import { ArcLayer } from 'deck.gl';
import DeckGLContainer from './../DeckGLContainer';
import * as common from './common';
-import sandboxedEval from '../../../javascripts/modules/sandbox';
+import sandboxedEval from '../../../modules/sandbox';
function getPoints(data) {
const points = [];
diff --git a/superset/assets/src/visualizations/deckgl/layers/common.js b/superset/assets/src/visualizations/deckgl/layers/common.js
index 7a2cb9785d900..6fb15dfd38944 100644
--- a/superset/assets/src/visualizations/deckgl/layers/common.js
+++ b/superset/assets/src/visualizations/deckgl/layers/common.js
@@ -1,7 +1,7 @@
import dompurify from 'dompurify';
import { fitBounds } from 'viewport-mercator-project';
-import sandboxedEval from '../../../javascripts/modules/sandbox';
+import sandboxedEval from '../../../modules/sandbox';
export function getBounds(points) {
const latExt = d3.extent(points, d => d[1]);
diff --git a/superset/assets/src/visualizations/deckgl/layers/geojson.jsx b/superset/assets/src/visualizations/deckgl/layers/geojson.jsx
index fe7805a279f9e..74a862a2e27b4 100644
--- a/superset/assets/src/visualizations/deckgl/layers/geojson.jsx
+++ b/superset/assets/src/visualizations/deckgl/layers/geojson.jsx
@@ -5,8 +5,8 @@ import { GeoJsonLayer } from 'deck.gl';
import DeckGLContainer from './../DeckGLContainer';
import * as common from './common';
-import { hexToRGB } from '../../../javascripts/modules/colors';
-import sandboxedEval from '../../../javascripts/modules/sandbox';
+import { hexToRGB } from '../../../modules/colors';
+import sandboxedEval from '../../../modules/sandbox';
const propertyMap = {
fillColor: 'fillColor',
diff --git a/superset/assets/src/visualizations/deckgl/layers/grid.jsx b/superset/assets/src/visualizations/deckgl/layers/grid.jsx
index 6f92f0688cc86..ca3056e2c11e2 100644
--- a/superset/assets/src/visualizations/deckgl/layers/grid.jsx
+++ b/superset/assets/src/visualizations/deckgl/layers/grid.jsx
@@ -6,7 +6,7 @@ import { GridLayer } from 'deck.gl';
import DeckGLContainer from './../DeckGLContainer';
import * as common from './common';
-import sandboxedEval from '../../../javascripts/modules/sandbox';
+import sandboxedEval from '../../../modules/sandbox';
function getLayer(formData, payload, slice) {
const fd = formData;
diff --git a/superset/assets/src/visualizations/deckgl/layers/hex.jsx b/superset/assets/src/visualizations/deckgl/layers/hex.jsx
index f0fb925da53bd..14c9951df42d6 100644
--- a/superset/assets/src/visualizations/deckgl/layers/hex.jsx
+++ b/superset/assets/src/visualizations/deckgl/layers/hex.jsx
@@ -6,7 +6,7 @@ import { HexagonLayer } from 'deck.gl';
import DeckGLContainer from './../DeckGLContainer';
import * as common from './common';
-import sandboxedEval from '../../../javascripts/modules/sandbox';
+import sandboxedEval from '../../../modules/sandbox';
function getLayer(formData, payload, slice) {
const fd = formData;
diff --git a/superset/assets/src/visualizations/deckgl/layers/path.jsx b/superset/assets/src/visualizations/deckgl/layers/path.jsx
index 4b45a0ba13e24..0951edd93c166 100644
--- a/superset/assets/src/visualizations/deckgl/layers/path.jsx
+++ b/superset/assets/src/visualizations/deckgl/layers/path.jsx
@@ -6,7 +6,7 @@ import { PathLayer } from 'deck.gl';
import DeckGLContainer from './../DeckGLContainer';
import * as common from './common';
-import sandboxedEval from '../../../javascripts/modules/sandbox';
+import sandboxedEval from '../../../modules/sandbox';
function getLayer(formData, payload, slice) {
const fd = formData;
diff --git a/superset/assets/src/visualizations/deckgl/layers/polygon.jsx b/superset/assets/src/visualizations/deckgl/layers/polygon.jsx
index 920fb6a89a190..ae8a34c7bc7a2 100644
--- a/superset/assets/src/visualizations/deckgl/layers/polygon.jsx
+++ b/superset/assets/src/visualizations/deckgl/layers/polygon.jsx
@@ -6,7 +6,7 @@ import { PolygonLayer } from 'deck.gl';
import DeckGLContainer from './../DeckGLContainer';
import * as common from './common';
-import sandboxedEval from '../../../javascripts/modules/sandbox';
+import sandboxedEval from '../../../modules/sandbox';
function getLayer(formData, payload, slice) {
const fd = formData;
diff --git a/superset/assets/src/visualizations/deckgl/layers/scatter.jsx b/superset/assets/src/visualizations/deckgl/layers/scatter.jsx
index 112f270fb059b..a137423bd19a9 100644
--- a/superset/assets/src/visualizations/deckgl/layers/scatter.jsx
+++ b/superset/assets/src/visualizations/deckgl/layers/scatter.jsx
@@ -10,10 +10,10 @@ import AnimatableDeckGLContainer from '../AnimatableDeckGLContainer';
import Legend from '../../Legend';
import * as common from './common';
-import { getColorFromScheme, hexToRGB } from '../../../javascripts/modules/colors';
-import { getPlaySliderParams } from '../../../javascripts/modules/time';
-import { unitToRadius } from '../../../javascripts/modules/geo';
-import sandboxedEval from '../../../javascripts/modules/sandbox';
+import { getColorFromScheme, hexToRGB } from '../../../modules/colors';
+import { getPlaySliderParams } from '../../../modules/time';
+import { unitToRadius } from '../../../modules/geo';
+import sandboxedEval from '../../../modules/sandbox';
function getPoints(data) {
diff --git a/superset/assets/src/visualizations/deckgl/layers/screengrid.jsx b/superset/assets/src/visualizations/deckgl/layers/screengrid.jsx
index df11b5c5ee7ec..974b7c4a7c701 100644
--- a/superset/assets/src/visualizations/deckgl/layers/screengrid.jsx
+++ b/superset/assets/src/visualizations/deckgl/layers/screengrid.jsx
@@ -9,8 +9,8 @@ import { ScreenGridLayer } from 'deck.gl';
import AnimatableDeckGLContainer from '../AnimatableDeckGLContainer';
import * as common from './common';
-import { getPlaySliderParams } from '../../../javascripts/modules/time';
-import sandboxedEval from '../../../javascripts/modules/sandbox';
+import { getPlaySliderParams } from '../../../modules/time';
+import sandboxedEval from '../../../modules/sandbox';
function getPoints(data) {
return data.map(d => d.position);
diff --git a/superset/assets/src/visualizations/deckgl/multi.jsx b/superset/assets/src/visualizations/deckgl/multi.jsx
index 4006b474cfedb..9bd80750a91d4 100644
--- a/superset/assets/src/visualizations/deckgl/multi.jsx
+++ b/superset/assets/src/visualizations/deckgl/multi.jsx
@@ -3,7 +3,7 @@ import ReactDOM from 'react-dom';
import $ from 'jquery';
import DeckGLContainer from './DeckGLContainer';
-import { getExploreLongUrl } from '../../javascripts/explore/exploreUtils';
+import { getExploreLongUrl } from '../../explore/exploreUtils';
import layerGenerators from './layers';
diff --git a/superset/assets/src/visualizations/filter_box.jsx b/superset/assets/src/visualizations/filter_box.jsx
index f157f509837e2..bf376571e5b68 100644
--- a/superset/assets/src/visualizations/filter_box.jsx
+++ b/superset/assets/src/visualizations/filter_box.jsx
@@ -7,14 +7,14 @@ import VirtualizedSelect from 'react-virtualized-select';
import { Creatable } from 'react-select';
import { Button } from 'react-bootstrap';
-import DateFilterControl from '../javascripts/explore/components/controls/DateFilterControl';
-import ControlRow from '../javascripts/explore/components/ControlRow';
-import Control from '../javascripts/explore/components/Control';
-import controls from '../javascripts/explore/stores/controls';
-import OnPasteSelect from '../javascripts/components/OnPasteSelect';
-import VirtualizedRendererWrap from '../javascripts/components/VirtualizedRendererWrap';
+import DateFilterControl from '../explore/components/controls/DateFilterControl';
+import ControlRow from '../explore/components/ControlRow';
+import Control from '../explore/components/Control';
+import controls from '../explore/stores/controls';
+import OnPasteSelect from '../components/OnPasteSelect';
+import VirtualizedRendererWrap from '../components/VirtualizedRendererWrap';
import './filter_box.css';
-import { t } from '../javascripts/locales';
+import { t } from '../locales';
// maps control names to their key in extra_filters
const timeFilterMap = {
diff --git a/superset/assets/src/visualizations/heatmap.js b/superset/assets/src/visualizations/heatmap.js
index d86253d63f83a..a8d3ccf694b27 100644
--- a/superset/assets/src/visualizations/heatmap.js
+++ b/superset/assets/src/visualizations/heatmap.js
@@ -3,8 +3,8 @@ import d3 from 'd3';
import d3legend from 'd3-svg-legend';
import d3tip from 'd3-tip';
-import { colorScalerFactory } from '../javascripts/modules/colors';
-import '../stylesheets/d3tip.css';
+import { colorScalerFactory } from '../modules/colors';
+import '../../stylesheets/d3tip.css';
import './heatmap.css';
function cmp(a, b) {
diff --git a/superset/assets/src/visualizations/histogram.js b/superset/assets/src/visualizations/histogram.js
index 8ab9c1188f91d..f510f1c90f152 100644
--- a/superset/assets/src/visualizations/histogram.js
+++ b/superset/assets/src/visualizations/histogram.js
@@ -1,6 +1,6 @@
import d3 from 'd3';
import nv from 'nvd3';
-import { getColorFromScheme } from '../javascripts/modules/colors';
+import { getColorFromScheme } from '../modules/colors';
require('./histogram.css');
diff --git a/superset/assets/src/visualizations/mapbox.jsx b/superset/assets/src/visualizations/mapbox.jsx
index 0c01d6b19eadf..1a156ae520e9d 100644
--- a/superset/assets/src/visualizations/mapbox.jsx
+++ b/superset/assets/src/visualizations/mapbox.jsx
@@ -17,7 +17,7 @@ import {
DEFAULT_LONGITUDE,
DEFAULT_LATITUDE,
DEFAULT_ZOOM,
-} from '../javascripts/utils/common';
+} from '../utils/common';
import './mapbox.css';
const NOOP = () => {};
@@ -58,7 +58,7 @@ class ScatterPlotGlowOverlay extends React.Component {
ctx.shadowColor = '';
}
- // Modified: https://github.com/uber/react-map-gl/blob/master/src/overlays/scatterplot.react.js
+ // Modified: https://github.com/uber/react-map-gl/blob/master/overlays/scatterplot.react.js
redraw() {
const props = this.props;
const pixelRatio = window.devicePixelRatio || 1;
diff --git a/superset/assets/src/visualizations/nvd3_vis.js b/superset/assets/src/visualizations/nvd3_vis.js
index 284c4e05759d9..bf87287c78e9c 100644
--- a/superset/assets/src/visualizations/nvd3_vis.js
+++ b/superset/assets/src/visualizations/nvd3_vis.js
@@ -3,20 +3,20 @@ import $ from 'jquery';
import throttle from 'lodash.throttle';
import d3 from 'd3';
import nv from 'nvd3';
+import 'nvd3/build/nv.d3.min.css';
import mathjs from 'mathjs';
import moment from 'moment';
import d3tip from 'd3-tip';
-import { getColorFromScheme } from '../javascripts/modules/colors';
+import { getColorFromScheme } from '../modules/colors';
import AnnotationTypes, {
applyNativeColumns,
-} from '../javascripts/modules/AnnotationTypes';
-import { customizeToolTip, d3TimeFormatPreset, d3FormatPreset, tryNumify } from '../javascripts/modules/utils';
-import { isTruthy } from '../javascripts/utils/common';
-import { t } from '../javascripts/locales';
+} from '../modules/AnnotationTypes';
+import { customizeToolTip, d3TimeFormatPreset, d3FormatPreset, tryNumify } from '../modules/utils';
+import { isTruthy } from '../utils/common';
+import { t } from '../locales';
// CSS
-import '../node_modules/nvd3/build/nv.d3.min.css';
import './nvd3_vis.css';
import { VIZ_TYPES } from './main';
diff --git a/superset/assets/src/visualizations/parallel_coordinates.js b/superset/assets/src/visualizations/parallel_coordinates.js
index facbe00276687..f60904994d97f 100644
--- a/superset/assets/src/visualizations/parallel_coordinates.js
+++ b/superset/assets/src/visualizations/parallel_coordinates.js
@@ -1,9 +1,9 @@
import d3 from 'd3';
-import '../vendor/parallel_coordinates/d3.parcoords.css';
+import '../../vendor/parallel_coordinates/d3.parcoords.css';
import './parallel_coordinates.css';
-d3.parcoords = require('../vendor/parallel_coordinates/d3.parcoords.js');
-d3.divgrid = require('../vendor/parallel_coordinates/divgrid.js');
+d3.parcoords = require('../../vendor/parallel_coordinates/d3.parcoords.js');
+d3.divgrid = require('../../vendor/parallel_coordinates/divgrid.js');
const $ = require('jquery');
diff --git a/superset/assets/src/visualizations/partition.js b/superset/assets/src/visualizations/partition.js
index a91611ce007bf..23e4474e62606 100644
--- a/superset/assets/src/visualizations/partition.js
+++ b/superset/assets/src/visualizations/partition.js
@@ -3,8 +3,8 @@
import d3 from 'd3';
import {
d3TimeFormatPreset,
-} from '../javascripts/modules/utils';
-import { getColorFromScheme } from '../javascripts/modules/colors';
+} from '../modules/utils';
+import { getColorFromScheme } from '../modules/colors';
import './partition.css';
diff --git a/superset/assets/src/visualizations/pivot_table.js b/superset/assets/src/visualizations/pivot_table.js
index 7dbfcb15e9a6e..fded4616b350a 100644
--- a/superset/assets/src/visualizations/pivot_table.js
+++ b/superset/assets/src/visualizations/pivot_table.js
@@ -2,7 +2,7 @@ import dt from 'datatables.net-bs';
import 'datatables.net-bs/css/dataTables.bootstrap.css';
import $ from 'jquery';
-import { d3format, fixDataTableBodyHeight } from '../javascripts/modules/utils';
+import { d3format, fixDataTableBodyHeight } from '../modules/utils';
import './pivot_table.css';
dt(window, $);
diff --git a/superset/assets/src/visualizations/rose.js b/superset/assets/src/visualizations/rose.js
index e385f1a7ebf5b..a0a545aae028f 100644
--- a/superset/assets/src/visualizations/rose.js
+++ b/superset/assets/src/visualizations/rose.js
@@ -1,8 +1,8 @@
/* eslint no-use-before-define: ["error", { "functions": false }] */
import d3 from 'd3';
import nv from 'nvd3';
-import { d3TimeFormatPreset } from '../javascripts/modules/utils';
-import { getColorFromScheme } from '../javascripts/modules/colors';
+import { d3TimeFormatPreset } from '../modules/utils';
+import { getColorFromScheme } from '../modules/colors';
import './rose.css';
diff --git a/superset/assets/src/visualizations/sankey.js b/superset/assets/src/visualizations/sankey.js
index 2dcba6af34117..bb08fb3caab16 100644
--- a/superset/assets/src/visualizations/sankey.js
+++ b/superset/assets/src/visualizations/sankey.js
@@ -1,6 +1,6 @@
/* eslint-disable no-param-reassign */
import d3 from 'd3';
-import { getColorFromScheme } from '../javascripts/modules/colors';
+import { getColorFromScheme } from '../modules/colors';
import './sankey.css';
d3.sankey = require('d3-sankey').sankey;
diff --git a/superset/assets/src/visualizations/sunburst.js b/superset/assets/src/visualizations/sunburst.js
index 199d182a33813..0c04622c6083a 100644
--- a/superset/assets/src/visualizations/sunburst.js
+++ b/superset/assets/src/visualizations/sunburst.js
@@ -1,7 +1,7 @@
/* eslint-disable no-underscore-dangle, no-param-reassign */
import d3 from 'd3';
-import { getColorFromScheme } from '../javascripts/modules/colors';
-import { wrapSvgText } from '../javascripts/modules/utils';
+import { getColorFromScheme } from '../modules/colors';
+import { wrapSvgText } from '../modules/utils';
require('./sunburst.css');
diff --git a/superset/assets/src/visualizations/table.js b/superset/assets/src/visualizations/table.js
index d00ba2af80899..c340f6919a1a0 100644
--- a/superset/assets/src/visualizations/table.js
+++ b/superset/assets/src/visualizations/table.js
@@ -2,7 +2,7 @@ import d3 from 'd3';
import dt from 'datatables.net-bs';
import 'datatables.net-bs/css/dataTables.bootstrap.css';
-import { fixDataTableBodyHeight, d3TimeFormatPreset } from '../javascripts/modules/utils';
+import { fixDataTableBodyHeight, d3TimeFormatPreset } from '../modules/utils';
import './table.css';
const $ = require('jquery');
diff --git a/superset/assets/src/visualizations/time_table.jsx b/superset/assets/src/visualizations/time_table.jsx
index 8111cbbf4ee12..bcf2f0dca03cb 100644
--- a/superset/assets/src/visualizations/time_table.jsx
+++ b/superset/assets/src/visualizations/time_table.jsx
@@ -6,10 +6,10 @@ import d3 from 'd3';
import Mustache from 'mustache';
import { Sparkline, LineSeries, PointSeries, VerticalReferenceLine, WithTooltip } from '@data-ui/sparkline';
-import MetricOption from '../javascripts/components/MetricOption';
-import { d3format } from '../javascripts/modules/utils';
-import { formatDateThunk } from '../javascripts/modules/dates';
-import InfoTooltipWithTrigger from '../javascripts/components/InfoTooltipWithTrigger';
+import MetricOption from '../components/MetricOption';
+import { d3format } from '../modules/utils';
+import { formatDateThunk } from '../modules/dates';
+import InfoTooltipWithTrigger from '../components/InfoTooltipWithTrigger';
import './time_table.css';
const SPARKLINE_MARGIN = {
diff --git a/superset/assets/src/visualizations/treemap.js b/superset/assets/src/visualizations/treemap.js
index 072582a97730c..b464d05e4c0fd 100644
--- a/superset/assets/src/visualizations/treemap.js
+++ b/superset/assets/src/visualizations/treemap.js
@@ -1,6 +1,6 @@
/* eslint-disable no-shadow, no-param-reassign, no-underscore-dangle, no-use-before-define */
import d3 from 'd3';
-import { getColorFromScheme } from '../javascripts/modules/colors';
+import { getColorFromScheme } from '../modules/colors';
require('./treemap.css');
diff --git a/superset/assets/src/visualizations/word_cloud.js b/superset/assets/src/visualizations/word_cloud.js
index 5ee0e0b3954d3..f09c16ecd3898 100644
--- a/superset/assets/src/visualizations/word_cloud.js
+++ b/superset/assets/src/visualizations/word_cloud.js
@@ -1,7 +1,7 @@
/* eslint-disable no-use-before-define */
import d3 from 'd3';
import cloudLayout from 'd3-cloud';
-import { getColorFromScheme } from '../javascripts/modules/colors';
+import { getColorFromScheme } from '../modules/colors';
function wordCloudChart(slice, payload) {
const chart = d3.select(slice.selector);
diff --git a/superset/assets/webpack.config.js b/superset/assets/webpack.config.js
index 1dce5245f174a..6fd88d7185c7a 100644
--- a/superset/assets/webpack.config.js
+++ b/superset/assets/webpack.config.js
@@ -15,14 +15,14 @@ const config = {
fs: 'empty',
},
entry: {
- theme: APP_DIR + '/javascripts/theme.js',
- common: APP_DIR + '/javascripts/common.js',
- addSlice: ['babel-polyfill', APP_DIR + '/javascripts/addSlice/index.jsx'],
- explore: ['babel-polyfill', APP_DIR + '/javascripts/explore/index.jsx'],
- dashboard: ['babel-polyfill', APP_DIR + '/javascripts/dashboard/index.jsx'],
- sqllab: ['babel-polyfill', APP_DIR + '/javascripts/SqlLab/index.jsx'],
- welcome: ['babel-polyfill', APP_DIR + '/javascripts/welcome/index.jsx'],
- profile: ['babel-polyfill', APP_DIR + '/javascripts/profile/index.jsx'],
+ theme: APP_DIR + '/src/theme.js',
+ common: APP_DIR + '/src/common.js',
+ addSlice: ['babel-polyfill', APP_DIR + '/src/addSlice/index.jsx'],
+ explore: ['babel-polyfill', APP_DIR + '/src/explore/index.jsx'],
+ dashboard: ['babel-polyfill', APP_DIR + '/src/dashboard/index.jsx'],
+ sqllab: ['babel-polyfill', APP_DIR + '/src/SqlLab/index.jsx'],
+ welcome: ['babel-polyfill', APP_DIR + '/src/welcome/index.jsx'],
+ profile: ['babel-polyfill', APP_DIR + '/src/profile/index.jsx'],
},
output: {
path: BUILD_DIR,