mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-15 20:30:33 +00:00
chrone: sperate client and server to different repos.
This commit is contained in:
46
src/components/utils.js
Normal file
46
src/components/utils.js
Normal file
@@ -0,0 +1,46 @@
|
||||
import { castArray, isEmpty, includes, pickBy } from 'lodash';
|
||||
|
||||
/**
|
||||
* Filters the given accounts of the given query.
|
||||
* @param {*} accounts
|
||||
* @param {*} queryProps
|
||||
* @returns {*}
|
||||
*/
|
||||
export const filterAccountsByQuery = (accounts, queryProps) => {
|
||||
const defaultQuery = {
|
||||
filterByParentTypes: [],
|
||||
filterByTypes: [],
|
||||
filterByNormal: [],
|
||||
filterByRootTypes: [],
|
||||
...pickBy(queryProps, v => v !== undefined),
|
||||
};
|
||||
const query = {
|
||||
filterByParentTypes: castArray(defaultQuery.filterByParentTypes),
|
||||
filterByTypes: castArray(defaultQuery.filterByTypes),
|
||||
filterByNormal: castArray(defaultQuery.filterByNormal),
|
||||
filterByRootTypes: castArray(defaultQuery.filterByRootTypes),
|
||||
};
|
||||
let filteredAccounts = [...accounts];
|
||||
|
||||
if (!isEmpty(query.filterByParentTypes)) {
|
||||
filteredAccounts = filteredAccounts.filter((account) =>
|
||||
includes(query.filterByParentTypes, account.account_parent_type),
|
||||
);
|
||||
}
|
||||
if (!isEmpty(query.filterByTypes)) {
|
||||
filteredAccounts = filteredAccounts.filter((account) =>
|
||||
includes(query.filterByTypes, account.account_type),
|
||||
);
|
||||
}
|
||||
if (!isEmpty(query.filterByNormal)) {
|
||||
filteredAccounts = filteredAccounts.filter((account) =>
|
||||
includes(query.filterByTypes, account.account_normal),
|
||||
);
|
||||
}
|
||||
if (!isEmpty(query.filterByRootTypes)) {
|
||||
filteredAccounts = filteredAccounts.filter((account) =>
|
||||
includes(query.filterByRootTypes, account.account_root_type),
|
||||
);
|
||||
}
|
||||
return filteredAccounts;
|
||||
};
|
||||
Reference in New Issue
Block a user