Skip to content

Commit

Permalink
Merge pull request #11 from jbud/simbreif
Browse files Browse the repository at this point in the history
simbreif integration
  • Loading branch information
jbud authored Dec 6, 2023
2 parents d4a7818 + e1d8ad0 commit 3d6104b
Show file tree
Hide file tree
Showing 5 changed files with 327 additions and 102 deletions.
243 changes: 172 additions & 71 deletions src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,40 +1,51 @@
import "./mcdu/mcdu.css";
import "./App.css";
import "./mcdu/mcduv2.css";
import './mcdu/mcdu.css';
import './App.css';
import './mcdu/mcduv2.css';

import { MouseEvent, useEffect, useState } from "react";
import { useDispatch, useSelector } from "react-redux";
import { ChangeEvent, MouseEvent, useEffect, useState } from 'react';
import { useDispatch, useSelector } from 'react-redux';

import BugReportIcon from "@mui/icons-material/BugReport";
import FlightTakeoffIcon from "@mui/icons-material/FlightTakeoff";
import ScreenRotationIcon from "@mui/icons-material/ScreenRotation";
import WifiIcon from "@mui/icons-material/Wifi";
import WifiOffIcon from "@mui/icons-material/WifiOff";
import BugReportIcon from '@mui/icons-material/BugReport';
import FlightTakeoffIcon from '@mui/icons-material/FlightTakeoff';
import PlagiarismIcon from '@mui/icons-material/Plagiarism';
import ScreenRotationIcon from '@mui/icons-material/ScreenRotation';
import WifiIcon from '@mui/icons-material/Wifi';
import WifiOffIcon from '@mui/icons-material/WifiOff';
import {
AppBar,
Backdrop,
Box,
Grid,
IconButton,
Menu,
MenuItem,
Toolbar,
Typography
} from "@mui/material";
import CssBaseline from "@mui/material/CssBaseline";
import { createTheme, ThemeProvider } from "@mui/material/styles";
AppBar,
Backdrop,
Box,
Button,
Dialog,
DialogActions,
DialogContent,
DialogContentText,
DialogTitle,
Grid,
IconButton,
Menu,
MenuItem,
TextField,
Toolbar,
Tooltip,
Typography,
} from '@mui/material';
import CssBaseline from '@mui/material/CssBaseline';
import { createTheme, ThemeProvider } from '@mui/material/styles';

import { a20n, a21nlp, a21npw, a339, Airframe } from "./airframes/index";
import Debug from "./debug/debug";
import Form from "./form/formv2";
import Mcduv2 from "./mcdu/mcduv2";
import Offline from "./offline/offline";
import { a20n, a21nlp, a21npw, a339, Airframe } from './airframes/index';
import Debug from './debug/debug';
import Form from './form/formv2';
import { getSimbreif } from './form/simbreif2';
import Mcduv2 from './mcdu/mcduv2';
import Offline from './offline/offline';
import { useLocalStorage } from './pwahooks/localstorage';
/* import useScreenOrientation from './pwahooks/screenorientation'; */
import RunwayV2 from "./runway/runwayv2";
import { setAirframe } from "./store/airframe";
import { setDebugWindow } from "./store/masterDebug";
import { RootState } from "./store/store";
import CrosswindCalc from "./wind/crosswind";
import RunwayV2 from './runway/runwayv2';
import { setAirframe } from './store/airframe';
import { debug, DebugMessage, setDebugWindow } from './store/masterDebug';
import { RootState } from './store/store';
import CrosswindCalc from './wind/crosswind';

