Commit 1ca4d846 authored by Merekeyev Dias's avatar Merekeyev Dias

added table reset after changing the page

parent b5ba8c86
...@@ -43,7 +43,7 @@ const Header: React.FC = () => { ...@@ -43,7 +43,7 @@ const Header: React.FC = () => {
}} }}
placement='left' placement='left'
className='custom-drawer' className='custom-drawer'
title="ЕСУТДjh" title="ЕСУТД"
> >
<Menu <Menu
theme='dark' theme='dark'
......
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'; import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
import { RootState } from '../../main'; import { RootState } from '../../main';
interface Organization {
id: number;
bin: string;
code: string;
name: string;
status: number;
created: string;
deleted: null;
login: string;
password: string;
host: string;
}
export const apiSlice = createApi({ export const apiSlice = createApi({
reducerPath: 'api', reducerPath: 'api',
baseQuery: fetchBaseQuery({ baseQuery: fetchBaseQuery({
......
import { createSlice } from "@reduxjs/toolkit"; import { createSlice } from "@reduxjs/toolkit";
const initialState = { interface InitialState {
currentPage: number,
totalReqNumber: number,
REQ_NUMBER_PER_PAGE: number,
}
const initialState:InitialState = {
currentPage: 1, currentPage: 1,
totalReqNumber: 0, totalReqNumber: 0,
REQ_NUMBER_PER_PAGE: 10 REQ_NUMBER_PER_PAGE: 12
} }
const reqPaginationSlice = createSlice({ const reqPaginationSlice = createSlice({
......
import React, { useEffect } from 'react'; import React, { createRef, useEffect } from 'react';
import { useNavigate } from 'react-router'; import { useNavigate } from 'react-router';
import { useSelector, useDispatch } from 'react-redux'; import { useSelector, useDispatch } from 'react-redux';
import { Button, Pagination, Spin, Table } from 'antd'; import { Button, Pagination, Spin, Table } from 'antd';
import { useGetOrganizationsQuery } from '../../features/api/organizationApiSlice'; import { useGetOrganizationsQuery } from '../../features/api/organizationApiSlice';
import { setCurrentPage, setTotalOrgNumber } from '../../features/pagination/mainPagination'; import { setCurrentPage, setTotalOrgNumber } from '../../features/pagination/mainPagination';
import { DataType, columns } from './Columns'; import { DataType, columns } from './Columns';
import { TableRef } from 'antd/es/table';
import './Homepage.css'; import './Homepage.css';
const HomePage: React.FC = () => { const HomePage: React.FC = () => {
const navigate = useNavigate(); const navigate = useNavigate();
const dispatch = useDispatch(); const dispatch = useDispatch();
const tableRef = createRef<TableRef>();
const totalOrgNumber = useSelector((state: any) => state.mainPagination.totalOrgNumber); const totalOrgNumber = useSelector((state: any) => state.mainPagination.totalOrgNumber);
const currentPage = useSelector((state: any) => state.mainPagination.currentPage); const currentPage = useSelector((state: any) => state.mainPagination.currentPage);
const ORG_NUMBER_PER_PAGE = useSelector((state: any) => state.mainPagination.ORG_NUMBER_PER_PAGE); const ORG_NUMBER_PER_PAGE = useSelector((state: any) => state.mainPagination.ORG_NUMBER_PER_PAGE);
...@@ -19,6 +21,7 @@ const HomePage: React.FC = () => { ...@@ -19,6 +21,7 @@ const HomePage: React.FC = () => {
}; };
const handlePaginationChange = (page: number) => { const handlePaginationChange = (page: number) => {
tableRef.current?.nativeElement.scrollIntoView({ behavior: 'smooth' });
dispatch(setCurrentPage(page)); dispatch(setCurrentPage(page));
}; };
...@@ -41,7 +44,12 @@ const HomePage: React.FC = () => { ...@@ -41,7 +44,12 @@ const HomePage: React.FC = () => {
if (isLoading) { if (isLoading) {
table = <Spin /> table = <Spin />
} else if (isSuccess) { } else if (isSuccess) {
table = <Table dataSource={paginatedData(orgs)} columns={columns} pagination={false} rowKey="id" /> table = <Table
dataSource={paginatedData(orgs)}
columns={columns} pagination={false}
rowKey="id"
ref={tableRef}
/>
} else if (isError) { } else if (isError) {
console.log(error) console.log(error)
table = <div>{error.toString()}</div> table = <div>{error.toString()}</div>
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
.data { .data {
flex: 1; flex: 1;
overflow-y: auto; overflow-y: auto;
margin-bottom: 75px; padding-bottom: 20px;
} }
.data-table { .data-table {
......
...@@ -89,7 +89,7 @@ export const columns: TableProps<DataType>['columns'] = [ ...@@ -89,7 +89,7 @@ export const columns: TableProps<DataType>['columns'] = [
} }
] ]
export const ResendColumn: React.FC<{ data: DataType }> = () => { export const ResendColumn: React.FC<{ data: DataType }> = ({ data }) => {
const [open, setOpen] = useState<boolean>(false); const [open, setOpen] = useState<boolean>(false);
const showResendModal = () => { const showResendModal = () => {
...@@ -112,10 +112,10 @@ export const ResendColumn: React.FC<{ data: DataType }> = () => { ...@@ -112,10 +112,10 @@ export const ResendColumn: React.FC<{ data: DataType }> = () => {
return ( return (
<Space> <Space>
<Button onClick={showResendModal}>П</Button> <Button onClick={showResendModal}>Переотправить</Button>
<Modal <Modal
open={open} open={open}
title={`Вы уверены, что хотите переотправить?`} title={`Вы уверены, что хотите переотправить запрос с id ${data.id}?`}
onCancel={handleResendModalCancel} onCancel={handleResendModalCancel}
onOk={handleResendModalOk} onOk={handleResendModalOk}
> >
......
.filter { .filter {
margin: 1rem 1rem 2rem; margin: 1rem 1rem 1rem;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
......
import React, { useEffect } from 'react'; import React, { useEffect, useState, createRef } from 'react';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
// import isBetween from 'dayjs/plugin/isBetween';
// import customParseFormat from "dayjs/plugin/customParseFormat";
import { DatePicker, Select, Button, Pagination, Spin, Table } from 'antd'; import { DatePicker, Select, Button, Pagination, Spin, Table } from 'antd';
import { useDispatch, useSelector } from 'react-redux'; import { useDispatch, useSelector } from 'react-redux';
import { columns, DataType } from './Columns'; import { columns, DataType } from './Columns';
import { useGetRequestsQuery } from '../../features/api/requestApiSlice'; import { useGetRequestsQuery } from '../../features/api/requestApiSlice';
import { setCurrentPage, setTotalReqNumber } from '../../features/pagination/reqPagination'; import { setCurrentPage, setTotalReqNumber } from '../../features/pagination/reqPagination';
import './RequestPage.css'; import './RequestPage.css';
import { TableRef } from 'antd/es/table';
const dateFormat = 'YYYY/MM/DD'; const dateFormat = 'YYYY/MM/DD';
const RequestPage: React.FC = () => { const RequestPage: React.FC = () => {
const dispatch = useDispatch(); const dispatch = useDispatch();
const tableRef = createRef<TableRef>();
const totalReqNumber = useSelector((state: any) => state.reqPagination.totalReqNumber); const totalReqNumber = useSelector((state: any) => state.reqPagination.totalReqNumber);
const currentPage = useSelector((state: any) => state.reqPagination.currentPage); const currentPage = useSelector((state: any) => state.reqPagination.currentPage);
const REQ_NUMBER_PER_PAGE = useSelector((state: any) => state.reqPagination.REQ_NUMBER_PER_PAGE); const REQ_NUMBER_PER_PAGE = useSelector((state: any) => state.reqPagination.REQ_NUMBER_PER_PAGE);
const [startDate, setStartDate] = useState<Date>();
const [endDate, setEndDate] = useState<Date>();
const [method, setMethod] = useState('');
const [filteredData, setFilteredData] = useState<Request[]>([]);
const handlePaginationChange = (page: number) => { const handlePaginationChange = (page: number) => {
tableRef.current?.nativeElement.scrollIntoView({ behavior: 'smooth' });
dispatch(setCurrentPage(page)); dispatch(setCurrentPage(page));
}; };
...@@ -25,6 +35,26 @@ const RequestPage: React.FC = () => { ...@@ -25,6 +35,26 @@ const RequestPage: React.FC = () => {
return dataSource.slice(startIndex, endIndex); return dataSource.slice(startIndex, endIndex);
}; };
const filterByDate = () => {
if (!startDate || !endDate) return;
const filtered = reqs.list.filter((req) => {
const sendDate = dayjs(req.sendDate, dateFormat);
});
console.log(filtered);
// setFilteredData(filtered);
dispatch(setTotalReqNumber(filtered.length));
};
const onSelectStartDate = (dateString: any) => {
setStartDate(dateString);
}
const onSelectEndDate = (dateString: any) => {
setEndDate(dateString);
}
const { const {
data: reqs = { list: [] }, data: reqs = { list: [] },
isLoading, isLoading,
...@@ -33,8 +63,6 @@ const RequestPage: React.FC = () => { ...@@ -33,8 +63,6 @@ const RequestPage: React.FC = () => {
error error
} = useGetRequestsQuery(); } = useGetRequestsQuery();
console.log(reqs)
let table; let table;
if (isLoading) { if (isLoading) {
...@@ -44,6 +72,8 @@ const RequestPage: React.FC = () => { ...@@ -44,6 +72,8 @@ const RequestPage: React.FC = () => {
dataSource={paginatedData(reqs.list)} dataSource={paginatedData(reqs.list)}
columns={columns} columns={columns}
pagination={false} pagination={false}
rowKey="id"
ref={tableRef}
/>; />;
} else if (isError) { } else if (isError) {
console.log(error); console.log(error);
...@@ -61,15 +91,24 @@ const RequestPage: React.FC = () => { ...@@ -61,15 +91,24 @@ const RequestPage: React.FC = () => {
<div className="filter"> <div className="filter">
<div className="fields"> <div className="fields">
<div className="dates"> <div className="dates">
<DatePicker defaultValue={dayjs('2023/09/24', dateFormat)} format={dateFormat} style={{ marginRight: 14 }} /> <DatePicker onChange={onSelectStartDate} defaultValue={dayjs('2024/07/11', dateFormat)} format={dateFormat} style={{ marginRight: 14 }} />
<DatePicker defaultValue={dayjs('2023/09/24', dateFormat)} format={dateFormat} /> <DatePicker onChange={onSelectEndDate} defaultValue={dayjs('2024/07/11', dateFormat)} format={dateFormat} />
</div> </div>
<div className="category"> <div className="category">
<Select placeholder="Не выбрано" style={{ width: 270 }} options={[]} /> <Select placeholder="Не выбрано" style={{ width: 270 }} options={[
{
value: "contract",
label: "contract"
},
{
value: "dictionary",
label: "dictionary"
}
]} />
</div> </div>
</div> </div>
<Button type='primary'>Применить</Button> <Button onClick={filterByDate} type='primary'>Применить</Button>
</div> </div>
<div className="data"> <div className="data">
{table} {table}
...@@ -81,6 +120,7 @@ const RequestPage: React.FC = () => { ...@@ -81,6 +120,7 @@ const RequestPage: React.FC = () => {
pageSize={REQ_NUMBER_PER_PAGE} pageSize={REQ_NUMBER_PER_PAGE}
total={totalReqNumber} total={totalReqNumber}
onChange={handlePaginationChange} onChange={handlePaginationChange}
hideOnSinglePage={true}
/> />
</div> </div>
</div> </div>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment