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');