add monitoring stats fetch
This commit is contained in:
@@ -44,4 +44,48 @@ export async function setMonitoring(fileId: string, monitoringType: string) {
|
|||||||
errorMessage: 'error'
|
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(() => {
|
useEffect(() => {
|
||||||
console.log('log from user-usage');
|
console.log('log from user-usage');
|
||||||
console.log(userData);
|
console.log(userData);
|
||||||
}, [userData])
|
}, [userData]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="usage-stats">
|
<div className="usage-stats">
|
||||||
|
|||||||
@@ -4,11 +4,13 @@ import { useUserFilesInfo } from '@/app/hooks/react-query/useUserFilesInfo';
|
|||||||
import { useTranslations } from 'next-intl';
|
import { useTranslations } from 'next-intl';
|
||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
import { useViolationStatistic } from '@/app/hooks/react-query/useViolationStatistic';
|
import { useViolationStatistic } from '@/app/hooks/react-query/useViolationStatistic';
|
||||||
|
import {useMonitoringStats} from '@/app/hooks/react-query/useMonitoringStats';
|
||||||
|
|
||||||
export default function FinalSummary() {
|
export default function FinalSummary() {
|
||||||
const t = useTranslations('Global');
|
const t = useTranslations('Global');
|
||||||
const { data: filesInfo, isLoading, isError, error } = useUserFilesInfo();
|
const { data: filesInfo, isLoading, isError, error } = useUserFilesInfo();
|
||||||
const { data: violationStatistic } = useViolationStatistic();
|
const { data: violationStatistic } = useViolationStatistic();
|
||||||
|
const { data: monitoringStats } = useMonitoringStats();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="final-summary">
|
<div className="final-summary">
|
||||||
@@ -23,7 +25,10 @@ export default function FinalSummary() {
|
|||||||
<div className="summary-stats">
|
<div className="summary-stats">
|
||||||
<div className="summary-stat">
|
<div className="summary-stat">
|
||||||
{/* <div className="summary-stat-icon">🔍</div> */}
|
{/* <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">
|
<div className="summary-stat-label">
|
||||||
{t('total-number-of-checks')}
|
{t('total-number-of-checks')}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -4,11 +4,18 @@ import { useTranslations } from 'next-intl';
|
|||||||
import { useUserFilesInfo } from '@/app/hooks/react-query/useUserFilesInfo';
|
import { useUserFilesInfo } from '@/app/hooks/react-query/useUserFilesInfo';
|
||||||
import { IconDocument, IconSearch, IconWarning, IconGraph } from '@/app/ui/icons/icons';
|
import { IconDocument, IconSearch, IconWarning, IconGraph } from '@/app/ui/icons/icons';
|
||||||
import { useViolationStatistic } from '@/app/hooks/react-query/useViolationStatistic';
|
import { useViolationStatistic } from '@/app/hooks/react-query/useViolationStatistic';
|
||||||
|
import { useMonitoringStats } from '@/app/hooks/react-query/useMonitoringStats';
|
||||||
|
import { useEffect } from 'react';
|
||||||
|
|
||||||
export default function ReportsInfo() {
|
export default function ReportsInfo() {
|
||||||
const t = useTranslations("Global");
|
const t = useTranslations("Global");
|
||||||
const { data: filesInfo, isLoading, isError, error } = useUserFilesInfo();
|
const { data: filesInfo, isLoading, isError, error } = useUserFilesInfo();
|
||||||
const { data: violationStatistic } = useViolationStatistic();
|
const { data: violationStatistic } = useViolationStatistic();
|
||||||
|
const { data: monitoringStats } = useMonitoringStats();
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
console.log(monitoringStats)
|
||||||
|
}, [monitoringStats]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@@ -39,7 +46,10 @@ export default function ReportsInfo() {
|
|||||||
<IconSearch />
|
<IconSearch />
|
||||||
</div>
|
</div>
|
||||||
</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 className="stat-label">{t('monitoring')}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user