dashboard/shell/utils/router.js

28 lines
665 B
JavaScript

export function queryParamsFor(current, qp, defaults = {}) {
const query = Object.assign({}, current || {});
for ( const key of Object.keys(qp) ) {
const val = qp[key];
if ( typeof defaults[key] === 'undefined' ) {
// There is no default
query[key] = qp[key];
} else if ( defaults[key] === false ) {
// Value-less boolean flags
if ( val ) {
query[key] = null;
} else {
delete query[key];
}
} else if ( val === defaults[key] ) {
// The value is the default
delete query[key];
} else {
// The value is not the default
query[key] = val;
}
}
return query;
}