feat: enrich dashboard filters and feedback
This commit is contained in:
@@ -3,6 +3,7 @@ export type TransactionStatus = 'all' | 'Paid' | 'Verified' | 'Failed' | 'Revers
|
||||
|
||||
export interface DashboardFilters {
|
||||
range: DashboardRange;
|
||||
period: string;
|
||||
terminal: string;
|
||||
status: TransactionStatus;
|
||||
minAmount: number | null;
|
||||
@@ -12,6 +13,13 @@ export interface DashboardFilters {
|
||||
const ranges = new Set<DashboardRange>(['day', 'week', 'month', 'season']);
|
||||
const statuses = new Set<TransactionStatus>(['all', 'Paid', 'Verified', 'Failed', 'Reversed']);
|
||||
|
||||
const periodPatterns: Record<DashboardRange, RegExp> = {
|
||||
day: /^d-\d{4}-\d{2}-\d{2}$/,
|
||||
week: /^w-\d{4}-\d{2}-\d{2}$/,
|
||||
month: /^jm-\d{4}-\d{2}$/,
|
||||
season: /^ps-\d{4}-(?:01|04|07|10)$/,
|
||||
};
|
||||
|
||||
function positiveAmount(value: string | null): number | null {
|
||||
if (!value) return null;
|
||||
const parsed = Number(value);
|
||||
@@ -23,6 +31,8 @@ export function parseDashboardFilters(
|
||||
terminalIds: readonly string[] = [],
|
||||
): DashboardFilters {
|
||||
const rawRange = query.get('range') as DashboardRange | null;
|
||||
const range = rawRange && ranges.has(rawRange) ? rawRange : 'month';
|
||||
const rawPeriod = query.get('period');
|
||||
const rawStatus = query.get('status') as TransactionStatus | null;
|
||||
const rawTerminal = query.get('terminal');
|
||||
let minAmount = positiveAmount(query.get('minAmount'));
|
||||
@@ -33,7 +43,8 @@ export function parseDashboardFilters(
|
||||
}
|
||||
|
||||
return {
|
||||
range: rawRange && ranges.has(rawRange) ? rawRange : 'month',
|
||||
range,
|
||||
period: rawPeriod && periodPatterns[range].test(rawPeriod) ? rawPeriod : '',
|
||||
terminal: rawTerminal && terminalIds.includes(rawTerminal) ? rawTerminal : 'all',
|
||||
status: rawStatus && statuses.has(rawStatus) ? rawStatus : 'all',
|
||||
minAmount,
|
||||
|
||||
Reference in New Issue
Block a user