const darkTheme = createTheme({
palette: {
Expand Down Expand Up @@ -69,14 +80,56 @@ function App() {
const [selectedAirframe, setSelectedAirframe] =
useState<Airframe>(airframeSelection);
const open = Boolean(anchorEl);

const [simbreif, setSimbreif] = useState({
icao: '',
rw: '',
tow: 0,
wunit: '',
raw: '',
});
const [openSBDialog, setOpenSBDialog] = useState(false);
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const [simUserName, setSimUsername] = useLocalStorage('SimbreifUserId', '');
const sendDebug = (formattedDebug: DebugMessage) => {
disp(debug(formattedDebug));
};
const handleClose = () => {
setAnchorEl(null);
};
const handleCloseSBDialog = () => {
setOpenSBDialog(false);
};

const handleSubmitSBDialog = async () => {
setOpenSBDialog(false);

let simbr = await getSimbreif(simUserName);
setSimbreif({
icao: simbr.icao,
rw: simbr.rw,
tow: simbr.tow,
wunit: simbr.wunit,
raw: simbr.raw,
});
const airframe = simbr.raw.aircraft.icao_code;
if (airframe === 'A339') {
changeAirframe('a339');
}
sendDebug({
title: 'Simbreif',
message: JSON.stringify(simbr),
});
};

const handleClickBug = () => {
disp(setDebugWindow(true));
};
const handleSBChangeId = (e: ChangeEvent<HTMLInputElement>) => {
setSimUsername(e.target.value);
};
const handleClickSimbreif = () => {
setOpenSBDialog(true);
};
const handleClickWifi = () => {
setOnline(!online);
};
Expand Down Expand Up @@ -179,43 +232,63 @@ function App() {
mx: '0.5em',
}}
>
<IconButton
size="medium"
edge="start"
color="inherit"
aria-label="debugMode"
onClick={handleClickBug}
sx={{
mr: '0.5em',
}}
>
<BugReportIcon />
</IconButton>
<IconButton
size="medium"
edge="start"
color="inherit"
aria-label="offlineMode"
onClick={handleClickWifi}
sx={{
mr: '0.5em',
}}
>
{online && <WifiIcon />}
{!online && <WifiOffIcon />}
</IconButton>
<IconButton
size="medium"
edge="start"
color="inherit"
aria-label="airframeSelection"
onClick={handleClickAirplane}
sx={{
mr: '0.5em',
}}
>
<FlightTakeoffIcon />
</IconButton>
<Tooltip title="Debug Info" arrow>
<IconButton
size="medium"
edge="start"
color="inherit"
aria-label="debugMode"
onClick={handleClickBug}
sx={{
mr: '0.5em',
}}
>
<BugReportIcon />
</IconButton>
</Tooltip>
<Tooltip title="Simbreif Import" arrow>
<IconButton
size="medium"
edge="start"
color="inherit"
aria-label="Simbreif Import"
onClick={handleClickSimbreif}
sx={{
mr: '0.5em',
}}
>
<PlagiarismIcon />
</IconButton>
</Tooltip>
<Tooltip title="Offline Mode (INOP)" arrow>
<IconButton
size="medium"
edge="start"
color="inherit"
aria-label="offlineMode"
onClick={handleClickWifi}
sx={{
mr: '0.5em',
}}
>
{online && <WifiIcon />}
{!online && <WifiOffIcon />}
</IconButton>
</Tooltip>
<Tooltip title="Airframe Selection" arrow>
<IconButton
size="medium"
edge="start"
color="inherit"
aria-label="airframeSelection"
onClick={handleClickAirplane}
sx={{
mr: '0.5em',
}}
>
<FlightTakeoffIcon />
</IconButton>
</Tooltip>
<Menu
id="basic-menu"
anchorEl={anchorEl}
Expand Down Expand Up @@ -311,12 +384,40 @@ function App() {
justifyContent="space-evenly"
alignItems="flex-start"
>
<Dialog open={openSBDialog} onClose={handleCloseSBDialog}>
<DialogTitle>Import From Simbreif</DialogTitle>
<DialogContent>
<DialogContentText>
Enter your simbreif username or ID to import
your current plan
</DialogContentText>
<TextField
autoFocus={true}
margin="dense"
id="name"
label="Username/ID"
type="user"
fullWidth
variant="standard"
onChange={handleSBChangeId}
value={simUserName}
/>
</DialogContent>
<DialogActions>
<Button onClick={handleCloseSBDialog}>
Cancel
</Button>
<Button onClick={handleSubmitSBDialog}>
Lookup Breifing
</Button>
</DialogActions>
</Dialog>
<Grid
sx={(theme) => ({
[theme.breakpoints.down('md')]: { order: '1' },
})}
>
<Form useMETAR={online} />
<Form useMETAR={online} simbreif={simbreif} />
</Grid>
<Grid
sx={(theme) => ({
Expand Down
36 changes: 16 additions & 20 deletions src/debug/debug.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -91,42 +91,38 @@ const Debug = () => {
};
if (isJSON(subjects[keyName].message)) {
return (
<>
<ListItem key={subjects[keyName].title + i}>
<ListItemText
key={i}
primary={subjects[keyName].title}
/>
<ReactJson
key={subjects[keyName].message + i}
src={JSON.parse(
subjects[keyName].message
)}
collapsed={true}
theme="monokai"
/>
</ListItem>
</>
<ListItem key={subjects[keyName].title + 'LIT'}>
<ListItemText
key={subjects[keyName].title}
primary={subjects[keyName].title}
/>
<ReactJson
key={subjects[keyName].message + 'RJS'}
src={JSON.parse(subjects[keyName].message)}
collapsed={true}
theme="monokai"
/>
</ListItem>
);
}
return (
<>
<ListItem key={i}>
<ListItem key={subjects[keyName].title}>
<ListItemText
key={i + subjects[keyName].title}
key={subjects[keyName].message}
primary={subjects[keyName].title}
secondary={subjects[keyName].message}
/>
</ListItem>
<Divider />
<Divider key="div" />
</>
);
})}

<ListItem>
<ListItemText
primary="T/Log"
secondary={`*Offline function in beta. *V1 version 2 now in beta.`}
secondary={`*Offline function inop. *V1 version 2 now in beta.`}
/>
</ListItem>
</List>
Expand Down
Loading

0 comments on commit 3d6104b

Please sign in to comment.