osem-fcy/app/assets/javascripts/osem.js
James Mason b11001cdba Every campaign has an end.
Drop ahoy, because it's more trouble than it's worth. This means dropping
visits, campaigns, targets.

Campaigns are better run to analytics, such as:
* https://matomo.org/docs/tracking-campaigns/
* https://matomo.org/docs/tracking-goals-web-analytics/
* https://support.google.com/analytics/answer/1012040?hl=en
2018-10-16 21:34:04 +02:00

181 lines
5.9 KiB
JavaScript

$(function () {
/**
* Update the number of words in the biography text field every time the user
* releases a key on the keyboard
*/
$("#user_biography").bind('keyup', function() {
word_count(this, 'bio_length', 150);
} );
/**
* Displays a modal with the questions of the registration.
*/
$(document).ready(function(){
$(".question-btn").click(function(){
var id = $(this).data('id');
$("#question-modal-body").empty();
$("#question-modal-body").html($(".question" + id).clone().show());
$("#question-modal-header").text('Questions for ' + $(this).data('name'));
$('#questions').modal('show');
});
});
/**
* Toggles email template help below email body textarea field.
*/
$(document).ready( function() {
$(".template-help").hide();
$(".template_help_link").click(function() {
var id = $(this).data('name');
$("#" + id).toggle();
});
});
/**
* Randomize order of parallel elements by shuffling the decks
* Adapted from https://stackoverflow.com/questions/7070054
*/
$(document).ready( function() {
$.each($(".shuffle-deck"), function(index, deck) {
for(var i = deck.children.length; i >= 0; i--) {
deck.appendChild(deck.children[Math.random() * i | 0]);
}
});
});
$(".select-help-toggle").change(function () {
var id = $(this).attr('id');
$('.' + id).collapse('hide');
$('#' + $(this).val() + '-help.' + id).collapse('show');
});
$('.dropdown-toggle').dropdown();
/**
* Adds the default template as value to the regarding email textarea field.
*/
$(".load_template").on('click', function () {
var subject_input_id = $(this).data('subject-input-id');
var subject_input_text = $(this).data('subject-text');
var body_input_id = $(this).data('body-input-id');
var body_input_text = $(this).data('body-text');
$('#' + subject_input_id).val(subject_input_text);
$('#' + body_input_id).val(body_input_text);
});
/**
* Toggle the required attribute on click on_send_email radio button.
*/
$('.send_on_radio').click(function () {
toggle_required_for_mail_subjects($(this))
});
/**
* Adds required attribute to on_send_email radio button if necessary.
*/
$('.send_on_radio').each(function () {
toggle_required_for_mail_subjects($(this))
});
/**
* Toggle the required attribute helper function.
*/
function toggle_required_for_mail_subjects($this) {
var name = $this.data('name');
if ($this.is(':checked')) {
$('#' + name).prop('required', true);
} else {
$('#' + name).removeAttr('required');
}
}
$(".comment-reply-link").click(function(){
$(".comment-reply", $(this).parent()).toggle();
return false;
});
$("#event-comment-link").click(function(){
$("#comments-div").toggle();
return false;
});
$(".comment-reply").hide();
$(".user-details-popover").popover();
$("#comments-div").hide();
$('a:contains("Add track")').click(function () {
setTimeout(function () {
$("div.nested-fields:last div:nth-of-type(2) input").val(get_color());
},
5)
});
$('a:contains("Add difficulty_level")').click(function () {
setTimeout(function () {
$("div.nested-fields:last div:nth-of-type(3) input").val(get_color());
},
5)
});
$('a:contains("Add event_type")').click(function () {
setTimeout(function () {
$("div.nested-fields:last div:nth-of-type(5) input").val(get_color());
},
5)
});
});
function get_color() {
var colors = ['#000000', '#0000FF', '#00FF00', '#FF0000', '#FFFF00', '#9900CC',
'#CC0066', '#00FFFF', '#FF00FF', '#C0C0C0', '#00008B', '#FFD700',
'#FFA500', '#FF1493', '#FF00FF', '#F0FFFF', '#EE82EE', '#D2691E',
'#C0C0C0', '#A52A2A', '#9ACD32', '#9400D3', '#8B008B', '#8B0000',
'#87CEEB', '#808080', '#800080', '#008B8B', '#006400'
];
return colors[Math.floor(Math.random() * colors.length)];
}
function word_count(text, divId, maxcount) {
var area = document.getElementById(text.id)
Countable.live(area, function(counter) {
$('#' + divId).text(counter.words);
if (counter.words > maxcount)
$('#' + divId).css('color', 'red');
else
$('#' + divId).css('color', 'black');
});
};
/* Wait for the DOM to be ready before attaching events to the elements */
$( document ).ready(function() {
/* Set the minimum and maximum proposal abstract word length */
$("#event_event_type_id").change(function () {
var $selected = $("#event_event_type_id option:selected")
var max = $selected.data("max-words");
var min = $selected.data("min-words");
$("#abstract-maximum-word-count").text(max);
$("#abstract-minimum-word-count").text(min);
word_count($('#event_abstract').get(0), 'abstract-count', max);
})
.trigger('change');
/* Count the proposal abstract length */
$("#event_abstract").bind('change keyup paste input', function() {
var $selected = $("#event_event_type_id option:selected")
var max = $selected.data("max-words");
word_count(this, 'abstract-count', max);
} );
});
/* Commodity function for modal windows */
window.build_dialog = function(selector, content) {
// Close it and remove content if it's already open
$("#" + selector).modal('hide');
$("#" + selector).remove();
// Add new content and pops it up
$("body").append("<div id=\"" + selector + "\" class=\"modal fade\" role=\"dialog\">\n" + content + "</div>");
$("#" + selector).modal();
}