diff --git a/src/components/Main.js b/src/components/Main.js
index deb0343..2bf188f 100644
--- a/src/components/Main.js
+++ b/src/components/Main.js
@@ -70,7 +70,7 @@ const styles = theme => ({
class ResponsiveDrawer extends React.Component {
state = {
mobileOpen: false,
- key: '',
+ key: 'Home',
open: false
};
@@ -85,7 +85,7 @@ class ResponsiveDrawer extends React.Component {
nav = (text) => {
this.setState({
key: text
- })
+ });
}
render() {
@@ -195,10 +195,13 @@ class ResponsiveDrawer extends React.Component {
{this.state.key === 'Report' && }
{this.state.key === 'Map' && }
{this.state.key === 'List' && }
- {this.state.key === 'Info' && }
+ {this.state.key === 'About' && }
{this.state.key === 'Easy-Quiz' && }
{this.state.key === 'Medium-Quiz' && }
{this.state.key === 'Hard-Quiz' && }
+ {this.state.key === 'Easy-Quiz' && }
+ {this.state.key === 'Medium-Quiz' && }
+ {this.state.key === 'Hard-Quiz' && }
);
diff --git a/src/components/QuizGame.js b/src/components/QuizGame.js
index 1339978..88f8bbe 100644
--- a/src/components/QuizGame.js
+++ b/src/components/QuizGame.js
@@ -239,33 +239,33 @@ class QuizGame extends React.Component {
* @param {*} difficulty The difficulty setting passed in.
*/
pickDifficulty = difficulty => {
- let level
+ let level;
switch (difficulty) {
case 'Easy':
- this.easy.questions = this.shuffleArray(this.easy.questions)
- level = this.easy
- break
+ this.easy.questions = this.shuffleArray(this.easy.questions);
+ level = this.easy;
+ break;
case 'Medium':
- this.medium.questions = this.shuffleArray(this.medium.questions)
- level = this.medium
- break
+ this.medium.questions = this.shuffleArray(this.medium.questions);
+ level = this.medium;
+ break;
case 'Hard':
- this.hard.questions = this.shuffleArray(this.hard.questions)
- level = this.hard
- break
+ this.hard.questions = this.shuffleArray(this.hard.questions);
+ level = this.hard;
+ break;
default:
- break
+ break;
}
- return level
+ return level;
}
// The state of the component.
state = {
difficulty: this.pickDifficulty(this.props.difficulty),
key: Math.random()
- }
+ };
// Renders the quiz component.
render() {
diff --git a/src/components/ReportForm.js b/src/components/ReportForm.js
index 9068eec..9057b89 100644
--- a/src/components/ReportForm.js
+++ b/src/components/ReportForm.js
@@ -11,6 +11,8 @@ import CloseIcon from '@material-ui/icons/Close';
import Button from '@material-ui/core/Button';
import firebase from '../firebase.js';
import GoogleMap from '../components/ReportMap';
+import Modal from '@material-ui/core/Modal';
+import Typography from '@material-ui/core/Typography';
/**
* Styles that the different
@@ -18,39 +20,46 @@ import GoogleMap from '../components/ReportMap';
* in. Mostly used for spacing.
*/
const styles = theme => ({
- container: {
- display: 'flex',
- flexWrap: 'wrap'
- },
- textField: {
- marginLeft: theme.spacing.unit * 2,
- marginRight: theme.spacing.unit,
- marginTop: theme.spacing.unit * 2,
- flexBasis: 280,
- width: '90%'
- },
- button: {
- marginLeft: theme.spacing.unit * 2,
- marginRight: theme.spacing.unit,
- marginTop: theme.spacing.unit * 2,
- },
- dense: {
- marginTop: 30,
- },
- close: {
- padding: theme.spacing.unit / 2,
- },
- icon: {
- fontSize: 20,
- marginRight: theme.spacing.unit,
- },
- message: {
- display: 'flex',
- alignItems: 'center',
- },
- menu: {
- width: 200,
- },
+ container: {
+ display: 'flex',
+ flexWrap: 'wrap'
+ },
+ textField: {
+ marginLeft: theme.spacing.unit * 2,
+ marginRight: theme.spacing.unit,
+ marginTop: theme.spacing.unit * 2,
+ flexBasis: 280,
+ width: '90%'
+ },
+ button: {
+ marginLeft: theme.spacing.unit * 2,
+ marginRight: theme.spacing.unit,
+ marginTop: theme.spacing.unit * 2,
+ },
+ dense: {
+ marginTop: 30,
+ },
+ close: {
+ padding: theme.spacing.unit / 2,
+ },
+ icon: {
+ fontSize: 20,
+ marginRight: theme.spacing.unit,
+ },
+ message: {
+ display: 'flex',
+ alignItems: 'center',
+ },
+ menu: {
+ width: 200,
+ },
+ paper: {
+ position: 'absolute',
+ width: theme.spacing.unit * 50,
+ backgroundColor: theme.palette.background.paper,
+ boxShadow: theme.shadows[5],
+ padding: theme.spacing.unit * 4,
+ }
});
/**
@@ -59,30 +68,30 @@ const styles = theme => ({
* what is stored in the database.
*/
const sightingTypes = [
- {
- value: 'visual',
- label: 'Visual',
- },
- {
- value: 'roadkill',
- label: 'Roadkill',
- },
- {
- value: 'trapped',
- label: 'Trapped',
- },
- {
- value: 'viewed_tracks',
- label: 'Viewed Tracks',
- },
- {
- value: 'photo',
- label: 'Photo',
- },
- {
- value: 'other',
- label: 'Other',
- },
+ {
+ value: 'visual',
+ label: 'Visual',
+ },
+ {
+ value: 'roadkill',
+ label: 'Roadkill',
+ },
+ {
+ value: 'trapped',
+ label: 'Trapped',
+ },
+ {
+ value: 'viewed_tracks',
+ label: 'Viewed Tracks',
+ },
+ {
+ value: 'photo',
+ label: 'Photo',
+ },
+ {
+ value: 'other',
+ label: 'Other',
+ },
];
/**
@@ -91,54 +100,54 @@ const sightingTypes = [
* what is stored in the database.
*/
const monthTypes = [
- {
- value: '01',
- label: 'January',
- },
- {
- value: '02',
- label: 'February',
- },
- {
- value: '03',
- label: 'March',
- },
- {
- value: '04',
- label: 'April',
- },
- {
- value: '05',
- label: 'May',
- },
- {
- value: '06',
- label: 'June',
- },
- {
- value: '07',
- label: 'July',
- },
- {
- value: '08',
- label: 'August',
- },
- {
- value: '09',
- label: 'September',
- },
- {
- value: '10',
- label: 'October',
- },
- {
- value: '11',
- label: 'November',
- },
- {
- value: '12',
- label: 'December',
- },
+ {
+ value: '01',
+ label: 'January',
+ },
+ {
+ value: '02',
+ label: 'February',
+ },
+ {
+ value: '03',
+ label: 'March',
+ },
+ {
+ value: '04',
+ label: 'April',
+ },
+ {
+ value: '05',
+ label: 'May',
+ },
+ {
+ value: '06',
+ label: 'June',
+ },
+ {
+ value: '07',
+ label: 'July',
+ },
+ {
+ value: '08',
+ label: 'August',
+ },
+ {
+ value: '09',
+ label: 'September',
+ },
+ {
+ value: '10',
+ label: 'October',
+ },
+ {
+ value: '11',
+ label: 'November',
+ },
+ {
+ value: '12',
+ label: 'December',
+ },
];
/**
@@ -147,26 +156,26 @@ const monthTypes = [
* what is stored in the database.
*/
const timeTypes = [
- {
- value: 'unknown',
- label: 'Unknown',
- },
- {
- value: 'morning',
- label: 'Morning',
- },
- {
- value: 'midday',
- label: 'Midday',
- },
- {
- value: 'evening',
- label: 'Evening',
- },
- {
- value: 'night',
- label: 'Night',
- },
+ {
+ value: 'unknown',
+ label: 'Unknown',
+ },
+ {
+ value: 'morning',
+ label: 'Morning',
+ },
+ {
+ value: 'midday',
+ label: 'Midday',
+ },
+ {
+ value: 'evening',
+ label: 'Evening',
+ },
+ {
+ value: 'night',
+ label: 'Night',
+ },
];
/**
@@ -175,349 +184,379 @@ const timeTypes = [
* what is stored in the database.
*/
const confidenceLevels = [
- {
- value: '1',
- label: '1 - Strongly disagree',
- },
- {
- value: '2',
- label: '2 - Disagree',
- },
- {
- value: '3',
- label: '3 - Neutral',
- },
- {
- value: '4',
- label: '4 - Agree',
- },
- {
- value: '5',
- label: '5 - Strongly agree',
- },
+ {
+ value: '1',
+ label: '1 - Strongly disagree',
+ },
+ {
+ value: '2',
+ label: '2 - Disagree',
+ },
+ {
+ value: '3',
+ label: '3 - Neutral',
+ },
+ {
+ value: '4',
+ label: '4 - Agree',
+ },
+ {
+ value: '5',
+ label: '5 - Strongly agree',
+ },
];
/**
* The form component.
*/
class ReportForm extends React.Component {
- /**
- * Component contructor. Currently
- * only used to bind event
- * handlers.
- */
- constructor() {
- super();
- this.handleSubmit = this.handleSubmit.bind(this);
- }
-
- /**
- * Function for formatting the
- * year as a string that
- * Material UI can use.
- * @param {*} date, Date passed in.
- */
- getYear = date => {
- var d = new Date(date),
- year = d.getFullYear();
-
- return year;
-}
-
-/**
-* Function for formatting the
-* month as a string that
-* Material UI can use.
-* @param {*} date, Date passed in.
-*/
-getMonth = date => {
- var d = new Date(date),
- month = d.getMonth() + 1;
-
- month = month.toString();
-
- if (month.length === 1) {
- month = "0" + month;
- }
-
- return month;
-}
-
- /**
- * State of form components.
- */
- state = {
- month: this.getMonth(new Date()),
- year: this.getYear(new Date()),
- time: 'unknown',
- type: 'visual',
- confidence: '1',
- desc: '',
- lat: '',
- lng: '',
- open: false
- };
-
- /**
- * Handles state change in form
- * components.
- */
- handleChange = name => event => {
- this.setState({
- [name]: event.target.value,
- });
- };
-
- /**
- * Handles closing the toast.
- */
- handleClose = (event, reason) => {
- if (reason === 'clickaway') {
- return;
+ /**
+ * Component contructor. Currently
+ * only used to bind event
+ * handlers.
+ */
+ constructor() {
+ super();
+ this.handleSubmit = this.handleSubmit.bind(this);
}
- this.setState({ open: false });
- };
-
- /*
- * Get the coordinates
- *
- */
- getCoordinates = (lat, lng) => {
- let latitude = lat;
- let longitude = lng;
-
- this.setState({
- lat: latitude,
- lng: longitude
- });
- }
-
- /**
- * Event listener for form.
- * When the form is submitted,
- * this function passes the
- * data along to Firebase.
- */
- handleSubmit(e) {
- e.preventDefault();
- const sightingsRef = firebase.database().ref('sightings');
- const sighting = {
- type: this.state.type,
- confidence: this.state.confidence,
- date: this.state.year + '-' + this.state.month,
- time: this.state.time,
- desc: this.state.desc,
- lat: this.state.lat,
- lng: this.state.lng
- }
- sightingsRef.push(sighting);
- this.setState({
- year: this.getYear(new Date()),
- month: this.getMonth(new Date()),
- time: 'unknown',
- type: 'visual',
- confidence: '1',
- desc: '',
- lat: '',
- lng: '',
- open: true
- });
- };
-
-
- /**
- * The render method for this component.
- */
- render() {
- const { classes } = this.props;
-
/**
- * The actual form.
+ * Function for formatting the
+ * year as a string that
+ * Material UI can use.
+ * @param {*} date, Date passed in.
+ */
+ getYear = date => {
+ var d = new Date(date),
+ year = d.getFullYear();
+
+ return year;
+ }
+
+ /**
+ * Function for formatting the
+ * month as a string that
+ * Material UI can use.
+ * @param {*} date, Date passed in.
+ */
+ getMonth = date => {
+ var d = new Date(date),
+ month = d.getMonth() + 1;
+
+ month = month.toString();
+
+ if (month.length === 1) {
+ month = "0" + month;
+ }
+
+ return month;
+ }
+
+ /**
+ * State of form components.
*/
- return (
-
-
- Report received.}
- action={[
-
-
- ,
- ]}
- />
-
- );
- }
+ this.setState({ open: false });
+ };
+
+ /*
+ * Get the coordinates
+ *
+ */
+ getCoordinates = (lat, lng) => {
+ let latitude = lat;
+ let longitude = lng;
+
+ this.setState({
+ lat: latitude,
+ lng: longitude
+ });
+ }
+
+ /**
+ * Event listener for form.
+ * When the form is submitted,
+ * this function passes the
+ * data along to Firebase.
+ */
+ handleSubmit(e) {
+ e.preventDefault();
+ const sightingsRef = firebase.database().ref('sightings');
+ const sighting = {
+ type: this.state.type,
+ confidence: this.state.confidence,
+ date: this.state.year + '-' + this.state.month,
+ time: this.state.time,
+ desc: this.state.desc,
+ lat: this.state.lat,
+ lng: this.state.lng
+ }
+ sightingsRef.push(sighting);
+ this.setState({
+ year: this.getYear(new Date()),
+ month: this.getMonth(new Date()),
+ time: 'unknown',
+ type: 'visual',
+ confidence: '1',
+ desc: '',
+ lat: '',
+ lng: '',
+ open: true
+ });
+ };
+
+
+ /**
+ * The render method for this component.
+ */
+ render() {
+ const { classes } = this.props;
+
+ /**
+ * The actual form.
+ */
+ return (
+
+
+ Report received.}
+ action={[
+
+
+ ,
+ ]}
+ />
+
+ );
+ }
}
ReportForm.propTypes = {
- classes: PropTypes.object.isRequired,
+ classes: PropTypes.object.isRequired,
};
export default withStyles(styles)(ReportForm);
\ No newline at end of file
diff --git a/src/components/ReportMap.js b/src/components/ReportMap.js
index 882a49f..f4848ee 100644
--- a/src/components/ReportMap.js
+++ b/src/components/ReportMap.js
@@ -9,7 +9,7 @@ const API_KEY = 'AIzaSyAZ_0J01bA6wCbIPK4UBq2RUBC-hIqG4mM';
const mapStyles = {
width: '100%',
height: '100%'
-}
+};
export class MapContainer extends Component {
@@ -18,22 +18,22 @@ export class MapContainer extends Component {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition((position) => {
this.setState({
- myLatLng: {
- lat: position.coords.latitude,
- lng: position.coords.longitude
- }
+ myLatLng: {
+ lat: position.coords.latitude,
+ lng: position.coords.longitude
}
+ }
);
})
} else {
// If browser doesn't support geolocation or if user does not allow it,
// center map on Grand Rapids, Michigan
this.setState({
- myLatLng: {
- lat: 42.9634,
- lng: 85.6681
- }
+ myLatLng: {
+ lat: 42.9634,
+ lng: 85.6681
}
+ }
);
}
}
@@ -52,7 +52,7 @@ export class MapContainer extends Component {
showingInfoWindow: true
});
}
-
+
// When the user clicks on the map, if a info window is visible then close it
// and 'unactive' that marker
onMapClick = (props, map, e) => {
@@ -68,13 +68,13 @@ export class MapContainer extends Component {
lat: e.latLng.lat(),
lng: e.latLng.lng()
}
- })
+ });
let lat = e.latLng.lat();
- let lng = e.latLng.lng();
+ let lng = e.latLng.lng();
if (this.props.onClick) {
- this.props.onClick(lat,lng);
+ this.props.onClick(lat, lng);
}
}
@@ -98,36 +98,36 @@ export class MapContainer extends Component {
return (
// Render the Google Map, Marker, and InfoWindow components
-
+