Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The developer mode is accessible from the user settings menu. #2532

Merged
merged 33 commits into from
Feb 6, 2025
Merged
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
dccc091
The developer mode is accessible from the user settings menu.
Jan 28, 2025
2ca73ec
Cleaning the old advanced parameter tab.
Jan 28, 2025
f2b23af
Merge branch 'main' into developermode_dialog
EstherDarkish Jan 28, 2025
5003b22
code cleaning
Jan 28, 2025
0ac52c4
Merge branch 'main' into developermode_dialog
EstherDarkish Jan 28, 2025
45c5e20
PR Review
Jan 28, 2025
7bd5856
Fix debounce issue causing the parameter to never be saved
Jan 30, 2025
0b40da7
Merge branch 'main' into developermode_dialog
EstherDarkish Jan 30, 2025
9df300c
PR Review
Jan 30, 2025
e0b1447
Merge branch 'main' into developermode_dialog
EstherDarkish Jan 30, 2025
461f10e
Merge branch 'main' into developermode_dialog
EstherDarkish Jan 30, 2025
fbe8a2a
Merge branch 'main' into developermode_dialog
EstherDarkish Jan 30, 2025
25c417b
Merge branch 'main' into developermode_dialog
souissimai Jan 31, 2025
be6831a
Merge branch 'main' into developermode_dialog
EstherDarkish Jan 31, 2025
b9259c4
Merge branch 'main' into developermode_dialog
EstherDarkish Jan 31, 2025
9596f4f
Merge branch 'main' into developermode_dialog
EstherDarkish Jan 31, 2025
d5b9850
PR Review
Feb 4, 2025
f954d07
Merge branch 'main' into developermode_dialog
EstherDarkish Feb 4, 2025
17e4e9f
Remove the useless debounce in useParameterState
Feb 4, 2025
8db02e4
Merge branch 'remove_parameter_debounce' into developermode_dialog
Feb 4, 2025
f4c357b
Merge branch 'main' into developermode_dialog
EstherDarkish Feb 4, 2025
64c7aad
PR Review
Feb 4, 2025
9c4083c
Merge branch 'main' into developermode_dialog
EstherDarkish Feb 4, 2025
37ace63
Moved the user settings dialog in commons-ui. See https://github.com/…
Feb 4, 2025
746f2cd
Code cleaning
Feb 4, 2025
3475fb6
Merge branch 'main' into developermode_dialog
EstherDarkish Feb 4, 2025
abcf1eb
Merge branch 'main' into developermode_dialog
EstherDarkish Feb 5, 2025
2625f7c
Merge branch 'main' into developermode_dialog
AAJELLAL Feb 5, 2025
984ae83
Merge branch 'main' into developermode_dialog
AAJELLAL Feb 5, 2025
b54ae08
Merge branch 'main' into developermode_dialog
EstherDarkish Feb 6, 2025
5289447
Merge branch 'main' into developermode_dialog
EstherDarkish Feb 6, 2025
4b4c5e9
Merge branch 'main' into developermode_dialog
EstherDarkish Feb 6, 2025
a2d7cfd
Merge branch 'main' into developermode_dialog
EstherDarkish Feb 6, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion src/components/app-top-bar.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { StudyView } from './study-pane';
import { Badge, Box, Button, Tab, Tabs, Tooltip } from '@mui/material';
import { Search, Settings } from '@mui/icons-material';
import { FormattedMessage, useIntl } from 'react-intl';
import { PARAM_LANGUAGE, PARAM_THEME, PARAM_USE_NAME } from '../utils/config-params';
import { PARAM_LANGUAGE, PARAM_THEME, PARAM_USE_NAME, PARAM_DEVELOPER_MODE } from '../utils/config-params';
import { useDispatch, useSelector } from 'react-redux';
import PropTypes from 'prop-types';
import AppPackage from '../../package.json';
Expand All @@ -29,6 +29,7 @@ import { useComputationResultsCount } from '../hooks/use-computation-results-cou
import { TopBarEquipmentSearchDialog } from './top-bar-equipment-seach-dialog/top-bar-equipment-search-dialog';
import { fetchAppsMetadata } from '@gridsuite/commons-ui';
import { ROOT_NODE_LABEL } from '../constants/node.constant';
import UserSettingsDialog from './dialogs/parameters/user-settings/user-settings-dialog';

