feat: enhance PDF text extraction and add maintenance features

- Refactor text extraction functions to extract text from all pages instead of just the first page.
- Implement logging for better debugging during file operations.
- Add a new maintenance page with options to rebuild the database and run consistency checks.
- Update styles for maintenance actions and improve UI elements.
- Remove obsolete rebuild database functionality from the main interface.
This commit is contained in:
2026-10-13 22:01:36 +02:00
parent ab232a276f
commit 34271f3bfa
13 changed files with 237 additions and 67 deletions
+11 -1
View File
@@ -159,15 +159,25 @@ const buildAdditionalFieldRow = (label = '', value = '', suggestions = {}) => {
const row = document.createElement('div');
row.className = 'additional-field-row';
const labelGroup = document.createElement('div');
labelGroup.className = 'field-group';
const labelCaption = document.createElement('label');
labelCaption.textContent = 'Field name';
const labelSelect = document.createElement('select');
labelSelect.className = 'additional-field-label';
labelSelect.setAttribute('aria-label', 'Additional field name');
labelGroup.append(labelCaption, labelSelect);
const labelValues = [...new Set([...(suggestions.names || []), label].filter((item) => item !== null && item !== undefined && String(item).trim() !== ''))];
setSelectOptions(labelSelect, labelValues, label);
const valueGroup = document.createElement('div');
valueGroup.className = 'field-group';
const valueCaption = document.createElement('label');
valueCaption.textContent = 'Value';
const valueSelect = document.createElement('select');
valueSelect.className = 'additional-field-value';
valueSelect.setAttribute('aria-label', 'Additional field value');
valueGroup.append(valueCaption, valueSelect);
const valueValues = [...new Set([...getFieldValueSuggestions(suggestions, labelSelect.value), value].filter((item) => item !== null && item !== undefined && String(item).trim() !== ''))];
setSelectOptions(valueSelect, valueValues, value);
labelSelect.addEventListener('change', () => {
@@ -189,7 +199,7 @@ const buildAdditionalFieldRow = (label = '', value = '', suggestions = {}) => {
updateSaveButtonState();
});
row.append(labelSelect, valueSelect, removeButton);
row.append(labelGroup, valueGroup, removeButton);
return row;
};