import React, { useEffect } from 'react'; import { Avatar, List, Progress, Typography, Pagination } from 'antd'; import cn from 'classnames'; import { useStore } from '@/mstore'; import { observer } from 'mobx-react-lite'; import { metricService } from '@/services'; interface Props { list: any; selected?: any; onClickHandler?: (event: any, data: any) => void; metric?: any; total?: number; paginated?: boolean; } function CardSessionsByList({ list, selected, paginated, onClickHandler = () => null, metric, total, }: Props) { const { dashboardStore, metricStore, sessionStore } = useStore(); const { drillDownPeriod } = dashboardStore; const params = { density: 35 }; const metricParams = { ...params }; const [loading, setLoading] = React.useState(false); const data = paginated ? metric?.data?.values : list; const loadData = async (page: number) => { const timestamps = drillDownPeriod.toTimestamps(); const payload = { ...metricParams, ...timestamps, ...metric?.toJson() }; const params = { ...drillDownPeriod, ...payload, key: metric.predefinedKey, }; setLoading(true); const data = await metricService.getMetricChartData( metric, { ...params, page, limit: 20 }, false, ); metric.setData(data, drillDownPeriod); setLoading(false); }; return (
( onClickHandler(e, row)} style={{ borderBottom: index === data.length - 1 ? 'none' : 'none', padding: '4px 10px', lineHeight: '1px', }} className={cn( 'rounded-lg border-b-0 hover:bg-active-blue cursor-pointer', selected === row.name ? 'bg-active-blue' : '', )} > } title={
{row.displayName} {' '} {row.sessionCount}
} />
)} />
{paginated && total && total > 20 && (
`${range[0]}-${range[1]} of ${total} items`} defaultCurrent={metric.page} total={total} showQuickJumper pageSize={20} showSizeChanger={false} onChange={(page) => { metric.setPage(page); void loadData(page); }} />
)}
); } export default observer(CardSessionsByList);