amine_dubs
commited on
Commit
·
f01bab8
1
Parent(s):
60da4f1
- static/script.js +24 -57
static/script.js
CHANGED
|
@@ -6,35 +6,25 @@ window.onload = function() {
|
|
| 6 |
const textTranslationForm = document.querySelector('#text-translation-form');
|
| 7 |
const docTranslationForm = document.querySelector('#doc-translation-form');
|
| 8 |
|
| 9 |
-
// Get text form
|
| 10 |
-
const textInput = document.getElementById('text-input');
|
| 11 |
-
const sourceLangText = document.getElementById('source-lang-text');
|
| 12 |
-
const targetLangText = document.getElementById('target-lang-text');
|
| 13 |
const textLoadingElement = document.getElementById('text-loading');
|
| 14 |
const debugElement = document.getElementById('debug-info');
|
| 15 |
const errorElement = document.getElementById('error-message');
|
| 16 |
const textResultBox = document.getElementById('text-result');
|
| 17 |
const textOutputElement = document.getElementById('text-output');
|
| 18 |
|
| 19 |
-
// Check if essential text elements were found on load
|
| 20 |
-
if (!textTranslationForm
|
| 21 |
-
console.error('CRITICAL:
|
| 22 |
-
form: !!textTranslationForm,
|
| 23 |
-
input: !!textInput,
|
| 24 |
-
source: !!sourceLangText,
|
| 25 |
-
target: !!targetLangText
|
| 26 |
-
});
|
| 27 |
if (errorElement) {
|
| 28 |
-
errorElement.textContent = 'Error: Could not find
|
| 29 |
errorElement.style.display = 'block';
|
| 30 |
}
|
| 31 |
-
|
| 32 |
-
if (textTranslationForm) textTranslationForm.style.opacity = '0.5';
|
| 33 |
-
return; // Stop further initialization if critical elements missing
|
| 34 |
}
|
| 35 |
|
| 36 |
// Set up text translation form
|
| 37 |
-
console.log('Text translation form
|
| 38 |
textTranslationForm.addEventListener('submit', function(event) {
|
| 39 |
event.preventDefault();
|
| 40 |
console.log('Text translation form submitted');
|
|
@@ -44,53 +34,25 @@ window.onload = function() {
|
|
| 44 |
if (errorElement) errorElement.style.display = 'none';
|
| 45 |
if (debugElement) debugElement.style.display = 'none';
|
| 46 |
|
| 47 |
-
// ---
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
//
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
console.log('[DEBUG]
|
| 57 |
-
let inputValue = null;
|
| 58 |
-
|
| 59 |
-
try {
|
| 60 |
-
console.log('[DEBUG] Attempting to access .value from textInput variable...');
|
| 61 |
-
inputValue = textInput.value; // Potential error point (Line 65 approx)
|
| 62 |
-
console.log('[DEBUG] Accessed .value successfully. Raw Value:', inputValue);
|
| 63 |
-
} catch (e) {
|
| 64 |
-
// This catch block should now definitively catch the error if it happens during value access
|
| 65 |
-
console.error('FATAL: Error occurred accessing .value from textInput variable:', e);
|
| 66 |
-
console.error('[DEBUG] textInput variable state just before error:', textInput);
|
| 67 |
-
try {
|
| 68 |
-
// Attempt to log outerHTML for more context if possible
|
| 69 |
-
console.error('[DEBUG] Element outerHTML at time of error:', textInput.outerHTML);
|
| 70 |
-
} catch (htmlError) {
|
| 71 |
-
console.error('[DEBUG] Could not get outerHTML:', htmlError);
|
| 72 |
-
}
|
| 73 |
-
showError('Internal error: Failed to read text input value. Check console.');
|
| 74 |
-
return; // Stop execution
|
| 75 |
-
}
|
| 76 |
-
|
| 77 |
-
// Now use the stored value
|
| 78 |
-
const text = inputValue ? inputValue.trim() : '';
|
| 79 |
-
console.log('[DEBUG] Trimmed text value:', text);
|
| 80 |
-
// --- END FINAL DEFENSIVE CHECK ---
|
| 81 |
|
| 82 |
if (!text) {
|
| 83 |
showError('Please enter text to translate');
|
| 84 |
return;
|
| 85 |
}
|
| 86 |
|
| 87 |
-
// Fetch other elements needed here
|
| 88 |
-
const sourceLangValue = sourceLangText ? sourceLangText.value : null;
|
| 89 |
-
const targetLangValue = targetLangText ? targetLangText.value : null;
|
| 90 |
-
|
| 91 |
if (!sourceLangValue || !targetLangValue) {
|
| 92 |
-
console.error('
|
| 93 |
-
showError('Internal error: Language
|
| 94 |
return;
|
| 95 |
}
|
| 96 |
|
|
@@ -143,7 +105,12 @@ window.onload = function() {
|
|
| 143 |
.finally(() => {
|
| 144 |
if (textLoadingElement) textLoadingElement.style.display = 'none';
|
| 145 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
| 146 |
}
|
|
|
|
| 147 |
});
|
| 148 |
|
| 149 |
// Document translation handler
|
|
|
|
| 6 |
const textTranslationForm = document.querySelector('#text-translation-form');
|
| 7 |
const docTranslationForm = document.querySelector('#doc-translation-form');
|
| 8 |
|
| 9 |
+
// Get text form OUTPUT elements ONCE
|
|
|
|
|
|
|
|
|
|
| 10 |
const textLoadingElement = document.getElementById('text-loading');
|
| 11 |
const debugElement = document.getElementById('debug-info');
|
| 12 |
const errorElement = document.getElementById('error-message');
|
| 13 |
const textResultBox = document.getElementById('text-result');
|
| 14 |
const textOutputElement = document.getElementById('text-output');
|
| 15 |
|
| 16 |
+
// Check if essential text elements were found on load (excluding inputs used via FormData)
|
| 17 |
+
if (!textTranslationForm) { // Only check form itself now
|
| 18 |
+
console.error('CRITICAL: Text translation form not found on window load!');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
if (errorElement) {
|
| 20 |
+
errorElement.textContent = 'Error: Could not find the text translation form element. Check HTML ID.';
|
| 21 |
errorElement.style.display = 'block';
|
| 22 |
}
|
| 23 |
+
return;
|
|
|
|
|
|
|
| 24 |
}
|
| 25 |
|
| 26 |
// Set up text translation form
|
| 27 |
+
console.log('Text translation form found on load');
|
| 28 |
textTranslationForm.addEventListener('submit', function(event) {
|
| 29 |
event.preventDefault();
|
| 30 |
console.log('Text translation form submitted');
|
|
|
|
| 34 |
if (errorElement) errorElement.style.display = 'none';
|
| 35 |
if (debugElement) debugElement.style.display = 'none';
|
| 36 |
|
| 37 |
+
// --- Use FormData Approach ---
|
| 38 |
+
try {
|
| 39 |
+
const formData = new FormData(event.target); // event.target is the form
|
| 40 |
+
|
| 41 |
+
// Get values using the 'name' attributes from the HTML
|
| 42 |
+
const text = formData.get('text') ? formData.get('text').trim() : '';
|
| 43 |
+
const sourceLangValue = formData.get('source_lang');
|
| 44 |
+
const targetLangValue = formData.get('target_lang');
|
| 45 |
+
|
| 46 |
+
console.log('[DEBUG] FormData values - Text:', text, 'Source:', sourceLangValue, 'Target:', targetLangValue);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 47 |
|
| 48 |
if (!text) {
|
| 49 |
showError('Please enter text to translate');
|
| 50 |
return;
|
| 51 |
}
|
| 52 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 53 |
if (!sourceLangValue || !targetLangValue) {
|
| 54 |
+
console.error('Could not read language values from FormData!');
|
| 55 |
+
showError('Internal error: Language selection missing.');
|
| 56 |
return;
|
| 57 |
}
|
| 58 |
|
|
|
|
| 105 |
.finally(() => {
|
| 106 |
if (textLoadingElement) textLoadingElement.style.display = 'none';
|
| 107 |
});
|
| 108 |
+
|
| 109 |
+
} catch (e) {
|
| 110 |
+
console.error('FATAL: Error processing form data or submitting:', e);
|
| 111 |
+
showError('Internal error processing form submission. Check console.');
|
| 112 |
}
|
| 113 |
+
// --- End FormData Approach ---
|
| 114 |
});
|
| 115 |
|
| 116 |
// Document translation handler
|