const styles = {
currentNodeBox: {
Expand Down Expand Up @@ -81,6 +82,9 @@ const AppTopBar = ({ user, tabIndex, onChangeTab, userManager }) => {

const [themeLocal, handleChangeTheme] = useParameterState(PARAM_THEME);

const [enableDeveloperMode] = useParameterState(PARAM_DEVELOPER_MODE);
const [isUserSettingsDialogOpen, setIsUserSettingsDialogOpen] = useState(false);

const showVoltageLevelDiagram = useCallback(
// TODO code factorization for displaying a VL via a hook
(optionInfos) => {
Expand Down Expand Up @@ -112,11 +116,13 @@ const AppTopBar = ({ user, tabIndex, onChangeTab, userManager }) => {
user={user}
appsAndUrls={appsAndUrls}
onThemeClick={handleChangeTheme}
onUserSettingsClick={() => setIsUserSettingsDialogOpen(true)}
appVersion={AppPackage.version}
appLicense={AppPackage.license}
globalVersionPromise={() => fetchVersion().then((res) => res?.deployVersion)}
additionalModulesPromise={getServersInfos}
theme={themeLocal}
developerMode={enableDeveloperMode}
onEquipmentLabellingClick={handleChangeUseName}
equipmentLabelling={useNameLocal}
onLanguageClick={handleChangeLanguage}
Expand Down Expand Up @@ -182,6 +188,12 @@ const AppTopBar = ({ user, tabIndex, onChangeTab, userManager }) => {
</Box>
</Box>
)}
{isUserSettingsDialogOpen && (
<UserSettingsDialog
open={isUserSettingsDialogOpen}
onClose={() => setIsUserSettingsDialogOpen(false)}
/>
)}
</TopBar>

{studyUuid && (
Expand Down
62 changes: 0 additions & 62 deletions src/components/dialogs/parameters/network-parameters.tsx

This file was deleted.

19 changes: 5 additions & 14 deletions src/components/dialogs/parameters/parameters.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -581,27 +581,18 @@ export function useParameterState(paramName: UseParameterStateParamName) {
setParamLocalState(paramGlobalState);
}, [paramGlobalState]);

const backendupdateConfigParameterCb = useCallback(
(paramName: string, newParams: any) => {
updateConfigParameter(paramName, newParams).catch((error) => {
const handleChangeParamLocalState = useCallback(
(value: any) => {
setParamLocalState(value);
updateConfigParameter(paramName, value).catch((error) => {
setParamLocalState(paramGlobalState);
snackError({
messageTxt: error.message,
headerId: 'paramsChangingError',
});
});
},
[paramGlobalState, snackError]
);

const debouncedBackendupdateConfigParameterCb = useDebounce(backendupdateConfigParameterCb, 1000);

const handleChangeParamLocalState = useCallback(
(value: any) => {
setParamLocalState(value);
debouncedBackendupdateConfigParameterCb(paramName, value);
},
[debouncedBackendupdateConfigParameterCb, paramName]
[paramName, snackError, setParamLocalState, paramGlobalState]
);

return [paramLocalState, handleChangeParamLocalState];
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
/**
* Copyright (c) 2025, RTE (http://www.rte-france.com)
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
import { SyntheticEvent } from 'react';
import { useDispatch } from 'react-redux';
import { FormattedMessage } from 'react-intl';
import { Alert, Dialog, Switch, Button, DialogActions, DialogContent, DialogTitle, Box, Theme } from '@mui/material';
import { PARAM_DEVELOPER_MODE } from '../../../../utils/config-params';
import { useParameterState } from '../parameters';
import { selectEnableDeveloperMode } from '../../../../redux/actions';

export interface UserSettingsDialogProps {
open: boolean;
onClose: () => void;
}

export const styles = {
parameterName: (theme: Theme) => ({
fontWeight: 'bold',
marginTop: theme.spacing(1),
flexGrow: 1,
}),
controlItem: {
flexGrow: 1,
},
parameterLine: {
display: 'flex',
},
};

/**
* Dialog to display user settings
* @param open Is the dialog open ?
* @param onClose Event to close the dialog
*/
export default function UserSettingsDialog({ open, onClose }: Readonly<UserSettingsDialogProps>) {
const dispatch = useDispatch();

const [enableDeveloperMode, handleChangeEnableDeveloperMode] = useParameterState(PARAM_DEVELOPER_MODE);

const handleSwichDeveloperMode = (enabled: boolean) => {
dispatch(selectEnableDeveloperMode(enabled));
handleChangeEnableDeveloperMode(enabled);
};

const handleClose = (_: SyntheticEvent, reason?: string) => {
if (reason === 'backdropClick') {
return;
}
onClose();
};

return (
<Dialog fullWidth open={open} onClose={handleClose}>
<DialogTitle>
<FormattedMessage id="UserSettings" />
</DialogTitle>
<DialogContent>
<Box sx={styles.parameterLine}>
<Box sx={styles.parameterName}>
<FormattedMessage id="EnableDeveloperMode" />
</Box>
<Box>
<Switch
checked={enableDeveloperMode}
onChange={(_event, isChecked) => handleSwichDeveloperMode(isChecked)}
value={enableDeveloperMode}
inputProps={{ 'aria-label': 'primary checkbox' }}
/>
</Box>
</Box>
{enableDeveloperMode && (
<Alert severity="warning">
<FormattedMessage id="DeveloperModeWarningMsg" />
</Alert>
)}
</DialogContent>
<DialogActions>
<Button onClick={handleClose} variant="outlined">
<FormattedMessage id="Close" />
</Button>
</DialogActions>
</Dialog>
);
}
5 changes: 0 additions & 5 deletions src/components/parameters-tabs.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ import { ShortCircuitParameters, useGetShortCircuitParameters } from './dialogs/
import { VoltageInitParameters } from './dialogs/parameters/voltageinit/voltage-init-parameters';
import LoadFlowParameters from './dialogs/parameters/loadflow/load-flow-parameters';
import DynamicSimulationParameters from './dialogs/parameters/dynamicsimulation/dynamic-simulation-parameters';
import { NetworkParameters } from './dialogs/parameters/network-parameters';
import { SelectOptionsDialog } from 'utils/dialogs';
import {
fetchDefaultNonEvacuatedEnergyProvider,
Expand Down Expand Up @@ -137,7 +136,6 @@ enum TAB_VALUES {
nonEvacuatedEnergyParamsTabValue = 'NonEvacuatedEnergyAnalysis',
shortCircuitParamsTabValue = 'ShortCircuit',
dynamicSimulationParamsTabValue = 'DynamicSimulation',
advancedParamsTabValue = 'Advanced',
voltageInitParamsTabValue = 'VoltageInit',
networkVisualizationsParams = 'NetworkVisualizations',
}
Expand Down Expand Up @@ -300,8 +298,6 @@ const ParametersTabs: FunctionComponent<OwnProps> = (props) => {
return <DynamicSimulationParameters user={user} setHaveDirtyFields={setHaveDirtyFields} />;
case TAB_VALUES.voltageInitParamsTabValue:
return <VoltageInitParameters setHaveDirtyFields={setHaveDirtyFields} />;
case TAB_VALUES.advancedParamsTabValue:
return <NetworkParameters />;
case TAB_VALUES.networkVisualizationsParams:
return <NetworkVisualizationsParameters setHaveDirtyFields={setHaveDirtyFields} />;
}
Expand Down Expand Up @@ -379,7 +375,6 @@ const ParametersTabs: FunctionComponent<OwnProps> = (props) => {
label={<FormattedMessage id="NetworkVisualizations" />}
value={TAB_VALUES.networkVisualizationsParams}
/>
<Tab label={<FormattedMessage id="Advanced" />} value={TAB_VALUES.advancedParamsTabValue} />
</Tabs>
</Grid>
</Grid>
Expand Down
2 changes: 1 addition & 1 deletion src/translations/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -576,7 +576,7 @@
"loadingReport": "Loading logs in progress...",

"ComponentLibrary": "Component library selection",
"Advanced": "Advanced",
"UserSettings": "User settings",
"EnableDeveloperMode": "Enable developer mode",
"initNadWithGeoData": "Initialize with geographical data",
"DeveloperModeWarningMsg": "Some of the features are not complete, so they may not work as expected. To hide these features, disable developer mode",
Expand Down
2 changes: 1 addition & 1 deletion src/translations/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -578,7 +578,7 @@
"loadingReport": "Chargement des logs en cours...",

"ComponentLibrary": "Sélection de la bibliothèque de composants",
"Advanced": "Avancés",
"UserSettings": "Paramètres utilisateur",
"EnableDeveloperMode": "Activer mode développeur",
"initNadWithGeoData": "Initialiser sur base des coordonnées géographiques",
"DeveloperModeWarningMsg": "Certaines fonctionnalités ne sont pas complètes et peuvent donc ne pas fonctionner comme prévu. Pour masquer ces fonctionnalités, désactivez le mode développeur",
Expand Down
Loading