/* Baby Buddy Dashboard * * Provides a "watch" function to update the dashboard at one minute intervals * and/or on visibility state changes. */ BabyBuddy.Dashboard = (function ($) { var runIntervalId = null; var dashboardElement = null; var hidden = null; var Dashboard = { watch: function (element_id, refresh_rate) { dashboardElement = $("#" + element_id); if (dashboardElement.length == 0) { console.error("Baby Buddy: Dashboard element not found."); return false; } if (typeof document.hidden !== "undefined") { hidden = "hidden"; } else if (typeof document.msHidden !== "undefined") { hidden = "msHidden"; } else if (typeof document.webkitHidden !== "undefined") { hidden = "webkitHidden"; } if ( typeof window.addEventListener === "undefined" || typeof document.hidden === "undefined" ) { if (refresh_rate) { runIntervalId = setInterval(this.update, refresh_rate); } } else { window.addEventListener( "focus", Dashboard.handleVisibilityChange, false, ); if (refresh_rate) { runIntervalId = setInterval( Dashboard.handleVisibilityChange, refresh_rate, ); } } }, handleVisibilityChange: function () { if (!document[hidden]) { Dashboard.update(); } }, update: function () { // TODO: Someday maybe update in place? location.reload(); }, }; return Dashboard; })(jQuery);