This is an automated email from the ASF dual-hosted git repository. lyndsi pushed a commit to branch lyndsi/move-dataset-files in repository https://gitbox.apache.org/repos/asf/superset.git
commit e1a9cfe827667ca65565725a58e691a5594a5945 Author: lyndsiWilliams <[email protected]> AuthorDate: Tue Feb 7 17:47:50 2023 -0600 Move all dataset files/folders to the new structure --- .../Datasource/ChangeDatasourceModal.tsx | 2 +- .../datasets}/DatasetLayout/DatasetLayout.test.tsx | 16 +++---- .../datasets}/DatasetLayout/index.tsx | 2 +- .../datasets}/Footer/Footer.test.tsx | 2 +- .../datasets}/Footer/index.tsx | 10 ++-- .../datasets}/Header/Header.test.tsx | 4 +- .../datasets}/Header/index.tsx | 4 +- .../datasets}/LeftPanel/LeftPanel.test.tsx | 4 +- .../datasets}/LeftPanel/index.tsx | 7 +-- .../datasets}/RightPanel/RightPanel.test.tsx | 2 +- .../datasets}/RightPanel/index.tsx | 0 .../dataset => pages/Dataset}/DatasetList.test.jsx | 2 +- .../data/dataset => pages/Dataset}/DatasetList.tsx | 2 +- .../Dataset/DatasetPage.test.tsx} | 8 ++-- .../index.tsx => pages/Dataset/DatasetPage.tsx} | 43 ++++++++++------- .../Dataset}/DuplicateDatasetModal.tsx | 0 .../data/dataset => pages/Dataset}/constants.ts | 0 .../CRUD/data/dataset => pages/Dataset}/styles.ts | 0 .../CRUD/data/dataset => pages/Dataset}/types.ts | 39 +++++++++++++++ .../DatasetCreationPanel.stories.tsx} | 12 ++--- .../DatasetCreationPanel.test.tsx} | 22 +++++---- .../DatasetCreationPanel/DatasetCreationPanel.tsx} | 16 +++---- .../DatasetCreationPanel}/MessageContent.tsx | 0 .../DatasetCreationPanel}/fixtures.ts | 4 +- .../DatasetCreationPanel}/index.tsx | 16 +++---- .../DatasetCreationPanel}/types.ts | 0 .../DatasetEditPanel/DatasetEditPanel.test.tsx} | 6 +-- .../DatasetEditPanel}/UsageTab/UsageTab.test.tsx | 0 .../DatasetEditPanel}/UsageTab/index.tsx | 0 .../DatasetEditPanel}/index.tsx | 6 +-- .../views/CRUD/data/dataset/AddDataset/types.tsx | 56 ---------------------- superset-frontend/src/views/CRUD/data/hooks.ts | 6 +-- superset-frontend/src/views/routes.tsx | 10 ++-- 33 files changed, 144 insertions(+), 157 deletions(-) diff --git a/superset-frontend/src/components/Datasource/ChangeDatasourceModal.tsx b/superset-frontend/src/components/Datasource/ChangeDatasourceModal.tsx index 5ec5926808..fa72dbc525 100644 --- a/superset-frontend/src/components/Datasource/ChangeDatasourceModal.tsx +++ b/superset-frontend/src/components/Datasource/ChangeDatasourceModal.tsx @@ -40,7 +40,7 @@ import { Input } from 'src/components/Input'; import { PAGE_SIZE as DATASET_PAGE_SIZE, SORT_BY as DATASET_SORT_BY, -} from 'src/views/CRUD/data/dataset/constants'; +} from 'src/pages/Dataset/constants'; import withToasts from 'src/components/MessageToasts/withToasts'; import FacePile from '../FacePile'; diff --git a/superset-frontend/src/views/CRUD/data/dataset/DatasetLayout/DatasetLayout.test.tsx b/superset-frontend/src/features/datasets/DatasetLayout/DatasetLayout.test.tsx similarity index 82% rename from superset-frontend/src/views/CRUD/data/dataset/DatasetLayout/DatasetLayout.test.tsx rename to superset-frontend/src/features/datasets/DatasetLayout/DatasetLayout.test.tsx index a1939761aa..6c496bf848 100644 --- a/superset-frontend/src/views/CRUD/data/dataset/DatasetLayout/DatasetLayout.test.tsx +++ b/superset-frontend/src/features/datasets/DatasetLayout/DatasetLayout.test.tsx @@ -18,12 +18,12 @@ */ import React from 'react'; import { render, screen, waitFor } from 'spec/helpers/testing-library'; -import DatasetLayout from 'src/views/CRUD/data/dataset/DatasetLayout'; -import Header from 'src/views/CRUD/data/dataset/AddDataset/Header'; -import LeftPanel from 'src/views/CRUD/data/dataset/AddDataset/LeftPanel'; -import DatasetPanel from 'src/views/CRUD/data/dataset/AddDataset/DatasetPanel'; -import RightPanel from 'src/views/CRUD/data/dataset/AddDataset/RightPanel'; -import Footer from 'src/views/CRUD/data/dataset/AddDataset/Footer'; +import DatasetLayout from 'src/features/datasets/DatasetLayout'; +import Header from 'src/features/datasets/Header'; +import LeftPanel from 'src/features/datasets/LeftPanel'; +import DatasetCreationPanel from 'src/pages/DatasetCreationPanel'; +import RightPanel from 'src/features/datasets/RightPanel'; +import Footer from 'src/features/datasets/Footer'; const mockHistoryPush = jest.fn(); jest.mock('react-router-dom', () => ({ @@ -64,8 +64,8 @@ describe('DatasetLayout', () => { expect(LeftPanel).toBeTruthy(); }); - it('renders a DatasetPanel when passed in', () => { - render(<DatasetLayout datasetPanel={<DatasetPanel />} />); + it('renders a DatasetCreationPanel when passed in', () => { + render(<DatasetLayout datasetPanel={<DatasetCreationPanel />} />); const blankDatasetImg = screen.getByRole('img', { name: /empty/i }); const blankDatasetTitle = screen.getByText(/select dataset source/i); diff --git a/superset-frontend/src/views/CRUD/data/dataset/DatasetLayout/index.tsx b/superset-frontend/src/features/datasets/DatasetLayout/index.tsx similarity index 98% rename from superset-frontend/src/views/CRUD/data/dataset/DatasetLayout/index.tsx rename to superset-frontend/src/features/datasets/DatasetLayout/index.tsx index 7702efcb59..11b5fc8eb4 100644 --- a/superset-frontend/src/views/CRUD/data/dataset/DatasetLayout/index.tsx +++ b/superset-frontend/src/features/datasets/DatasetLayout/index.tsx @@ -29,7 +29,7 @@ import { StyledLayoutDatasetPanel, StyledLayoutRightPanel, StyledLayoutFooter, -} from 'src/views/CRUD/data/dataset/styles'; +} from 'src/pages/Dataset/styles'; interface DatasetLayoutProps { header?: ReactElement<any, string | JSXElementConstructor<any>> | null; diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/Footer/Footer.test.tsx b/superset-frontend/src/features/datasets/Footer/Footer.test.tsx similarity index 97% rename from superset-frontend/src/views/CRUD/data/dataset/AddDataset/Footer/Footer.test.tsx rename to superset-frontend/src/features/datasets/Footer/Footer.test.tsx index a1818cdf22..c2c8cdab68 100644 --- a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/Footer/Footer.test.tsx +++ b/superset-frontend/src/features/datasets/Footer/Footer.test.tsx @@ -18,7 +18,7 @@ */ import React from 'react'; import { render, screen } from 'spec/helpers/testing-library'; -import Footer from 'src/views/CRUD/data/dataset/AddDataset/Footer'; +import Footer from 'src/features/datasets/Footer'; const mockHistoryPush = jest.fn(); jest.mock('react-router-dom', () => ({ diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/Footer/index.tsx b/superset-frontend/src/features/datasets/Footer/index.tsx similarity index 92% rename from superset-frontend/src/views/CRUD/data/dataset/AddDataset/Footer/index.tsx rename to superset-frontend/src/features/datasets/Footer/index.tsx index e0853cdc9d..a1c34e2a87 100644 --- a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/Footer/index.tsx +++ b/superset-frontend/src/features/datasets/Footer/index.tsx @@ -30,13 +30,13 @@ import { LOG_ACTIONS_DATASET_CREATION_TABLE_CANCELLATION, LOG_ACTIONS_DATASET_CREATION_SUCCESS, } from 'src/logger/LogUtils'; -import { DatasetObject } from '../types'; +import { NewDatasetObject } from 'src/pages/Dataset/types'; interface FooterProps { url: string; addDangerToast: () => void; - datasetObject?: Partial<DatasetObject> | null; - onDatasetAdd?: (dataset: DatasetObject) => void; + datasetObject?: Partial<NewDatasetObject> | null; + onDatasetAdd?: (dataset: NewDatasetObject) => void; hasColumns?: boolean; datasets?: (string | null | undefined)[] | undefined; } @@ -56,13 +56,13 @@ function Footer({ datasets, }: FooterProps) { const history = useHistory(); - const { createResource } = useSingleViewResource<Partial<DatasetObject>>( + const { createResource } = useSingleViewResource<Partial<NewDatasetObject>>( 'dataset', t('dataset'), addDangerToast, ); - const createLogAction = (dataset: Partial<DatasetObject>) => { + const createLogAction = (dataset: Partial<NewDatasetObject>) => { let totalCount = 0; const value = Object.keys(dataset).reduce((total, key) => { if (INPUT_FIELDS.includes(key) && dataset[key]) { diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/Header/Header.test.tsx b/superset-frontend/src/features/datasets/Header/Header.test.tsx similarity index 95% rename from superset-frontend/src/views/CRUD/data/dataset/AddDataset/Header/Header.test.tsx rename to superset-frontend/src/features/datasets/Header/Header.test.tsx index 5391812086..643ad313e9 100644 --- a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/Header/Header.test.tsx +++ b/superset-frontend/src/features/datasets/Header/Header.test.tsx @@ -18,9 +18,7 @@ */ import React from 'react'; import { render, screen, waitFor } from 'spec/helpers/testing-library'; -import Header, { - DEFAULT_TITLE, -} from 'src/views/CRUD/data/dataset/AddDataset/Header'; +import Header, { DEFAULT_TITLE } from 'src/features/datasets/Header'; describe('Header', () => { const mockSetDataset = jest.fn(); diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/Header/index.tsx b/superset-frontend/src/features/datasets/Header/index.tsx similarity index 96% rename from superset-frontend/src/views/CRUD/data/dataset/AddDataset/Header/index.tsx rename to superset-frontend/src/features/datasets/Header/index.tsx index 044221c3fe..aafda3f291 100644 --- a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/Header/index.tsx +++ b/superset-frontend/src/features/datasets/Header/index.tsx @@ -27,11 +27,11 @@ import { HeaderComponentStyles, disabledSaveBtnStyles, StyledCreateDatasetTitle, -} from 'src/views/CRUD/data/dataset/styles'; +} from 'src/pages/Dataset/styles'; import { DatasetActionType, DSReducerActionType, -} from 'src/views/CRUD/data/dataset/AddDataset/types'; +} from 'src/pages/Dataset/types'; export const DEFAULT_TITLE = t('New dataset'); diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/LeftPanel/LeftPanel.test.tsx b/superset-frontend/src/features/datasets/LeftPanel/LeftPanel.test.tsx similarity index 98% rename from superset-frontend/src/views/CRUD/data/dataset/AddDataset/LeftPanel/LeftPanel.test.tsx rename to superset-frontend/src/features/datasets/LeftPanel/LeftPanel.test.tsx index 3996dc0fec..4f25077266 100644 --- a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/LeftPanel/LeftPanel.test.tsx +++ b/superset-frontend/src/features/datasets/LeftPanel/LeftPanel.test.tsx @@ -20,8 +20,8 @@ import React from 'react'; import fetchMock from 'fetch-mock'; import userEvent from '@testing-library/user-event'; import { render, screen, waitFor } from 'spec/helpers/testing-library'; -import LeftPanel from 'src/views/CRUD/data/dataset/AddDataset/LeftPanel'; -import { exampleDataset } from 'src/views/CRUD/data/dataset/AddDataset/DatasetPanel/fixtures'; +import LeftPanel from 'src/features/datasets/LeftPanel'; +import { exampleDataset } from 'src/pages/DatasetCreationPanel/fixtures'; const databasesEndpoint = 'glob:*/api/v1/database/?q*'; const schemasEndpoint = 'glob:*/api/v1/database/*/schemas*'; diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/LeftPanel/index.tsx b/superset-frontend/src/features/datasets/LeftPanel/index.tsx similarity index 98% rename from superset-frontend/src/views/CRUD/data/dataset/AddDataset/LeftPanel/index.tsx rename to superset-frontend/src/features/datasets/LeftPanel/index.tsx index 1d1d3847a2..ca83775080 100644 --- a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/LeftPanel/index.tsx +++ b/superset-frontend/src/features/datasets/LeftPanel/index.tsx @@ -48,14 +48,11 @@ import { } from 'src/components/EmptyState'; import { useToasts } from 'src/components/MessageToasts/withToasts'; import { LocalStorageKeys, getItem } from 'src/utils/localStorageHelpers'; -import { - DatasetActionType, - DatasetObject, -} from 'src/views/CRUD/data/dataset/AddDataset/types'; +import { DatasetActionType, NewDatasetObject } from 'src/pages/Dataset/types'; interface LeftPanelProps { setDataset: Dispatch<SetStateAction<object>>; - dataset?: Partial<DatasetObject> | null; + dataset?: Partial<NewDatasetObject> | null; datasetNames?: (string | null | undefined)[] | undefined; } diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/RightPanel/RightPanel.test.tsx b/superset-frontend/src/features/datasets/RightPanel/RightPanel.test.tsx similarity index 93% rename from superset-frontend/src/views/CRUD/data/dataset/AddDataset/RightPanel/RightPanel.test.tsx rename to superset-frontend/src/features/datasets/RightPanel/RightPanel.test.tsx index 987d96abfa..25092924fa 100644 --- a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/RightPanel/RightPanel.test.tsx +++ b/superset-frontend/src/features/datasets/RightPanel/RightPanel.test.tsx @@ -18,7 +18,7 @@ */ import React from 'react'; import { render, screen } from 'spec/helpers/testing-library'; -import RightPanel from 'src/views/CRUD/data/dataset/AddDataset/RightPanel'; +import RightPanel from 'src/features/datasets/RightPanel'; describe('RightPanel', () => { it('renders a blank state RightPanel', () => { diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/RightPanel/index.tsx b/superset-frontend/src/features/datasets/RightPanel/index.tsx similarity index 100% rename from superset-frontend/src/views/CRUD/data/dataset/AddDataset/RightPanel/index.tsx rename to superset-frontend/src/features/datasets/RightPanel/index.tsx diff --git a/superset-frontend/src/views/CRUD/data/dataset/DatasetList.test.jsx b/superset-frontend/src/pages/Dataset/DatasetList.test.jsx similarity index 99% rename from superset-frontend/src/views/CRUD/data/dataset/DatasetList.test.jsx rename to superset-frontend/src/pages/Dataset/DatasetList.test.jsx index f44e3c2fbf..9fd59af8d2 100644 --- a/superset-frontend/src/views/CRUD/data/dataset/DatasetList.test.jsx +++ b/superset-frontend/src/pages/Dataset/DatasetList.test.jsx @@ -27,7 +27,7 @@ import userEvent from '@testing-library/user-event'; import { QueryParamProvider } from 'use-query-params'; import * as featureFlags from 'src/featureFlags'; -import DatasetList from 'src/views/CRUD/data/dataset/DatasetList'; +import DatasetList from 'src/pages/Dataset/DatasetList'; import ListView from 'src/components/ListView'; import Button from 'src/components/Button'; import IndeterminateCheckbox from 'src/components/IndeterminateCheckbox'; diff --git a/superset-frontend/src/views/CRUD/data/dataset/DatasetList.tsx b/superset-frontend/src/pages/Dataset/DatasetList.tsx similarity index 99% rename from superset-frontend/src/views/CRUD/data/dataset/DatasetList.tsx rename to superset-frontend/src/pages/Dataset/DatasetList.tsx index 594973389a..d0141f5d4a 100644 --- a/superset-frontend/src/views/CRUD/data/dataset/DatasetList.tsx +++ b/superset-frontend/src/pages/Dataset/DatasetList.tsx @@ -30,7 +30,7 @@ import { createFetchDistinct, createErrorHandler, } from 'src/views/CRUD/utils'; -import { ColumnObject } from 'src/views/CRUD/data/dataset/types'; +import { ColumnObject } from 'src/pages/Dataset/types'; import { useListViewResource } from 'src/views/CRUD/hooks'; import ConfirmStatusChange from 'src/components/ConfirmStatusChange'; import { DatasourceModal } from 'src/components/Datasource'; diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/AddDataset.test.tsx b/superset-frontend/src/pages/Dataset/DatasetPage.test.tsx similarity index 88% rename from superset-frontend/src/views/CRUD/data/dataset/AddDataset/AddDataset.test.tsx rename to superset-frontend/src/pages/Dataset/DatasetPage.test.tsx index ea595c0f90..a2fe96df04 100644 --- a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/AddDataset.test.tsx +++ b/superset-frontend/src/pages/Dataset/DatasetPage.test.tsx @@ -18,7 +18,7 @@ */ import React from 'react'; import { render, screen } from 'spec/helpers/testing-library'; -import AddDataset from 'src/views/CRUD/data/dataset/AddDataset'; +import DatasetPage from 'src/pages/Dataset/DatasetPage'; const mockHistoryPush = jest.fn(); jest.mock('react-router-dom', () => ({ @@ -29,9 +29,9 @@ jest.mock('react-router-dom', () => ({ useParams: () => ({ datasetId: undefined }), })); -describe('AddDataset', () => { - it('renders a blank state AddDataset', async () => { - render(<AddDataset />, { useRedux: true }); +describe('DatasetPage', () => { + it('renders a blank state DatasetPage', async () => { + render(<DatasetPage />, { useRedux: true }); const blankeStateImgs = screen.getAllByRole('img', { name: /empty/i }); diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/index.tsx b/superset-frontend/src/pages/Dataset/DatasetPage.tsx similarity index 73% rename from superset-frontend/src/views/CRUD/data/dataset/AddDataset/index.tsx rename to superset-frontend/src/pages/Dataset/DatasetPage.tsx index 67b108ab36..2b4d6d6d39 100644 --- a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/index.tsx +++ b/superset-frontend/src/pages/Dataset/DatasetPage.tsx @@ -19,22 +19,26 @@ import React, { useReducer, Reducer, useEffect, useState } from 'react'; import { useParams } from 'react-router-dom'; import { useDatasetsList } from 'src/views/CRUD/data/hooks'; -import Header from './Header'; -import EditPage from './EditDataset'; -import DatasetPanel from './DatasetPanel'; -import LeftPanel from './LeftPanel'; -import Footer from './Footer'; -import { DatasetActionType, DatasetObject, DSReducerActionType } from './types'; -import DatasetLayout from '../DatasetLayout'; +import Header from 'src/features/datasets/Header'; +import DatasetEditPanel from 'src/pages/DatasetEditPanel'; +import DatasetCreationPanel from 'src/pages/DatasetCreationPanel'; +import LeftPanel from 'src/features/datasets/LeftPanel'; +import Footer from 'src/features/datasets/Footer'; +import { + DatasetActionType, + NewDatasetObject, + DSReducerActionType, +} from 'src/pages/Dataset/types'; +import DatasetLayout from 'src/features/datasets/DatasetLayout'; type Schema = { schema: string; }; export function datasetReducer( - state: DatasetObject | null, + state: NewDatasetObject | null, action: DSReducerActionType, -): Partial<DatasetObject> | Schema | null { +): Partial<NewDatasetObject> | Schema | null { const trimmedState = { ...(state || {}), }; @@ -71,12 +75,13 @@ export function datasetReducer( const prevUrl = '/tablemodelview/list/?pageIndex=0&sortColumn=changed_on_delta_humanized&sortOrder=desc'; -export default function AddDataset() { +export default function DatasetPage() { const [dataset, setDataset] = useReducer< - Reducer<Partial<DatasetObject> | null, DSReducerActionType> + Reducer<Partial<NewDatasetObject> | null, DSReducerActionType> >(datasetReducer, null); const [hasColumns, setHasColumns] = useState(false); - const [editPageIsVisible, setEditPageIsVisible] = useState(false); + const [datasetEditPanelIsVisible, setDatasetEditPanelIsVisible] = + useState(false); const { datasets, datasetNames } = useDatasetsList( dataset?.db, @@ -86,7 +91,7 @@ export default function AddDataset() { const { datasetId: id } = useParams<{ datasetId: string }>(); useEffect(() => { if (!Number.isNaN(parseInt(id, 10))) { - setEditPageIsVisible(true); + setDatasetEditPanelIsVisible(true); } }, [id]); @@ -102,10 +107,10 @@ export default function AddDataset() { /> ); - const EditPageComponent = () => <EditPage id={id} />; + const DatasetEditPanelComponent = () => <DatasetEditPanel id={id} />; - const DatasetPanelComponent = () => ( - <DatasetPanel + const DatasetCreationPanelComponent = () => ( + <DatasetCreationPanel tableName={dataset?.table_name} dbId={dataset?.db?.id} schema={dataset?.schema} @@ -126,9 +131,11 @@ export default function AddDataset() { return ( <DatasetLayout header={HeaderComponent()} - leftPanel={editPageIsVisible ? null : LeftPanelComponent()} + leftPanel={datasetEditPanelIsVisible ? null : LeftPanelComponent()} datasetPanel={ - editPageIsVisible ? EditPageComponent() : DatasetPanelComponent() + datasetEditPanelIsVisible + ? DatasetEditPanelComponent() + : DatasetCreationPanelComponent() } footer={FooterComponent()} /> diff --git a/superset-frontend/src/views/CRUD/data/dataset/DuplicateDatasetModal.tsx b/superset-frontend/src/pages/Dataset/DuplicateDatasetModal.tsx similarity index 100% rename from superset-frontend/src/views/CRUD/data/dataset/DuplicateDatasetModal.tsx rename to superset-frontend/src/pages/Dataset/DuplicateDatasetModal.tsx diff --git a/superset-frontend/src/views/CRUD/data/dataset/constants.ts b/superset-frontend/src/pages/Dataset/constants.ts similarity index 100% rename from superset-frontend/src/views/CRUD/data/dataset/constants.ts rename to superset-frontend/src/pages/Dataset/constants.ts diff --git a/superset-frontend/src/views/CRUD/data/dataset/styles.ts b/superset-frontend/src/pages/Dataset/styles.ts similarity index 100% rename from superset-frontend/src/views/CRUD/data/dataset/styles.ts rename to superset-frontend/src/pages/Dataset/styles.ts diff --git a/superset-frontend/src/views/CRUD/data/dataset/types.ts b/superset-frontend/src/pages/Dataset/types.ts similarity index 68% rename from superset-frontend/src/views/CRUD/data/dataset/types.ts rename to superset-frontend/src/pages/Dataset/types.ts index 97d6f5a280..20284aa9ec 100644 --- a/superset-frontend/src/views/CRUD/data/dataset/types.ts +++ b/superset-frontend/src/pages/Dataset/types.ts @@ -16,6 +16,8 @@ * specific language governing permissions and limitations * under the License. */ +import { DatabaseObject } from 'src/components/DatabaseSelector'; + export type ColumnObject = { id: number; column_name: string; @@ -61,3 +63,40 @@ export type DatasetObject = { extra?: string; is_managed_externally: boolean; }; + +export enum DatasetActionType { + selectDatabase, + selectSchema, + selectTable, + changeDataset, +} + +export interface NewDatasetObject { + db: DatabaseObject & { owners: [number] }; + schema?: string | null; + dataset_name: string; + table_name?: string | null; + explore_url?: string; +} + +export interface DatasetReducerPayloadType { + name: string; + value?: string; +} + +export type Schema = { + schema?: string | null | undefined; +}; + +export type DSReducerActionType = + | { + type: DatasetActionType.selectDatabase; + payload: Partial<NewDatasetObject>; + } + | { + type: + | DatasetActionType.changeDataset + | DatasetActionType.selectSchema + | DatasetActionType.selectTable; + payload: DatasetReducerPayloadType; + }; diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/DatasetPanel/DatasetPanel.stories.tsx b/superset-frontend/src/pages/DatasetCreationPanel/DatasetCreationPanel.stories.tsx similarity index 79% rename from superset-frontend/src/views/CRUD/data/dataset/AddDataset/DatasetPanel/DatasetPanel.stories.tsx rename to superset-frontend/src/pages/DatasetCreationPanel/DatasetCreationPanel.stories.tsx index 8a7fd7d643..84fc96422a 100644 --- a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/DatasetPanel/DatasetPanel.stories.tsx +++ b/superset-frontend/src/pages/DatasetCreationPanel/DatasetCreationPanel.stories.tsx @@ -20,18 +20,18 @@ import React from 'react'; import { ComponentStory, ComponentMeta } from '@storybook/react'; import { supersetTheme, ThemeProvider } from '@superset-ui/core'; -import DatasetPanel from './DatasetPanel'; +import DatasetCreationPanel from './DatasetCreationPanel'; import { exampleColumns } from './fixtures'; export default { - title: 'Superset App/views/CRUD/data/dataset/DatasetPanel', - component: DatasetPanel, -} as ComponentMeta<typeof DatasetPanel>; + title: 'Superset App/views/CRUD/data/dataset/DatasetCreationPanel', + component: DatasetCreationPanel, +} as ComponentMeta<typeof DatasetCreationPanel>; -export const Basic: ComponentStory<typeof DatasetPanel> = args => ( +export const Basic: ComponentStory<typeof DatasetCreationPanel> = args => ( <ThemeProvider theme={supersetTheme}> <div style={{ height: '350px' }}> - <DatasetPanel {...args} /> + <DatasetCreationPanel {...args} /> </div> </ThemeProvider> ); diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/DatasetPanel/DatasetPanel.test.tsx b/superset-frontend/src/pages/DatasetCreationPanel/DatasetCreationPanel.test.tsx similarity index 91% rename from superset-frontend/src/views/CRUD/data/dataset/AddDataset/DatasetPanel/DatasetPanel.test.tsx rename to superset-frontend/src/pages/DatasetCreationPanel/DatasetCreationPanel.test.tsx index b5a29638c6..dc8bf22375 100644 --- a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/DatasetPanel/DatasetPanel.test.tsx +++ b/superset-frontend/src/pages/DatasetCreationPanel/DatasetCreationPanel.test.tsx @@ -18,12 +18,12 @@ */ import React from 'react'; import { render, screen } from 'spec/helpers/testing-library'; -import DatasetPanel, { +import DatasetCreationPanel, { REFRESHING, ALT_LOADING, tableColumnDefinition, COLUMN_TITLE, -} from 'src/views/CRUD/data/dataset/AddDataset/DatasetPanel/DatasetPanel'; +} from 'src/pages/DatasetCreationPanel/DatasetCreationPanel'; import { exampleColumns, exampleDataset } from './fixtures'; import { SELECT_MESSAGE, @@ -43,9 +43,11 @@ jest.mock( <span role="img" aria-label={fileName.replace('_', '-')} />, ); -describe('DatasetPanel', () => { - test('renders a blank state DatasetPanel', () => { - render(<DatasetPanel hasError={false} columnList={[]} loading={false} />); +describe('DatasetCreationPanel', () => { + test('renders a blank state DatasetCreationPanel', () => { + render( + <DatasetCreationPanel hasError={false} columnList={[]} loading={false} />, + ); const blankDatasetImg = screen.getByRole('img', { name: /empty/i }); expect(blankDatasetImg).toBeVisible(); @@ -67,7 +69,7 @@ describe('DatasetPanel', () => { test('renders a no columns screen', () => { render( - <DatasetPanel + <DatasetCreationPanel tableName="Name" hasError={false} columnList={[]} @@ -85,7 +87,7 @@ describe('DatasetPanel', () => { test('renders a loading screen', () => { render( - <DatasetPanel + <DatasetCreationPanel tableName="Name" hasError={false} columnList={[]} @@ -101,7 +103,7 @@ describe('DatasetPanel', () => { test('renders an error screen', () => { render( - <DatasetPanel + <DatasetCreationPanel tableName="Name" hasError columnList={[]} @@ -118,7 +120,7 @@ describe('DatasetPanel', () => { test('renders a table with columns displayed', async () => { const tableName = 'example_name'; render( - <DatasetPanel + <DatasetCreationPanel tableName={tableName} hasError={false} columnList={exampleColumns} @@ -141,7 +143,7 @@ describe('DatasetPanel', () => { test('renders an info banner if table already has a dataset', async () => { render( - <DatasetPanel + <DatasetCreationPanel tableName="example_table" hasError={false} columnList={exampleColumns} diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/DatasetPanel/DatasetPanel.tsx b/superset-frontend/src/pages/DatasetCreationPanel/DatasetCreationPanel.tsx similarity index 96% rename from superset-frontend/src/views/CRUD/data/dataset/AddDataset/DatasetPanel/DatasetPanel.tsx rename to superset-frontend/src/pages/DatasetCreationPanel/DatasetCreationPanel.tsx index 8d579b79b8..c3c9406cc0 100644 --- a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/DatasetPanel/DatasetPanel.tsx +++ b/superset-frontend/src/pages/DatasetCreationPanel/DatasetCreationPanel.tsx @@ -24,7 +24,7 @@ import Table, { ColumnsType, TableSize } from 'src/components/Table'; import { alphabeticalSort } from 'src/components/Table/sorters'; // @ts-ignore import LOADING_GIF from 'src/assets/images/loading.gif'; -import { DatasetObject } from 'src/views/CRUD/data/dataset/AddDataset/types'; +import { NewDatasetObject } from 'src/pages/Dataset/types'; import { ITableColumn } from './types'; import MessageContent from './MessageContent'; @@ -199,9 +199,9 @@ export const tableColumnDefinition: ColumnsType<ITableColumn> = [ ]; /** - * Props interface for DatasetPanel + * Props interface for DatasetCreationPanel */ -export interface IDatasetPanelProps { +export interface IDatasetCreationPanelProps { /** * Name of the database table */ @@ -218,7 +218,7 @@ export interface IDatasetPanelProps { * Boolean indicating if the component is in a loading state */ loading: boolean; - datasets?: DatasetObject[] | undefined; + datasets?: NewDatasetObject[] | undefined; } const EXISTING_DATASET_DESCRIPTION = t( @@ -226,7 +226,7 @@ const EXISTING_DATASET_DESCRIPTION = t( ); const VIEW_DATASET = t('View Dataset'); -const renderExistingDatasetAlert = (dataset?: DatasetObject) => ( +const renderExistingDatasetAlert = (dataset?: NewDatasetObject) => ( <StyledAlert closable={false} type="info" @@ -254,13 +254,13 @@ const renderExistingDatasetAlert = (dataset?: DatasetObject) => ( /> ); -const DatasetPanel = ({ +const DatasetCreationPanel = ({ tableName, columnList, loading, hasError, datasets, -}: IDatasetPanelProps) => { +}: IDatasetCreationPanelProps) => { const theme = useTheme(); const hasColumns = columnList?.length > 0 ?? false; const datasetNames = datasets?.map(dataset => dataset.table_name); @@ -350,4 +350,4 @@ const DatasetPanel = ({ ); }; -export default DatasetPanel; +export default DatasetCreationPanel; diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/DatasetPanel/MessageContent.tsx b/superset-frontend/src/pages/DatasetCreationPanel/MessageContent.tsx similarity index 100% rename from superset-frontend/src/views/CRUD/data/dataset/AddDataset/DatasetPanel/MessageContent.tsx rename to superset-frontend/src/pages/DatasetCreationPanel/MessageContent.tsx diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/DatasetPanel/fixtures.ts b/superset-frontend/src/pages/DatasetCreationPanel/fixtures.ts similarity index 91% rename from superset-frontend/src/views/CRUD/data/dataset/AddDataset/DatasetPanel/fixtures.ts rename to superset-frontend/src/pages/DatasetCreationPanel/fixtures.ts index 5c09188c61..c36b9a6bdd 100644 --- a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/DatasetPanel/fixtures.ts +++ b/superset-frontend/src/pages/DatasetCreationPanel/fixtures.ts @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -import { DatasetObject } from 'src/views/CRUD/data/dataset/AddDataset/types'; +import { NewDatasetObject } from 'src/pages/Dataset/types'; import { ITableColumn } from './types'; export const exampleColumns: ITableColumn[] = [ @@ -34,7 +34,7 @@ export const exampleColumns: ITableColumn[] = [ }, ]; -export const exampleDataset: DatasetObject[] = [ +export const exampleDataset: NewDatasetObject[] = [ { db: { id: 1, diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/DatasetPanel/index.tsx b/superset-frontend/src/pages/DatasetCreationPanel/index.tsx similarity index 90% rename from superset-frontend/src/views/CRUD/data/dataset/AddDataset/DatasetPanel/index.tsx rename to superset-frontend/src/pages/DatasetCreationPanel/index.tsx index 73bea70b41..82539ecb2e 100644 --- a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/DatasetPanel/index.tsx +++ b/superset-frontend/src/pages/DatasetCreationPanel/index.tsx @@ -18,9 +18,9 @@ */ import React, { useEffect, useState, useRef } from 'react'; import { SupersetClient, logging, t } from '@superset-ui/core'; -import { DatasetObject } from 'src/views/CRUD/data/dataset/AddDataset/types'; +import { NewDatasetObject } from 'src/pages/Dataset/types'; import { addDangerToast } from 'src/components/MessageToasts/actions'; -import DatasetPanel from './DatasetPanel'; +import DatasetCreationPanel from 'src/pages/DatasetCreationPanel/DatasetCreationPanel'; import { ITableColumn, IDatabaseTable, isIDatabaseTable } from './types'; /** @@ -41,7 +41,7 @@ interface IColumnProps { schema: string; } -export interface IDatasetPanelWrapperProps { +export interface IDatasetCreationPanelWrapperProps { /** * Name of the database table */ @@ -55,16 +55,16 @@ export interface IDatasetPanelWrapperProps { */ schema?: string | null; setHasColumns?: Function; - datasets?: DatasetObject[] | undefined; + datasets?: NewDatasetObject[] | undefined; } -const DatasetPanelWrapper = ({ +const DatasetCreationPanelWrapper = ({ tableName, dbId, schema, setHasColumns, datasets, -}: IDatasetPanelWrapperProps) => { +}: IDatasetCreationPanelWrapperProps) => { const [columnList, setColumnList] = useState<ITableColumn[]>([]); const [loading, setLoading] = useState(false); const [hasError, setHasError] = useState(false); @@ -127,7 +127,7 @@ const DatasetPanelWrapper = ({ }, [tableName, dbId, schema]); return ( - <DatasetPanel + <DatasetCreationPanel columnList={columnList} hasError={hasError} loading={loading} @@ -137,4 +137,4 @@ const DatasetPanelWrapper = ({ ); }; -export default DatasetPanelWrapper; +export default DatasetCreationPanelWrapper; diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/DatasetPanel/types.ts b/superset-frontend/src/pages/DatasetCreationPanel/types.ts similarity index 100% rename from superset-frontend/src/views/CRUD/data/dataset/AddDataset/DatasetPanel/types.ts rename to superset-frontend/src/pages/DatasetCreationPanel/types.ts diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/EditDataset/EditDataset.test.tsx b/superset-frontend/src/pages/DatasetEditPanel/DatasetEditPanel.test.tsx similarity index 90% rename from superset-frontend/src/views/CRUD/data/dataset/AddDataset/EditDataset/EditDataset.test.tsx rename to superset-frontend/src/pages/DatasetEditPanel/DatasetEditPanel.test.tsx index c24496facc..6aa74db155 100644 --- a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/EditDataset/EditDataset.test.tsx +++ b/superset-frontend/src/pages/DatasetEditPanel/DatasetEditPanel.test.tsx @@ -19,7 +19,7 @@ import React from 'react'; import fetchMock from 'fetch-mock'; import { render, screen } from 'spec/helpers/testing-library'; -import EditDataset from './index'; +import DatasetEditPanel from './index'; const DATASET_ENDPOINT = 'glob:*api/v1/dataset/1/related_objects'; @@ -29,8 +29,8 @@ const mockedProps = { fetchMock.get(DATASET_ENDPOINT, { charts: { results: [], count: 2 } }); -test('should render edit dataset view with tabs', async () => { - render(<EditDataset {...mockedProps} />); +test('should render edit dataset panel with tabs', async () => { + render(<DatasetEditPanel {...mockedProps} />); const columnTab = await screen.findByRole('tab', { name: /columns/i }); const metricsTab = screen.getByRole('tab', { name: /metrics/i }); diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/EditDataset/UsageTab/UsageTab.test.tsx b/superset-frontend/src/pages/DatasetEditPanel/UsageTab/UsageTab.test.tsx similarity index 100% rename from superset-frontend/src/views/CRUD/data/dataset/AddDataset/EditDataset/UsageTab/UsageTab.test.tsx rename to superset-frontend/src/pages/DatasetEditPanel/UsageTab/UsageTab.test.tsx diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/EditDataset/UsageTab/index.tsx b/superset-frontend/src/pages/DatasetEditPanel/UsageTab/index.tsx similarity index 100% rename from superset-frontend/src/views/CRUD/data/dataset/AddDataset/EditDataset/UsageTab/index.tsx rename to superset-frontend/src/pages/DatasetEditPanel/UsageTab/index.tsx diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/EditDataset/index.tsx b/superset-frontend/src/pages/DatasetEditPanel/index.tsx similarity index 94% rename from superset-frontend/src/views/CRUD/data/dataset/AddDataset/EditDataset/index.tsx rename to superset-frontend/src/pages/DatasetEditPanel/index.tsx index e8853cf043..e6a4f1e07c 100644 --- a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/EditDataset/index.tsx +++ b/superset-frontend/src/pages/DatasetEditPanel/index.tsx @@ -44,7 +44,7 @@ const TabStyles = styled.div` `} `; -interface EditPageProps { +interface DatasetEditPanelProps { id: string; } @@ -54,7 +54,7 @@ const TRANSLATIONS = { METRICS_TEXT: t('Metrics'), }; -const EditPage = ({ id }: EditPageProps) => { +const DatasetEditPanel = ({ id }: DatasetEditPanelProps) => { const { usageCount } = useGetDatasetRelatedCounts(id); const usageTab = ( @@ -75,4 +75,4 @@ const EditPage = ({ id }: EditPageProps) => { ); }; -export default EditPage; +export default DatasetEditPanel; diff --git a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/types.tsx b/superset-frontend/src/views/CRUD/data/dataset/AddDataset/types.tsx deleted file mode 100644 index 89473e5426..0000000000 --- a/superset-frontend/src/views/CRUD/data/dataset/AddDataset/types.tsx +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -import { DatabaseObject } from 'src/components/DatabaseSelector'; - -export enum DatasetActionType { - selectDatabase, - selectSchema, - selectTable, - changeDataset, -} - -export interface DatasetObject { - db: DatabaseObject & { owners: [number] }; - schema?: string | null; - dataset_name: string; - table_name?: string | null; - explore_url?: string; -} - -export interface DatasetReducerPayloadType { - name: string; - value?: string; -} - -export type Schema = { - schema?: string | null | undefined; -}; - -export type DSReducerActionType = - | { - type: DatasetActionType.selectDatabase; - payload: Partial<DatasetObject>; - } - | { - type: - | DatasetActionType.changeDataset - | DatasetActionType.selectSchema - | DatasetActionType.selectTable; - payload: DatasetReducerPayloadType; - }; diff --git a/superset-frontend/src/views/CRUD/data/hooks.ts b/superset-frontend/src/views/CRUD/data/hooks.ts index 4e7a51de35..738ff92131 100644 --- a/superset-frontend/src/views/CRUD/data/hooks.ts +++ b/superset-frontend/src/views/CRUD/data/hooks.ts @@ -20,7 +20,7 @@ import { useState, useEffect, useCallback } from 'react'; import { SupersetClient, logging, t } from '@superset-ui/core'; import rison from 'rison'; import { addDangerToast } from 'src/components/MessageToasts/actions'; -import { DatasetObject } from 'src/views/CRUD/data/dataset/AddDataset/types'; +import { NewDatasetObject } from 'src/pages/Dataset/types'; import { DatabaseObject } from 'src/components/DatabaseSelector'; type BaseQueryObject = { @@ -91,11 +91,11 @@ export const useDatasetsList = ( | undefined, schema: string | null | undefined, ) => { - const [datasets, setDatasets] = useState<DatasetObject[]>([]); + const [datasets, setDatasets] = useState<NewDatasetObject[]>([]); const encodedSchema = schema ? encodeURIComponent(schema) : undefined; const getDatasetsList = useCallback(async (filters: object[]) => { - let results: DatasetObject[] = []; + let results: NewDatasetObject[] = []; let page = 0; let count; diff --git a/superset-frontend/src/views/routes.tsx b/superset-frontend/src/views/routes.tsx index cbab3f09fd..b8dbaf4d6e 100644 --- a/superset-frontend/src/views/routes.tsx +++ b/superset-frontend/src/views/routes.tsx @@ -73,14 +73,14 @@ const DatabaseList = lazy( const DatasetList = lazy( () => import( - /* webpackChunkName: "DatasetList" */ 'src/views/CRUD/data/dataset/DatasetList' + /* webpackChunkName: "DatasetList" */ 'src/pages/Dataset/DatasetList' ), ); -const AddDataset = lazy( +const DatasetPage = lazy( () => import( - /* webpackChunkName: "DatasetEditor" */ 'src/views/CRUD/data/dataset/AddDataset/index' + /* webpackChunkName: "DatasetEditor" */ 'src/pages/Dataset/DatasetPage' ), ); @@ -194,11 +194,11 @@ export const routes: Routes = [ }, { path: '/dataset/add/', - Component: AddDataset, + Component: DatasetPage, }, { path: '/dataset/:datasetId', - Component: AddDataset, + Component: DatasetPage, }, ];
