|
|
@@ -25,6 +25,11 @@ export type FeatureUsageSummaryPayload = { |
|
|
truckRoutingSummary: FeatureUsageSummaryRow[]; |
|
|
truckRoutingSummary: FeatureUsageSummaryRow[]; |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
export type FeatureUsageSummaryFilters = { |
|
|
|
|
|
startDate?: string; |
|
|
|
|
|
endDate?: string; |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
function toInt(v: unknown): number { |
|
|
function toInt(v: unknown): number { |
|
|
if (v == null) return 0; |
|
|
if (v == null) return 0; |
|
|
if (typeof v === "number") return Number.isFinite(v) ? v : 0; |
|
|
if (typeof v === "number") return Number.isFinite(v) ? v : 0; |
|
|
@@ -68,8 +73,19 @@ export function logFeatureUsage( |
|
|
})(); |
|
|
})(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
export async function fetchFeatureUsageSummary(): Promise<FeatureUsageSummaryPayload> { |
|
|
|
|
|
const res = await clientAuthFetch(`${NEXT_PUBLIC_API_URL}/feature-usage/summary`, { |
|
|
|
|
|
|
|
|
export async function fetchFeatureUsageSummary( |
|
|
|
|
|
filters?: FeatureUsageSummaryFilters, |
|
|
|
|
|
): Promise<FeatureUsageSummaryPayload> { |
|
|
|
|
|
const params = new URLSearchParams(); |
|
|
|
|
|
if (filters?.startDate) { |
|
|
|
|
|
params.set("startDate", filters.startDate); |
|
|
|
|
|
} |
|
|
|
|
|
if (filters?.endDate) { |
|
|
|
|
|
params.set("endDate", filters.endDate); |
|
|
|
|
|
} |
|
|
|
|
|
const query = params.toString(); |
|
|
|
|
|
const url = `${NEXT_PUBLIC_API_URL}/feature-usage/summary${query ? `?${query}` : ""}`; |
|
|
|
|
|
const res = await clientAuthFetch(url, { |
|
|
method: "GET", |
|
|
method: "GET", |
|
|
headers: { Accept: "application/json" }, |
|
|
headers: { Accept: "application/json" }, |
|
|
}); |
|
|
}); |
|
|
|