import React, { useEffect, useState } from 'react'; import { useParams } from 'react-router-dom'; import dayjs from 'dayjs'; import { useAssignedExtensions, ExtensionSlot } from '@openmrs/esm-framework'; import { useTranslation } from 'react-i18next'; import { InlineLoading, InlineNotification } from '@carbon/react'; import HomeHeader from './components/header/home-header.component'; import { DashboardMetric } from './components/dashboard-metric.component'; import { TopDiseasesBarCharts } from './components/top-diseases-barcharts.component'; import AdmittedOPDLineChart from './components/admitted-opd-line-chart.component'; import styles from './generic-dashboard.scss'; import { useFacilityDashboardData } from './hooks/useFacilityDashboardData'; const GenericDashboard: React.FC = () => { const { t } = useTranslation(); const params = useParams(); const assignedExtensions = useAssignedExtensions('express-workflow-left-panel-slot'); const today = dayjs().format('YYYY-MM-DD'); const [dateRange, setDateRange] = useState({ startDate: today, endDate: today }); const { data: dashboardData, error, isLoading } = useFacilityDashboardData(dateRange.startDate, dateRange.endDate); const handleDateChange = (startDate: string, endDate: string) => { setDateRange({ startDate, endDate }); }; if (isLoading) { return (
); } if (error) { return (
); } return (
{/* First Row: Bar Charts for Top Diseases */}
{/* Second Row: 3 Metric Tiles */}
5years', 'General OPD Attendance >5 years')} value={dashboardData?.metrics.opdOver5 ?? 0} />
{/* Third Row: Left Metrics (30%) + Right Line Chart (70%) */}
); }; export default GenericDashboard;