app/addons/documents/index-results/actions/queryoptions.js (109 lines of code) (raw):

// Licensed under the Apache License, Version 2.0 (the "License"); you may not // use this file except in compliance with the License. You may obtain a copy of // the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the // License for the specific language governing permissions and limitations under // the License. import ActionTypes from '../actiontypes'; import { fetchDocs } from './fetch'; const updateQueryOptions = (queryOptions) => { return { type: ActionTypes.INDEX_RESULTS_REDUX_NEW_QUERY_OPTIONS, options: queryOptions }; }; export const resetFetchParamsBeforeExecute = (perPage) => { return { limit: perPage + 1, skip: 0 }; }; export const queryOptionsExecute = (queryDocs, queryOptionsParams, perPage) => { const fetchParams = resetFetchParamsBeforeExecute(perPage); return fetchDocs(queryDocs, fetchParams, queryOptionsParams); }; export const queryOptionsToggleVisibility = (newVisibility) => { return updateQueryOptions({ isVisible: newVisibility }); }; export const queryOptionsToggleReduce = (previousReduce) => { if (previousReduce) { return updateQueryOptions({ reduce: !previousReduce }); } // Disables includeDocs if reduce is changing to true return updateQueryOptions({ reduce: !previousReduce, includeDocs: false }); }; export const queryOptionsUpdateGroupLevel = (newGroupLevel) => { return updateQueryOptions({ groupLevel: newGroupLevel }); }; export const queryOptionsToggleByKeys = (previousShowByKeys) => { return updateQueryOptions({ showByKeys: !previousShowByKeys, showBetweenKeys: !!previousShowByKeys }); }; export const queryOptionsToggleBetweenKeys = (previousShowBetweenKeys) => { return updateQueryOptions({ showBetweenKeys: !previousShowBetweenKeys, showByKeys: !!previousShowBetweenKeys }); }; export const queryOptionsUpdateBetweenKeys = (newBetweenKeys) => { return updateQueryOptions({ betweenKeys: newBetweenKeys }); }; export const queryOptionsUpdateByKeys = (newByKeys) => { return updateQueryOptions({ byKeys: newByKeys }); }; export const queryOptionsToggleDescending = (previousDescending) => { return updateQueryOptions({ descending: !previousDescending }); }; export const queryOptionsUpdateSkip = (newSkip) => { return updateQueryOptions({ skip: newSkip }); }; export const queryOptionsUpdateLimit = (newLimit) => { return updateQueryOptions({ limit: newLimit }); }; export const queryOptionsToggleIncludeDocs = (previousIncludeDocs) => { return updateQueryOptions({ includeDocs: !previousIncludeDocs }); }; export const queryOptionsFilterOnlyDdocs = () => { return updateQueryOptions({ betweenKeys: { include: false, startkey: '"_design"', endkey: '"_design0"' }, showBetweenKeys: true, showByKeys: false }); }; export const queryOptionsRemoveFilterOnlyDdocs = () => { return updateQueryOptions({ betweenKeys: {}, showBetweenKeys: false, showByKeys: false }); }; export const queryOptionsToggleStable = previous => { return updateQueryOptions({ stable: !previous }); }; export const queryOptionsChangeUpdate = value => { return updateQueryOptions({ update: value.toString() }); };