Skip to content

Commit 26b702d

Browse files
Full screen mode (#104)
Add a full screen button Signed-off-by: ChamseddineBhd <[email protected]>
1 parent a4114eb commit 26b702d

File tree

6 files changed

+50
-6
lines changed

6 files changed

+50
-6
lines changed

package-lock.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
"react-intl": "^3.11.0",
2525
"react-map-gl": "^5.2.3",
2626
"react-redux": "^7.1.3",
27+
"react-request-fullscreen": "^1.1.2",
2728
"react-router": "^5.1.2",
2829
"react-router-dom": "^5.1.2",
2930
"react-scripts": "3.3.0",

src/components/app.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ const App = () => {
8686

8787
const signInCallbackError = useSelector(state => state.signInCallbackError);
8888

89-
9089
const [userManager, setUserManager] = useState(noUserManager);
9190

9291
const [showParameters, setShowParameters] = useState(false);

src/components/top-bar.js

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
66
*/
77

8-
import React from "react";
8+
import React, {useRef, useState} from "react";
99

1010
import {FormattedMessage} from "react-intl";
1111
import {useHistory} from 'react-router-dom';
@@ -26,10 +26,13 @@ import { withStyles } from '@material-ui/core/styles';
2626
import ListItemIcon from '@material-ui/core/ListItemIcon';
2727
import ListItemText from '@material-ui/core/ListItemText';
2828
import AppsIcon from '@material-ui/icons/Apps';
29+
import FullscreenExitIcon from '@material-ui/icons/FullscreenExit';
2930

3031
import {ReactComponent as PowsyblLogo} from "../images/powsybl_logo.svg";
3132
import PropTypes from "prop-types";
3233
import {useSelector} from "react-redux";
34+
import FullscreenIcon from '@material-ui/icons/Fullscreen';
35+
import FullScreen, {fullScreenSupported} from "react-request-fullscreen";
3336

3437
const useStyles = makeStyles(() => ({
3538
grow: {
@@ -90,6 +93,12 @@ const TopBar = (props) => {
9093

9194
const [anchorElAppsMenu, setAnchorElAppsMenu] = React.useState(null);
9295

96+
const fullScreenRef = useRef(null);
97+
98+
const [isFullScreen, setIsFullScreen] = useState(false);
99+
100+
const history = useHistory();
101+
93102
const handleClickGeneralMenu = event => {
94103
setAnchorElGeneralMenu(event.currentTarget);
95104
};
@@ -105,8 +114,6 @@ const TopBar = (props) => {
105114
setAnchorElAppsMenu(null);
106115
};
107116

108-
const history = useHistory();
109-
110117
const onParametersClick = () => {
111118
handleCloseGeneralMenu();
112119
if (props.onParametersClick) {
@@ -119,8 +126,18 @@ const TopBar = (props) => {
119126
history.replace("/");
120127
};
121128

129+
function onFullScreenChange (isFullScreen) {
130+
setIsFullScreen(isFullScreen);
131+
}
132+
133+
function requestOrExitFullScreen () {
134+
fullScreenRef.current.fullScreen();
135+
}
136+
122137
return (
123138
<AppBar position="static" color="default" className={classes.appBar}>
139+
<FullScreen ref={fullScreenRef} onFullScreenChange={onFullScreenChange} onFullScreenError={(e) => console.debug("full screen error : " + e.message)}>
140+
</FullScreen>
124141
<Toolbar>
125142
<PowsyblLogo className={classes.logo} onClick={onLogoClick}/>
126143
<Typography variant="h6" className={classes.title} onClick={onLogoClick}>
@@ -184,6 +201,26 @@ const TopBar = (props) => {
184201
<FormattedMessage id="settings"/>
185202
</ListItemText>
186203
</StyledMenuItem>
204+
{
205+
fullScreenSupported() ? (
206+
<StyledMenuItem onClick={requestOrExitFullScreen}>
207+
{
208+
isFullScreen ? (<>
209+
<ListItemIcon>
210+
<FullscreenExitIcon fontSize="small" />
211+
</ListItemIcon>
212+
<ListItemText>
213+
<FormattedMessage id="exitFullScreen"/>
214+
</ListItemText> </>) : (<>
215+
<ListItemIcon>
216+
<FullscreenIcon fontSize="small" />
217+
</ListItemIcon>
218+
<ListItemText>
219+
<FormattedMessage id="goFullScreen"/>
220+
</ListItemText></>)
221+
}
222+
</StyledMenuItem>) : <></>
223+
}
187224
<StyledMenuItem onClick={props.onLogoutClick}>
188225
<ListItemIcon>
189226
<ExitToAppIcon fontSize="small" />

src/translations/en.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@
4444
"parameters": "Parameters",
4545
"theme": "Theme",
4646
"close": "Close",
47-
47+
"goFullScreen" : "Full screen",
48+
"exitFullScreen" : "Exit full screen mode",
4849
"centerOnMap": "Center on the map",
4950
"openVoltageLevel": "Open the voltage level",
5051
"CBAll" : "All",

src/translations/fr.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,11 @@
4343
"parameters": "Paramètres",
4444
"theme": "Thème",
4545
"close": "Fermer",
46+
"goFullScreen" : "Plein écran",
47+
"exitFullScreen" : "Quitter mode plein écran",
4648

4749
"centerOnMap": "Centrer sur la carte",
4850
"openVoltageLevel": "Ouvrir le poste",
4951
"CBAll" : "Tous",
5052
"CBNone" : "Aucun"
51-
5253
}

0 commit comments

Comments
 (0)