med-table
Version:
Wrapper over table of primeng library for Ministry of Health
39 lines • 6.08 kB
JavaScript
import { TableCell } from '../TableCell';
import { filterMethodsMap } from './filterMethodsMap';
import { FILTER_TYPES } from '../../types/filterTypes';
export class FilterDataHandler {
constructor() {
this._data = [];
this._config = [];
}
filter(filters, exitKey) {
return this._data.filter(row => this._config.every((col) => {
const key = col.sortKey || col.key;
const { value } = filters[key] || { matchMode: '' };
if (this.isEmptyValue(value, col.filterType) || exitKey === key)
return true;
const filterType = col.filterType || FILTER_TYPES.TEXT;
const tableCell = new TableCell();
tableCell.setItem(row);
tableCell.setConfig(col);
const filterFn = filterMethodsMap.get(filterType);
return filterFn ? filterFn(tableCell.previewData, value) : true;
}));
}
setData(data) {
this._data = data;
}
setConfig(config) {
this._config = config;
}
isEmptyValue(value, filterType) {
if (filterType === FILTER_TYPES.SELECT || filterType === FILTER_TYPES.DATE) {
return !value || Array.isArray(value) && !value.length;
}
if (filterType === FILTER_TYPES.CHECKBOX) {
return false;
}
return !value;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsdGVyRGF0YUhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWQtdGFibGUvc3JjL2xpYi9zZXJ2aWNlcy9GaWx0ZXJEYXRhSGFuZGxlci9GaWx0ZXJEYXRhSGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQVVyRCxNQUFNLE9BQU8saUJBQWlCO0lBQTlCO1FBQ1UsVUFBSyxHQUFRLEVBQUUsQ0FBQztRQUNoQixZQUFPLEdBQTBCLEVBQUUsQ0FBQztJQXNDOUMsQ0FBQztJQXBDQyxNQUFNLENBQUMsT0FBcUIsRUFBRSxPQUFnQjtRQUM1QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUF3QixFQUFXLEVBQUU7WUFDdkYsTUFBTSxHQUFHLEdBQVcsR0FBRyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQzNDLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBZ0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBRWpFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLE9BQU8sS0FBSyxHQUFHO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBRTdFLE1BQU0sVUFBVSxHQUFpQixHQUFHLENBQUMsVUFBVSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDckUsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNsQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFekIsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2xELE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsT0FBTyxDQUFDLElBQVM7UUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQTZCO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQ3hCLENBQUM7SUFFTyxZQUFZLENBQUMsS0FBVSxFQUFFLFVBQXlCO1FBQ3hELElBQUksVUFBVSxLQUFLLFlBQVksQ0FBQyxNQUFNLElBQUksVUFBVSxLQUFLLFlBQVksQ0FBQyxJQUFJLEVBQUU7WUFDMUUsT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztTQUN4RDtRQUVELElBQUksVUFBVSxLQUFLLFlBQVksQ0FBQyxRQUFRLEVBQUU7WUFDeEMsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUYWJsZUNlbGx9IGZyb20gJy4uL1RhYmxlQ2VsbCc7XG5pbXBvcnQge2ZpbHRlck1ldGhvZHNNYXB9IGZyb20gJy4vZmlsdGVyTWV0aG9kc01hcCc7XG5pbXBvcnQge0ZJTFRFUl9UWVBFU30gZnJvbSAnLi4vLi4vdHlwZXMvZmlsdGVyVHlwZXMnO1xuaW1wb3J0IHtQcmltZUZpbHRlciwgUHJpbWVGaWx0ZXJzfSBmcm9tICcuLi8uLi90eXBlcy9QcmltZUZpbHRlcic7XG5pbXBvcnQge0NlbGxEYXRhQ29uZmlnTG9jYWx9IGZyb20gJy4uLy4uL3R5cGVzL0NlbGxEYXRhQ29uZmlnTG9jYWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElGaWx0ZXJEYXRhSGFuZGxlcjxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICBzZXREYXRhKGRhdGE6IFRbXSk6IHZvaWRcbiAgc2V0Q29uZmlnKGNvbmZpZzogQ2VsbERhdGFDb25maWdMb2NhbFtdKTogdm9pZFxuICBmaWx0ZXIoZmlsdGVyczogUHJpbWVGaWx0ZXJzLCBleGl0S2V5Pzogc3RyaW5nKTogVFtdXG59XG5cbmV4cG9ydCBjbGFzcyBGaWx0ZXJEYXRhSGFuZGxlcjxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4gaW1wbGVtZW50cyBJRmlsdGVyRGF0YUhhbmRsZXI8VD4ge1xuICBwcml2YXRlIF9kYXRhOiBUW10gPSBbXTtcbiAgcHJpdmF0ZSBfY29uZmlnOiBDZWxsRGF0YUNvbmZpZ0xvY2FsW10gPSBbXTtcblxuICBmaWx0ZXIoZmlsdGVyczogUHJpbWVGaWx0ZXJzLCBleGl0S2V5Pzogc3RyaW5nKTogVFtdIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YS5maWx0ZXIocm93ID0+IHRoaXMuX2NvbmZpZy5ldmVyeSgoY29sOiBDZWxsRGF0YUNvbmZpZ0xvY2FsKTogYm9vbGVhbiA9PiB7XG4gICAgICBjb25zdCBrZXk6IHN0cmluZyA9IGNvbC5zb3J0S2V5IHx8IGNvbC5rZXk7XG4gICAgICBjb25zdCB7IHZhbHVlIH06IFByaW1lRmlsdGVyID0gZmlsdGVyc1trZXldIHx8IHsgbWF0Y2hNb2RlOiAnJyB9O1xuXG4gICAgICBpZiAodGhpcy5pc0VtcHR5VmFsdWUodmFsdWUsIGNvbC5maWx0ZXJUeXBlKSB8fCBleGl0S2V5ID09PSBrZXkpIHJldHVybiB0cnVlO1xuXG4gICAgICBjb25zdCBmaWx0ZXJUeXBlOiBGSUxURVJfVFlQRVMgPSBjb2wuZmlsdGVyVHlwZSB8fCBGSUxURVJfVFlQRVMuVEVYVDtcbiAgICAgIGNvbnN0IHRhYmxlQ2VsbCA9IG5ldyBUYWJsZUNlbGwoKTtcbiAgICAgIHRhYmxlQ2VsbC5zZXRJdGVtKHJvdyk7XG4gICAgICB0YWJsZUNlbGwuc2V0Q29uZmlnKGNvbCk7XG5cbiAgICAgIGNvbnN0IGZpbHRlckZuID0gZmlsdGVyTWV0aG9kc01hcC5nZXQoZmlsdGVyVHlwZSk7XG4gICAgICByZXR1cm4gZmlsdGVyRm4gPyBmaWx0ZXJGbih0YWJsZUNlbGwucHJldmlld0RhdGEsIHZhbHVlKSA6IHRydWU7XG4gICAgfSkpO1xuICB9XG5cbiAgc2V0RGF0YShkYXRhOiBUW10pOiB2b2lkIHtcbiAgICB0aGlzLl9kYXRhID0gZGF0YTtcbiAgfVxuXG4gIHNldENvbmZpZyhjb25maWc6IENlbGxEYXRhQ29uZmlnTG9jYWxbXSk6IHZvaWQge1xuICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcbiAgfVxuXG4gIHByaXZhdGUgaXNFbXB0eVZhbHVlKHZhbHVlOiBhbnksIGZpbHRlclR5cGU/OiBGSUxURVJfVFlQRVMpOiBib29sZWFuIHtcbiAgICBpZiAoZmlsdGVyVHlwZSA9PT0gRklMVEVSX1RZUEVTLlNFTEVDVCB8fCBmaWx0ZXJUeXBlID09PSBGSUxURVJfVFlQRVMuREFURSkge1xuICAgICAgcmV0dXJuICF2YWx1ZSB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiAhdmFsdWUubGVuZ3RoO1xuICAgIH1cblxuICAgIGlmIChmaWx0ZXJUeXBlID09PSBGSUxURVJfVFlQRVMuQ0hFQ0tCT1gpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gIXZhbHVlO1xuICB9XG59XG4iXX0=