function loadConfig() { try { $.ajax({ type : 'GET', url : '../config', dataType : 'json', async : true, timeout : 60000, headers : { 'CTBREC-HMAC' : CryptoJS.HmacSHA256('', hmac) } }).done(function(data, textStatus, jqXHR) { if (textStatus === 'success') { while (observableSettingsArray().length > 0) { observableSettingsArray.pop(); } for (let i = 0; i < data.length; i++) { let param = data[i]; param.ko_value = ko.observable(param.value); observableSettingsArray.push(param); } } else { if (console) console.log('request failed', data); } }).fail(function(jqXHR, textStatus, errorThrown) { if (console) console.log(jqXHR, textStatus, errorThrown); }); } catch (e) { if (console) console.log('Unexpected error', e); } } function saveConfig() { try { let msg = JSON.stringify(observableSettingsArray()); $.ajax({ type : 'POST', url : '../config', dataType : 'json', async : true, timeout : 60000, headers : { 'CTBREC-HMAC' : CryptoJS.HmacSHA256(msg, hmac) }, data : msg }).done(function(data, textStatus, jqXHR) { if (textStatus === 'success') { loadConfig(); $.notify('Configuration saved. You might have to restart the server.', 'info'); } else { if (console) console.log('request failed', data); $.notify('Error: ' + jqXHR.responseText, 'error'); } }).fail(function(jqXHR, textStatus, errorThrown) { if (console) console.log(jqXHR, textStatus, errorThrown); $.notify(errorThrown + ': ' + jqXHR.responseText, 'error'); }); } catch (e) { if (console) console.log('Unexpected error', e); $.notify(errorThrown + ': ' + jqXHR.responseText, 'error'); } }