Migrate TED dashboard chart to summary API
continuous-integration/drone/push Build is passing

This commit is contained in:
AmirReza Jamali
2026-07-04 12:51:28 +03:30
parent 6b6dd7d2d1
commit fc0d45e909
6 changed files with 38 additions and 16 deletions
@@ -15,7 +15,10 @@ import { toLabeledPoints } from "./to-labeled-points";
export type DashboardMetrics = ReturnType<typeof useDashboardData>;
export function useDashboardData() {
const summaryQuery = useDashboardSummaryQuery();
const summaryQuery = useDashboardSummaryQuery({
closing_window: 168,
days: 14,
});
const trendQuery = useDashboardTrendQuery({ days: 14, metric: "created" });
const countriesQuery = useDashboardCountriesQuery({ limit: 6 });
const noticeTypesQuery = useDashboardNoticeTypesQuery();
@@ -1,6 +1,9 @@
"use client";
import { useDashboardStatisticsQuery } from "@/hooks/queries";
import {
useDashboardStatisticsQuery,
useDashboardSummaryQuery,
} from "@/hooks/queries";
import { useMemo, useState } from "react";
import { toLabeledPoints } from "./to-labeled-points";
@@ -11,14 +14,16 @@ export type StatisticsDays = (typeof STATISTICS_DAY_OPTIONS)[number];
export function useStatistics() {
const [days, setDays] = useState<StatisticsDays>(14);
const summaryQuery = useDashboardSummaryQuery({ closing_window: 168, days });
const query = useDashboardStatisticsQuery({ days });
const summary = summaryQuery.data?.data;
const stats = query.data?.data;
const daily = stats?.daily;
const scrapedTed = useMemo(
() => toLabeledPoints(daily?.scraped_ted ?? []),
[daily],
() => toLabeledPoints(summary?.scraped_ted ?? []),
[summary],
);
const scrapedDocuments = useMemo(
() => toLabeledPoints(daily?.scraped_documents ?? []),
@@ -32,9 +37,12 @@ export function useStatistics() {
return {
days,
setDays,
isLoading: query.isPending,
isError: query.isError,
refetch: query.refetch,
isLoading: query.isPending || summaryQuery.isPending,
isError: query.isError || summaryQuery.isError,
refetch: () => {
summaryQuery.refetch();
query.refetch();
},
scrapedTed,
scrapedDocuments,
translatedNotices,
+1
View File
@@ -4,6 +4,7 @@ import { useMemo } from "react";
export const useDashboardSummaryQuery = (params?: {
closing_window?: number;
days?: number;
}) => {
const queryKey = useMemo(
() => [API_ENDPOINTS.DASHBOARD.SUMMARY, params],
@@ -13,6 +13,7 @@ import {
export const dashboardService = {
summary: async (params?: {
closing_window?: number;
days?: number;
}): Promise<ApiResponse<TDashboardSummary>> => {
try {
return (await api.get(API_ENDPOINTS.DASHBOARD.SUMMARY, { params })).data;
+3 -1
View File
@@ -7,6 +7,8 @@ export type TDashboardSummary = {
closing_soon: number;
total_estimated_value: number;
value_currency: string;
days: number;
scraped_ted: TDashboardTrendPoint[];
generated_at: number;
};
@@ -22,7 +24,6 @@ export type TDashboardTrend = {
};
export type TDashboardStatisticsDaily = {
scraped_ted: TDashboardTrendPoint[];
scraped_documents: TDashboardTrendPoint[];
translated_notices: TDashboardTrendPoint[];
};
@@ -30,6 +31,7 @@ export type TDashboardStatisticsDaily = {
export type TDashboardStatisticsTotals = {
scraped_documents: number;
translated_tenders: number;
scraped_ted_notices: number;
};
export type TDashboardStatistics = {