Skip to content

Commit 4f7566a

Browse files
Merge pull request #13 from bu-else/feature/start_tests
Feature/start tests
2 parents 1f6152f + 5f2971e commit 4f7566a

File tree

12 files changed

+2441
-600
lines changed

12 files changed

+2441
-600
lines changed

README.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,26 @@ A website and user system starter.
55

66
[![Build Status](https://travis-ci.org/jedireza/aqua.svg?branch=master)](https://travis-ci.org/jedireza/aqua)
77

8+
## How To:
9+
10+
# CAT Platform
11+
12+
1. Clone git repo, master branch
13+
2. Run a mongod instance
14+
3. ’npm start’ to start device on local host + port number
15+
4. Enable [cross-origin resource sharing](https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?utm_source=gmail)
16+
5. Sign up by creating an account
17+
6. You will receive an email from our server
18+
7. Click ’Start New’ to begin assessment
19+
1. Main code in *client/pages/account/assessments/index.jsx*, uses API calls from *client/pages/account/testapi.jsx*
20+
8. If you log out , and sign back in, click email to reset password
21+
9. Update your information or reset your password directly when signed in.
22+
23+
# Based on the Aqua Framework
24+
*description below*
25+
26+
27+
828

929
## Features
1030

client/pages/account/app.jsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ const NotFound = require('./not-found.jsx');
66
const React = require('react');
77
const ReactRouter = require('react-router-dom');
88
const Settings = require('./settings/index.jsx');
9+
const Assess = require('./assessments/index.jsx');
10+
const Pending = require('./pending/index.jsx');
11+
const Results = require('./results/index.jsx');
912

1013

1114
const Route = ReactRouter.Route;
@@ -20,6 +23,9 @@ const App = (
2023
<Switch>
2124
<Route path="/account" exact component={Home} />
2225
<Route path="/account/settings" exact component={Settings} />
26+
<Route path="/assessments" exact component={Assess} />
27+
<Route path="/pending" exact component={Pending} />
28+
<Route path="/results" exact component={Results} />
2329

2430
<Route component={NotFound} />
2531
</Switch>
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
'use strict';
2+
const React = require('react');
3+
const ReactHelmet = require('react-helmet');
4+
//const Button = require('react-bootstrap/lib/Button');
5+
const ButtonToolbar = require('react-bootstrap/lib/ButtonToolbar');
6+
//const ButtonGroup = require('react-bootstrap/lib/ButtonGroup');
7+
const DropdownButton = require('react-bootstrap/lib/DropdownButton');
8+
const MenuItem = require('react-bootstrap/lib/MenuItem');
9+
const Helmet = ReactHelmet.Helmet;
10+
const TestAPI = require('../testapi');
11+
const url = 'http://128.31.24.189:8001/api/survey/start/';
12+
const fetch = require('fetch-api');
13+
const axios = require('axios');
14+
15+
class AssessPage extends React.Component {
16+
17+
constructor(props) {
18+
super(props);
19+
20+
}
21+
22+
render() {
23+
24+
const buttonsInstance = (
25+
<ButtonToolbar>
26+
<DropdownButton title="Dropdown" id="bg-nested-dropdown">
27+
<MenuItem eventKey="1">Dr</MenuItem>
28+
<MenuItem eventKey="2">Dropdown link</MenuItem>
29+
</DropdownButton>
30+
</ButtonToolbar>
31+
32+
);
33+
34+
35+
36+
return (
37+
<section className="section-about container">
38+
<Helmet>
39+
<title>Start Assessment</title>
40+
</Helmet>
41+
<div className="row">
42+
<div className="col-sm-6">
43+
<h1 className="page-header">Take an assessment</h1>
44+
<div>
45+
<h4>Instructions</h4>
46+
<li>Select List Forms to display available instruments.</li>
47+
<li>Select an instrument and then click the 'Order Form' button to order the instrument.</li>
48+
<li>Click the 'Administer Form' button to start the assessment.</li>
49+
<li>Refresh page to try another instrument.</li>
50+
<li>The 'Display Form' button will preview an instrument (display all items in the instrument).</li>
51+
</div>
52+
{/*<div className="buttonsInstance">{buttonsInstance}</div>*/}
53+
54+
{/*TestAPI component is a child of Index component*/}
55+
<TestAPI/>
56+
57+
</div>
58+
59+
<hr />
60+
</div>
61+
</section>
62+
);
63+
}
64+
}
65+
66+
67+
module.exports = AssessPage;

client/pages/account/navbar.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,10 @@ class Navbar extends React.Component {
7575
<li className={this.classForPath('/assessments')}>
7676
<Link to="/assessments">Start New</Link>
7777
</li>
78-
<li className={this.classForPath('/pending')}>
78+
<li className={this.classForPath('/account/pending')}>
7979
<Link to="/pending">Pending Tests</Link>
8080
</li>
81-
<li className={this.classForPath('/results')}>
81+
<li className={this.classForPath('/account/results')}>
8282
<Link to="/results">Test Results</Link>
8383
</li>
8484
</ul>
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const ReactHelmet = require('react-helmet');
66
const Helmet = ReactHelmet.Helmet;
77

88

9-
class AssessPage extends React.Component {
9+
class PendingPage extends React.Component {
1010
render() {
1111

1212
return (
@@ -75,4 +75,4 @@ class AssessPage extends React.Component {
7575
}
7676

7777

78-
module.exports = AssessPage;
78+
module.exports = PendingPage;
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const ReactHelmet = require('react-helmet');
66
const Helmet = ReactHelmet.Helmet;
77

88

9-
class AssessPage extends React.Component {
9+
class ResultsPage extends React.Component {
1010
render() {
1111

1212
return (
@@ -77,4 +77,4 @@ class AssessPage extends React.Component {
7777
}
7878

7979

80-
module.exports = AssessPage;
80+
module.exports = ResultsPage;

client/pages/account/testapi.jsx

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
// require the module
2+
const React = require('react');
3+
const url = 'http://128.31.24.189:8001/api/survey/start/';
4+
const axios = require('axios');
5+
const _ = require('underscore');
6+
7+
class TestAPI extends React.Component {
8+
9+
constructor(props) {
10+
super(props);
11+
this.state = {
12+
questions: [],
13+
responses: [],
14+
selectedOption: [],
15+
score: 0
16+
// surveyID: '',
17+
// userID: ''
18+
};
19+
//React components using ES6 classes no longer autobind this to non React methods.
20+
this.handleFormReset = this.handleFormReset.bind(this);
21+
this.handleFormSubmit = this.handleFormSubmit.bind(this);
22+
}
23+
24+
componentDidMount() {
25+
// this is where you make the axios call
26+
27+
axios.get(url)
28+
.then(({ data })=> {
29+
console.log(data); // entire json array
30+
this.setState(
31+
{questions: data.questions}
32+
);
33+
34+
_.map(this.state.questions, question => {
35+
this.setState({responses: question.responseOptions });
36+
});
37+
38+
_.map(this.state.responses, response => {
39+
this.setState({selectedOption: response.value});
40+
});
41+
42+
43+
})
44+
.catch(function(error) {
45+
if (error.response) {
46+
console.log(error.response.data);
47+
console.log(error.response.status);
48+
console.log(error.response.headers);
49+
} else if (error.request) {
50+
console.log(error.request);
51+
} else {
52+
console.log('Error', error.message);
53+
}
54+
console.log(error.config);
55+
});
56+
57+
}
58+
59+
render () {
60+
61+
return (
62+
<div className ="container1">
63+
<div className="container2">
64+
<form onSubmit={this.handleFormSubmit} onReset={this.handleFormReset}>
65+
{this.renderQuestions()}
66+
<button className="btn btn-default" type="submit">Submit Responses</button>
67+
<button className="btn btn-default" type="reset">Reset Responses</button>
68+
</form>
69+
70+
{/*{this.renderRadioButtons()}*/}
71+
72+
</div>
73+
</div>
74+
);
75+
76+
}
77+
78+
// handleOptionChange(changeEvent) {
79+
// this.setState({
80+
// selectedOption: changeEvent.target.value
81+
// });
82+
// }
83+
84+
handleFormSubmit(formSubmitEvent) {
85+
formSubmitEvent.preventDefault();
86+
console.log('You have selected to submit');
87+
this.setState({
88+
score: 100
89+
});
90+
console.log(this.state.score);
91+
}
92+
93+
handleFormReset(formSubmitEvent) {
94+
formSubmitEvent.preventDefault();
95+
console.log('You have selected to reset');
96+
this.setState({
97+
selectedOption: []
98+
});
99+
console.log(this.state.selectedOption);
100+
}
101+
102+
103+
renderQuestions() {
104+
105+
console.log(this.state.questions);
106+
107+
console.log(this.state.responses); // the state of responses at a given time
108+
109+
return _.map(this.state.questions, question => {
110+
111+
var question_text= question.questionText;
112+
113+
//var question_id = question.tabindex;
114+
115+
return ( _.map(question.responseOptions, response => {
116+
117+
var response_text = response.displayText;
118+
var response_id = response.id;
119+
120+
// currently returning the question multiple times
121+
// how do i get it to show the question once, and then a list of responses for every question?
122+
return (
123+
124+
<ul><label>{question_text}</label>
125+
<ul key ={response_id}></ul>
126+
127+
{/*// <input type='radio' value ="response option">{response_text}</input>*/}
128+
<ul>
129+
<button type = "button"ç>{response_text}</button>
130+
</ul>
131+
</ul>
132+
133+
);
134+
}));
135+
}
136+
137+
);
138+
139+
140+
}
141+
}
142+
143+
144+
module.exports = TestAPI;
145+

client/pages/main/app-universal.jsx

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
'use strict';
22
const About = require('./about/index.jsx');
3+
34
const Assess = require('./assessments/index.jsx');
5+
46
const Contact = require('./contact/index.jsx');
57
const Footer = require('./footer.jsx');
68
const Home = require('./home/index.jsx');
@@ -10,10 +12,8 @@ const LoginLogout = require('./login/logout/index.jsx');
1012
const LoginReset = require('./login/reset/index.jsx');
1113
const Navbar = require('./navbar.jsx');
1214
const NotFound = require('./not-found.jsx');
13-
const Pending = require('./pending/index.jsx');
1415
const React = require('react');
1516
const ReactRouter = require('react-router-dom');
16-
const Results = require('./results/index.jsx');
1717
const RouteRedirect = require('../../components/route-redirect.jsx');
1818
const Signup = require('./signup/index.jsx');
1919

@@ -36,10 +36,6 @@ const AppUniversal = function () {
3636
<Route path="/login/reset/:email/:key" component={LoginReset} />
3737
<Route path="/login/logout" exact component={LoginLogout} />
3838
<Route path="/signup" exact component={Signup} />
39-
<Route path="/assessments" exact component={Assess} />
40-
<Route path="/pending" exact component={Pending} />
41-
<Route path="/results" exact component={Results} />
42-
4339
<RouteRedirect from="/moved" to="/" code={301} />
4440

4541
<Route component={NotFound} />

0 commit comments

Comments
 (0)