UNPKG

cheetah-framework

Version:

Cheetah Framework JS used in all our applications

50 lines (41 loc) 1.17 kB
export default class GridFilters { constructor (model, values = {}) { this.values = { ...this.constructor.defaultValues, ...values } this.model = model this.handlers = this.getHandlers() } static get defaultValues () { return {} } init (params, defaults) { defaults = defaults || {} Object.keys(this.values).forEach(key => { this.values[key] = params.filters?.[key] ?? (defaults[key]?.length ? defaults[key] : this.values[key]) }) } clear () { Object.keys(this.values).forEach(key => { this.values[key] = this.constructor.defaultValues[key] }) } getFiltersObject () { return Object.keys(this.values).map(filter => ({ key: filter, value: this.values[filter], handler: this.handlers[filter] })) } getCriteria () { return this.getFiltersObject().map(filter => filter.handler()).filter(filter => !!filter) } getQuery () { return _.pickBy(this.values, val => !_.isEmpty(val) || typeof val === 'number') } serialize () { const query = this.getQuery() return _.isEmpty(query) ? null : JSON.stringify(query) } getHandlers () { return {} } }