mirror of
https://github.com/ansible/awx.git
synced 2026-01-16 04:10:44 -03:30
update qs addParams/removeParams fns to take param object not string
This commit is contained in:
parent
bdfeb2cb9c
commit
f0ff5b190a
@ -47,13 +47,15 @@ class ListHeader extends React.Component {
|
||||
handleSearch(key, value) {
|
||||
const { history, qsConfig } = this.props;
|
||||
const { search } = history.location;
|
||||
this.pushHistoryState(addParams(qsConfig, search, { [key]: value }));
|
||||
const oldParams = parseQueryString(qsConfig, search);
|
||||
this.pushHistoryState(addParams(qsConfig, oldParams, { [key]: value }));
|
||||
}
|
||||
|
||||
handleRemove(key, value) {
|
||||
const { history, qsConfig } = this.props;
|
||||
const { search } = history.location;
|
||||
this.pushHistoryState(removeParams(qsConfig, search, { [key]: value }));
|
||||
const oldParams = parseQueryString(qsConfig, search);
|
||||
this.pushHistoryState(removeParams(qsConfig, oldParams, { [key]: value }));
|
||||
}
|
||||
|
||||
handleRemoveAll() {
|
||||
@ -63,8 +65,9 @@ class ListHeader extends React.Component {
|
||||
handleSort(key, order) {
|
||||
const { history, qsConfig } = this.props;
|
||||
const { search } = history.location;
|
||||
const oldParams = parseQueryString(qsConfig, search);
|
||||
this.pushHistoryState(
|
||||
addParams(qsConfig, search, {
|
||||
addParams(qsConfig, oldParams, {
|
||||
order_by: order === 'ascending' ? key : `-${key}`,
|
||||
page: null,
|
||||
})
|
||||
|
||||
@ -33,13 +33,15 @@ class PaginatedDataList extends React.Component {
|
||||
handleSetPage(event, pageNumber) {
|
||||
const { history, qsConfig } = this.props;
|
||||
const { search } = history.location;
|
||||
this.pushHistoryState(addParams(qsConfig, search, { page: pageNumber }));
|
||||
const oldParams = parseQueryString(qsConfig, search);
|
||||
this.pushHistoryState(addParams(qsConfig, oldParams, { page: pageNumber }));
|
||||
}
|
||||
|
||||
handleSetPageSize(event, pageSize) {
|
||||
const { history, qsConfig } = this.props;
|
||||
const { search } = history.location;
|
||||
this.pushHistoryState(addParams(qsConfig, search, { page_size: pageSize }));
|
||||
const oldParams = parseQueryString(qsConfig, search);
|
||||
this.pushHistoryState(addParams(qsConfig, oldParams, { page_size: pageSize }));
|
||||
}
|
||||
|
||||
pushHistoryState(params) {
|
||||
|
||||
@ -315,16 +315,16 @@ const getRemainingNewParams = (mergedParams, newParams) =>
|
||||
/**
|
||||
* Merges existing params of search string with new ones and returns the updated list of params
|
||||
* @param {object} qs config object (used for getting defaults, current query params etc.)
|
||||
* @param {string} url query string
|
||||
* @param {object} object with params from existing search
|
||||
* @param {object} object with new params to add
|
||||
* @return {object} query param object
|
||||
*/
|
||||
export function addParams(config, searchString, newParams) {
|
||||
export function addParams(config, oldParams, paramsToAdd) {
|
||||
const namespacedOldParams = namespaceParams(
|
||||
config.namespace,
|
||||
parseQueryString(config, searchString)
|
||||
oldParams
|
||||
);
|
||||
const namespacedNewParams = namespaceParams(config.namespace, newParams);
|
||||
const namespacedParamsToAdd = namespaceParams(config.namespace, paramsToAdd);
|
||||
const namespacedDefaultParams = namespaceParams(
|
||||
config.namespace,
|
||||
config.defaultParams
|
||||
@ -336,7 +336,7 @@ export function addParams(config, searchString, newParams) {
|
||||
);
|
||||
const namespacedMergedParams = getMergedParams(
|
||||
namespacedOldParamsNotDefaults,
|
||||
namespacedNewParams
|
||||
namespacedParamsToAdd
|
||||
);
|
||||
|
||||
// return updated params.
|
||||
@ -345,19 +345,18 @@ export function addParams(config, searchString, newParams) {
|
||||
return denamespaceParams(config.namespace, {
|
||||
...getDefaultParams(namespacedOldParams, namespacedDefaultParams),
|
||||
...namespacedMergedParams,
|
||||
...getRemainingNewParams(namespacedMergedParams, namespacedNewParams),
|
||||
...getRemainingNewParams(namespacedMergedParams, namespacedParamsToAdd),
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes params from the search string and returns the updated list of params
|
||||
* @param {object} qs config object (used for getting defaults, current query params etc.)
|
||||
* @param {string} url query string
|
||||
* @param {object} object with params from existing search
|
||||
* @param {object} object with new params to remove
|
||||
* @return {object} query param object
|
||||
*/
|
||||
export function removeParams(config, searchString, paramsToRemove) {
|
||||
const oldParams = parseQueryString(config, searchString);
|
||||
export function removeParams(config, oldParams, paramsToRemove) {
|
||||
const paramsEntries = [];
|
||||
Object.entries(oldParams).forEach(([key, value]) => {
|
||||
if (Array.isArray(value)) {
|
||||
|
||||
@ -231,9 +231,9 @@ describe('qs (qs.js)', () => {
|
||||
defaultParams: { page: 1, page_size: 15 },
|
||||
integerFields: ['page', 'page_size'],
|
||||
};
|
||||
const query = '?baz=bar&page=3';
|
||||
const oldParams = { baz: 'bar', page: 3, page_size: 15 };
|
||||
const newParams = { bag: 'boom' };
|
||||
expect(addParams(config, query, newParams)).toEqual({
|
||||
expect(addParams(config, oldParams, newParams)).toEqual({
|
||||
baz: 'bar',
|
||||
bag: 'boom',
|
||||
page: 3,
|
||||
@ -247,9 +247,9 @@ describe('qs (qs.js)', () => {
|
||||
defaultParams: { page: 1, page_size: 15 },
|
||||
integerFields: ['page', 'page_size'],
|
||||
};
|
||||
const query = '?baz=bar&baz=bang&page=3';
|
||||
const oldParams = { baz: ['bar', 'bang'], page: 3, page_size: 15 };
|
||||
const newParams = { baz: 'boom' };
|
||||
expect(addParams(config, query, newParams)).toEqual({
|
||||
expect(addParams(config, oldParams, newParams)).toEqual({
|
||||
baz: ['bar', 'bang', 'boom'],
|
||||
page: 3,
|
||||
page_size: 15,
|
||||
@ -262,9 +262,9 @@ describe('qs (qs.js)', () => {
|
||||
defaultParams: { page: 1, page_size: 15 },
|
||||
integerFields: ['page', 'page_size'],
|
||||
};
|
||||
const query = '?baz=bar&baz=bang&page=3';
|
||||
const oldParams = { baz: ['bar', 'bang'], page: 3, page_size: 15 };
|
||||
const newParams = { page: 5 };
|
||||
expect(addParams(config, query, newParams)).toEqual({
|
||||
expect(addParams(config, oldParams, newParams)).toEqual({
|
||||
baz: ['bar', 'bang'],
|
||||
page: 5,
|
||||
page_size: 15,
|
||||
@ -277,9 +277,9 @@ describe('qs (qs.js)', () => {
|
||||
defaultParams: { page: 1, page_size: 15 },
|
||||
integerFields: ['page', 'page_size'],
|
||||
};
|
||||
const query = '?baz=bar&baz=bang&page=3';
|
||||
const oldParams = { baz: ['bar', 'bang'], page: 3, page_size: 15 };
|
||||
const newParams = { baz: 'bust', pat: 'pal' };
|
||||
expect(addParams(config, query, newParams)).toEqual({
|
||||
expect(addParams(config, oldParams, newParams)).toEqual({
|
||||
baz: ['bar', 'bang', 'bust'],
|
||||
pat: 'pal',
|
||||
page: 3,
|
||||
@ -293,9 +293,9 @@ describe('qs (qs.js)', () => {
|
||||
defaultParams: { page: 1, page_size: 15 },
|
||||
integerFields: ['page', 'page_size'],
|
||||
};
|
||||
const query = '?item.baz=bar&item.page=3';
|
||||
const oldParams = { baz: 'bar', page: 3, page_size: 15 };
|
||||
const newParams = { bag: 'boom' };
|
||||
expect(addParams(config, query, newParams)).toEqual({
|
||||
expect(addParams(config, oldParams, newParams)).toEqual({
|
||||
baz: 'bar',
|
||||
bag: 'boom',
|
||||
page: 3,
|
||||
@ -309,9 +309,9 @@ describe('qs (qs.js)', () => {
|
||||
defaultParams: { page: 1, page_size: 15 },
|
||||
integerFields: ['page', 'page_size'],
|
||||
};
|
||||
const query = '?item.baz=bar&foo.page=3';
|
||||
const oldParams = { baz: 'bar', page: 1, page_size: 15 };
|
||||
const newParams = { bag: 'boom' };
|
||||
expect(addParams(config, query, newParams)).toEqual({
|
||||
expect(addParams(config, oldParams, newParams)).toEqual({
|
||||
baz: 'bar',
|
||||
bag: 'boom',
|
||||
page: 1,
|
||||
@ -325,9 +325,9 @@ describe('qs (qs.js)', () => {
|
||||
defaultParams: { page: 1, page_size: 15 },
|
||||
integerFields: ['page', 'page_size'],
|
||||
};
|
||||
const query = '?item.baz=bar&item.baz=bang&item.page=3';
|
||||
const oldParams = { baz: ['bar', 'bang'], page: 3, page_size: 15 };
|
||||
const newParams = { baz: 'boom' };
|
||||
expect(addParams(config, query, newParams)).toEqual({
|
||||
expect(addParams(config, oldParams, newParams)).toEqual({
|
||||
baz: ['bar', 'bang', 'boom'],
|
||||
page: 3,
|
||||
page_size: 15,
|
||||
@ -340,9 +340,9 @@ describe('qs (qs.js)', () => {
|
||||
defaultParams: { page: 1, page_size: 15 },
|
||||
integerFields: ['page', 'page_size'],
|
||||
};
|
||||
const query = '?item.baz=bar&item.baz=bang&item.page=3';
|
||||
const oldParams = { baz: ['bar', 'bang'], page: 3, page_size: 15 };
|
||||
const newParams = { page: 5 };
|
||||
expect(addParams(config, query, newParams)).toEqual({
|
||||
expect(addParams(config, oldParams, newParams)).toEqual({
|
||||
baz: ['bar', 'bang'],
|
||||
page: 5,
|
||||
page_size: 15,
|
||||
@ -355,9 +355,9 @@ describe('qs (qs.js)', () => {
|
||||
defaultParams: { page: 1, page_size: 15 },
|
||||
integerFields: ['page', 'page_size'],
|
||||
};
|
||||
const query = '?item.baz=bar&item.baz=bang&item.page=3';
|
||||
const oldParams = { baz: ['bar', 'bang'], page: 3, page_size: 15 };
|
||||
const newParams = { baz: 'bust', pat: 'pal' };
|
||||
expect(addParams(config, query, newParams)).toEqual({
|
||||
expect(addParams(config, oldParams, newParams)).toEqual({
|
||||
baz: ['bar', 'bang', 'bust'],
|
||||
pat: 'pal',
|
||||
page: 3,
|
||||
@ -373,9 +373,9 @@ describe('qs (qs.js)', () => {
|
||||
defaultParams: { page: 1, page_size: 15 },
|
||||
integerFields: ['page', 'page_size'],
|
||||
};
|
||||
const query = '?baz=bar&page=3&bag=boom';
|
||||
const oldParams = { baz: 'bar', page: 3, bag: 'boom', page_size: 15 };
|
||||
const newParams = { bag: 'boom' };
|
||||
expect(removeParams(config, query, newParams)).toEqual({
|
||||
expect(removeParams(config, oldParams, newParams)).toEqual({
|
||||
baz: 'bar',
|
||||
page: 3,
|
||||
page_size: 15,
|
||||
@ -388,9 +388,9 @@ describe('qs (qs.js)', () => {
|
||||
defaultParams: { page: 1, page_size: 15 },
|
||||
integerFields: ['page', 'page_size'],
|
||||
};
|
||||
const query = '?baz=bar&baz=bang&page=3';
|
||||
const oldParams = { baz: ['bar', 'bang'], page: 3, page_size: 15 };
|
||||
const newParams = { baz: 'bar' };
|
||||
expect(removeParams(config, query, newParams)).toEqual({
|
||||
expect(removeParams(config, oldParams, newParams)).toEqual({
|
||||
baz: 'bang',
|
||||
page: 3,
|
||||
page_size: 15,
|
||||
@ -403,9 +403,9 @@ describe('qs (qs.js)', () => {
|
||||
defaultParams: { page: 1, page_size: 15 },
|
||||
integerFields: ['page', 'page_size'],
|
||||
};
|
||||
const query = '?baz=bar&baz=bang&baz=bust&page=3';
|
||||
const oldParams = { baz: ['bar', 'bang', 'bust'], page: 3, page_size: 15 };
|
||||
const newParams = { baz: 'bar' };
|
||||
expect(removeParams(config, query, newParams)).toEqual({
|
||||
expect(removeParams(config, oldParams, newParams)).toEqual({
|
||||
baz: ['bang', 'bust'],
|
||||
page: 3,
|
||||
page_size: 15,
|
||||
@ -418,9 +418,9 @@ describe('qs (qs.js)', () => {
|
||||
defaultParams: { page: 1, page_size: 15 },
|
||||
integerFields: ['page', 'page_size'],
|
||||
};
|
||||
const query = '?baz=bar&baz=bang&page=3';
|
||||
const oldParams = { baz: ['bar', 'bang'], page: 3, page_size: 15 };
|
||||
const newParams = { page: 3 };
|
||||
expect(removeParams(config, query, newParams)).toEqual({
|
||||
expect(removeParams(config, oldParams, newParams)).toEqual({
|
||||
baz: ['bar', 'bang'],
|
||||
page: 1,
|
||||
page_size: 15,
|
||||
@ -433,9 +433,9 @@ describe('qs (qs.js)', () => {
|
||||
defaultParams: { page: 1, page_size: 15 },
|
||||
integerFields: ['page', 'page_size'],
|
||||
};
|
||||
const query = '?baz=bar&baz=bang&baz=bust&pat=pal&page=3';
|
||||
const oldParams = { baz: ['bar', 'bang', 'bust'], pat: 'pal', page: 3, page_size: 15 };
|
||||
const newParams = { baz: 'bust', pat: 'pal' };
|
||||
expect(removeParams(config, query, newParams)).toEqual({
|
||||
expect(removeParams(config, oldParams, newParams)).toEqual({
|
||||
baz: ['bar', 'bang'],
|
||||
page: 3,
|
||||
page_size: 15,
|
||||
@ -448,9 +448,9 @@ describe('qs (qs.js)', () => {
|
||||
defaultParams: { page: 1, page_size: 15 },
|
||||
integerFields: ['page', 'page_size'],
|
||||
};
|
||||
const query = '?item.baz=bar&item.page=3';
|
||||
const oldParams = { baz: 'bar', page: 3, page_size: 15 };
|
||||
const newParams = { baz: 'bar' };
|
||||
expect(removeParams(config, query, newParams)).toEqual({
|
||||
expect(removeParams(config, oldParams, newParams)).toEqual({
|
||||
page: 3,
|
||||
page_size: 15,
|
||||
});
|
||||
@ -462,9 +462,9 @@ describe('qs (qs.js)', () => {
|
||||
defaultParams: { page: 1, page_size: 15 },
|
||||
integerFields: ['page', 'page_size'],
|
||||
};
|
||||
const query = '?item.baz=bar&foo.page=3';
|
||||
const oldParams = { baz: 'bar', page: 1, page_size: 15 };
|
||||
const newParams = { baz: 'bar' };
|
||||
expect(removeParams(config, query, newParams)).toEqual({
|
||||
expect(removeParams(config, oldParams, newParams)).toEqual({
|
||||
page: 1,
|
||||
page_size: 15,
|
||||
});
|
||||
@ -476,9 +476,9 @@ describe('qs (qs.js)', () => {
|
||||
defaultParams: { page: 1, page_size: 15 },
|
||||
integerFields: ['page', 'page_size'],
|
||||
};
|
||||
const query = '?item.baz=bar&item.baz=bang&item.page=3';
|
||||
const oldParams = { baz: ['bar', 'bang'], page: 3, page_size: 15 };
|
||||
const newParams = { baz: 'bar' };
|
||||
expect(removeParams(config, query, newParams)).toEqual({
|
||||
expect(removeParams(config, oldParams, newParams)).toEqual({
|
||||
baz: 'bang',
|
||||
page: 3,
|
||||
page_size: 15,
|
||||
@ -491,9 +491,9 @@ describe('qs (qs.js)', () => {
|
||||
defaultParams: { page: 1, page_size: 15 },
|
||||
integerFields: ['page', 'page_size'],
|
||||
};
|
||||
const query = '?item.baz=bar&item.baz=bang&item.baz=bust&item.page=3';
|
||||
const oldParams = { baz: ['bar', 'bang', 'bust'], page: 3, page_size: 15 };
|
||||
const newParams = { baz: 'bar' };
|
||||
expect(removeParams(config, query, newParams)).toEqual({
|
||||
expect(removeParams(config, oldParams, newParams)).toEqual({
|
||||
baz: ['bang', 'bust'],
|
||||
page: 3,
|
||||
page_size: 15,
|
||||
@ -506,9 +506,9 @@ describe('qs (qs.js)', () => {
|
||||
defaultParams: { page: 1, page_size: 15 },
|
||||
integerFields: ['page', 'page_size'],
|
||||
};
|
||||
const query = '?item.baz=bar&item.baz=bang&item.page=3';
|
||||
const oldParams = { baz: ['bar', 'bang'], page: 3, page_size: 15 };
|
||||
const newParams = { page: 3 };
|
||||
expect(removeParams(config, query, newParams)).toEqual({
|
||||
expect(removeParams(config, oldParams, newParams)).toEqual({
|
||||
baz: ['bar', 'bang'],
|
||||
page: 1,
|
||||
page_size: 15,
|
||||
@ -521,10 +521,9 @@ describe('qs (qs.js)', () => {
|
||||
defaultParams: { page: 1, page_size: 15 },
|
||||
integerFields: ['page', 'page_size'],
|
||||
};
|
||||
const query =
|
||||
'?item.baz=bar&item.baz=bang&item.baz=bust&item.pat=pal&item.page=3';
|
||||
const oldParams = { baz: ['bar', 'bang', 'bust'], pat: 'pal', page: 3, page_size: 15 };
|
||||
const newParams = { baz: 'bust', pat: 'pal' };
|
||||
expect(removeParams(config, query, newParams)).toEqual({
|
||||
expect(removeParams(config, oldParams, newParams)).toEqual({
|
||||
baz: ['bar', 'bang'],
|
||||
page: 3,
|
||||
page_size: 15,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user