$(document).ready(function() {
var printersData = [];
// Fetch printer data from the server when the page loads
$.get('/get_printers', function(data) {
printersData = data;
data.forEach(function(printer) {
$('#printers').append(new Option(printer["display-name"], printer["display-name"]));
});
}).fail(function() {
console.error('Failed to fetch printer data');
});
// Handle printer selection change
$('#printers').change(function() {
var selectedPrinter = $(this).val();
if (selectedPrinter) {
var printer = printersData.find(p => p["display-name"] === selectedPrinter);
if (printer) {
var mediaSizesHtml = '
';
$('#media-sizes').html(mediaSizesHtml);
}
} else {
$('#media-sizes').html('');
}
});
// Handle checkbox change event
$(document).on('change', '#media-sizes input[type="checkbox"]', function() {
var selectedPrinter = $('#printers').val();
if (selectedPrinter) {
var printer = printersData.find(p => p["display-name"] === selectedPrinter);
if (printer) {
$('#media-sizes li').each(function(index) {
var enabled = $(this).find('input').is(':checked');
printer['media-sizes'][index].enabled = enabled;
});
}
}
});
// Handle save button click
$('#save').click(function() {
var selectedPrinter = $('#printers').val();
if (selectedPrinter) {
var printer = printersData.find(p => p["display-name"] === selectedPrinter);
if (printer) {
$.ajax({
url: '/save_printers',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(printersData),
success: function(response) {
alert('Changes saved successfully!');
},
error: function() {
console.error('Failed to save changes');
}
});
}
} else {
alert('Please select a printer.');
}
});
});