blob: fc3c60a725fc8129f90b764779b9e43807b07efb [file] [log] [blame]
// 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()
});
};