add monitoring stats fetch
This commit is contained in:
@@ -44,4 +44,48 @@ export async function setMonitoring(fileId: string, monitoringType: string) {
|
||||
errorMessage: 'error'
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export interface MonitoringStats {
|
||||
total_searches: number;
|
||||
searches_by_status: {
|
||||
processing: number;
|
||||
completed: number;
|
||||
failed: number;
|
||||
total: number;
|
||||
};
|
||||
recent_searches: any[];
|
||||
}
|
||||
|
||||
export async function fetchMonitoringStats(): Promise<MonitoringStats | null> {
|
||||
const token = await getSessionData('token');
|
||||
|
||||
try {
|
||||
const response = await fetch(`${API_BASE_URL}/api/v1/data`, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({
|
||||
version: 1,
|
||||
msg_id: 30011,
|
||||
message_body: {
|
||||
token: token
|
||||
}
|
||||
}),
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Accept': 'application/json'
|
||||
}
|
||||
});
|
||||
|
||||
if (response.ok) {
|
||||
const parsed = await response.json();
|
||||
console.log(parsed);
|
||||
if (parsed?.message_body?.searches_by_status) {
|
||||
return parsed.message_body;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
} catch (error) {
|
||||
return null
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
import { useQuery } from '@tanstack/react-query';
|
||||
import { fetchMonitoringStats } from '@/app/actions/monitoringActions';
|
||||
|
||||
interface MonitoringStats {
|
||||
total_searches: number;
|
||||
searches_by_status: {
|
||||
processing: number;
|
||||
completed: number;
|
||||
failed: number;
|
||||
total: number;
|
||||
};
|
||||
recent_searches: any[];
|
||||
}
|
||||
|
||||
export const useMonitoringStats = () => {
|
||||
return useQuery({
|
||||
queryKey: ['monitoringStats'],
|
||||
queryFn: () => {
|
||||
return fetchMonitoringStats()
|
||||
},
|
||||
select: (data: MonitoringStats | null) => {
|
||||
if (!data) {
|
||||
return null
|
||||
}
|
||||
return data;
|
||||
},
|
||||
retry: false
|
||||
});
|
||||
};
|
||||
@@ -11,7 +11,7 @@ export default function UserUsage() {
|
||||
useEffect(() => {
|
||||
console.log('log from user-usage');
|
||||
console.log(userData);
|
||||
}, [userData])
|
||||
}, [userData]);
|
||||
|
||||
return (
|
||||
<div className="usage-stats">
|
||||
|
||||
@@ -4,11 +4,13 @@ import { useUserFilesInfo } from '@/app/hooks/react-query/useUserFilesInfo';
|
||||
import { useTranslations } from 'next-intl';
|
||||
import { useEffect } from 'react';
|
||||
import { useViolationStatistic } from '@/app/hooks/react-query/useViolationStatistic';
|
||||
import {useMonitoringStats} from '@/app/hooks/react-query/useMonitoringStats';
|
||||
|
||||
export default function FinalSummary() {
|
||||
const t = useTranslations('Global');
|
||||
const { data: filesInfo, isLoading, isError, error } = useUserFilesInfo();
|
||||
const { data: violationStatistic } = useViolationStatistic();
|
||||
const { data: monitoringStats } = useMonitoringStats();
|
||||
|
||||
return (
|
||||
<div className="final-summary">
|
||||
@@ -23,7 +25,10 @@ export default function FinalSummary() {
|
||||
<div className="summary-stats">
|
||||
<div className="summary-stat">
|
||||
{/* <div className="summary-stat-icon">🔍</div> */}
|
||||
<div className="summary-stat-value">{filesInfo?.total.check ? filesInfo?.total.check : 0}</div>
|
||||
<div className="summary-stat-value">
|
||||
{monitoringStats?.total_searches ? monitoringStats?.total_searches : 0}
|
||||
{/* {filesInfo?.total.check ? filesInfo?.total.check : 0} */}
|
||||
</div>
|
||||
<div className="summary-stat-label">
|
||||
{t('total-number-of-checks')}
|
||||
</div>
|
||||
|
||||
@@ -4,11 +4,18 @@ import { useTranslations } from 'next-intl';
|
||||
import { useUserFilesInfo } from '@/app/hooks/react-query/useUserFilesInfo';
|
||||
import { IconDocument, IconSearch, IconWarning, IconGraph } from '@/app/ui/icons/icons';
|
||||
import { useViolationStatistic } from '@/app/hooks/react-query/useViolationStatistic';
|
||||
import { useMonitoringStats } from '@/app/hooks/react-query/useMonitoringStats';
|
||||
import { useEffect } from 'react';
|
||||
|
||||
export default function ReportsInfo() {
|
||||
const t = useTranslations("Global");
|
||||
const { data: filesInfo, isLoading, isError, error } = useUserFilesInfo();
|
||||
const { data: violationStatistic } = useViolationStatistic();
|
||||
const { data: monitoringStats } = useMonitoringStats();
|
||||
|
||||
useEffect(() => {
|
||||
console.log(monitoringStats)
|
||||
}, [monitoringStats]);
|
||||
|
||||
return (
|
||||
<>
|
||||
@@ -39,7 +46,10 @@ export default function ReportsInfo() {
|
||||
<IconSearch />
|
||||
</div>
|
||||
</div>
|
||||
<div className="stat-value">{filesInfo?.total.check ? filesInfo?.total.check : 0}</div>
|
||||
<div className="stat-value">
|
||||
{/* {filesInfo?.total.check ? filesInfo?.total.check : 0} */}
|
||||
{monitoringStats?.total_searches ? monitoringStats?.total_searches : 0}
|
||||
</div>
|
||||
<div className="stat-label">{t('monitoring')}</div>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user