@@ -53,19 +53,19 @@ import { useGetNonEvacuatedEnergyParameters } from './dialogs/parameters/non-eva
53
53
import { stylesLayout , tabStyles } from './utils/tab-utils' ;
54
54
import { useParameterState } from './dialogs/parameters/use-parameters-state' ;
55
55
import { useGetShortCircuitParameters } from './dialogs/parameters/use-get-short-circuit-parameters' ;
56
- import { cancelLeaveParametersTab , confirmLeaveParametersTab } from 'redux/actions' ;
56
+ import { cancelLeaveParametersTab , confirmLeaveParametersTab , setDirtyComputationParameters } from 'redux/actions' ;
57
57
import { StudyView , StudyViewType } from './utils/utils' ;
58
58
import {
59
+ ComputingType ,
60
+ fetchSecurityAnalysisProviders ,
61
+ getSecurityAnalysisDefaultLimitReductions ,
59
62
LoadFlowParametersInline ,
60
63
NetworkVisualizationParametersInline ,
61
64
SecurityAnalysisParametersInline ,
62
65
SensitivityAnalysisParametersInline ,
63
66
ShortCircuitParametersInLine ,
64
67
useParametersBackend ,
65
- ComputingType ,
66
68
VoltageInitParametersInLine ,
67
- fetchSecurityAnalysisProviders ,
68
- getSecurityAnalysisDefaultLimitReductions ,
69
69
} from '@gridsuite/commons-ui' ;
70
70
import { useParametersNotification } from './dialogs/parameters/use-parameters-notification' ;
71
71
import { useGetVoltageInitParameters } from './dialogs/parameters/use-get-voltage-init-parameters' ;
@@ -97,9 +97,9 @@ const ParametersTabs: FunctionComponent<ParametersTabsProps> = ({ view }) => {
97
97
98
98
const [ tabValue , setTabValue ] = useState < string > ( TAB_VALUES . networkVisualizationsParams ) ;
99
99
const [ nextTabValue , setNextTabValue ] = useState < string | undefined > ( undefined ) ;
100
- const [ haveDirtyFields , setHaveDirtyFields ] = useState < boolean > ( false ) ;
100
+ const isDirtyComputationParameters = useSelector ( ( state : AppState ) => state . isDirtyComputationParameters ) ;
101
101
102
- const [ isPopupOpen , setIsPopupOpen ] = useState < boolean > ( false ) ;
102
+ const [ isLeavingPopupOpen , setIsLeavingPopupOpen ] = useState < boolean > ( false ) ;
103
103
104
104
const [ enableDeveloperMode ] = useParameterState ( PARAM_DEVELOPER_MODE ) ;
105
105
const [ languageLocal ] = useParameterState ( PARAM_LANGUAGE ) ;
@@ -121,6 +121,13 @@ const ParametersTabs: FunctionComponent<ParametersTabsProps> = ({ view }) => {
121
121
( state : AppState ) => state . computingStatus [ ComputingType . SHORT_CIRCUIT_ONE_BUS ]
122
122
) ;
123
123
124
+ const setDirtyFields = useCallback (
125
+ ( isDirty : boolean ) => {
126
+ dispatch ( setDirtyComputationParameters ( isDirty ) ) ;
127
+ } ,
128
+ [ dispatch ]
129
+ ) ;
130
+
124
131
const shouldDisplayGlassPane = useMemo ( ( ) => {
125
132
return (
126
133
computationStatus === RunningStatus . RUNNING ||
@@ -200,18 +207,18 @@ const ParametersTabs: FunctionComponent<ParametersTabsProps> = ({ view }) => {
200
207
201
208
useEffect ( ( ) => {
202
209
if ( attemptedLeaveParametersTabIndex !== null ) {
203
- if ( haveDirtyFields ) {
204
- setIsPopupOpen ( true ) ;
210
+ if ( isDirtyComputationParameters ) {
211
+ setIsLeavingPopupOpen ( true ) ;
205
212
} else {
206
213
dispatch ( confirmLeaveParametersTab ( ) ) ;
207
214
}
208
215
}
209
- } , [ attemptedLeaveParametersTabIndex , haveDirtyFields , dispatch ] ) ;
216
+ } , [ attemptedLeaveParametersTabIndex , isDirtyComputationParameters , dispatch ] ) ;
210
217
211
218
const handleChangeTab = ( newValue : string ) => {
212
- if ( haveDirtyFields ) {
219
+ if ( isDirtyComputationParameters ) {
213
220
setNextTabValue ( newValue ) ;
214
- setIsPopupOpen ( true ) ;
221
+ setIsLeavingPopupOpen ( true ) ;
215
222
} else {
216
223
setTabValue ( newValue ) ;
217
224
}
@@ -224,12 +231,12 @@ const ParametersTabs: FunctionComponent<ParametersTabsProps> = ({ view }) => {
224
231
} else if ( attemptedLeaveParametersTabIndex !== null ) {
225
232
dispatch ( confirmLeaveParametersTab ( ) ) ;
226
233
}
227
- setHaveDirtyFields ( false ) ;
228
- setIsPopupOpen ( false ) ;
234
+ dispatch ( setDirtyComputationParameters ( false ) ) ;
235
+ setIsLeavingPopupOpen ( false ) ;
229
236
} , [ nextTabValue , attemptedLeaveParametersTabIndex , dispatch ] ) ;
230
237
231
- const handlePopupClose = useCallback ( ( ) => {
232
- setIsPopupOpen ( false ) ;
238
+ const handleLeavingPopupClose = useCallback ( ( ) => {
239
+ setIsLeavingPopupOpen ( false ) ;
233
240
setNextTabValue ( undefined ) ;
234
241
235
242
if ( attemptedLeaveParametersTabIndex !== null ) {
@@ -269,7 +276,7 @@ const ParametersTabs: FunctionComponent<ParametersTabsProps> = ({ view }) => {
269
276
studyUuid = { studyUuid }
270
277
language = { languageLocal }
271
278
parametersBackend = { loadFlowParametersBackend }
272
- setHaveDirtyFields = { setHaveDirtyFields }
279
+ setHaveDirtyFields = { setDirtyFields }
273
280
enableDeveloperMode = { enableDeveloperMode }
274
281
/>
275
282
) ;
@@ -278,7 +285,7 @@ const ParametersTabs: FunctionComponent<ParametersTabsProps> = ({ view }) => {
278
285
< SecurityAnalysisParametersInline
279
286
studyUuid = { studyUuid }
280
287
parametersBackend = { securityAnalysisParametersBackend }
281
- setHaveDirtyFields = { setHaveDirtyFields }
288
+ setHaveDirtyFields = { setDirtyFields }
282
289
enableDeveloperMode = { enableDeveloperMode }
283
290
/>
284
291
) ;
@@ -289,7 +296,7 @@ const ParametersTabs: FunctionComponent<ParametersTabsProps> = ({ view }) => {
289
296
currentNodeUuid = { currentNodeUuid }
290
297
currentRootNetworkUuid = { currentRootNetworkUuid }
291
298
parametersBackend = { sensitivityAnalysisBackend }
292
- setHaveDirtyFields = { setHaveDirtyFields }
299
+ setHaveDirtyFields = { setDirtyFields }
293
300
enableDeveloperMode = { enableDeveloperMode }
294
301
/>
295
302
) ;
@@ -304,34 +311,34 @@ const ParametersTabs: FunctionComponent<ParametersTabsProps> = ({ view }) => {
304
311
return (
305
312
< ShortCircuitParametersInLine
306
313
studyUuid = { studyUuid }
307
- setHaveDirtyFields = { setHaveDirtyFields }
314
+ setHaveDirtyFields = { setDirtyFields }
308
315
shortCircuitParameters = { shortCircuitParameters }
309
316
/>
310
317
) ;
311
318
case TAB_VALUES . dynamicSimulationParamsTabValue :
312
- return < DynamicSimulationParameters user = { user } setHaveDirtyFields = { setHaveDirtyFields } /> ;
319
+ return < DynamicSimulationParameters user = { user } setHaveDirtyFields = { setDirtyFields } /> ;
313
320
case TAB_VALUES . dynamicSecurityAnalysisParamsTabValue :
314
- return < DynamicSecurityAnalysisParameters user = { user } setHaveDirtyFields = { setHaveDirtyFields } /> ;
321
+ return < DynamicSecurityAnalysisParameters user = { user } setHaveDirtyFields = { setDirtyFields } /> ;
315
322
case TAB_VALUES . voltageInitParamsTabValue :
316
323
return (
317
324
< VoltageInitParametersInLine
318
325
studyUuid = { studyUuid }
319
- setHaveDirtyFields = { setHaveDirtyFields }
326
+ setHaveDirtyFields = { setDirtyFields }
320
327
voltageInitParameters = { voltageInitParameters }
321
328
/>
322
329
) ;
323
330
case TAB_VALUES . stateEstimationTabValue :
324
331
return (
325
332
< StateEstimationParameters
326
- setHaveDirtyFields = { setHaveDirtyFields }
333
+ setHaveDirtyFields = { setDirtyFields }
327
334
useStateEstimationParameters = { useStateEstimationParameters }
328
335
/>
329
336
) ;
330
337
case TAB_VALUES . networkVisualizationsParams :
331
338
return (
332
339
< NetworkVisualizationParametersInline
333
340
studyUuid = { studyUuid }
334
- setHaveDirtyFields = { setHaveDirtyFields }
341
+ setHaveDirtyFields = { setDirtyFields }
335
342
user = { user }
336
343
parameters = { networkVisualizationsParameters }
337
344
/>
@@ -343,6 +350,7 @@ const ParametersTabs: FunctionComponent<ParametersTabsProps> = ({ view }) => {
343
350
studyUuid ,
344
351
languageLocal ,
345
352
loadFlowParametersBackend ,
353
+ setDirtyFields ,
346
354
enableDeveloperMode ,
347
355
securityAnalysisParametersBackend ,
348
356
currentNodeUuid ,
@@ -352,9 +360,9 @@ const ParametersTabs: FunctionComponent<ParametersTabsProps> = ({ view }) => {
352
360
useNonEvacuatedEnergyParameters ,
353
361
shortCircuitParameters ,
354
362
user ,
363
+ voltageInitParameters ,
355
364
useStateEstimationParameters ,
356
365
networkVisualizationsParameters ,
357
- voltageInitParameters ,
358
366
] ) ;
359
367
360
368
return (
@@ -448,8 +456,8 @@ const ParametersTabs: FunctionComponent<ParametersTabsProps> = ({ view }) => {
448
456
</ Grid >
449
457
< SelectOptionsDialog
450
458
title = { '' }
451
- open = { isPopupOpen }
452
- onClose = { handlePopupClose }
459
+ open = { isLeavingPopupOpen }
460
+ onClose = { handleLeavingPopupClose }
453
461
onClick = { handlePopupChangeTab }
454
462
child = {
455
463
< DialogContentText >
0 commit comments