Skip to content

Commit

Permalink
Merge pull request #25 from olivertsesk/Durham
Browse files Browse the repository at this point in the history
Cleanup of polling code + implementation of student response -> DB
  • Loading branch information
durham-abric authored Mar 29, 2018
2 parents 92d8d04 + eb8809f commit 856eee8
Show file tree
Hide file tree
Showing 6 changed files with 319 additions and 84 deletions.
15 changes: 0 additions & 15 deletions src/bodies/adminLanding.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,19 +72,4 @@ class AdminLanding extends Component {
}
}

/*
<Col lg={4} md={4} sm={4} xs={12} className="landingPageHalfCol">
<div className="center rightSideWrapper" style={{width:(this.state.width-160)*1/3-90}}>
<div className="center rightSideButton">
<p>Manage Professors</p>
</div>
<br className="rightSideSpacer"/>
<div className="center rightSideButton">
<p>Manage Classes</p>
</div>
</div>
</Col>
*/
export default AdminLanding;
18 changes: 15 additions & 3 deletions src/bodies/classSettings.js
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,6 @@ class ClassSettings extends Component {
}

pollPanel(item){
//var courseCode = this.state.selectedClass.val().course;
return(
<div className="center form" style={{flexDirection:'column'}}>
<p className="title">Poll for {item.val().course.code}:</p>
Expand Down Expand Up @@ -281,8 +280,21 @@ class ClassSettings extends Component {
}

createPoll(item) {
firebase.database().ref('classes/' + item.key + '/poll').push({
pollQuestion:this.state.pollData.title,ans1:this.state.pollData.ans1,ans2:this.state.pollData.ans2,ans3:this.state.pollData.ans3
firebase.database().ref('classes/' + item.key + '/polls').push({
question:this.state.pollData.title,
date: Date.now(),
ans1:{
value: this.state.pollData.ans1,
responses: []
},
ans2:{
value: this.state.pollData.ans2,
responses: []
},
ans3:{
value: this.state.pollData.ans3,
responses: []
}
}).catch((e) => {
alert(e);
}).then(()=>{
Expand Down
99 changes: 78 additions & 21 deletions src/bodies/components/adminListing.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ class AdminListing extends Component {
})
//poll

firebase.database().ref('classes/' +this.props.item.key+ '/poll').on('value',(snapshot) =>{
firebase.database().ref('classes/' +this.props.item.key+ '/polls').on('value',(snapshot) =>{
var polls = this.state.polls;
polls = [];
snapshot.forEach(function(item) {
Expand Down Expand Up @@ -86,29 +86,86 @@ class AdminListing extends Component {
)
}
poll(item,i){
return(
<div className="commentWrapper">
<div className="poll">
<Col lg={7} md={7} sm={7} xs={7} className="center pollCol">
<h3 className="pollQuestion">{item.val().pollQuestion}</h3>
</Col>
<Col lg={7} md={7} sm={7} xs={7} className="center pollCol">
<p className="pollAnswers">{item.val().ans1}</p>
</Col>
<Col lg={2} md={2} sm={2} xs={2} className="center pollCol">
<p className="pollAnswers">{item.val().ans1count}</p>
</Col>
<Col lg={7} md={7} sm={7} xs={7} className="center pollCol">
<p className="pollAnswers">{item.val().ans2}</p>
</Col>
<Col lg={2} md={2} sm={2} xs={2} className="center pollCol">
<p className="pollAnswers">{item.val().ans2count}</p>
</Col>
</div>
</div>
return(
<div className="bottomsep commentWrapper" key ={i}>
<Col lg={2} md={2} sm={2} xs={2} className="center commentCol">
<p className="center commentType">Professor Poll</p>
</Col>
<Col lg={5} md={5} sm={5} xs={5} className="center commentCol">
<p className="center comment">{item.val().question}</p>
</Col>
<Col lg={5} md={5} sm={5} xs={5} className="center commentCol">
<form className="form-group">
<div>
<p>
<input type="radio" value="option1" disabled= {true}/>
{item.val().ans1.value} [Selections : {item.val().ans1.responses ? item.val().ans1.responses.length : 0}, {this.getPercentResponse(item, 1)}%]
</p>
</div>
<div>
<p>
<input type="radio" value="option2" disabled= {true}/>
{item.val().ans2.value} [Selections : {item.val().ans2.responses ? item.val().ans2.responses.length : 0}, {this.getPercentResponse(item, 2)}%]
</p>
</div>
<div>
<p>
<input type="radio" value="option3" disabled= {true} />
{item.val().ans3.value} [Selections : {item.val().ans3.responses ? item.val().ans3.responses.length : 0}, {this.getPercentResponse(item, 3)}%]
</p>
</div>
</form>
</Col>
</div>

)
}

getTotalResponses(item){
var numResponses = 0;

if(item.val().ans1.responses){
numResponses += item.val().ans1.responses.length;
}

if(item.val().ans2.responses){
numResponses += item.val().ans2.responses.length;
}

if(item.val().ans3.responses){
numResponses += item.val().ans3.responses.length;
}

return(numResponses)
}

getPercentResponse(item, i){
var total = this.getTotalResponses(item);
var answerTotal = 0;
switch (i){
case 1:
if(item.val().ans1.responses){
answerTotal = item.val().ans1.responses.length;
}
break;
case 2:
if(item.val().ans2.responses){
answerTotal = item.val().ans2.responses.length;
}
break;
case 3:
if(item.val().ans3.responses){
answerTotal = item.val().ans3.responses.length;
}
break;
default:
break;
}

return(((answerTotal/total)*100).toFixed(2))

}

render() {
let bgColor = this.state.color_blue ? "#3D99D4" : "white"
return (
Expand Down
97 changes: 78 additions & 19 deletions src/bodies/components/profListing.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class ClassListing extends Component {
})
//poll

firebase.database().ref('classes/' +this.props.item.key+ '/poll').on('value',(snapshot) =>{
firebase.database().ref('classes/' +this.props.item.key+ '/polls').on('value',(snapshot) =>{
var polls = this.state.polls;
polls = [];
snapshot.forEach(function(item) {
Expand All @@ -64,7 +64,7 @@ class ClassListing extends Component {
return (rating);
}

getPoll(){
/*getPoll(){
var question, ans1, ans1count, ans2, ans2count;
var classes = firebase.database().ref('classes/'+this.props.item.key);
classes.on('value', function(snapshot) {
Expand Down Expand Up @@ -94,7 +94,7 @@ class ClassListing extends Component {
}
});
});
}
}*/

comment(item,i){
return(
Expand All @@ -111,29 +111,88 @@ class ClassListing extends Component {
</div>
)
}

poll(item,i){
return(
<div className="commentWrapper">
<div className="poll">
<Col lg={7} md={7} sm={7} xs={7} className="center pollCol">
<h3 className="pollQuestion">{item.val().pollQuestion}</h3>
</Col>
<Col lg={7} md={7} sm={7} xs={7} className="center pollCol">
<p className="pollAnswers">{item.val().ans1}</p>
return(
<div className="bottomsep commentWrapper" key ={i}>
<Col lg={2} md={2} sm={2} xs={2} className="center commentCol">
<p className="center commentType">Professor Poll</p>
</Col>
<Col lg={2} md={2} sm={2} xs={2} className="center pollCol">
<p className="pollAnswers">{item.val().ans1count}</p>
<Col lg={5} md={5} sm={5} xs={5} className="center commentCol">
<p className="center comment">{item.val().question}</p>
</Col>
<Col lg={7} md={7} sm={7} xs={7} className="center pollCol">
<p className="pollAnswers">{item.val().ans2}</p>
</Col>
<Col lg={2} md={2} sm={2} xs={2} className="center pollCol">
<p className="pollAnswers">{item.val().ans2count}</p>
<Col lg={5} md={5} sm={5} xs={5} className="center commentCol">
<form className="form-group">
<div>
<p>
<input type="radio" value="option1" disabled= {true}/>
{item.val().ans1.value} [Selections : {item.val().ans1.responses ? item.val().ans1.responses.length : 0}, {this.getPercentResponse(item, 1)}%]
</p>
</div>
<div>
<p>
<input type="radio" value="option2" disabled= {true}/>
{item.val().ans2.value} [Selections : {item.val().ans2.responses ? item.val().ans2.responses.length : 0}, {this.getPercentResponse(item, 2)}%]
</p>
</div>
<div>
<p>
<input type="radio" value="option3" disabled= {true} />
{item.val().ans3.value} [Selections : {item.val().ans3.responses ? item.val().ans3.responses.length : 0}, {this.getPercentResponse(item, 3)}%]
</p>
</div>
</form>
</Col>
</div>
</div>

)
}

getTotalResponses(item){
var numResponses = 0;

if(item.val().ans1.responses){
numResponses += item.val().ans1.responses.length;
}

if(item.val().ans2.responses){
numResponses += item.val().ans2.responses.length;
}

if(item.val().ans3.responses){
numResponses += item.val().ans3.responses.length;
}

return(numResponses)
}

getPercentResponse(item, i){
var total = this.getTotalResponses(item);
var answerTotal = 0;
switch (i){
case 1:
if(item.val().ans1.responses){
answerTotal = item.val().ans1.responses.length;
}
break;
case 2:
if(item.val().ans2.responses){
answerTotal = item.val().ans2.responses.length;
}
break;
case 3:
if(item.val().ans3.responses){
answerTotal = item.val().ans3.responses.length;
}
break;
default:
break;
}

return(((answerTotal/total)*100).toFixed(2))

}

render() {
let bgColor = this.state.color_blue ? "#3D99D4" : "#FFFFFF";
let fontColor = this.state.color_blue ? "#FFFFFF" : "#3D99D4";
Expand Down
Loading

0 comments on commit 856eee8

Please sign in to comment.