wip - pf4 data list and pagination

This commit is contained in:
Jake McDermott
2018-10-15 12:20:12 -04:00
parent 546d5d5587
commit e3a5f32b57
17 changed files with 1038 additions and 84 deletions

41
src/qs.js Normal file
View File

@@ -0,0 +1,41 @@
/**
* Convert query param object to url query string
*
* @param {object} query param object
* @return {string} url query string
*/
export const encodeQueryString = (params) => {
if (!params) {
return '';
}
return Object.keys(params)
.sort()
.map(key => ([key, params[key]]))
.map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
.join('&');
};
/**
* Convert url query string to query param object
*
* @param {string} url query string
* @param {object} default params
* @param {array} array of keys to parse as integers
* @return {object} query param object
*/
export const parseQueryString = (queryString, integerFields = ['page', 'page_size']) => {
if (!queryString) return {};
const keyValuePairs = queryString.split('&')
.map(s => s.split('='))
.map(([key, value]) => {
if (integerFields.includes(key)) {
return [key, parseInt(value, 10)];
}
return [key, value];
});
return Object.assign(...keyValuePairs.map(([k, v]) => ({ [k]: v })));
};