Spaces:
Sleeping
Sleeping
File size: 2,156 Bytes
6e41657 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | import type {
IDateFilterParams,
ISetFilterParams,
ITextFilterParams,
ValueFormatterParams,
ValueGetterParams,
} from 'ag-grid-community';
import type { Article } from '~/types/article';
// εΈε°η±»εηεθΏζ»€εζ°
export function createBooleanColumnFilterParams(trueLabel: string, falseLabel: string): ISetFilterParams<any, boolean> {
const map: Map<boolean, string> = new Map<boolean, string>();
map.set(true, trueLabel);
map.set(false, falseLabel);
return {
suppressMiniFilter: true,
values: [true, false],
valueFormatter: (params: ValueFormatterParams) => map.get(params.value) ?? '',
};
}
// ζ₯ζη±»εηεθΏζ»€εζ°
export function createDateColumnFilterParams(): IDateFilterParams {
return {
filterOptions: ['lessThan', 'greaterThan', 'inRange'],
comparator: (filterLocalDateAtMidnight: Date, cellValue: Date) => {
const t = filterLocalDateAtMidnight;
if (cellValue < t) {
return -1;
} else if (cellValue === t) {
return 0;
} else {
return 1;
}
},
};
}
// ζζ¬η±»εηεθΏζ»€εζ°
export function createTextColumnFilterParams(): ITextFilterParams {
return {
filterOptions: ['contains', 'notContains'],
maxNumConditions: 1,
};
}
// ζ°εη±»εη ValueGetter
export function createNumberValueGetter(field: keyof Article) {
return (params: ValueGetterParams<Article>) => {
if (params.node?.group) {
return params.node.childrenAfterFilter?.reduce((acc, row) => acc + ((row.data![field] as number) || 0), 0);
} else {
return params.data && params.data[field];
}
};
}
// εΈε°η±»εη ValueGetter
export function createBooleanValueGetter(field: keyof Article) {
return (params: ValueGetterParams<Article>) => {
if (params.node?.group) {
const total = params.node.childrenAfterFilter?.length || 0;
const count = params.node.childrenAfterFilter?.filter(row => row.data![field]).length || 0;
return `${count}/${total}`;
} else {
return params.data && params.data[field];
}
};
}
|