From 1c959b7a32647bb7d9ef466265cd198ab4981b7b Mon Sep 17 00:00:00 2001 From: Al Duncanson Date: Thu, 25 Oct 2018 01:09:49 -0400 Subject: [PATCH] rewrote structure for new nav --- src/App.css | 9 -- src/components/Main.js | 159 +++++++++++++++++---------- src/components/QuizGame.js | 206 ++++++++++++++++++++++++++--------- src/components/ReportForm.js | 3 +- src/pages/QuizPage.js | 10 +- 5 files changed, 261 insertions(+), 126 deletions(-) diff --git a/src/App.css b/src/App.css index 8c70ed8..00ab2de 100644 --- a/src/App.css +++ b/src/App.css @@ -2,15 +2,6 @@ body { margin: 0; } -/* #root > div > div { - overflow: scroll !important; -} */ - -div[class="ResponsiveDrawer-root-1"] { - overflow: scroll !important; - overflow-x: hidden !important; -} - @media (min-width: 960px) { .sighting-google-map-container > div { width: calc(100% - 241px) !important; diff --git a/src/components/Main.js b/src/components/Main.js index baafcb8..6473b17 100644 --- a/src/components/Main.js +++ b/src/components/Main.js @@ -20,58 +20,65 @@ import ListIcon from '@material-ui/icons/List'; import SlideshowIcon from '@material-ui/icons/Slideshow'; import Home from '../pages/Home'; import ViewMap from '../pages/ViewMap'; -import QuizPage from '../pages/QuizPage'; +import Quiz from '../pages/QuizPage'; import SightingList from '../pages/SightingList'; import Report from '../pages/Report'; +import CssBaseline from '@material-ui/core/CssBaseline'; +import ExpandLess from '@material-ui/icons/ExpandLess'; +import ExpandMore from '@material-ui/icons/ExpandMore'; +import Collapse from '@material-ui/core/Collapse'; const drawerWidth = 240; const styles = theme => ({ root: { - flexGrow: 1, - height: '100vh', - zIndex: 1, - overflow: 'hidden', - position: 'relative', display: 'flex', - width: '100%', + }, + drawer: { + [theme.breakpoints.up('sm')]: { + width: drawerWidth, + flexShrink: 0, + }, + }, + nested: { + paddingLeft: theme.spacing.unit * 4, }, appBar: { - position: 'absolute', marginLeft: drawerWidth, - [theme.breakpoints.up('md')]: { + [theme.breakpoints.up('sm')]: { width: `calc(100% - ${drawerWidth}px)`, }, }, - navIconHide: { - [theme.breakpoints.up('md')]: { + menuButton: { + marginRight: 20, + [theme.breakpoints.up('sm')]: { display: 'none', }, }, toolbar: theme.mixins.toolbar, drawerPaper: { width: drawerWidth, - [theme.breakpoints.up('md')]: { - position: 'relative', - }, }, content: { - flexGrow: 1, - backgroundColor: theme.palette.background.default, - padding: theme.spacing.unit * 3, + flexGrow: 1 }, }); class ResponsiveDrawer extends React.Component { state = { mobileOpen: false, - key: '' - } + key: '', + open: false + }; handleDrawerToggle = () => { this.setState(state => ({ mobileOpen: !state.mobileOpen })); } + handleClick = () => { + this.setState(state => ({ open: !state.open })); + } + nav = (text) => { this.setState({ key: text @@ -87,79 +94,114 @@ class ResponsiveDrawer extends React.Component { this.nav('Home')}> - + this.nav('Report')}> - + this.nav('Map')}> - + this.nav('List')}> - + - this.nav('Quiz')}> - - + + + + + + {this.state.open ? : } + + + this.nav('Easy-Quiz')}> + + + + + + this.nav('Medium-Quiz')}> + + + + + + this.nav('Hard-Quiz')}> + + + + + + + + ); return (
- + + - + The American Marten - - - {drawer} - - - - - {drawer} - - + +
{this.state.key === 'Home' && } {this.state.key === 'Report' && } {this.state.key === 'Map' && } {this.state.key === 'List' && } - {this.state.key === 'Quiz' && } + {this.state.key === 'Easy-Quiz' && } + {this.state.key === 'Medium-Quiz' && } + {this.state.key === 'Hard-Quiz' && } +
); } @@ -167,6 +209,9 @@ class ResponsiveDrawer extends React.Component { ResponsiveDrawer.propTypes = { classes: PropTypes.object.isRequired, + // Injected by the documentation to work in an iframe. + // You won't need it on your project. + container: PropTypes.object, theme: PropTypes.object.isRequired, }; diff --git a/src/components/QuizGame.js b/src/components/QuizGame.js index b620991..bbfe640 100644 --- a/src/components/QuizGame.js +++ b/src/components/QuizGame.js @@ -2,10 +2,6 @@ import React, { Fragment } from 'react'; import Grid from '@material-ui/core/Grid'; import PropTypes from 'prop-types'; import { withStyles } from '@material-ui/core/styles'; -import Typography from '@material-ui/core/Typography'; -import AppBar from '@material-ui/core/AppBar'; -import Tabs from '@material-ui/core/Tabs'; -import Tab from '@material-ui/core/Tab'; import Quiz from 'react-quiz-component'; /** @@ -23,42 +19,17 @@ function shuffleArray(array) { return array; } -function TabContainer(props) { - return ( - - {props.children} - - ); -} - -TabContainer.propTypes = { - children: PropTypes.node.isRequired, -}; - // Style for the tabs. const styles = theme => ({ root: { flexGrow: 1, backgroundColor: theme.palette.background.paper, - marginTop: '64px', - overflow: 'scroll', - height: '95%', }, }); class QuizGame extends React.Component { - // The state of the component. - state = { - value: 0, - }; - // Handles tab changes. - handleChange = (event, value) => { - this.setState({ value }); - }; - - // Object that contains the easy quiz material. - easyQuiz = { + easy = { "quizTitle": "Trail Cam Quiz: Easy", "questions": shuffleArray([ { @@ -117,37 +88,166 @@ class QuizGame extends React.Component { "correctAnswer": "3" }, ]) - }; + } + + medium = { + "quizTitle": "Trail Cam Quiz: Medium", + "questions": shuffleArray([ + { + "question": What animal is this?

, + "questionType": "text", + "answers": [ + "Black bear", + "Common wombat", + "Raccoon", + "White-tailed deer" + ], + "correctAnswer": "1" + }, + { + "question": What animal is this?

, + "questionType": "text", + "answers": [ + "American beaver", + "Muskrat", + "Porcupine", + "Woodchuck" + ], + "correctAnswer": "3" + }, + { + "question": What animal is this?

, + "questionType": "text", + "answers": [ + "American badger", + "Raccoon", + "Striped skunk", + "Virginia opossum" + ], + "correctAnswer": "2" + }, + { + "question": What animal is this?

, + "questionType": "text", + "answers": [ + "Eastern fox squirrel", + "Eastern gray squirrel", + "Red squirrel", + "Southern flying squirrel" + ], + "correctAnswer": "3" + }, + { + "question": What animal is this?

, + "questionType": "text", + "answers": [ + "American Crow", + "Black Vulture", + "Turkey Vulture", + "Northern Raven" + ], + "correctAnswer": "3" + }, + ]) + } + + hard = { + "quizTitle": "Trail Cam Quiz: Hard", + "questions": shuffleArray([ + { + "question": What animal is this?

, + "questionType": "text", + "answers": [ + "Black bear", + "Common wombat", + "Raccoon", + "White-tailed deer" + ], + "correctAnswer": "1" + }, + { + "question": What animal is this?

, + "questionType": "text", + "answers": [ + "American beaver", + "Muskrat", + "Porcupine", + "Woodchuck" + ], + "correctAnswer": "3" + }, + { + "question": What animal is this?

, + "questionType": "text", + "answers": [ + "American badger", + "Raccoon", + "Striped skunk", + "Virginia opossum" + ], + "correctAnswer": "2" + }, + { + "question": What animal is this?

, + "questionType": "text", + "answers": [ + "Eastern fox squirrel", + "Eastern gray squirrel", + "Red squirrel", + "Southern flying squirrel" + ], + "correctAnswer": "3" + }, + { + "question": What animal is this?

, + "questionType": "text", + "answers": [ + "American Crow", + "Black Vulture", + "Turkey Vulture", + "Northern Raven" + ], + "correctAnswer": "3" + }, + ]) + } + + pickDifficulty = difficulty => { + let level + + switch (difficulty) { + case 'Easy': + level = this.easy + break + case 'Medium': + level = this.medium + break + case 'Hard': + level = this.hard + break + default: + break + } + + return level + } + + // The state of the component. + state = { + //difficulty: pickDifficulty(this.props.difficulty) + difficulty: this.pickDifficulty(this.props.difficulty) + } // Renders the quiz component. render() { const { classes } = this.props; - const { value } = this.state; return ( // Tabs
- - - - - - - - {value === 0 && - - - - - - } - {value === 1 && Medium Quiz} - {value === 2 && Hard Quiz} + + +
); } diff --git a/src/components/ReportForm.js b/src/components/ReportForm.js index 7e7d0c0..9815843 100644 --- a/src/components/ReportForm.js +++ b/src/components/ReportForm.js @@ -16,8 +16,7 @@ import GoogleMap from '../components/ReportMap'; const styles = theme => ({ container: { display: 'flex', - flexWrap: 'wrap', - marginTop: '64px' + flexWrap: 'wrap' }, textField: { marginLeft: theme.spacing.unit * 2, diff --git a/src/pages/QuizPage.js b/src/pages/QuizPage.js index 4c36a98..9422b7b 100644 --- a/src/pages/QuizPage.js +++ b/src/pages/QuizPage.js @@ -3,11 +3,11 @@ import QuizGame from '../components/QuizGame'; class QuizPage extends Component { - render() { - return ( - - ); - } + render() { + return ( + + ); + } } export default QuizPage;