useMemo(() => { const currentSearch = new URLSearchParams(search); currentSearch.set('_limit', _limit); currentSearch.set('_sort', _sort); currentSearch.set('_start', _start); currentSearch.delete('_page'); return currentSearch.toString(); }, [_limit, _sort, _start, search])
const handleChangeSearch = async ({ target: { name, value } }) => { const currentSearch = new URLSearchParams(searchToSendForRequest); // Pagination currentSearch.delete('_start'); if (value === '') { currentSearch.delete(name); } else { currentSearch.set(name, value); } const searchToString = currentSearch.toString(); push({ search: searchToString }); }
constructor(rest, method, path, options) { this.rest = rest; this.client = rest.client; this.method = method; this.route = options.route; this.options = options; let queryString = ''; if (options.query) { const query = Object.entries(options.query) .filter(([, value]) => ![null, 'null', 'undefined'].includes(value) && typeof value !== 'undefined') .flatMap(([key, value]) => (Array.isArray(value) ? value.map(v => [key, v]) : [[key, value]])); queryString = new URLSearchParams(query).toString(); } this.path = `${path}${queryString && `?${queryString}`}`; }
useMemo(() => { const currentSearch = new URLSearchParams(search); // Delete all params that are not related to the filters const paramsToDelete = ['_limit', '_page', '_sort', '_q']; for (let i = 0; i < paramsToDelete.length; i++) { currentSearch.delete(paramsToDelete[i]); } return generateFiltersFromSearch(currentSearch.toString()); }, [search])
request(method, { baseRequestId, ...params }) { const searchParams = new URLSearchParams( params && Object.keys(params) .map(k => ({ [k]: typeof params[k] === 'object' ? JSON.stringify(params[k]) : params[k] })) .reduce((a, b) => ({ ...a, ...b }), {}) ); let spanCounter = 1; // Currently, all methods make GET requests. If a method makes a request with a body payload, // remember to add a 'Content-Type' header. const runRequest = () => fetch( `${this.apiUrl}/${method}${searchParams.toString().length ? `?${searchParams}` : ''}`, { headers: { Authorization: this.authorization, 'x-request-id': baseRequestId && `${baseRequestId}-span-${spanCounter++}`, ...this.headers }, credentials: this.credentials } ); return { async subscribe(callback) { const result = await runRequest(); return callback(result, () => this.subscribe(callback)); } }; }
const handleChangeFilters = ({ target: { value } }) => { const newSearch = new URLSearchParams(); // Set the default params newSearch.set('_limit', _limit); newSearch.set('_sort', _sort); newSearch.set('_page', 1); value.forEach(({ filter, name, value: filterValue }) => { const filterType = filter === '=' ? '' : filter; const filterName = `${name}${filterType}`; newSearch.append(filterName, filterValue); }); push({ search: newSearch.toString() }); }
.get(`/cubejs-api/v1/load?${searchParams.toString()}`) .set('Content-type', 'application/json') .set('Authorization', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.t-IDcSemACt8x4iTMCda8Yhe3iZaWbvV5XKSTbuAn0M') .get(`/cubejs-api/v1/load?${searchParams.toString()}`) .set('Content-type', 'application/json') .set('Authorization', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.t-IDcSemACt8x4iTMCda8Yhe3iZaWbvV5XKSTbuAn0M')
const newSearch = new URLSearchParams( filtered ).toString();
useMemo(() => { const currentSearch = new URLSearchParams(search); currentSearch.set('_limit', _limit); currentSearch.set('_sort', _sort); currentSearch.set('_start', _start); currentSearch.delete('_page'); return currentSearch.toString(); }, [_limit, _sort, _start, search])
const handleChangeSearch = async ({ target: { name, value } }) => { const currentSearch = new URLSearchParams(searchToSendForRequest); // Pagination currentSearch.delete('_start'); if (value === '') { currentSearch.delete(name); } else { currentSearch.set(name, value); } const searchToString = currentSearch.toString(); push({ search: searchToString }); }
useMemo(() => { const currentSearch = new URLSearchParams(search); // Delete all params that are not related to the filters const paramsToDelete = ['_limit', '_page', '_sort', '_q']; for (let i = 0; i < paramsToDelete.length; i++) { currentSearch.delete(paramsToDelete[i]); } return generateFiltersFromSearch(currentSearch.toString()); }, [search])
const handleChangeFilters = ({ target: { value } }) => { const newSearch = new URLSearchParams(); // Set the default params newSearch.set('_limit', _limit); newSearch.set('_sort', _sort); newSearch.set('_page', 1); value.forEach(({ filter, name, value: filterValue }) => { const filterType = filter === '=' ? '' : filter; const filterName = `${name}${filterType}`; newSearch.append(filterName, filterValue); }); push({ search: newSearch.toString() }); }