import matchSorter from 'match-sorter';
import { request, invalidate, receive, initState, toArray } from '../boilerplate';
import {
REQUEST_SERVICE_INDICATORS,
RECEIVE_SERVICE_INDICATORS,
INVALIDATE_SERVICE_INDICATORS,
SEARCH_SERVICE_INDICATORS,
} from '../actionTypes';
function search(state, action) {
let searchResults = [];
if (action.searchString.length > 1 && state.data.items.length > 0) {
const serviceIndicators = state.data.items;
const serviceIndicatorsResults = matchSorter(toArray(serviceIndicators), action.searchString, {
keys: ['srvcIndCdDescr', 'information', 'srvcIndReasonDescr'],
threshold: matchSorter.rankings.WORD_STARTS_WITH,
});
searchResults = serviceIndicatorsResults;
}
const nextState = {
searchResults,
lastAction: {
type: SEARCH_SERVICE_INDICATORS,
},
};
return { ...state, ...nextState };
}
export default function(state = initState, action) {
switch (action.type) {
case REQUEST_SERVICE_INDICATORS:
return request(state, action);
case RECEIVE_SERVICE_INDICATORS:
return receive(state, action);
case INVALIDATE_SERVICE_INDICATORS:
return invalidate(state, action);
case SEARCH_SERVICE_INDICATORS:
return search(state, action);
default:
return state;
}
}
|