UNPKG

cluedin-widget

Version:

This project contains all the pages needed for browsing entities and searching them. The aim is to replace the CluedIn.Webapp project with this one when all the pages ( including the Admin page ) will be ported to REACT.

200 lines (186 loc) • 8.07 kB
import constants from '../constants' ; import iso from '../../iso'; const initialState = { initialSearchQuery: void 0, searchResult: void 0, isFetchingSearch: false, suggestedSearches: [], suggestedSearchQuery: '', selectedFilters: [], sortDirection: void 0, pageNumber: 0, isFetchingNextPage: false, isFetchingInitialSearch: false, initialFacets: void 0, }; export default function update(state = initialState, action = {}) { switch (action.type) { case constants.search.REQUEST_INITIAL_SEARCH: return Object.assign({}, { initialSearchQuery: action.data.q, isFetchingSearch: state.isFetchingSearch, searchResult: void 0, suggestedSearches: state.suggestedSearches, suggestedSearchQuery: state.suggestedSearchQuery, selectedFilters: [], sortDirection: void 0, pageNumber: 0, isFetchingNextPage: false, isFetchingInitialSearch: true, initialFacets: {}, }); case constants.search.RECEIVE_INITIAL_SEARCH: let initialFacetsFromInitialSearch = (action.data.searchResult) ? action.data.searchResult.Facets : {}; return Object.assign({}, { initialSearchQuery: state.initialSearchQuery, isFetchingSearch: state.isFetchingSearch, searchResult: action.data.searchResult, suggestedSearches: state.suggestedSearches, suggestedSearchQuery: state.suggestedSearchQuery, selectedFilters: state.selectedFilters, sortDirection: state.sortDirection, pageNumber: state.pageNumber, isFetchingNextPage: state.isFetchingNextPage, isFetchingInitialSearch: false, initialFacets: Object.assign({}, initialFacetsFromInitialSearch), }); case constants.search.REQUEST_SEARCH: return Object.assign({}, { initialSearchQuery: state.initialSearchQuery, isFetchingSearch: true, searchResult: state.searchResult, suggestedSearches: state.suggestedSearches, suggestedSearchQuery: state.suggestedSearchQuery, selectedFilters: action.data.filters, sortDirection: action.data.sortingDirection, pageNumber: state.pageNumber, isFetchingNextPage: state.isFetchingNextPage, isFetchingInitialSearch: state.isFetchingInitialSearch, initialFacets: state.initialFacets, }); case constants.search.RECEIVE_SEARCH: return Object.assign({}, { initialSearchQuery: state.initialSearchQuery, searchResult: action.data.searchResult, isFetchingSearch: false, suggestedSearches: state.suggestedSearches, suggestedSearchQuery: state.suggestedSearchQuery, selectedFilters: state.selectedFilters, sortDirection: state.sortDirection, pageNumber: state.pageNumber, isFetchingNextPage: state.isFetchingNextPage, isFetchingInitialSearch: state.isFetchingInitialSearch, initialFacets: state.initialFacets, }); case constants.search.RECEIVE_SUGGESTED_SEARCH: return Object.assign({}, { initialSearchQuery: state.initialSearchQuery, searchResult: state.searchResult, isFetchingSearch: state.isFetchingSearch, suggestedSearches: action.data.suggestedSearches, suggestedSearchQuery: action.data.suggestedSearchQuery, selectedFilters: state.selectedFilters, sortDirection: state.sortDirection, pageNumber: state.pageNumber, isFetchingNextPage: state.isFetchingNextPage, isFetchingInitialSearch: state.isFetchingInitialSearch, initialFacets: state.initialFacets, }); case constants.search.REQUEST_SEARCH_WITH_FILTER: let oldSelectedFiltersFiltered = iso.collection.filter(state.selectedFilters, (f) => { return action.data.searchFilter.filterType !== f.filterType; }); return Object.assign({}, { initialSearchQuery: state.initialSearchQuery, searchResult: state.searchResult, isFetchingSearch: true, suggestedSearches: state.suggestedSearches, suggestedSearchQuery: state.suggestedSearchQuery, selectedFilters: [...oldSelectedFiltersFiltered, action.data.searchFilter], sortDirection: state.sortDirection, pageNumber: state.pageNumber, isFetchingNextPage: state.isFetchingNextPage, isFetchingInitialSearch: state.isFetchingInitialSearch, initialFacets: state.initialFacets, }); case constants.search.RECEIVE_SEARCH_WITH_FILTER: return Object.assign({}, { initialSearchQuery: state.initialSearchQuery, searchResult: action.data.searchResult, isFetchingSearch: false, suggestedSearches: state.suggestedSearches, suggestedSearchQuery: state.suggestedSearchQuery, selectedFilters: state.selectedFilters, sortDirection: state.sortDirection, pageNumber: state.pageNumber, isFetchingNextPage: state.isFetchingNextPage, isFetchingInitialSearch: state.isFetchingInitialSearch, initialFacets: state.initialFacets, }); case constants.search.REQUEST_REMOVE_FILTER_SEARCH: let filteredSelectedFilters = iso.collection.filter(state.selectedFilters, (f) => { return f.filterType !== action.data.filterType; }); return Object.assign({}, { initialSearchQuery: state.initialSearchQuery, searchResult: state.searchResult, isFetchingSearch: true, suggestedSearches: state.suggestedSearches, suggestedSearchQuery: state.suggestedSearchQuery, selectedFilters: [...filteredSelectedFilters], sortDirection: state.sortDirection, pageNumber: state.pageNumber, isFetchingNextPage: state.isFetchingNextPage, isFetchingInitialSearch: state.isFetchingInitialSearch, initialFacets: state.initialFacets, }); case constants.search.RECEIVE_REMOVE_FILTER_SEARCH: return Object.assign({}, { initialSearchQuery: state.initialSearchQuery, searchResult: action.data.searchResult, isFetchingSearch: false, suggestedSearches: state.suggestedSearches, suggestedSearchQuery: state.suggestedSearchQuery, selectedFilters: state.selectedFilters, sortDirection: state.sortDirection, pageNumber: state.pageNumber, isFetchingNextPage: state.isFetchingNextPage, isFetchingInitialSearch: state.isFetchingInitialSearch, initialFacets: state.initialFacets, }); case constants.search.REQUEST_NEXT_PAGE_NUMBER: return Object.assign({}, { initialSearchQuery: state.initialSearchQuery, searchResult: state.searchResult, isFetchingSearch: state.isFetchingSearch, suggestedSearches: state.suggestedSearches, suggestedSearchQuery: state.suggestedSearchQuery, selectedFilters: state.selectedFilters, sortDirection: state.sortDirection, pageNumber: action.data.pageNumber, isFetchingNextPage: true, isFetchingInitialSearch: state.isFetchingInitialSearch, initialFacets: state.initialFacets, }); case constants.search.RECEIVE_NEXT_PAGE_NUMBER: if (state.searchResult && state.searchResult.Hits) { let allHits = state.searchResult.Hits.concat(action.data.searchResult.Hits); state.searchResult.Hits = [...allHits]; } return Object.assign({}, { initialSearchQuery: state.initialSearchQuery, searchResult: Object.assign({}, state.searchResult), isFetchingSearch: state.isFetchingSearch, suggestedSearches: state.suggestedSearches, suggestedSearchQuery: state.suggestedSearchQuery, selectedFilters: state.selectedFilters, sortDirection: state.sortDirection, pageNumber: state.pageNumber, isFetchingNextPage: false, isFetchingInitialSearch: state.isFetchingInitialSearch, initialFacets: state.initialFacets, }); default: return state; } };