write-ins fully functioning
This commit is contained in:
parent
6ae8adebad
commit
d63ef1c484
23
events.py
23
events.py
|
@ -346,3 +346,26 @@ def vote(data):
|
||||||
data["option_id"] = option_id
|
data["option_id"] = option_id
|
||||||
data["polarity"] = polarity
|
data["polarity"] = polarity
|
||||||
emit("vote", data, room=room)
|
emit("vote", data, room=room)
|
||||||
|
|
||||||
|
|
||||||
|
@socketio.on("write_in")
|
||||||
|
def write_in(data):
|
||||||
|
"""
|
||||||
|
Called when a user submits a write-in option.
|
||||||
|
"""
|
||||||
|
room = data.get("room")
|
||||||
|
post_id = data.get("post_id")
|
||||||
|
option_text = data.get("option_text")
|
||||||
|
|
||||||
|
if len(option_text) > 200:
|
||||||
|
return
|
||||||
|
option_text = bleach.clean(option_text)
|
||||||
|
option_text = "Write-in: " + option_text
|
||||||
|
option_id = db.insert_poll_option(post_id, option_text)
|
||||||
|
|
||||||
|
data = {}
|
||||||
|
data["post_id"] = post_id
|
||||||
|
data["post_type"] = "poll"
|
||||||
|
data["option_id"] = option_id
|
||||||
|
data["option_text"] = option_text
|
||||||
|
emit("update_post", data, room=room)
|
||||||
|
|
|
@ -30,6 +30,7 @@ var tid = setInterval( function () {
|
||||||
post_str += 'pollPost active_post">';
|
post_str += 'pollPost active_post">';
|
||||||
}
|
}
|
||||||
post_str += '<div class="questPostMeta">' + strftime(data.date);
|
post_str += '<div class="questPostMeta">' + strftime(data.date);
|
||||||
|
/* QM only */
|
||||||
if (data.post_type == 'text') {
|
if (data.post_type == 'text') {
|
||||||
post_str += '<br /><a href="javascript:void(0);" onclick="edit_post(\'' + data.post_id + '\')">Edit</a>';
|
post_str += '<br /><a href="javascript:void(0);" onclick="edit_post(\'' + data.post_id + '\')">Edit</a>';
|
||||||
post_str += '<a href="javascript:void(0);" id="savePost-' + data.post_id + '" onclick="save_post(\'' + data.post_id + '\')" style="display:none;">Save</a>';
|
post_str += '<a href="javascript:void(0);" id="savePost-' + data.post_id + '" onclick="save_post(\'' + data.post_id + '\')" style="display:none;">Save</a>';
|
||||||
|
@ -37,6 +38,7 @@ var tid = setInterval( function () {
|
||||||
post_str += '<br /><a href="javascript:void(0);" id="close_post_id-' + data.post_id + '" onclick="close_post(' + data.post_id + ')">Close</a>';
|
post_str += '<br /><a href="javascript:void(0);" id="close_post_id-' + data.post_id + '" onclick="close_post(' + data.post_id + ')">Close</a>';
|
||||||
post_str += '<a href="javascript:void(0);" id="open_post_id-' + data.post_id + '" onclick="open_post(' + data.post_id + ')" style="display:none;">Open</a>'
|
post_str += '<a href="javascript:void(0);" id="open_post_id-' + data.post_id + '" onclick="open_post(' + data.post_id + ')" style="display:none;">Open</a>'
|
||||||
}
|
}
|
||||||
|
/* end QM only */
|
||||||
post_str += '</div><div class="questPostData" id="questPostData-' + data.post_id + '">';
|
post_str += '</div><div class="questPostData" id="questPostData-' + data.post_id + '">';
|
||||||
if (data.post_type == 'text') {
|
if (data.post_type == 'text') {
|
||||||
post_str += data.post;
|
post_str += data.post;
|
||||||
|
@ -61,11 +63,24 @@ var tid = setInterval( function () {
|
||||||
socket.on('update_post', function(data) {
|
socket.on('update_post', function(data) {
|
||||||
let post_id = data.post_id;
|
let post_id = data.post_id;
|
||||||
let post = document.getElementById('questPostData-' + post_id);
|
let post = document.getElementById('questPostData-' + post_id);
|
||||||
if (data.post_type == 'text') {
|
if (data.post_type === 'text') {
|
||||||
post.innerHTML = data.post;
|
post.innerHTML = data.post;
|
||||||
}
|
} else if (data.post_type === 'dice') {
|
||||||
else if (data.post_type == 'dice') {
|
|
||||||
post.innerHTML += '<b>' + data.post + '</b><br />';
|
post.innerHTML += '<b>' + data.post + '</b><br />';
|
||||||
|
} else if (data.post_type === 'poll') {
|
||||||
|
let row = post.children[1].insertRow(-1);
|
||||||
|
let cell = row.insertCell(0);
|
||||||
|
cell.className = 'pollCheckBox';
|
||||||
|
cell.innerHTML = '<input type="checkbox" id="pollInput-' + data.options_id + '" onchange="pollVote(' + data.post_id + ',' + data.options_id + ')"/>';
|
||||||
|
cell.innerHTML += '<label for="pollInput-' + data.options_id + '"></label>';
|
||||||
|
|
||||||
|
cell = row.insertCell(1);
|
||||||
|
cell.className = 'option_text';
|
||||||
|
cell.innerHTML = data.option_text;
|
||||||
|
|
||||||
|
cell = row.insertCell(2);
|
||||||
|
cell.className = "optionVotes";
|
||||||
|
cell.innerHTML = "0";
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
socket.on('close_post', function(data) {
|
socket.on('close_post', function(data) {
|
||||||
|
@ -131,6 +146,30 @@ function pollVote(post_id, option_id) {
|
||||||
let polarity = document.getElementById('pollInput-' + option_id).checked;
|
let polarity = document.getElementById('pollInput-' + option_id).checked;
|
||||||
socket.emit('vote', {post_id: post_id, option_id: option_id, polarity: polarity, room: room_id});
|
socket.emit('vote', {post_id: post_id, option_id: option_id, polarity: polarity, room: room_id});
|
||||||
}
|
}
|
||||||
|
function submitWritein(post_id) {
|
||||||
|
let writeinInput = document.getElementById('writeinInput');
|
||||||
|
if (!writeinInput) { return; }
|
||||||
|
let option_text = writeinInput.value;
|
||||||
|
writeinInput.value = '';
|
||||||
|
if (!option_text) { return; }
|
||||||
|
socket.emit('write_in', {option_text: option_text, post_id: post_id, room: room_id});
|
||||||
|
}
|
||||||
|
function deactivate_post() {
|
||||||
|
let post = document.getElementsByClassName('active_post');
|
||||||
|
if (post.length == 0) { return; }
|
||||||
|
post = post[0];
|
||||||
|
post.children[1].children[0].textContent = post.children[1].children[0].textContent.replace('Open', 'Closed');
|
||||||
|
post.classList.remove("active_post");
|
||||||
|
/* QM only */
|
||||||
|
post.children[0].children[2].outerHTML = "";
|
||||||
|
post.children[0].children[1].outerHTML = "";
|
||||||
|
/* end QM only */
|
||||||
|
let writein = document.getElementById('writeinContainer');
|
||||||
|
if (writein) {
|
||||||
|
writein.outerHTML = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* QM only */
|
||||||
function makePost() {
|
function makePost() {
|
||||||
let qparea = document.getElementById('postTextArea');
|
let qparea = document.getElementById('postTextArea');
|
||||||
let text = qparea.value.trim();
|
let text = qparea.value.trim();
|
||||||
|
@ -169,19 +208,6 @@ function close_post(post_id) {
|
||||||
function open_post(post_id) {
|
function open_post(post_id) {
|
||||||
socket.emit('open_post', {post_id: post_id, room: room_id});
|
socket.emit('open_post', {post_id: post_id, room: room_id});
|
||||||
}
|
}
|
||||||
function deactivate_post() {
|
|
||||||
let post = document.getElementsByClassName('active_post');
|
|
||||||
if (post.length == 0) { return; }
|
|
||||||
post = post[0];
|
|
||||||
post.children[1].children[0].textContent = post.children[1].children[0].textContent.replace('Open', 'Closed');
|
|
||||||
post.classList.remove("active_post");
|
|
||||||
post.children[0].children[2].outerHTML = "";
|
|
||||||
post.children[0].children[1].outerHTML = "";
|
|
||||||
let writein = document.getElementById('writeinContainer');
|
|
||||||
if (writein) {
|
|
||||||
writein.outerHTML = '';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function insertPollOption() {
|
function insertPollOption() {
|
||||||
let opts = document.getElementById('pollOptions');
|
let opts = document.getElementById('pollOptions');
|
||||||
let num = opts.children.length+1;
|
let num = opts.children.length+1;
|
||||||
|
@ -210,3 +236,4 @@ function openPostTab(event, modeName) {
|
||||||
document.getElementById(modeName).style.display = "block";
|
document.getElementById(modeName).style.display = "block";
|
||||||
event.currentTarget.className += " active";
|
event.currentTarget.className += " active";
|
||||||
}
|
}
|
||||||
|
/* end QM only */
|
||||||
|
|
|
@ -54,11 +54,24 @@ var tid = setInterval( function () {
|
||||||
socket.on('update_post', function(data) {
|
socket.on('update_post', function(data) {
|
||||||
let post_id = data.post_id;
|
let post_id = data.post_id;
|
||||||
let post = document.getElementById('questPostData-' + post_id);
|
let post = document.getElementById('questPostData-' + post_id);
|
||||||
if (data.post_type == 'text') {
|
if (data.post_type === 'text') {
|
||||||
post.innerHTML = data.post;
|
post.innerHTML = data.post;
|
||||||
}
|
} else if (data.post_type === 'dice') {
|
||||||
else if (data.post_type == 'dice') {
|
|
||||||
post.innerHTML += '<b>' + data.post + '</b><br />';
|
post.innerHTML += '<b>' + data.post + '</b><br />';
|
||||||
|
} else if (data.post_type === 'poll') {
|
||||||
|
let row = post.children[1].insertRow(-1);
|
||||||
|
let cell = row.insertCell(0);
|
||||||
|
cell.className = 'pollCheckBox';
|
||||||
|
cell.innerHTML = '<input type="checkbox" id="pollInput-' + data.options_id + '" onchange="pollVote(' + data.post_id + ',' + data.options_id + ')"/>';
|
||||||
|
cell.innerHTML += '<label for="pollInput-' + data.options_id + '"></label>';
|
||||||
|
|
||||||
|
cell = row.insertCell(1);
|
||||||
|
cell.className = 'option_text';
|
||||||
|
cell.innerHTML = data.option_text;
|
||||||
|
|
||||||
|
cell = row.insertCell(2);
|
||||||
|
cell.className = "optionVotes";
|
||||||
|
cell.innerHTML = "0";
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
socket.on('close_post', function(data) {
|
socket.on('close_post', function(data) {
|
||||||
|
@ -124,6 +137,14 @@ function pollVote(post_id, option_id) {
|
||||||
let polarity = document.getElementById('pollInput-' + option_id).checked;
|
let polarity = document.getElementById('pollInput-' + option_id).checked;
|
||||||
socket.emit('vote', {post_id: post_id, option_id: option_id, polarity: polarity, room: room_id});
|
socket.emit('vote', {post_id: post_id, option_id: option_id, polarity: polarity, room: room_id});
|
||||||
}
|
}
|
||||||
|
function submitWritein(post_id) {
|
||||||
|
let writeinInput = document.getElementById('writeinInput');
|
||||||
|
if (!writeinInput) { return; }
|
||||||
|
let option_text = writeinInput.value;
|
||||||
|
writeinInput.value = '';
|
||||||
|
if (!option_text) { return; }
|
||||||
|
socket.emit('write_in', {option_text: option_text, post_id: post_id, room: room_id});
|
||||||
|
}
|
||||||
function deactivate_post() {
|
function deactivate_post() {
|
||||||
let post = document.getElementsByClassName('active_post');
|
let post = document.getElementsByClassName('active_post');
|
||||||
if (post.length == 0) { return; }
|
if (post.length == 0) { return; }
|
||||||
|
|
|
@ -75,7 +75,8 @@
|
||||||
</table>
|
</table>
|
||||||
{% if quest_post[0] == open_post_id and quest_post[0]|is_write_in %}
|
{% if quest_post[0] == open_post_id and quest_post[0]|is_write_in %}
|
||||||
<div id="writeinContainer">
|
<div id="writeinContainer">
|
||||||
Write-in: <input type="text" id="writeinInput" placeholder="Custom choice..." maxlength="200" />
|
Write-in: <input type="text" id="writeinInput" placeholder="Custom choice..." maxlength="200" /><br />
|
||||||
|
<input type="submit" id="writeinSubmit" value="Submit" onclick="submitWritein({{ quest_post[0] }});"/>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user