@@ -22,14 +22,17 @@ import { ComputationReportViewer } from '../common/computation-report-viewer';
22
22
import { QueryParamsType , SecurityAnalysisTabProps } from './security-analysis.type' ;
23
23
import {
24
24
convertFilterValues ,
25
- DEFAULT_PAGE_COUNT ,
26
25
getStoreFields ,
27
26
mappingColumnToField ,
28
27
NMK_TYPE ,
29
28
RESULT_TYPE ,
30
29
useFetchFiltersEnums ,
31
30
} from './security-analysis-result-utils' ;
32
- import { FilterType as AgGridFilterType } from '../../../types/custom-aggrid-types' ;
31
+ import {
32
+ FilterType as AgGridFilterType ,
33
+ PaginationType ,
34
+ SecurityAnalysisTab ,
35
+ } from '../../../types/custom-aggrid-types' ;
33
36
import { SelectChangeEvent } from '@mui/material/Select/SelectInput' ;
34
37
import { SecurityAnalysisExportButton } from './security-analysis-export-button' ;
35
38
import { useSecurityAnalysisColumnsDefs } from './use-security-analysis-column-defs' ;
@@ -45,6 +48,7 @@ import GlobalFilterSelector from '../common/global-filter/global-filter-selector
45
48
import useGlobalFilters from '../common/global-filter/use-global-filters' ;
46
49
import { useGlobalFilterOptions } from '../common/global-filter/use-global-filter-options' ;
47
50
import { EQUIPMENT_TYPES } from '../../utils/equipment-types' ;
51
+ import { usePaginationSelector } from 'hooks/use-pagination-selector' ;
48
52
49
53
const styles = {
50
54
tabsAndToolboxContainer : {
@@ -88,9 +92,7 @@ export const SecurityAnalysisResultTab: FunctionComponent<SecurityAnalysisTabPro
88
92
const tabIndexRef = useRef < number > ( ) ;
89
93
tabIndexRef . current = tabIndex ;
90
94
const [ nmkType , setNmkType ] = useState ( NMK_TYPE . CONSTRAINTS_FROM_CONTINGENCIES ) ;
91
- const [ rowsPerPage , setRowsPerPage ] = useState < number > ( DEFAULT_PAGE_COUNT as number ) ;
92
95
const [ count , setCount ] = useState < number > ( 0 ) ;
93
- const [ page , setPage ] = useState < number > ( 0 ) ;
94
96
95
97
useEffect ( ( ) => {
96
98
if ( ! enableDeveloperMode && tabIndexRef . current === N_RESULTS_TAB_INDEX ) {
@@ -117,6 +119,11 @@ export const SecurityAnalysisResultTab: FunctionComponent<SecurityAnalysisTabPro
117
119
) ;
118
120
119
121
const { filters } = useFilterSelector ( AgGridFilterType . SecurityAnalysis , getStoreFields ( tabIndex ) ) ;
122
+ const { pagination, dispatchPagination } = usePaginationSelector (
123
+ PaginationType . SecurityAnalysis ,
124
+ getStoreFields ( tabIndex ) as SecurityAnalysisTab
125
+ ) ;
126
+ const { page, rowsPerPage } = pagination ;
120
127
const { globalFilters, handleGlobalFilterChange, getGlobalFilterParameter } = useGlobalFilters ( { } ) ;
121
128
const { countriesFilter, voltageLevelsFilter, propertiesFilter } = useGlobalFilterOptions ( ) ;
122
129
@@ -126,8 +133,8 @@ export const SecurityAnalysisResultTab: FunctionComponent<SecurityAnalysisTabPro
126
133
) ;
127
134
128
135
const memoizedSetPageCallback = useCallback ( ( ) => {
129
- setPage ( 0 ) ;
130
- } , [ ] ) ;
136
+ dispatchPagination ( { ... pagination , page : 0 } ) ;
137
+ } , [ pagination , dispatchPagination ] ) ;
131
138
132
139
const fetchSecurityAnalysisResultWithQueryParams = useCallback (
133
140
( studyUuid : string , nodeUuid : string ) => {
@@ -141,7 +148,7 @@ export const SecurityAnalysisResultTab: FunctionComponent<SecurityAnalysisTabPro
141
148
142
149
if ( tabIndex === NMK_RESULTS_TAB_INDEX ) {
143
150
queryParams [ 'page' ] = page ;
144
- queryParams [ 'size' ] = rowsPerPage ;
151
+ queryParams [ 'size' ] = rowsPerPage as number ;
145
152
}
146
153
147
154
if ( sortConfig ?. length ) {
@@ -194,10 +201,10 @@ export const SecurityAnalysisResultTab: FunctionComponent<SecurityAnalysisTabPro
194
201
const resetResultStates = useCallback ( ( ) => {
195
202
setResult ( null ) ;
196
203
setCount ( 0 ) ;
197
- setPage ( 0 ) ;
198
204
} , [ setResult ] ) ;
199
205
200
206
const handleChangeNmkType = ( event : SelectChangeEvent ) => {
207
+ dispatchPagination ( { page : 0 , rowsPerPage } ) ;
201
208
resetResultStates ( ) ;
202
209
setNmkType (
203
210
nmkType === NMK_TYPE . CONSTRAINTS_FROM_CONTINGENCIES
@@ -212,14 +219,20 @@ export const SecurityAnalysisResultTab: FunctionComponent<SecurityAnalysisTabPro
212
219
} ;
213
220
214
221
// Pagination, sort and filter
215
- const handleChangePage = useCallback ( ( _ : React . MouseEvent < HTMLButtonElement > | null , selectedPage : number ) => {
216
- setPage ( selectedPage ) ;
217
- } , [ ] ) ;
222
+ const handleChangePage = useCallback (
223
+ ( _ : React . MouseEvent < HTMLButtonElement > | null , selectedPage : number ) => {
224
+ dispatchPagination ( { ...pagination , page : selectedPage } ) ;
225
+ } ,
226
+ [ pagination , dispatchPagination ]
227
+ ) ;
218
228
219
- const handleChangeRowsPerPage = useCallback ( ( event : React . ChangeEvent < { value : string } > ) => {
220
- setRowsPerPage ( parseInt ( event . target . value , 10 ) ) ;
221
- setPage ( 0 ) ;
222
- } , [ ] ) ;
229
+ const handleChangeRowsPerPage = useCallback (
230
+ ( event : React . ChangeEvent < { value : string } > ) => {
231
+ const newRowsPerPage = parseInt ( event . target . value , 10 ) ;
232
+ dispatchPagination ( { page : 0 , rowsPerPage : newRowsPerPage } ) ;
233
+ } ,
234
+ [ dispatchPagination ]
235
+ ) ;
223
236
224
237
const { loading : filterEnumsLoading , result : filterEnums } = useFetchFiltersEnums ( ) ;
225
238
@@ -329,7 +342,7 @@ export const SecurityAnalysisResultTab: FunctionComponent<SecurityAnalysisTabPro
329
342
isFromContingency = { nmkType === NMK_TYPE . CONSTRAINTS_FROM_CONTINGENCIES }
330
343
paginationProps = { {
331
344
count,
332
- rowsPerPage,
345
+ rowsPerPage : rowsPerPage as number ,
333
346
page,
334
347
onPageChange : handleChangePage ,
335
348
onRowsPerPageChange : handleChangeRowsPerPage ,
0 commit comments