diff --git a/domain-server/resources/web/js/settings.js b/domain-server/resources/web/js/settings.js index 293ccce36d..487ec5b296 100644 --- a/domain-server/resources/web/js/settings.js +++ b/domain-server/resources/web/js/settings.js @@ -15,9 +15,19 @@ function reloadSettings() { var SETTINGS_ERROR_MESSAGE = "There was a problem saving domain settings. Please try again!"; -$('#settings').on('click', 'button', function(e){ +$('#settings').on('click', 'button', function(e){ + // disable any inputs not changed + $("input:not([data-changed])").each(function(){ + $(this).prop('disabled', true); + }); + // grab a JSON representation of the form via form2js - var formJSON = form2js('settings-form', ".", false, null, true); + var formJSON = form2js('settings-form', ".", false, cleanupFormValues, true); + + // re-enable all inputs + $("input").each(function(){ + $(this).prop('disabled', false); + }); // POST the form JSON to the domain-server settings.json endpoint so the settings are saved $.ajax('/settings.json', { @@ -40,6 +50,19 @@ $('#settings').on('click', 'button', function(e){ return false; }); +$('#settings').on('change', 'input', function(){ + // this input was changed, add the changed data attribute to it + $(this).attr('data-changed', true); +}); + +function cleanupFormValues(node) { + if (node.type && node.type === 'checkbox') { + return { name: node.id, value: node.checked ? true : false }; + } else { + return false; + } +} + function showAlertMessage(message, isSuccess) { var alertBox = $('.alert'); alertBox.attr('class', 'alert'); diff --git a/domain-server/resources/web/settings/describe.json b/domain-server/resources/web/settings/describe.json index 5e810baa12..2c0440ac01 100644 --- a/domain-server/resources/web/settings/describe.json +++ b/domain-server/resources/web/settings/describe.json @@ -13,7 +13,7 @@ "type": "checkbox", "label": "Dynamic Jitter Buffers", "help": "Dynamically buffer client audio based on perceived jitter in packet receipt timing", - "default": "false" + "default": false } } } diff --git a/domain-server/resources/web/settings/index.shtml b/domain-server/resources/web/settings/index.shtml index d95bd65d44..15ce842f30 100644 --- a/domain-server/resources/web/settings/index.shtml +++ b/domain-server/resources/web/settings/index.shtml @@ -13,13 +13,15 @@