jQuery(document).ready(function($) {
$.ajaxSetup({
headers: {
'X-WP-Nonce': contest.rest_nonce,
}
});
$('#showboth').click( function() {
if($( "input#showboth:checked" ).val()) {
$('.other').show();
}
else {
$('.other').hide();
}
});
//hide to start with
$('.morejudges').hide();
$('#showmorejudges').click( function() {
if($( "input#showmorejudges:checked" ).val()) {
$('.morejudges').show();
}
else {
$('.morejudges').hide();
}
});
function votingLinkToggle () {
if($( "input#showlinks:checked" ).val()) {
$('.votinglink').show();
}
else {
$('.votinglink').hide();
}
}
function emailLinksToggle () {
if($( "input#show_email_links:checked" ).val()) {
$('.email_links').show();
}
else {
$('.email_links').hide();
}
}
function votingFormsToggle () {
if($( "input#showvotingforms:checked" ).val()) {
$('.votingforms').show();
}
else {
$('.votingforms').hide();
}
}
var activetab = $('a.nav-tab-active').attr('href');
if(activetab)
{
$('section').hide();
$('section' + activetab).show();
}
$(document).on( 'click', '.nav-tab-wrapper a', function() {
$('section').hide();
$('a').removeClass('nav-tab-active');
$('section').eq($(this).index()).show();
$(this).addClass('nav-tab-active');
return false;
});
//check initial state of voting links
votingLinkToggle();
$( "input#showlinks" ).on( "click", votingLinkToggle);
votingFormsToggle();
$( "input#showvotingforms" ).on( "click", votingFormsToggle);
emailLinksToggle ();
$( "input#show_email_links" ).on( "click", emailLinksToggle);
function refreshScores() {
if(countdown == 0) {
$('#score_status').html('Checking for new scores ...');
console.log('checking for scores');
$.get( contest.votecheck, function( data ) {
$( "#scores" ).html( data );
$('#score_status').html('Updated');
});
countdown = 30;
}
else {
$('#score_status').html('Checking in '+countdown);
countdown--;
}
}
$('#scoreupdate').click(function() {
refreshScores();
});
if(contest.scoring == 'voting') {
$('#autorank_now').click(function() {
var autorank = '';
scoreArr.sort(function (a, b) {return b.score - a.score});
var arrayLength = scoreArr.length;
for (var i = 0; i < arrayLength; i++) {
var name = $('#contestant' + scoreArr[i].index).val();
autorank = autorank + '<br />'+name + ' '+scoreArr[i].score;
}
$('#autorank').html('<div style="width: 300px; margin-bottom: 10px; padding: 5px; border: thin solid #555;"><h3>Best Scores</h3>'+autorank+'</div>');
$('#nowvote').html('<h3 style="color: red;">Now Vote! <span style="color: black">Your vote is not complete</span> until you make your selections below.</h3>');
var votingform = document.getElementById("voting");
votingform.style = 'border: thick solid red; padding: 10px; padding-bottom: 50px;';
votingform.scrollIntoView();
});
var max;
var this_score;
$('.score').on('change', function(){
var contestant = $(this).attr('contestant');
var score = 0;
$('.score' + contestant).each(function() {
max = Number($(this).attr('max'));
this_score = Number($(this).val());
if(this_score > max)
{
this_score = max;
$(this).val(this_score);
}
score += this_score;
});
$('#sum' + contestant).html(score);
scoreArr[contestant] = {
'index' : contestant,
'score' : score
}
scoreArr[contestant].score = score;
});
let findDuplicates = arr => arr.filter((item, index) => arr.indexOf(item) != index);
$('form#voting').submit(function(){
var empty = false;
var votes = $('.voteselect');
var checkvotes = [];
votes.each(function() {
checkvotes.push($(this).val());
if($(this).val() == '')
{
empty = true;
}
});
if(empty)
{
$("#readyprompt").html('<span style="color: red;">One or more votes left blank</span>');
return false;
}
if ( $('#signature').val() == ''){
$("#readyprompt").html('<span style="color: red;">You must complete your signature before you are allowed to vote</span>');
return false;
}
let findDuplicates = arr => arr.filter((item, index) => arr.indexOf(item) != index);
let dups = findDuplicates(checkvotes);
if(dups.length) {
$("#readyprompt").html('<span style="color: red;">You cannot vote for the same contestant twice.</span>');
return false;
}
});
}
/*
if((contest.scoring == 'dashboard') && scoreArr.length) //starts once speaking order is set
{
console.log('start checking for scores');
setInterval(function(){
refreshScores();
}, 50000);
}
*/
var checkvoteinterval;
var countdown = 30;
$('#votecheck').click(
function () {
var label = $('#votecheck').text();
console.log(label + ' checking for scores');
if(label == 'Start') {
checkvoteinterval = setInterval(function(){
refreshScores();
}, 1000);
$('#votecheck').text('Stop');
}
else {
clearInterval(checkvoteinterval);
$('#votecheck').text('Start');
}
}
);
$('#track_role').on('change', function(){
var role = $(this).val();
if(role == '')
{
$('#role_track_status').html('');
$('#manual_contestants').show();
}
else {
$('#role_track_status').html('<p>Contestant names will be pulled from the '+role+' role on the agenda</p>');
$('#manual_contestants').hide();
}
});
$('.send_contest_link').click (
function (e) {
e.preventDefault();
let id = $(this).attr('id');
let action = $(this).attr('action');
let data = {
email : $('#email_link'+id).val(),
note : $('#intro_note').val() + "\n\n" + $('#email_link_note'+id).val(),
subject : $('#email_subject'+id).val(),
code: id,
post_id: contest.post_id,
}
$('#send_link_status'+id).text('Sending ...');
jQuery.post(action, data, function(response) {
//data = JSON.parse(response);
if(response.subject)
$('#send_link_status'+id).text('Sent: '+response.subject);
});
}
);
$('.show_ballot_links_preview').click(
function(e) {
e.preventDefault();
$('.ballot_links_preview').show();
let id = $(this).attr('id').replace('p','');
var email = $('#email_link'+id).val();
var subject = $('#email_subject'+id).val();
$('#send_link_status'+id).html('To email manually, click <a target="_blank" href="mailto:'+email+'?subject='+subject+'">'+email+' '+subject+'</a>');
}
);
$('form#custom_contest').submit(function(){
var score = 0;
$('.setscore').each(function() {
score += Number($(this).val());
});
if(score != 100)
{
$('#readyprompt').html('<span style="color: red;">Scores total '+score + ' (must total 100)</span>');
return false;
}
else
$('#readyprompt').html('Saving ...');
});
// sequence runs on ballot after vote submitted
if(contest.vote_submitted) {
//execute once, start interval
var gotvotetimer = setInterval(function(){
refreshReceived();
}, 1000);
}
var check_seconds = 5;
function refreshReceived() {
if(check_seconds == 0) {
$.get( contest.votereceived, function( data ) {
if(data) {
$('#gotvote_result').html('Votes received on ballot counting dashboard');
stopRefreshReceived();
}
else
$('#gotvote_result').html('Not yet');
});
check_seconds = 30;
}
else {
$('#gotvote_result').html('Checking if vote has been recieved in '+check_seconds);
check_seconds--;
}
}
//then set timer
function stopRefreshReceived() {
clearInterval(gotvotetimer);
}
// END sequence runs on ballot after vote submitted
if(contest.scoring == 'shuffle') {
var hasrun = false;
var ShuffleText = (function () {
/**
* Constructor.
* @param element DOMエレメント
*/
function ShuffleText(element) {
/**
* The string for random text.
* ランダムテã‚ストã«ç”¨ã„ã‚‹æ–‡å—列ã§ã™ã€‚
* @type {string}
* @default 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
*/
this.sourceRandomCharacter = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
/**
* The string for effect space.
* 空白ã«ç”¨ã„ã‚‹æ–‡å—列ã§ã™ã€‚
* @type {string}
* @default '-'
*/
this.emptyCharacter = '-';
/**
* The milli seconds of effect time.
* エフェクトã®å®Ÿè¡Œæ™‚é–“ã§ã™ã€‚
* @type {number}
* @default 600
*/
this.duration = 600;
this._isRunning = false;
this._originalStr = '';
this._originalLength = 0;
this._timeCurrent = 0;
this._timeStart = 0;
this._randomIndex = [];
this._requestAnimationFrameId = 0;
this._element = element;
this.setText(element.innerHTML);
}
/** テã‚ストをè¨å®šã—ã¾ã™ã€‚ */
ShuffleText.prototype.setText = function (text) {
this._originalStr = text;
this._originalLength = text.length;
};
Object.defineProperty(ShuffleText.prototype, "isRunning", {
/**
* It is running flag. å†ç”Ÿä¸ã‹ã©ã†ã‹ã‚’示ã™ãƒ–ール値ã§ã™ã€‚
* @returns {boolean}
*/
get: function () {
return this.isRunning;
},
enumerable: true,
configurable: true
});
/** å†ç”Ÿã‚’開始ã—ã¾ã™ã€‚ */
ShuffleText.prototype.start = function () {
if(hasrun)
return;
var _this = this;
this.stop();
this._randomIndex = [];
var str = '';
for (var i = 0; i < this._originalLength; i++) {
var rate = i / this._originalLength;
this._randomIndex[i] = Math.random() * (1 - rate) + rate;
str += this.emptyCharacter;
}
this._timeStart = new Date().getTime();
this._isRunning = true;
this._requestAnimationFrameId = requestAnimationFrame(function () {
_this._onInterval();
});
this._element.innerHTML = str;
};
/** åœæ¢ã—ã¾ã™ã€‚ */
ShuffleText.prototype.stop = function () {
this._isRunning = false;
cancelAnimationFrame(this._requestAnimationFrameId);
};
ShuffleText.prototype.dispose = function () {
this.sourceRandomCharacter = null;
this.emptyCharacter = null;
this._isRunning = false;
this.duration = 0;
this._originalStr = null;
this._originalLength = 0;
this._timeCurrent = 0;
this._timeStart = 0;
this._randomIndex = null;
this._element = null;
this._requestAnimationFrameId = 0;
};
/**
* インターãƒãƒ«ãƒãƒ³ãƒ‰ãƒ©ãƒ¼ã§ã™ã€‚
* @private
*/
ShuffleText.prototype._onInterval = function () {
var _this = this;
this._timeCurrent = new Date().getTime() - this._timeStart;
var percent = this._timeCurrent / this.duration;
var str = '';
for (var i = 0; i < this._originalLength; i++) {
if (percent >= this._randomIndex[i]) {
str += this._originalStr.charAt(i);
}
else if (percent < this._randomIndex[i] / 3) {
str += this.emptyCharacter;
}
else {
str += this.sourceRandomCharacter.charAt(Math.floor(Math.random() * (this.sourceRandomCharacter.length)));
}
}
if (percent > 1) {
str = this._originalStr;
this._isRunning = false;
}
this._element.innerHTML = str;
if (this._isRunning === true) {
this._requestAnimationFrameId = requestAnimationFrame(function () {
_this._onInterval();
});
}
};
return ShuffleText;
}());
function shuffle_init() {
var arr = [];
for (var i = 0; i < 20; i++) {
var line = document.querySelector('#text' + i);
if(!line)
break;
arr[i] = new ShuffleText(line);
}
for (var i = 0; i < arr.length; i++) {
$('#text' + i)
.data('index', i)
.hover(function () {
arr[$(this).data('index')].start();
}, function () {
arr[$(this).data('index')].start();
});
arr[i].start();
}
hasrun = true;
}
shuffle_init();
}
});