var table = $j('#frameStatsTable'); var backBtn = $j('#backBtn'); var statsBtn = $j('#statsBtn'); function changeScale() { var scale = $j('#scale').val(); var img = $j('#frameImg'); var controlsLinks = { next: $j('#nextLink'), prev: $j('#prevLink'), first: $j('#firstLink'), last: $j('#lastLink') }; if ( img ) { var baseWidth = $j('#base_width').val(); var baseHeight = $j('#base_height').val(); if ( ! parseInt(scale) ) { var newSize = scaleToFit(baseWidth, baseHeight, img, $j('#controls')); newWidth = newSize.width; newHeight = newSize.height; autoScale = newSize.autoScale; } else { $j(window).off('resize', endOfResize); //remove resize handler when Scale to Fit is not active newWidth = baseWidth * scale / SCALE_BASE; newHeight = baseHeight * scale / SCALE_BASE; } img.css('width', newWidth + 'px'); img.css('height', newHeight + 'px'); } setCookie('zmWatchScale', scale, 3600); $j.each(controlsLinks, function(k, anchor) { //Make frames respect scale choices if ( anchor ) { anchor.prop('href', anchor.prop('href').replace(/scale=.*&/, 'scale=' + scale + '&')); } }); // After a resize, check if we still have room to display the event stats table onStatsResize(newWidth); } function getFrmStatsCookie() { var cookie = 'zmFrameStats'; var stats = getCookie(cookie); if ( !stats ) { stats = 'on'; setCookie(cookie, stats, 10*365); } return stats; } function getStat(params) { $j.getJSON(thisUrl + '?view=request&request=stats&raw=true', params) .done(function(data) { var stat = data.raw; $j('#frameStatsTable').empty().append(''); $j.each( statHeaderStrings, function( key ) { var th = $j('').addClass('text-right').text(statHeaderStrings[key]); var tdString; switch (stat ? key : 'n/a') { case 'FrameId': tdString = '' + stat[key] + ''; break; case 'n/a': tdString = 'n/a'; break; default: tdString = stat[key]; } var td = $j('').html(tdString); var row = $j('').append(th, td); $j('#frameStatsTable tbody').append(row); }); }) .fail(logAjaxFail); } function onStatsResize(vidwidth) { var minWidth = 300; // An arbitrary value in pixels used to hide the stats table var width = $j(window).width() - vidwidth; // Hide the stats table if we have run out of room to show it properly if ( width < minWidth ) { statsBtn.prop('disabled', true); if ( table.is(':visible') ) { table.toggle(false); wasHidden = true; } // Show the stats table if we hid it previously and sufficient room becomes available } else if ( width >= minWidth ) { statsBtn.prop('disabled', false); if ( !table.is(':visible') && wasHidden ) { table.toggle(true); wasHidden = false; } } } function initPage() { if ( scale == '0' || scale == 'auto' ) changeScale(); // Don't enable the back button if there is no previous zm page to go back to backBtn.prop('disabled', !document.referrer.length); // Manage the BACK button document.getElementById("backBtn").addEventListener("click", function onBackClick(evt) { evt.preventDefault(); window.history.back(); }); // Manage the REFRESH Button document.getElementById("refreshBtn").addEventListener("click", function onRefreshClick(evt) { evt.preventDefault(); window.location.reload(true); }); // Manage the Frame STATISTICS Button document.getElementById("statsBtn").addEventListener("click", function onStatsClick(evt) { evt.preventDefault(); var cookie = 'zmFrameStats'; // Toggle the visiblity of the stats table and write an appropriate cookie if ( table.is(':visible') ) { setCookie(cookie, 'off', 10*365); table.toggle(false); } else { setCookie(cookie, 'on', 10*365); table.toggle(true); } }); // Manage the Frame STATISTICS VIEW button document.getElementById("statsViewBtn").addEventListener("click", function onViewClick(evt) { evt.preventDefault(); window.location.href = thisUrl+'?view=stats&eid='+eid+'&fid='+fid; }); // Load the frame stats getStat({eid: eid, fid: fid}); if ( getFrmStatsCookie() != 'on' ) { table.toggle(false); } else { onStatsResize($j('#base_width').val() * scale / SCALE_BASE); } } // Kick everything off $j(document).ready(initPage);