thedesk/app/js/tl/poll.js
2019-05-19 15:17:05 +09:00

118 lines
4.1 KiB
JavaScript

//アンケートのトグル
function pollToggle() {
if ($("#poll").hasClass("hide")) {
$("#right-side").show()
$("#poll").removeClass("hide")
} else {
$("#right-side").hide()
$("#emoji").addClass("hide")
$("#poll").addClass("hide")
}
}
function pollProviderCk(){
$(".poll-provider").addClass("hide");
$("#"+$("#poll-sel").val()).removeClass("hide");
}
/*
function pollAddtime(num){
var last=$("#expires_in").val();
last=last*1-(num*-1);
$("#expires_in").val(last);
pollCalc();
}
*/
function pollCalc(){
var days=$("#days_poll").val();
var hrs=$("#hours_poll").val();
var mins=$("#mins_poll").val();
console.log("Poll calc:"+days*86400+hrs*3600+mins*60)
return days*86400+hrs*3600+mins*60;
}
//Vote
function voteSelMastodon(acct_id,id,to,mul){
if($('.vote_'+acct_id+'_'+id+'_'+to).hasClass("sel")){
$('.vote_'+acct_id+'_'+id+'_'+to).css("background-color","transparent")
$('.vote_'+acct_id+'_'+id+'_'+to).removeClass("sel");
}else{
if(!mul){
$('.vote_'+acct_id+'_'+id+' div' ).each(function(i, elem) {
if(i==to){
$(this).css("background-color","var(--emphasized)");
$(this).addClass("sel");
}else{
$(this).css("background-color","transparent")
$(this).removeClass("sel");
}
});
}else{
$('.vote_'+acct_id+'_'+id+'_'+to).css("background-color","var(--emphasized)")
$('.vote_'+acct_id+'_'+id+'_'+to).addClass("sel");
}
}
}
function voteMastodon(acct_id,id){
var choice=[];
$('.vote_'+acct_id+'_'+id+' div' ).each(function(i, elem) {
if($(this).hasClass("sel")){
choice.push(i+"");
}
});
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/polls/"+id+"/votes";
if(localStorage.getItem("mode_" + domain)=="misskey"){
return false;
}
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json";
httpreq.send(JSON.stringify({choices:choice}));
httpreq.onreadystatechange = function() {
voteMastodonrefresh(acct_id,id)
}
}
function showResult(acct_id,id){
$('.vote_'+acct_id+'_'+id+'_result').toggleClass("hide")
}
function voteMastodonrefresh(acct_id,id){
var datetype = localStorage.getItem("datetype");
if (!datetype) {
datetype = "absolute";
}
var httpreqd = new XMLHttpRequest();
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/polls/"+id;
httpreqd.open('GET', start, true);
httpreqd.setRequestHeader('Content-Type', 'application/json');
httpreqd.responseType = 'json';
httpreqd.send(JSON.stringify({i:at,noteId:id}));
httpreqd.onreadystatechange = function() {
if (httpreqd.readyState == 4) {
var json = httpreqd.response;
console.log(["Refresh vote",json]);
if(!json){
return false;
}
var poll="";
var choices=json.options;
var myvote=lang.lang_parse_voted;
var result_hide="";
Object.keys(choices).forEach(function(keyc) {
var choice = choices[keyc];
if(!json.voted){
votesel='voteSelMastodon(\''+acct_id+'\',\''+json.id+'\','+keyc+','+json.multiple+')';
}
poll=poll+'<div class="pointer vote vote_'+acct_id+'_'+json.id+'_'+keyc+'" onclick="'+votesel+'">'+escapeHTML(choice.title)+'<span class="vote_'+acct_id+'_'+json.id+'_result '+result_hide+'">('+choice.votes_count+')</span></div>';
});
poll=poll+myvote+'<span class="cbadge cbadge-hover" title="' + date(json.expires_at, 'absolute') +
'"><i class="far fa-calendar-times"></i>' +
date(json.expires_at, datetype) + '</span>';
$('.vote_'+acct_id+'_'+json.id).html(poll)
}
}
}