brutaldon-interfaccia-web-m.../brutaldon/static/js/brutaldon-enhancements.js

159 lines
4.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

String.prototype.trunc =
function(n){
return this.substr(0,n-1)+(this.length>n?'…':'');
};
function setTitle(user, page)
{
document.title = `Brutaldon (${user}) ${page}`;
}
function afterPage(user, page)
{
setTitle(user,page);
var menu = document.querySelector('#navMenu');
menu.classList.remove('is-active');
var burger = document.querySelector('.navbar-burger');
burger.classList.remove('is-active');
$('#page-load-indicator').hide();
}
function menuPrepare() {
// Remove is-active from navbar menu
var menu = document.querySelector('#navMenu');
menu.classList.remove('is-active');
// Pin the navbar to the top
document.querySelector('body').classList.toggle("has-navbar-fixed-top");
document.querySelector('nav.navbar').classList.toggle("is-fixed-top");
// Add the burger
var brand = document.querySelector('.navbar-brand');
var burger = document.createElement('a');
burger.classList.toggle('navbar-burger');
burger.setAttribute("aria-label", "menu");
burger.setAttribute("aria-expanded", "false");
burger.setAttribute("data-target", "navMenu");
for (var index = 0; index < 3; index++)
{
var span = document.createElement('span');
span.setAttribute('aria-hidden', "true");
burger.appendChild(span);
}
brand.appendChild(burger);
// Get all "navbar-burger" elements
var $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll('.navbar-burger'), 0);
// Check if there are any navbar burgers
if ($navbarBurgers.length > 0) {
// Add a click event on each of them
$navbarBurgers.forEach(function ($el) {
$el.addEventListener('click', function () {
// Get the target from the "data-target" attribute
var target = $el.dataset.target;
var $target = document.getElementById(target);
// Toggle the class on both the "navbar-burger" and the "navbar-menu"
$el.classList.toggle('is-active');
$target.classList.toggle('is-active');
});
});
}
}
function expandCWButtonPrepare()
{
var theButton = document.querySelector('#expandCWs');
if (!theButton) {
theButton = document.createElement('button');
theButton.id = "expandCWs";
theButton.textContent = "Expand CWs";
theButton.classList.toggle('button');
var title = document.querySelector('#title');
if (title)
{
title.insertAdjacentElement('afterend', theButton);
var details = document.querySelectorAll('details');
var openState = false;
if (details != null) {
theButton.addEventListener('click', function() {
openState = details.item(0).hasAttribute('open');
details.forEach(function ($el) {
if (openState)
{
$el.removeAttribute('open');
} else
{
$el.setAttribute('open', '');
}
});
openState = !openState;
if (openState) { theButton.textContent = 'Collapse CWs'; }
else { theButton.textContent = "Expand CWs"; };
theButton.classList.toggle('is-active');
});
}
}
}
}
function fileButtonUpdaters()
{
var file1 = document.getElementById("id_media_file_1");
file1.onchange = function(){
if (file1.files.length > 0)
{
document.getElementById('media_filename_1').innerHTML = file1.files[0].name.trunc(5);
}
};
var file2 = document.getElementById("id_media_file_2");
file2.onchange = function(){
if (file2.files.length > 0)
{
document.getElementById('media_filename_2').innerHTML = file2.files[0].name.trunc(5);
}
};
var file3 = document.getElementById("id_media_file_3");
file3.onchange = function(){
if (file3.files.length > 0)
{
document.getElementById('media_filename_3').innerHTML = file3.files[0].name.trunc(5);
}
};
var file4 = document.getElementById("id_media_file_4");
file4.onchange = function(){
if (file4.files.length > 0)
{
document.getElementById('media_filename_4').innerHTML = file4.files[0].name.trunc(5);
}
};
}
function characterCountSetup()
{
if ($("#id_status").length) {
$("#status_count").text(characterCount());
$("#id_status").keyup(function(){
$("#status_count").text(characterCount());
});
$("#id_spoiler_text").keyup(function(){
$("#status_count").text(characterCount());
});
}
}
function characterCount()
{
return $("#id_status").val().length + $("#id_spoiler_text").val().length;
}