-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathapp.js
More file actions
81 lines (68 loc) · 1.94 KB
/
Copy pathapp.js
File metadata and controls
81 lines (68 loc) · 1.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
var express = require('express')
, app = express()
, http = require('http').Server(app)
, io = require('socket.io')(http);
app.set('port', (process.env.PORT || 5000));
app.enable('view cache');
app.set('view engine', 'html');
app.engine('html', require('hogan-express'));
app.use(express.static(__dirname + '/public'))
app.use(require('./controllers'))
app.set("questions", require('./poll/questions'));
var config = {
currentQuestion: 0,
};
app.set("config", config);
var voteArray = createVoteArray(app.get("questions"));
console.log(voteArray);
app.set("votes", voteArray);
io.on('connection', function(socket){
console.log('a user connected');
socket.on('next question', function(){
config.currentQuestion++;
io.emit('question update', config.currentQuestion);
});
socket.on('vote', function(ans){
voteArray[config.currentQuestion].options[ans].votes++;
console.log('Vote: ' + ans);
socket.emit('vote received');
io.emit('vote update', voteArray);
});
socket.on('block question', function(){
io.emit('question blocked', winnerQuestion());
console.log(winnerQuestion());
});
socket.on('reset', function(){
config.currentQuestion = 0;
voteArray = createVoteArray(app.get("questions"));
io.emit('question update', config.currentQuestion);
io.emit('vote update', voteArray);
});
});
http.listen(app.get('port'), function() {
console.log('Listening on port '+ app.get('port'));
})
function createVoteArray(questions) {
return questions.map(function(opts){
return {
question: opts.question,
options: opts.options.map(function(opt) {
return {
option: opt,
votes: 0
}})
}
});
}
function winnerQuestion() {
var max = -1;
var winner = -1;
var opt = voteArray[config.currentQuestion].options;
for(var i = 0; i< opt.length; i++) {
if(opt[i].votes > max) {
max = opt[i].votes;
winner = i;
}
}
return winner;
}