WIP: dynamic list filtering.

This commit is contained in:
a.bouhuolia
2021-07-31 17:07:37 +02:00
parent 9186076676
commit 3546b6b7ae
34 changed files with 569 additions and 314 deletions

View File

@@ -1,4 +1,5 @@
import { IModelMeta } from 'interfaces';
import { ACCOUNT_TYPES } from 'data/AccountTypes';
export default {
defaultFilterField: 'name',
@@ -10,25 +11,26 @@ export default {
name: {
name: 'Account name',
column: 'name',
columnable: true,
fieldType: 'text',
},
description: {
name: 'Description',
column: 'description',
columnable: true,
fieldType: 'text',
},
slug: {
name: 'Account slug',
column: 'slug',
fieldType: 'text',
columnable: false,
},
code: {
name: 'Account code',
column: 'code',
columnable: true,
fieldType: 'text',
},
root_type: {
name: 'Root type',
column: 'root_type',
columnable: true,
fieldType: 'enumeration',
options: [
{ key: 'asset', label: 'Asset' },
@@ -37,16 +39,37 @@ export default {
{ key: 'Income', label: 'Income' },
{ key: 'expense', label: 'Expense' },
],
filterCustomQuery: RootTypeFieldFilterQuery,
sortable: false,
},
normal: {
name: 'Account normal',
fieldType: 'enumeration',
options: [
{ key: 'debit', label: 'Debit' },
{ key: 'credit', label: 'Credit' },
],
filterCustomQuery: NormalTypeFieldFilterQuery,
sortable: false,
},
type: {
name: 'Type',
column: 'account_type',
fieldType: 'enumeration',
options: ACCOUNT_TYPES.map((accountType) => ({
label: accountType.label,
key: accountType.key
})),
},
active: {
name: 'Active',
column: 'active',
fieldType: 'boolean',
filterable: false,
},
amount: {
balance: {
name: 'Account balance',
column: 'amount',
columnable: true,
fieldType: 'number',
},
currency: {
@@ -60,4 +83,18 @@ export default {
fieldType: 'date',
},
},
} as IModelMeta;
};
/**
* Filter query of root type field .
*/
function RootTypeFieldFilterQuery(query, role) {
query.modify('filterByRootType', role.value);
}
/**
* Filter query of normal field .
*/
function NormalTypeFieldFilterQuery(query, role) {
query.modify('filterByAccountNormal', role.value);
}