$(document).ready(function() { $.get('/piratebox/station-cnt', function(data) { $('#station-cnt').text(data.count); }); $('div#shoutbox').ajaxError(function() { $(this).text('Triggered ajaxError handler on shoutbox'); }); $('#sb_form').submit(function(event) { /* stop form from submitting normally */ event.preventDefault(); post_shoutbox(); }); display_diskusage(); display_shoutbox(); // Spin menu icon and toggle nav $('#menu-icon').click(function() { $(this).toggleClass('rotate'); $('#top-nav').slideToggle(); }); // Closes the mobile nav $('#top-nav a').click(function() { if ($('#top-nav').is(':visible') && $('#menu-icon').is(':visible')) { $('#top-nav').slideUp(); $('#menu-icon').toggleClass('rotate'); } }); // Hides the welcome $('#thanks').click(function() { $('#welcome').slideUp(); }); // Detects window size $(window).resize(function() { if ($('#menu-icon').is(':visible')) { $('#top-nav').hide(); } else { $('#top-nav').show(); } }); // smooth scrolling for internal links function filterPath(string) { return string.replace(/^\//, '') .replace(/(index|default).[a-zA-Z]{3,4}$/, '') .replace(/\/$/, ''); } var locationPath = filterPath(location.pathname); var scrollElem = scrollableElement('html', 'body'); $('a[href*=\\#]').each(function() { var thisPath = filterPath(this.pathname) || locationPath; if (locationPath == thisPath && (location.hostname == this.hostname || !this.hostname) && this.hash.replace(/#/, '')) { var $target = $(this.hash), target = this.hash; if (target) { var targetOffset = $target.offset().top; $(this).click(function(event) { event.preventDefault(); $(scrollElem) .animate({scrollTop: targetOffset}, 400, function() { location.hash = target; }); }); } } }); // use the first element that is "scrollable" function scrollableElement(els) { for (var i = 0, argLength = arguments.length; i < argLength; i++) { var el = arguments[i], $scrollElement = $(el); if ($scrollElement.scrollTop() > 0) { return el; } else { $scrollElement.scrollTop(1); var isScrollable = $scrollElement.scrollTop() > 0; $scrollElement.scrollTop(0); if (isScrollable) { return el; } } } return []; } }); function refresh_shoutbox() { $.get('/piratebox/chat', function(data) { let sb = $('div#shoutbox'); let was_bottom = false; if (sb.get(0).scrollTop >= sb.get(0).scrollHeight - sb.get(0).clientHeight - 10) { was_bottom = true; } sb.empty(); for (let msg of data) { sb.append(render_chat_content(msg)); } if (was_bottom) { sb.get(0).scrollTop = sb.get(0).scrollHeight; } }); } function refresh_time_sb() { // Refresh rate in milli seconds mytime = setTimeout('display_shoutbox()', 10000); } function post_shoutbox() { $('#send-button').prop('value', 'Sending...'); $('#send-button').prop('disabled', true); $.post('/piratebox/chat', $('#sb_form').serialize()) .success(function() { refresh_shoutbox(); $('#send-button').prop('value', 'Send') $('#send-button').prop('disabled', false); }); $('#shoutbox-input .message').val(''); } function display_shoutbox() { refresh_shoutbox(); refresh_time_sb(); } function refresh_diskusage() { $.get('/piratebox/diskusage', function(data) { let usage = data.usage; $('div#diskusage .progress-bar').attr("aria-valuenow", usage).css("width", usage + "%"); $('div#diskusage .sr-only').text(usage + "%"); }); } function refresh_time_du() { // Refresh rate in milli seconds mytimedu = setTimeout('display_diskusage()', 10000); } function display_diskusage() { refresh_diskusage(); refresh_time_du(); } function fnGetDomain(url) { return url.match(/:\/\/(.[^/]+)/)[1]; } function render_chat_content(item) { return $('
') .addClass('message') .append($('').text(item.date)) .append($('').text(item.name + ':')) .append($('').addClass(item.color).text(item.data)); }