From b0eb98c667d196a1176dc457b9865637f6507bb1 Mon Sep 17 00:00:00 2001 From: JonnyWong16 Date: Thu, 12 May 2016 20:58:33 -0700 Subject: [PATCH] Some javascript cleanup in settings --- data/interfaces/default/history.html | 2 - data/interfaces/default/js/script.js | 474 +++++++++++++------------- data/interfaces/default/settings.html | 123 ++----- 3 files changed, 263 insertions(+), 336 deletions(-) diff --git a/data/interfaces/default/history.html b/data/interfaces/default/history.html index 59cbce86..1ba96806 100644 --- a/data/interfaces/default/history.html +++ b/data/interfaces/default/history.html @@ -122,7 +122,6 @@ }); function loadHistoryTable(media_type, selected_user_id) { - console.log(selected_user_id) history_table_options.ajax = { url: 'get_history', type: 'post', @@ -150,7 +149,6 @@ $('#history-user').on('change', function () { selected_user_id = $(this).val() || null; - console.log(selected_user_id) history_table.draw(); }); } diff --git a/data/interfaces/default/js/script.js b/data/interfaces/default/js/script.js index c163b855..30f85a4e 100644 --- a/data/interfaces/default/js/script.js +++ b/data/interfaces/default/js/script.js @@ -1,181 +1,179 @@ function initConfigCheckbox(elem) { - var config = $(elem).parent().next(); - if ( $(elem).is(":checked") ) { - config.show(); - } else { - config.hide(); - } - $(elem).click(function(){ - var config = $(this).parent().next(); - if ( $(this).is(":checked") ) { - config.slideDown(); - } else { - config.slideUp(); - } - }); -} - -function refreshTab() { - var url = $(location).attr('href'); - var tabId = $('.ui-tabs-panel:visible').attr("id"); - $('.ui-tabs-panel:visible').load(url + " #"+ tabId, function() { - initThisPage(); - }); + var config = $(elem).closest('div').next(); + config.css('overflow', 'hidden'); + if ($(elem).is(":checked")) { + config.show(); + } else { + config.hide(); + } + $(elem).click(function () { + var config = $(this).closest('div').next(); + if ($(this).is(":checked")) { + config.slideDown(); + } else { + config.slideUp(); + } + }); } -function showMsg(msg,loader,timeout,ms,error) { - var feedback = $("#ajaxMsg"); - update = $("#updatebar"); - if ( update.is(":visible") ) { - var height = update.height() + 35; - feedback.css("bottom",height + "px"); - } else { - feedback.removeAttr("style"); - } - var message = $("
" + msg + "
"); - if (loader) { - var message = $(" " + msg + ""); - feedback.css("padding","14px 10px") - } - if (error) { - feedback.css("background-color", "rgba(255,0,0,0.5)"); - } - $(feedback).html(message); - feedback.fadeIn(); +function refreshTab() { + var url = $(location).attr('href'); + var tabId = $('.ui-tabs-panel:visible').attr("id"); + $('.ui-tabs-panel:visible').load(url + " #" + tabId, function () { + initThisPage(); + }); +} - if (timeout) { - setTimeout(function(){ - message.fadeOut(function(){ - $(this).remove(); - feedback.fadeOut(); - feedback.css("background-color", ""); - }); - },ms); - } +function showMsg(msg, loader, timeout, ms, error) { + var feedback = $("#ajaxMsg"); + update = $("#updatebar"); + if (update.is(":visible")) { + var height = update.height() + 35; + feedback.css("bottom", height + "px"); + } else { + feedback.removeAttr("style"); + } + var message = $("
" + msg + "
"); + if (loader) { + var message = $(" " + msg + ""); + feedback.css("padding", "14px 10px") + } + if (error) { + feedback.css("background-color", "rgba(255,0,0,0.5)"); + } + $(feedback).html(message); + feedback.fadeIn(); + if (timeout) { + setTimeout(function () { + message.fadeOut(function () { + $(this).remove(); + feedback.fadeOut(); + feedback.css("background-color", ""); + }); + }, ms); + } } function doAjaxCall(url, elem, reload, form, callback) { - // Set Message - feedback = $("#ajaxMsg"); - update = $("#updatebar"); - if ( update.is(":visible") ) { - var height = update.height() + 35; - feedback.css("bottom",height + "px"); - } else { - feedback.removeAttr("style"); - } - - feedback.fadeIn(); - // Get Form data - var formID = "#"+url; - if ( form == true ) { - var dataString = $(formID).serialize(); - } - // Loader Image - var loader = $(""); - // Data Success Message - var dataSucces = $(elem).data('success'); - if (typeof dataSucces === "undefined") { - // Standard Message when variable is not set - var dataSucces = "Success!"; - } - // Data Errror Message - var dataError = $(elem).data('error'); - if (typeof dataError === "undefined") { - // Standard Message when variable is not set - var dataError = "There was an error"; - } - // Get Success & Error message from inline data, else use standard message - var succesMsg = $("
" + dataSucces + "
"); - var errorMsg = $("
" + dataError + "
"); - - // Check if checkbox is selected - if ( form ) { - if ( $('td#select input[type=checkbox]').length > 0 && !$('td#select input[type=checkbox]').is(':checked') || $('#importLastFM #username:visible').length > 0 && $("#importLastFM #username" ).val().length === 0 ) { - feedback.addClass('error') - $(feedback).prepend(errorMsg); - setTimeout(function(){ - errorMsg.fadeOut(function(){ - $(this).remove(); - feedback.fadeOut(function(){ - feedback.removeClass('error'); - }); - }) - $(formID + " select").children('option[disabled=disabled]').attr('selected','selected'); - },2000); - return false; - } - } - - // Ajax Call - $.ajax({ - url: url, - data: dataString, - type: 'post', - beforeSend: function(jqXHR, settings) { - // Start loader etc. - feedback.prepend(loader); - }, - error: function(jqXHR, textStatus, errorThrown) { - feedback.addClass('error') - feedback.prepend(errorMsg); - setTimeout(function(){ - errorMsg.fadeOut(function(){ - $(this).remove(); - feedback.fadeOut(function(){ - feedback.removeClass('error') - }); - }) - },2000); - }, - success: function(data,jqXHR) { - feedback.prepend(succesMsg); - feedback.addClass('success') - setTimeout(function(e){ - succesMsg.fadeOut(function(){ - $(this).remove(); - feedback.fadeOut(function(){ - feedback.removeClass('success'); - }); - if ( reload == true ) refreshSubmenu(); - if ( reload == "table") { - console.log('refresh'); refreshTable(); - } - if ( reload == "tabs") refreshTab(); - if ( reload == "page") location.reload(); - if ( reload == "submenu&table") { - refreshSubmenu(); - refreshTable(); - } - if ( form ) { - // Change the option to 'choose...' - $(formID + " select").children('option[disabled=disabled]').attr('selected','selected'); - } - }) - },2000); - }, - complete: function(jqXHR, textStatus) { - // Remove loaders and stuff, ajax request is complete! - loader.remove(); - if (typeof callback === "function") { - callback(); - } - } - }); + // Set Message + feedback = $("#ajaxMsg"); + update = $("#updatebar"); + if (update.is(":visible")) { + var height = update.height() + 35; + feedback.css("bottom", height + "px"); + } else { + feedback.removeAttr("style"); + } + feedback.fadeIn(); + // Get Form data + var formID = "#" + url; + if (form == true) { + var dataString = $(formID).serialize(); + } + // Loader Image + var loader = $(""); + // Data Success Message + var dataSucces = $(elem).data('success'); + if (typeof dataSucces === "undefined") { + // Standard Message when variable is not set + var dataSucces = "Success!"; + } + // Data Errror Message + var dataError = $(elem).data('error'); + if (typeof dataError === "undefined") { + // Standard Message when variable is not set + var dataError = "There was an error"; + } + // Get Success & Error message from inline data, else use standard message + var succesMsg = $("
" + dataSucces + "
"); + var errorMsg = $("
" + dataError + "
"); + // Check if checkbox is selected + if (form) { + if ($('td#select input[type=checkbox]').length > 0 && !$('td#select input[type=checkbox]').is(':checked') || + $('#importLastFM #username:visible').length > 0 && $("#importLastFM #username").val().length === 0) { + feedback.addClass('error') + $(feedback).prepend(errorMsg); + setTimeout(function () { + errorMsg.fadeOut(function () { + $(this).remove(); + feedback.fadeOut(function () { + feedback.removeClass('error'); + }); + }) + $(formID + " select").children('option[disabled=disabled]').attr('selected', 'selected'); + }, 2000); + return false; + } + } + // Ajax Call + $.ajax({ + url: url, + data: dataString, + type: 'post', + beforeSend: function (jqXHR, settings) { + // Start loader etc. + feedback.prepend(loader); + }, + error: function (jqXHR, textStatus, errorThrown) { + feedback.addClass('error') + feedback.prepend(errorMsg); + setTimeout(function () { + errorMsg.fadeOut(function () { + $(this).remove(); + feedback.fadeOut(function () { + feedback.removeClass('error') + }); + }) + }, 2000); + }, + success: function (data, jqXHR) { + feedback.prepend(succesMsg); + feedback.addClass('success') + setTimeout(function (e) { + succesMsg.fadeOut(function () { + $(this).remove(); + feedback.fadeOut(function () { + feedback.removeClass('success'); + }); + if (reload == true) refreshSubmenu(); + if (reload == "table") { + refreshTable(); + } + if (reload == "tabs") refreshTab(); + if (reload == "page") location.reload(); + if (reload == "submenu&table") { + refreshSubmenu(); + refreshTable(); + } + if (form) { + // Change the option to 'choose...' + $(formID + " select").children('option[disabled=disabled]').attr( + 'selected', 'selected'); + } + }) + }, 2000); + }, + complete: function (jqXHR, textStatus) { + // Remove loaders and stuff, ajax request is complete! + loader.remove(); + if (typeof callback === "function") { + callback(); + } + } + }); } function doSimpleAjaxCall(url) { - $.ajax(url); + $.ajax(url); } -function resetFilters(text){ - if ( $(".dataTables_filter").length > 0 ) { - $(".dataTables_filter input").attr("placeholder","filter " + text + ""); - } +function resetFilters(text) { + if ($(".dataTables_filter").length > 0) { + $(".dataTables_filter input").attr("placeholder", "filter " + text + ""); + } } function getPlatformImagePath(platformName) { - if (platformName.indexOf("Roku") > -1) { return 'images/platforms/roku.png'; } else if (platformName.indexOf("Apple TV") > -1) { @@ -230,7 +228,7 @@ function getPlatformImagePath(platformName) { return 'images/platforms/win8.png'; } else if (platformName.indexOf("Windows phone") > -1) { return 'images/platforms/wp.png'; - } else if (platformName.indexOf("Plex Media Player") > -1) { + } else if (platformName.indexOf("Plex Media Player") > -1) { return 'images/platforms/pmp.png'; } else { return 'images/platforms/default.png'; @@ -242,10 +240,9 @@ function isPrivateIP(ip_address) { // get IPv4 mapped address (xxx.xxx.xxx.xxx) from IPv6 addresss (::ffff:xxx.xxx.xxx.xxx) var parts = ip_address.split(":"); var parts = parts[parts.length - 1].split('.'); - if ((parts[0] === '127' && parts[1] === '0' && parts[2] === '0' && parts[3] === '1') || - (parts[0] === '10') || - (parts[0] === '172' && (parseInt(parts[1], 10) >= 16 && parseInt(parts[1], 10) <= 31)) || - (parts[0] === '192' && parts[1] === '168')) { + if ((parts[0] === '127' && parts[1] === '0' && parts[2] === '0' && parts[3] === '1') || (parts[0] === '10') || + (parts[0] === '172' && (parseInt(parts[1], 10) >= 16 && parseInt(parts[1], 10) <= 31)) || (parts[0] === + '192' && parts[1] === '168')) { return true; } return false; @@ -256,16 +253,18 @@ function isPrivateIP(ip_address) { function humanTime(seconds) { if (seconds >= 86400) { - text = '

' + Math.floor(moment.duration(seconds, 'seconds').asDays()) + '

days

' + - '

' + Math.floor(moment.duration((seconds % 86400), 'seconds').asHours()) + '

hrs

' + - '

' + Math.floor(moment.duration(((seconds % 86400) % 3600), 'seconds').asMinutes()) + '

mins

'; + text = '

' + Math.floor(moment.duration(seconds, 'seconds').asDays()) + '

days

' + '

' + + Math.floor(moment.duration((seconds % 86400), 'seconds').asHours()) + '

hrs

' + '

' + + Math.floor(moment.duration(((seconds % 86400) % 3600), 'seconds').asMinutes()) + '

mins

'; return text; } else if (seconds >= 3600) { text = '

' + Math.floor(moment.duration((seconds % 86400), 'seconds').asHours()) + '

hrs

' + - '

' + Math.floor(moment.duration(((seconds % 86400) % 3600), 'seconds').asMinutes()) + '

mins

'; + '

' + Math.floor(moment.duration(((seconds % 86400) % 3600), 'seconds').asMinutes()) + + '

mins

'; return text; } else if (seconds >= 60) { - text = '

' + Math.floor(moment.duration(((seconds % 86400) % 3600), 'seconds').asMinutes()) + '

mins

'; + text = '

' + Math.floor(moment.duration(((seconds % 86400) % 3600), 'seconds').asMinutes()) + + '

mins

'; return text; } else { text = '

0

mins

'; @@ -275,13 +274,13 @@ function humanTime(seconds) { function humanTimeClean(seconds) { if (seconds >= 86400) { - text = Math.floor(moment.duration(seconds, 'seconds').asDays()) + ' days ' + - Math.floor(moment.duration((seconds % 86400), 'seconds').asHours()) + ' hrs ' + - Math.floor(moment.duration(((seconds % 86400) % 3600), 'seconds').asMinutes()) + ' mins'; + text = Math.floor(moment.duration(seconds, 'seconds').asDays()) + ' days ' + Math.floor(moment.duration(( + seconds % 86400), 'seconds').asHours()) + ' hrs ' + Math.floor(moment.duration( + ((seconds % 86400) % 3600), 'seconds').asMinutes()) + ' mins'; return text; } else if (seconds >= 3600) { - text = Math.floor(moment.duration((seconds % 86400), 'seconds').asHours()) + ' hrs ' + - Math.floor(moment.duration(((seconds % 86400) % 3600), 'seconds').asMinutes()) + ' mins'; + text = Math.floor(moment.duration((seconds % 86400), 'seconds').asHours()) + ' hrs ' + Math.floor(moment.duration( + ((seconds % 86400) % 3600), 'seconds').asMinutes()) + ' mins'; return text; } else if (seconds >= 60) { text = Math.floor(moment.duration(((seconds % 86400) % 3600), 'seconds').asMinutes()) + ' mins'; @@ -291,37 +290,35 @@ function humanTimeClean(seconds) { return text; } } - String.prototype.toProperCase = function () { - return this.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); + return this.replace(/\w\S*/g, function (txt) { + return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); + }); }; function millisecondsToMinutes(ms, roundToMinute) { - - if (ms > 0) { - seconds = ms / 1000; - minutes = seconds / 60; - - if (roundToMinute) { - output = Math.round(minutes, 0) - } else { - minutesFloor = Math.floor(minutes); - secondsReal = Math.round((seconds - (minutesFloor * 60)),0); - if (secondsReal < 10) { - secondsReal = '0' + secondsReal; - } - output = minutesFloor + ':' + secondsReal; - } - return output; - } else { - if (roundToMinute) { - return '0'; - } else { - return '0:00'; - } - } + if (ms > 0) { + seconds = ms / 1000; + minutes = seconds / 60; + if (roundToMinute) { + output = Math.round(minutes, 0) + } else { + minutesFloor = Math.floor(minutes); + secondsReal = Math.round((seconds - (minutesFloor * 60)), 0); + if (secondsReal < 10) { + secondsReal = '0' + secondsReal; + } + output = minutesFloor + ':' + secondsReal; + } + return output; + } else { + if (roundToMinute) { + return '0'; + } else { + return '0:00'; + } + } } - // Our countdown plugin takes a callback, a duration, and an optional message $.fn.countdown = function (callback, duration, message) { // If no message is provided, we use an empty string @@ -334,68 +331,65 @@ $.fn.countdown = function (callback, duration, message) { if (--duration) { // Update our container's message container.html(duration + message); - // Otherwise + // Otherwise } else { // Clear the countdown interval clearInterval(countdown); // And fire the callback passing our container as `this` callback.call(container); } - // Run interval every 1000ms (1 second) + // Run interval every 1000ms (1 second) }, 1000); - }; function setCookie(cname, cvalue, exdays) { var d = new Date(); - d.setTime(d.getTime() + (exdays*24*60*60*1000)); - var expires = "expires="+d.toUTCString(); + d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); + var expires = "expires=" + d.toUTCString(); document.cookie = cname + "=" + cvalue + "; " + expires; } function getCookie(cname) { var name = cname + "="; var ca = document.cookie.split(';'); - for(var i=0; i') - .after('') - $('#clear-search-' + tableName).click(function() { + $('#' + tableName + '_filter').find('input[type=search]').wrap( + '
').after( + '') + $('#clear-search-' + tableName).click(function () { table.search('').draw(); }); } - // Taken from https://github.com/Hellowlol/HTPC-Manager window.onerror = function (message, file, line) { var e = { @@ -404,7 +398,5 @@ window.onerror = function (message, file, line) { 'file': file, 'line': line }; - - $.post("log_js_errors", e, function (data) { - }); + $.post("log_js_errors", e, function (data) { }); }; \ No newline at end of file diff --git a/data/interfaces/default/settings.html b/data/interfaces/default/settings.html index 72005c55..1c9c5e48 100644 --- a/data/interfaces/default/settings.html +++ b/data/interfaces/default/settings.html @@ -2071,13 +2071,13 @@ $(document).ready(function() { $('#restart-modal').modal('show'); } $("#http_hashed_password").val($("#http_hash_password").is(":checked") ? 1 : 0) + getSchedulerTable(); } var configForm = $("#configUpdate"); function saveSettings() { if (configForm.parsley().validate()) { - doAjaxCall('configUpdate', $(this), 'tabs', true, getSchedulerTable); - postSaveChecks(); + doAjaxCall('configUpdate', $(this), 'tabs', true, postSaveChecks); return false; } else { showMsg(' Please verify your settings.', false, true, 5000, true) @@ -2092,6 +2092,12 @@ $(document).ready(function() { } }); + initConfigCheckbox('#api_enabled'); + initConfigCheckbox('#enable_https'); + initConfigCheckbox('#https_create_cert'); + initConfigCheckbox('#check_github'); + initConfigCheckbox('#notify_upload_posters'); + $("#menu_link_shutdown").click(function() { $("#confirm-message").text("Are you sure you want to shutdown PlexPy?"); $('#confirm-modal').modal(); @@ -2120,6 +2126,18 @@ $(document).ready(function() { window.location.href = "restart"; }); + function getSchedulerTable() { + $.ajax({ + url: 'get_scheduler_table', + cache: false, + async: true, + complete: function(xhr, status) { + $("#plexpy-scheduler-table").html(xhr.responseText); + } + }); + } + getSchedulerTable(); + $("#backup_database").click(function () { $("#confirm-message").text("Are you sure you want to create a backup of the PlexPy database?"); $('#confirm-modal').modal(); @@ -2180,86 +2198,17 @@ $(document).ready(function() { }); }); - if ($("#api_enabled").is(":checked")) { - $("#apioptions").show(); - } else { - $("#apioptions").hide(); - } - - $("#api_enabled").click(function(){ - if ($("#api_enabled").is(":checked")) { - $("#apioptions").slideDown(); - } else { - $("#apioptions").slideUp(); - } - }); $('#api_key').click(function(){ $('#api_key').select() }); - $("#generate_api").click(function() { - $.get('generateAPI', - function(data){ - if (data.error != undefined) { - alert(data.error); - return; - } - $('#api_key').val(data); - }); + $("#generate_api").click(function() { + $.get('generateAPI', + function(data){ + if (data.error != undefined) { + alert(data.error); + return; + } + $('#api_key').val(data); }); - - if ($("#enable_https").is(":checked")) { - $("#https_options").show(); - } else { - $("#https_options").hide(); - } - - $("#enable_https").click(function(){ - if ($("#enable_https").is(":checked")) { - $("#https_options").slideDown(); - } else { - $("#https_options").slideUp(); - } - }); - - if ($("#https_create_cert").is(":checked")) { - $("#https_options_self-signed").show(); - } else { - $("#https_options_self-signed").hide(); - } - - $("#https_create_cert").click(function(){ - if ($("#https_create_cert").is(":checked")) { - $("#https_options_self-signed").slideDown(); - } else { - $("#https_options_self-signed").slideUp(); - } - }); - - if ($("#check_github").is(":checked")) { - $("#git_update_options").show(); - } else { - $("#git_update_options").hide(); - } - - $("#check_github").click(function(){ - if ($("#check_github").is(":checked")) { - $("#git_update_options").slideDown(); - } else { - $("#git_update_options").slideUp(); - } - }); - - if ($("#notify_upload_posters").is(":checked")) { - $("#imgur_upload_options").show(); - } else { - $("#imgur_upload_options").hide(); - } - - $("#notify_upload_posters").click(function(){ - if ($("#notify_upload_posters").is(":checked")) { - $("#imgur_upload_options").slideDown(); - } else { - $("#imgur_upload_options").slideUp(); - } }); $( ".http-settings" ).change(function() { @@ -2342,8 +2291,8 @@ $(document).ready(function() { $("#pms-token-status").html(' Fetching token...'); if (($("#pms_username").val() !== '') || ($("#pms_password").val() !== '')) { $.ajax({ - type: "post", - url: "https://plex.tv/users/sign_in.xml", + type: 'POST', + url: 'https://plex.tv/users/sign_in.xml', dataType: 'xml', async: true, headers: {'Content-Type': 'application/xml; charset=utf-8', @@ -2595,18 +2544,6 @@ $(document).ready(function() { $(this).on('focus keyup input', function() { resizeTextarea(this); }).removeAttr('data-autoresize'); }); - function getSchedulerTable() { - $.ajax({ - url: 'get_scheduler_table', - cache: false, - async: true, - complete: function(xhr, status) { - $("#plexpy-scheduler-table").html(xhr.responseText); - } - }); - } - getSchedulerTable(); - $("#notify_recently_added_grandparent").change(function () { var c = this.checked ? '#eb8600' : '#737373'; $('#notify_recently_added_grandparent_note').css('color', c);