-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
46 lines (39 loc) · 1.26 KB
/
Copy pathscript.js
File metadata and controls
46 lines (39 loc) · 1.26 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
const socket = io('https://voting-app-server-57ji.onrender.com');
const progressBoxes = document.querySelectorAll('.progress-box');
const percentTags = document.querySelectorAll('.percent-tag');
const totalVotesElem = document.getElementById('totalVotes');
for (let i = 0; i < progressBoxes.length; i++) {
const elem = progressBoxes[i];
elem.addEventListener('click',()=>{
addVote(elem,elem.id)
})
}
let vote = false;
const addVote = (elem,id)=>{
if (vote) {
return
}
let voteTo = id;
socket.emit('send-vote',voteTo);
vote = true;
elem.classList.add('active');
}
socket.on('receive-vote',data =>{
updatePolls(data)
})
socket.on('update',data =>{
updatePolls(data)
})
const updatePolls = (data)=>{
let votingObject = data.votingPolls;
let totalVotes = data.totalVotes;
totalVotesElem.innerHTML = totalVotes
for (let i = 0; i < percentTags.length; i++) {
let vote = votingObject[progressBoxes[i].id];
let setWidth = Math.round(vote / totalVotes * 100);
const elem = document.querySelector(`#${progressBoxes[i].id}`)
.querySelector('.percent-tag');
elem.setAttribute('data',`${!setWidth? 0: setWidth}%`);
elem.style.width = `${!setWidth? 0: setWidth}%`;
}
}