update dna and panel controls
This commit is contained in:
46
src/App.js
46
src/App.js
@@ -18,7 +18,7 @@ import ConnectionIndicators from './ConnectionIndicators';
|
|||||||
import DnsIcon from '@mui/icons-material/Dns';
|
import DnsIcon from '@mui/icons-material/Dns';
|
||||||
import LanIcon from '@mui/icons-material/Lan';
|
import LanIcon from '@mui/icons-material/Lan';
|
||||||
import CompactSidebar from './CompactSidebar';
|
import CompactSidebar from './CompactSidebar';
|
||||||
import DNAServerModal from './DNAServerModal';
|
import DynamicNodeIdServer from './services/DynamicNodeIdServer';
|
||||||
|
|
||||||
window.mavlinkSession = new MavlinkSession();
|
window.mavlinkSession = new MavlinkSession();
|
||||||
window.localNode = new dronecan.Node({name: "com.vimdrones.web_gui"});
|
window.localNode = new dronecan.Node({name: "com.vimdrones.web_gui"});
|
||||||
@@ -43,25 +43,26 @@ const App = () => {
|
|||||||
const [snackbarMessage, setSnackbarMessage] = useState('');
|
const [snackbarMessage, setSnackbarMessage] = useState('');
|
||||||
const [snackbarSeverity, setSnackbarSeverity] = useState('info');
|
const [snackbarSeverity, setSnackbarSeverity] = useState('info');
|
||||||
const [selectedBus, setSelectedBus] = useState(0);
|
const [selectedBus, setSelectedBus] = useState(0);
|
||||||
const [dnaModalOpen, setDnaModalOpen] = useState(false);
|
|
||||||
const [dnaServerActive, setDnaServerActive] = useState(false);
|
const [dnaServerActive, setDnaServerActive] = useState(false);
|
||||||
|
|
||||||
const openWindow = (windowTitle, windowPath, windowSize) => {
|
const openWindow = (windowTitle, windowPath, windowSize) => {
|
||||||
if (subWindowRef[windowPath]) {
|
if (subWindowRef[windowPath] && !subWindowRef[windowPath].closed) {
|
||||||
subWindowRef[windowPath].focus();
|
subWindowRef[windowPath].focus();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const newWindow = window.open(windowPath, windowTitle, windowSize);
|
const newWindow = window.open(windowPath, windowTitle, windowSize);
|
||||||
if (newWindow) {
|
if (newWindow) {
|
||||||
subWindowRef[windowPath] = newWindow;
|
setSubWindowRef((prev) => ({ ...prev, [windowPath]: newWindow }));
|
||||||
setSubWindowRef(subWindowRef);
|
|
||||||
|
|
||||||
newWindow.addEventListener('beforeunload', () => {
|
newWindow.addEventListener('beforeunload', () => {
|
||||||
subWindowRef[windowPath] = null;
|
setSubWindowRef((prev) => {
|
||||||
setSubWindowRef(subWindowRef);
|
const next = { ...prev };
|
||||||
|
delete next[windowPath];
|
||||||
|
return next;
|
||||||
|
});
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
console.error(`Main: Failed to open ${windowName}`);
|
console.error(`Main: Failed to open ${windowTitle}`);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -106,18 +107,24 @@ const App = () => {
|
|||||||
setModalOpen(true);
|
setModalOpen(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleCloseModal = (serverRunning) => {
|
const handleCloseModal = () => {
|
||||||
setModalOpen(false);
|
setModalOpen(false);
|
||||||
setDnaServerActive(serverRunning);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleOpenDnaModal = () => {
|
const handleToggleDnaServer = () => {
|
||||||
setDnaModalOpen(true);
|
if (!window.dnaServer) {
|
||||||
};
|
window.dnaServer = new DynamicNodeIdServer(window.localNode);
|
||||||
|
}
|
||||||
|
|
||||||
const handleCloseDnaModal = (serverRunning) => {
|
if (window.dnaServer.getStatus().isActive) {
|
||||||
setDnaModalOpen(false);
|
window.dnaServer.stop();
|
||||||
setDnaServerActive(serverRunning);
|
setDnaServerActive(false);
|
||||||
|
showMessage('DNA server stopped', 'info');
|
||||||
|
} else {
|
||||||
|
const success = window.dnaServer.start(1, 125);
|
||||||
|
setDnaServerActive(success);
|
||||||
|
showMessage(success ? 'DNA server started' : 'Failed to start DNA server', success ? 'success' : 'error');
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -190,7 +197,7 @@ const App = () => {
|
|||||||
}} /> :
|
}} /> :
|
||||||
<DnsIcon />
|
<DnsIcon />
|
||||||
}
|
}
|
||||||
onClick={handleOpenDnaModal}
|
onClick={handleToggleDnaServer}
|
||||||
sx={dnaServerActive ? {
|
sx={dnaServerActive ? {
|
||||||
borderColor: 'success.main',
|
borderColor: 'success.main',
|
||||||
'&:hover': {
|
'&:hover': {
|
||||||
@@ -277,11 +284,6 @@ const App = () => {
|
|||||||
selectedBus={selectedBus}
|
selectedBus={selectedBus}
|
||||||
onBusChange={handleBusChange}
|
onBusChange={handleBusChange}
|
||||||
/>
|
/>
|
||||||
<DNAServerModal
|
|
||||||
open={dnaModalOpen}
|
|
||||||
onClose={handleCloseDnaModal}
|
|
||||||
showMessage={showMessage.bind(this)}
|
|
||||||
/>
|
|
||||||
<Snackbar
|
<Snackbar
|
||||||
open={snackbarOpen}
|
open={snackbarOpen}
|
||||||
autoHideDuration={6000}
|
autoHideDuration={6000}
|
||||||
|
|||||||
Reference in New Issue
Block a user