This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
Reference in New Issue
Block a user