fix(ui): card issues pagination

This commit is contained in:
Shekar Siri 2023-10-30 15:11:06 +01:00
parent 0df6bf9772
commit b1063f336e
4 changed files with 26 additions and 16 deletions

View file

@ -19,6 +19,7 @@ function CardIssues() {
const [loading, setLoading] = useState(false);
const widget: any = useObserver(() => metricStore.instance);
const isMounted = useIsMounted();
const pageSize = 5;
const { showModal } = useModal();
const fetchIssues = async (filter: any) => {
@ -41,6 +42,8 @@ function CardIssues() {
const newFilter = {
...filter,
limit: pageSize,
page: metricStore.sessionsPage,
series: filter.series.map(mapSeries)
};
@ -66,21 +69,20 @@ function CardIssues() {
useEffect(() => {
const newPayload = {
...widget,
page: metricStore.sessionsPage,
limit: metricStore.sessionsPageSize,
page: filter.page,
limit: filter.limit,
filters: filter.filters
};
console.log('drillDownPeriod', newPayload);
debounceRequest(newPayload);
}, [drillDownPeriod, filter.filters, depsString, metricStore.sessionsPage]);
}, [drillDownPeriod, filter.filters, depsString, metricStore.sessionsPage, filter.page]);
return useObserver(() => (
<div className='my-8 bg-white rounded p-4 border'>
<div className='flex justify-between'>
<h1 className='font-medium text-2xl'>Issues</h1>
{/*<div>*/}
{/* <Button variant='text-primary'>All Sessions</Button>*/}
{/*</div>*/}
<div>
<Button variant='text-primary'>All Sessions</Button>
</div>
</div>
<Loader loading={loading}>
@ -94,16 +96,22 @@ function CardIssues() {
</Loader>
<div className='w-full flex items-center justify-between pt-4'>
<div className='text-disabled-text'>
Showing <span
className='font-semibold'>{Math.min(data.issues.length, metricStore.sessionsPageSize)}</span> out of{' '}
<span className='font-semibold'>{data.total}</span> Issues
{data.total && (
<>
Showing < span className='font-medium'>{(filter.page - 1) * pageSize + 1}</span> to{' '}
<span className='font-medium'>{(filter.page - 1) * pageSize + pageSize}</span> of{' '}
<span className='font-medium'>{data.total}</span> issues.
</>
)}
</div>
<Pagination
page={metricStore.sessionsPage}
totalPages={Math.ceil(data.issues.length / metricStore.sessionsPageSize)}
onPageChange={(page: any) => metricStore.updateKey('sessionsPage', page)}
limit={metricStore.sessionsPageSize}
page={filter.page}
totalPages={Math.ceil(data.total / pageSize)}
onPageChange={(page: any) => filter.updateKey('page', page)}
limit={pageSize}
debounceRequest={500}
/>
</div>

View file

@ -222,7 +222,7 @@ function WidgetChart(props: Props) {
height={props.isPreview ? 500 : 240}
data={data}
onChartClick={(filters: any) => {
dashboardStore.drillDownFilter.merge({ filters });
dashboardStore.drillDownFilter.merge({ filters, page: 1 });
}} />;
}

View file

@ -13,6 +13,8 @@ export default class Filter {
startTimestamp: number = 0
endTimestamp: number = 0
eventsHeader: string = "EVENTS"
page: number = 1
limit: number = 10
constructor() {
makeAutoObservable(this, {

View file

@ -110,7 +110,7 @@ export default class MetricService {
if (filter.metricType === USER_PATH) {
const widget = new Widget().fromJson(filter);
const drillDownFilter = filter.filters;
filter = widget.toJson();
filter = { ...widget.toJson(), page: filter.page };
filter.filters = drillDownFilter;
}