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.drillDownPeriod; const params = { density: 35 }; const metricParams = { ...params }; const [loading, setLoading] = React.useState(false); const data = paginated ? metric?.data[0]?.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' : '1px dotted rgba(0, 0, 0, 0.05)', padding: '4px 10px', lineHeight: '1px' }} className={cn('rounded', 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);