import React from "react"; import { ButtonGroup, Button, Slider, Select, ListSubheader, MenuItem as SelectItem, Typography, Switch, Grid, IconButton } from "@material-ui/core"; import { useDispatch, useSelector } from "react-redux"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faPlay, faStop, faRedo, faFastForward, faPause } from "@fortawesome/free-solid-svg-icons"; import { MenuSection } from "./MenuSection"; import { MenuItem } from "./MenuItem"; import { useAlgorithmInfo } from "../hooks"; import * as actions from "../store/actions"; import * as selectors from "../store/selectors"; export const MenuSolverControls = ({ onStart, onPause, onUnPause, onFullSpeed, onStop }) => { const dispatch = useDispatch(); const algorithms = useAlgorithmInfo(); const selectedAlgorithm = useSelector(selectors.selectAlgorithm); const delay = useSelector(selectors.selectDelay); const evaluatingDetailLevel = useSelector( selectors.selectEvaluatingDetailLevel ); const maxEvaluatingDetailLevel = useSelector( selectors.selectMaxEvaluatingDetailLevel ); const showBestPath = useSelector(selectors.selectShowBestPath); const running = useSelector(selectors.selectRunning); const fullSpeed = useSelector(selectors.selectFullSpeed); const paused = useSelector(selectors.selectPaused); const definingPoints = useSelector(selectors.selectDefiningPoints); const onAlgorithmChange = event => { event.persist(); onStop(); const solverKey = event.target.value; const { defaults } = algorithms.find(alg => alg.solverKey === solverKey); dispatch(actions.setAlgorithm(solverKey, defaults)); }; const onDelayChange = (_, newDelay) => { dispatch(actions.setDelay(newDelay)); }; const onEvaluatingDetailLevelChange = (onLevel, offLevel) => event => { const level = event.target.checked ? onLevel : offLevel; dispatch(actions.setEvaluatingDetailLevel(level)); }; const onShowBestPathChange = event => { dispatch(actions.setShowBestPath(event.target.checked)); }; const onReset = () => { onStop(); dispatch(actions.resetSolverState()); }; const onShowAlgInfo = () => { dispatch(actions.toggleAlgInfoOpen()); }; return ( <> ); };