[ARVADOS-WORKBENCH2] created: 1.1.4-428-ge484aaf

Git user git at public.curoverse.com
Wed Jul 25 09:22:04 EDT 2018


        at  e484aaf10e5cf9a49368e74724f3967b103525e4 (commit)


commit e484aaf10e5cf9a49368e74724f3967b103525e4
Author: Michal Klobukowski <michal.klobukowski at contractors.roche.com>
Date:   Wed Jul 25 15:21:13 2018 +0200

    Add function for binding data explorer actions the given identifier
    
    Feature #13887
    
    Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski <michal.klobukowski at contractors.roche.com>

diff --git a/src/store/data-explorer/data-explorer-action.ts b/src/store/data-explorer/data-explorer-action.ts
index 053f419..a2e229d 100644
--- a/src/store/data-explorer/data-explorer-action.ts
+++ b/src/store/data-explorer/data-explorer-action.ts
@@ -20,3 +20,27 @@ export const dataExplorerActions = unionize({
 }, { tag: "type", value: "payload" });
 
 export type DataExplorerAction = UnionOf<typeof dataExplorerActions>;
+
+export const bindDataExplorerActions = (id: string) => ({
+    ...dataExplorerActions,
+    RESET_PAGINATION: () =>
+        dataExplorerActions.RESET_PAGINATION({ id }),
+    REQUEST_ITEMS: () =>
+        dataExplorerActions.REQUEST_ITEMS({ id }),
+    SET_COLUMNS: (payload: { columns: DataColumns<any> }) =>
+        dataExplorerActions.SET_COLUMNS({ ...payload, id }),
+    SET_FILTERS: (payload: { columnName: string, filters: DataTableFilterItem[] }) =>
+        dataExplorerActions.SET_FILTERS({ ...payload, id }),
+    SET_ITEMS: (payload: { items: any[], page: number, rowsPerPage: number, itemsAvailable: number }) =>
+        dataExplorerActions.SET_ITEMS({ ...payload, id }),
+    SET_PAGE: (payload: { page: number }) =>
+        dataExplorerActions.SET_PAGE({ ...payload, id }),
+    SET_ROWS_PER_PAGE: (payload: { rowsPerPage: number }) =>
+        dataExplorerActions.SET_ROWS_PER_PAGE({ ...payload, id }),
+    TOGGLE_COLUMN: (payload: { columnName: string }) =>
+        dataExplorerActions.TOGGLE_COLUMN({ ...payload, id }),
+    TOGGLE_SORT: (payload: { columnName: string }) =>
+        dataExplorerActions.TOGGLE_SORT({ ...payload, id }),
+    SET_SEARCH_VALUE: (payload: { searchValue: string }) =>
+        dataExplorerActions.SET_SEARCH_VALUE({ ...payload, id }),
+});
diff --git a/src/store/data-explorer/data-explorer-reducer.ts b/src/store/data-explorer/data-explorer-reducer.ts
index c112454..02ebece 100644
--- a/src/store/data-explorer/data-explorer-reducer.ts
+++ b/src/store/data-explorer/data-explorer-reducer.ts
@@ -7,7 +7,7 @@ import { dataExplorerActions, DataExplorerAction } from "./data-explorer-action"
 import { DataTableFilterItem } from "../../components/data-table-filters/data-table-filters";
 import { DataColumns } from "../../components/data-table/data-table";
 
-interface DataExplorer {
+export interface DataExplorer {
     columns: DataColumns<any>;
     items: any[];
     itemsAvailable: number;

commit eb1af55955e792abcdfd5a77d80c01d9a708ce8b
Author: Michal Klobukowski <michal.klobukowski at contractors.roche.com>
Date:   Wed Jul 25 15:20:36 2018 +0200

    Create data-explorer-middleware
    
    Feature #13887
    
    Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski <michal.klobukowski at contractors.roche.com>

diff --git a/src/store/data-explorer/data-explorer-middleware-service.ts b/src/store/data-explorer/data-explorer-middleware-service.ts
new file mode 100644
index 0000000..444e740
--- /dev/null
+++ b/src/store/data-explorer/data-explorer-middleware-service.ts
@@ -0,0 +1,22 @@
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
+import { getDataExplorer } from "./data-explorer-reducer";
+import { MiddlewareAPI } from "../../../node_modules/redux";
+import { DataColumns } from "../../components/data-table/data-table";
+
+export abstract class DataExplorerMiddlewareService {
+
+    abstract get Id(): string;
+    abstract get Columns(): DataColumns<any>;
+    abstract requestItems (api: MiddlewareAPI): void;
+    
+    protected api: MiddlewareAPI;
+    set Api(value: MiddlewareAPI) {
+        this.api = value;
+    }
+    get DataExplorer () {
+        return getDataExplorer(this.api.getState(), this.Id);
+    }
+}
\ No newline at end of file
diff --git a/src/store/data-explorer/data-explorer-middleware.ts b/src/store/data-explorer/data-explorer-middleware.ts
new file mode 100644
index 0000000..80a6d17
--- /dev/null
+++ b/src/store/data-explorer/data-explorer-middleware.ts
@@ -0,0 +1,45 @@
+
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
+import { Middleware } from "../../../node_modules/redux";
+import { dataExplorerActions } from "./data-explorer-action";
+import { DataExplorerMiddlewareService } from "./data-explorer-middleware-service";
+
+export const dataExplorerMiddleware = (service: DataExplorerMiddlewareService): Middleware => api => next => {
+    service.Api = api;
+    next(dataExplorerActions.SET_COLUMNS({ id: service.Id, columns: service.Columns }));
+    return action => {
+        const handleAction = <T extends { id: string }>(handler: (data: T) => void) =>
+            (data: T) => {
+                next(action);
+                if (data.id === service.Id) {
+                    handler(data);
+                }
+            };
+        dataExplorerActions.match(action, {
+            SET_PAGE: handleAction(() => {
+                api.dispatch(dataExplorerActions.REQUEST_ITEMS({ id: service.Id }));
+            }),
+            SET_ROWS_PER_PAGE: handleAction(() => {
+                api.dispatch(dataExplorerActions.REQUEST_ITEMS({ id: service.Id }));
+            }),
+            SET_FILTERS: handleAction(() => {
+                api.dispatch(dataExplorerActions.RESET_PAGINATION({ id: service.Id }));
+                api.dispatch(dataExplorerActions.REQUEST_ITEMS({ id: service.Id }));
+            }),
+            TOGGLE_SORT: handleAction(() => {
+                api.dispatch(dataExplorerActions.REQUEST_ITEMS({ id: service.Id }));
+            }),
+            SET_SEARCH_VALUE: handleAction(() => {
+                api.dispatch(dataExplorerActions.RESET_PAGINATION({ id: service.Id }));
+                api.dispatch(dataExplorerActions.REQUEST_ITEMS({ id: service.Id }));
+            }),
+            REQUEST_ITEMS: handleAction(() => {
+                service.requestItems(api);
+            }),
+            default: () => next(action)
+        });
+    };
+};

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list