blob: 8db1ebec777447d7029e3585e9ec3bfc0d97c1b2 [file] [log] [blame]
$(document).ready(function() {
$('.alert').parent().hide();
$(function() {
$(document).on('click', '.alert-close', function() {
$(this).parent().hide();
});
});
var postsuccess = function(data) {
$('#Main').show()
$('#loading').hide()
location.reload(true)
};
var postfailure = function(data) {
progress.close();
$('#Main').show()
$('#loading').hide()
$('.errormsg')
.text('Settings could not be saved. Please check the logs for details.')
$('.errormsg').slideDown('fast')
};
$('.setting_value_input').bind('input', function() {
var text = $(this).val()
if (text.indexOf(',') >= 0) {
// Replace ',' with '.' -> allow comma decimal separator (e.g. Finnish
// locale)
text = text.split(',').join('.');
}
var name = $(this).attr('name')
// Check if the input text is a legal value for the input
var valid = false
if (name.match(/^edgelimit/) || name.match(/^ztouchlimit/)) {
// Allow negative and zero values
if (text.match(/^-?\d+(\.\d+)?$/) && !isNaN(text)) {
valid = true;
}
}
// else if (name.match(/missing/)) {
else {
// Do not allow negative values
if (text.match(/^\d+(\.\d+)?$/) && parseFloat(text) >= 0) {
valid = true;
}
}
/*
else {
// Do not allow negative or zero values
if (text.match(/^\d+(\.\d+)?$/) && parseFloat(text) > 0) {
valid = true;
}
}
*/
if (valid && $(this).hasClass('invalid')) {
$(this).removeClass('invalid');
} else if (!valid && !$(this).hasClass('invalid')) {
$(this).addClass('invalid');
}
});
var progress;
$('#save').on('submit', function(e) {
// Check if there are invalid values
e.preventDefault();
if ($('.invalid').length > 0) {
$('.errormsg').text('Please check the invalid values before saving');
$('.errormsg').slideDown('fast');
} else {
if ($('#save').context.activeElement.value === 'recalculate') {
$('#Main').hide();
$('#loading').show();
}
var idvalues = [];
$('.settings_table :input').each(function() {
var idvalue = {id: $(this).attr('name'), value: $(this).val()};
idvalues.push(idvalue);
});
if ($('#save').context.activeElement.value === 'recalculate') {
progress = new EventSource('/settings?event=progress');
progress.onmessage = function(event) {
var val = Math.round(event.data * 100);
if (val <= 99) {
$('.prog').text(val);
$('.progress-bar')
.css('width', val + '%')
.attr('aria-valuenow', val);
} else {
$('.prog').text(100);
$('.progress-bar')
.css('width', 100 + '%')
.attr('aria-valuenow', 100);
}
};
$.ajax({
type: 'POST',
url: '/settings',
data: {
params: JSON.stringify(idvalues),
mode: $('#save').context.activeElement.value
},
success: function(msg) {
progress.close();
location.reload(true);
$(document).ready(function() {
$('.alert').text(msg);
$('.alert').parent().show();
$('html, body').animate({scrollTop: 0}, 0);
});
}
}).fail(postfailure);
} else {
$.ajax({
type: 'POST',
url: '/settings',
data: {
params: JSON.stringify(idvalues),
mode: $('#save').context.activeElement.value
},
success: function(msg) {
$('.alert').text(msg);
$('.alert').parent().show();
$('html, body').animate({scrollTop: 0}, 0);
}
}).fail(postfailure);
}
}
});
});