diff --git a/app/templates/index.html b/app/templates/index.html index 000bdf2..908364f 100644 --- a/app/templates/index.html +++ b/app/templates/index.html @@ -251,6 +251,45 @@ // Current page for pagination let currentPage = 1; const pageSize = 10; + + // Save form values to localStorage + function saveFormValues() { + const exerciseFormValues = { + minTable: document.getElementById('minTable').value, + maxTable: document.getElementById('maxTable').value, + numExercises: document.getElementById('numExercises').value, + multiplicationOnly: document.getElementById('multiplicationOnly').checked, + maxFirstOperand: document.getElementById('maxFirstOperand').value + }; + + const operationFormValues = { + numOperationExercises: document.getElementById('numOperationExercises').value + }; + + localStorage.setItem('exerciseFormValues', JSON.stringify(exerciseFormValues)); + localStorage.setItem('operationFormValues', JSON.stringify(operationFormValues)); + } + + // Restore form values from localStorage + function restoreFormValues() { + // Restore exercise form values + const savedExerciseValues = localStorage.getItem('exerciseFormValues'); + if (savedExerciseValues) { + const exerciseValues = JSON.parse(savedExerciseValues); + document.getElementById('minTable').value = exerciseValues.minTable || 1; + document.getElementById('maxTable').value = exerciseValues.maxTable || 10; + document.getElementById('numExercises').value = exerciseValues.numExercises || 15; + document.getElementById('multiplicationOnly').checked = exerciseValues.multiplicationOnly || false; + document.getElementById('maxFirstOperand').value = exerciseValues.maxFirstOperand || 10; + } + + // Restore operation form values + const savedOperationValues = localStorage.getItem('operationFormValues'); + if (savedOperationValues) { + const operationValues = JSON.parse(savedOperationValues); + document.getElementById('numOperationExercises').value = operationValues.numOperationExercises || 20; + } + } // Function to load and display existing PDFs with pagination (sorted from newest to oldest) async function loadPdfList(page = 1) { @@ -424,9 +463,18 @@ // Load PDF list on page load document.addEventListener('DOMContentLoaded', function() { + restoreFormValues(); loadPdfList(currentPage); }); + // Add event listeners to save form values on change + document.getElementById('minTable').addEventListener('change', saveFormValues); + document.getElementById('maxTable').addEventListener('change', saveFormValues); + document.getElementById('numExercises').addEventListener('change', saveFormValues); + document.getElementById('multiplicationOnly').addEventListener('change', saveFormValues); + document.getElementById('maxFirstOperand').addEventListener('change', saveFormValues); + document.getElementById('numOperationExercises').addEventListener('change', saveFormValues); + // Event listener for select all button document.getElementById('selectAllBtn').addEventListener('click', function() { document.querySelectorAll('.file-checkbox').forEach(checkbox => { @@ -523,6 +571,9 @@ document.getElementById('exerciseForm').addEventListener('submit', async function(e) { e.preventDefault(); + // Save form values to localStorage + saveFormValues(); + const minTable = parseInt(document.getElementById('minTable').value); const maxTable = parseInt(document.getElementById('maxTable').value); const numExercises = parseInt(document.getElementById('numExercises').value); @@ -600,14 +651,18 @@ spinner.classList.add('d-none'); generateBtn.disabled = false; } - }); - +}); + // Handle operation exercises form submission document.getElementById('operationExerciseForm').addEventListener('submit', async function(e) { e.preventDefault(); + // Save form values to localStorage + saveFormValues(); + const numExercises = parseInt(document.getElementById('numOperationExercises').value); + const generateBtn = document.getElementById('generateOperationBtn'); const buttonText = document.getElementById('operationButtonText'); const spinner = document.getElementById('operationSpinner');