You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by aa...@apache.org on 2022/08/02 18:32:54 UTC
[superset] 01/01: beginning the reducer
This is an automated email from the ASF dual-hosted git repository.
aafghahi pushed a commit to branch arash.afghahi/sc-53583/create-redux-state-setup-listviewresource
in repository https://gitbox.apache.org/repos/asf/superset.git
commit 269b34749a5aa0ba34878c71dc9ec8e4c3236627
Author: AAfghahi <ar...@gmail.com>
AuthorDate: Tue Aug 2 14:32:27 2022 -0400
beginning the reducer
---
.../views/CRUD/data/dataset/DatasetPage/index.tsx | 37 ++++++++++++++++
.../dataset/DatasetPage/{index.tsx => types.tsx} | 51 ++++++++++++++--------
2 files changed, 70 insertions(+), 18 deletions(-)
diff --git a/superset-frontend/src/views/CRUD/data/dataset/DatasetPage/index.tsx b/superset-frontend/src/views/CRUD/data/dataset/DatasetPage/index.tsx
index 974091f1ef..6fa729220e 100644
--- a/superset-frontend/src/views/CRUD/data/dataset/DatasetPage/index.tsx
+++ b/superset-frontend/src/views/CRUD/data/dataset/DatasetPage/index.tsx
@@ -22,6 +22,43 @@ import DatasetPanel from './DatasetPanel';
import LeftPanel from './LeftPanel';
import RightPanel from './RightPanel';
import Footer from './Footer';
+import { DatasetActionType, DatasetObject, DSReducerActionType } from './types';
+
+export function datasetReducer(
+ state: Partial<DatasetObject> | null,
+ action: DSReducerActionType,
+): Partial<DatasetObject> | null {
+ const trimmedState = {
+ ...(state || {}),
+ };
+ switch (action.type) {
+ case DatasetActionType.selectDatabase:
+ return {
+ ...trimmedState,
+ ...action.payload,
+ schema: null,
+ table_name: null,
+ };
+ case DatasetActionType.selectSchema:
+ return {
+ ...trimmedState,
+ ...action.payload,
+ table_name: null,
+ };
+ case DatasetActionType.selectTable:
+ return {
+ ...trimmedState,
+ ...action.payload,
+ };
+ case DatasetActionType.changeDataset:
+ return {
+ ...trimmedState,
+ [action.payload.name]: action.payload.value,
+ };
+ default:
+ return null;
+ }
+}
export default function DatasetPage() {
return (
diff --git a/superset-frontend/src/views/CRUD/data/dataset/DatasetPage/index.tsx b/superset-frontend/src/views/CRUD/data/dataset/DatasetPage/types.tsx
similarity index 53%
copy from superset-frontend/src/views/CRUD/data/dataset/DatasetPage/index.tsx
copy to superset-frontend/src/views/CRUD/data/dataset/DatasetPage/types.tsx
index 974091f1ef..3d5d67f7e1 100644
--- a/superset-frontend/src/views/CRUD/data/dataset/DatasetPage/index.tsx
+++ b/superset-frontend/src/views/CRUD/data/dataset/DatasetPage/types.tsx
@@ -16,23 +16,38 @@
* specific language governing permissions and limitations
* under the License.
*/
-import React from 'react';
-import Header from './Header';
-import DatasetPanel from './DatasetPanel';
-import LeftPanel from './LeftPanel';
-import RightPanel from './RightPanel';
-import Footer from './Footer';
+export enum DatasetActionType {
+ selectDatabase,
+ selectSchema,
+ selectTable,
+ changeDataset,
+}
+
+export interface DatasetObject {
+ database: {
+ id: string;
+ database_name: string;
+ };
+ owners: number[];
+ schema?: string | null;
+ dataset_name: string;
+ table_name?: string | null;
+}
-export default function DatasetPage() {
- return (
- <div>
- <Header />
- <LeftPanel />
- <div css={{ display: 'flex' }}>
- <DatasetPanel />
- <Footer />
- </div>
- <RightPanel />
- </div>
- );
+interface DatasetReducerPayloadType {
+ name: string;
+ value?: string;
}
+
+export type DSReducerActionType =
+ | {
+ type:
+ | DatasetActionType.selectDatabase
+ | DatasetActionType.selectSchema
+ | DatasetActionType.selectTable;
+ payload: Partial<DatasetObject>;
+ }
+ | {
+ type: DatasetActionType.changeDataset;
+ payload: DatasetReducerPayloadType;
+ };