mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-18 13:50:31 +00:00
feat: custom view dynamic filter.
This commit is contained in:
@@ -37,4 +37,8 @@ export default class DynamicFilterAbstructor {
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
getModel() {
|
||||
return this.model;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -346,4 +346,12 @@ export default abstract class DynamicFilterAbstructor
|
||||
this.relationFields.push(field.relationKey);
|
||||
}
|
||||
};
|
||||
|
||||
getModel() {
|
||||
return this.model;
|
||||
}
|
||||
|
||||
onInitialize() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import { omit } from 'lodash';
|
||||
import { IView, IViewRole } from 'interfaces';
|
||||
import DynamicFilterRoleAbstructor from 'lib/DynamicFilter/DynamicFilterRoleAbstructor';
|
||||
import { buildFilterQuery } from 'lib/ViewRolesBuilder';
|
||||
import DynamicFilterRoleAbstructor from './DynamicFilterRoleAbstructor';
|
||||
|
||||
export default class DynamicFilterViews extends DynamicFilterRoleAbstructor {
|
||||
viewId: number;
|
||||
logicExpression: string;
|
||||
filterRoles: IViewRole[];
|
||||
private viewSlug: string;
|
||||
private logicExpression: string;
|
||||
private filterRoles: IViewRole[];
|
||||
private viewColumns = [];
|
||||
|
||||
/**
|
||||
* Constructor method.
|
||||
@@ -15,8 +15,9 @@ export default class DynamicFilterViews extends DynamicFilterRoleAbstructor {
|
||||
constructor(view: IView) {
|
||||
super();
|
||||
|
||||
this.viewId = view.id;
|
||||
this.viewSlug = view.slug;
|
||||
this.filterRoles = view.roles;
|
||||
this.viewColumns = view.columns;
|
||||
this.logicExpression = view.rolesLogicExpression
|
||||
.replace('AND', '&&')
|
||||
.replace('OR', '||');
|
||||
@@ -24,19 +25,12 @@ export default class DynamicFilterViews extends DynamicFilterRoleAbstructor {
|
||||
this.setResponseMeta();
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve logic expression.
|
||||
*/
|
||||
buildLogicExpression() {
|
||||
return this.logicExpression;
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds database query of view roles.
|
||||
*/
|
||||
buildQuery() {
|
||||
public buildQuery() {
|
||||
return (builder) => {
|
||||
buildFilterQuery(
|
||||
this.buildFilterQuery(
|
||||
this.model,
|
||||
this.filterRoles,
|
||||
this.logicExpression
|
||||
@@ -47,14 +41,15 @@ export default class DynamicFilterViews extends DynamicFilterRoleAbstructor {
|
||||
/**
|
||||
* Sets response meta.
|
||||
*/
|
||||
setResponseMeta() {
|
||||
public setResponseMeta() {
|
||||
this.responseMeta = {
|
||||
view: {
|
||||
logicExpression: this.logicExpression,
|
||||
filterRoles: this.filterRoles.map((filterRole) => ({
|
||||
...omit(filterRole, ['id', 'viewId']),
|
||||
})),
|
||||
customViewId: this.viewId,
|
||||
viewSlug: this.viewSlug,
|
||||
viewColumns: this.viewColumns,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user