From: Michal Klobukowski Date: Thu, 5 Jul 2018 10:13:30 +0000 (+0200) Subject: Implement project explorer searching X-Git-Tag: 1.2.0~59^2~8 X-Git-Url: https://git.arvados.org/arvados-workbench2.git/commitdiff_plain/ca88aa7165ef8320a0f2cc0125ec647eb31aab15 Implement project explorer searching Feature #13703 Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski --- diff --git a/src/views/project-panel/project-panel-middleware.ts b/src/views/project-panel/project-panel-middleware.ts index 5230c756..fdd05c78 100644 --- a/src/views/project-panel/project-panel-middleware.ts +++ b/src/views/project-panel/project-panel-middleware.ts @@ -44,6 +44,10 @@ export const projectPanelMiddleware: Middleware = store => next => { store.dispatch(actions.RESET_PAGINATION({ id: PROJECT_PANEL_ID })); store.dispatch(actions.REQUEST_ITEMS({ id: PROJECT_PANEL_ID })); }), + SET_SEARCH_VALUE: handleProjectPanelAction(() => { + store.dispatch(actions.RESET_PAGINATION({ id: PROJECT_PANEL_ID })); + store.dispatch(actions.REQUEST_ITEMS({ id: PROJECT_PANEL_ID })); + }), REQUEST_ITEMS: handleProjectPanelAction(() => { const state = store.getState() as RootState; const dataExplorer = getDataExplorer(state.dataExplorer, PROJECT_PANEL_ID); @@ -70,6 +74,7 @@ export const projectPanelMiddleware: Middleware = store => next => { .concat(FilterBuilder .create("containerRequests") .addIn("state", statusFilters.map(f => f.type))) + .concat(getSearchFilter(dataExplorer.searchValue)) }) .then(response => { store.dispatch(actions.SET_ITEMS({ @@ -105,9 +110,19 @@ const getOrder = (attribute: "name" | "createdAt", direction: "asc" | "desc") => OrderBuilder.create("collections"), OrderBuilder.create("container_requests"), OrderBuilder.create("groups") - ].reduce((acc, b) => acc.concat(direction === "asc" - ? b.addAsc(attribute) - : b.addDesc(attribute)), - OrderBuilder.create()); + ].reduce((acc, b) => + acc.concat(direction === "asc" + ? b.addAsc(attribute) + : b.addDesc(attribute)), OrderBuilder.create()); + +const getSearchFilter = (searchValue: string) => + searchValue + ? [ + FilterBuilder.create("collections"), + FilterBuilder.create("container_requests"), + FilterBuilder.create("groups")] + .reduce((acc, b) => + acc.concat(b.addILike("name", searchValue)), FilterBuilder.create()) + : FilterBuilder.create();