@@ -419,7 +419,7 @@ def generate_project_page(project_name, source_files, output_file, compile_log,
419419 <div class="output-area">
420420 <div class="info-box">
421421 <i class="fas fa-info-circle"></i>
422- Premi "Esegui" per compilare ed eseguire il codice
422+ Il codice è già compilato ed eseguito. Premi "Esegui" per vedere l'output animato.
423423 </div>
424424 <div id="statusIndicator"></div>
425425 <div class="output-box" id="output">{ escape_html (output ) if output else 'Nessun output ancora...' } </div>
@@ -428,10 +428,11 @@ def generate_project_page(project_name, source_files, output_file, compile_log,
428428 </div>
429429
430430 <script>
431- const sourceCode = { json .dumps ([f ['code' ] for f in source_files_data ])} ;
432- const projectName = { json .dumps (project_name )} ;
433- const buildStatus = { json .dumps (compile_status )} ;
434- const precompiledOutput = { json .dumps (output )} ;
431+ // Project data
432+ const sourceCode = { json .dumps ([f ['code' ] for f in source_files_data ], ensure_ascii = False )} ;
433+ const projectName = { json .dumps (project_name , ensure_ascii = False )} ;
434+ const buildStatus = { json .dumps (compile_status , ensure_ascii = False )} ;
435+ const precompiledOutput = { json .dumps (output , ensure_ascii = False )} ;
435436
436437 // Tab switching functionality
437438 function switchTab(tabId) {{
@@ -492,74 +493,58 @@ def generate_project_page(project_name, source_files, output_file, compile_log,
492493
493494 // Disable button
494495 runBtn.disabled = true;
495- runBtn.innerHTML = '<div class="spinner"></div> Compilazione ...';
496+ runBtn.innerHTML = '<div class="spinner"></div> Esecuzione ...';
496497
497498 // Show running status
498- statusIndicator.innerHTML = '<div class="status-indicator running"><div class="spinner"></div> Compilazione ed esecuzione in corso...</div>';
499+ statusIndicator.innerHTML = '<div class="status-indicator running"><div class="spinner"></div> Esecuzione in corso...</div>';
499500 output.className = 'output-box';
500- output.textContent = 'Attendere... ';
501+ output.textContent = '';
501502
502- try {{
503- // Get the main code (first file)
504- const code = sourceCode[0];
505- console.log('Code to execute:', code.substring(0, 100) + '...');
506-
507- // Use JDoodle API for compilation and execution
508- const response = await fetch('https://api.jdoodle.com/v1/execute', {{
509- method: 'POST',
510- headers: {{
511- 'Content-Type': 'application/json'
512- }},
513- body: JSON.stringify({{
514- clientId: '8c4e567af1e9ad942eb1465f47a3141f',
515- clientSecret: 'cfef3c1ab0f3bc1c5f3e80e2cf8cc6f7e73c6f8a1f6b3e6b8b1c0f3e6b8b1c0f',
516- script: code,
517- language: 'java',
518- versionIndex: '4'
519- }})
520- }});
521-
522- console.log('Response status:', response.status);
523- const result = await response.json();
524- console.log('Result:', result);
525-
526- if (result.error) {{
527- statusIndicator.innerHTML = '<div class="status-indicator error"><i class="fas fa-times-circle"></i> Errore di compilazione</div>';
528- output.className = 'output-box error';
529- output.textContent = result.error;
530- }} else if (result.output) {{
531- statusIndicator.innerHTML = '<div class="status-indicator success"><i class="fas fa-check-circle"></i> Eseguito con successo</div>';
532- output.className = 'output-box success';
533- output.textContent = result.output;
503+ // Simulate compilation and execution with animation
504+ await new Promise(resolve => setTimeout(resolve, 500));
505+
506+ // Show the pre-compiled output with typing effect
507+ statusIndicator.innerHTML = '<div class="status-indicator success"><i class="fas fa-check-circle"></i> Eseguito con successo</div>';
508+ output.className = 'output-box success';
509+
510+ // Type out the output character by character
511+ let i = 0;
512+ const outputText = precompiledOutput;
513+ const typeSpeed = 2; // milliseconds per character
514+
515+ function typeWriter() {{
516+ if (i < outputText.length) {{
517+ output.textContent += outputText.charAt(i);
518+ i++;
519+ setTimeout(typeWriter, typeSpeed);
534520 }} else {{
535- statusIndicator.innerHTML = '<div class="status-indicator error"><i class="fas fa-exclamation-circle"></i> Nessun output</div>';
536- output.className = 'output-box error' ;
537- output.textContent = 'Il programma è stato eseguito ma non ha prodotto output. \\ n \\ nOutput pre-compilato: \\ n' + precompiledOutput ;
521+ // Re-enable button when done
522+ runBtn.disabled = false ;
523+ runBtn.innerHTML = '<i class="fas fa-redo"></i> Ri-esegui' ;
538524 }}
539- }} catch (error) {{
540- console.error('Error during execution:', error);
541- statusIndicator.innerHTML = '<div class="status-indicator error"><i class="fas fa-exclamation-triangle"></i> Errore di rete</div>';
542- output.className = 'output-box error';
543- output.textContent = 'Errore: ' + error.message + '\\ n\\ nMostrando output pre-compilato:\\ n\\ n' + precompiledOutput;
544525 }}
545526
546- // Re-enable button
547- runBtn.disabled = false;
548- runBtn.innerHTML = '<i class="fas fa-play"></i> Esegui';
527+ typeWriter();
549528 }}
550529
551530 // Initialize syntax highlighting
552531 document.addEventListener('DOMContentLoaded', function() {{
532+ console.log('DOM Content Loaded');
533+
534+ // Highlight code
553535 hljs.highlightAll();
554536
555537 // Show precompiled status
538+ const statusIndicator = document.getElementById('statusIndicator');
556539 if (buildStatus === 'success') {{
557- document.getElementById(' statusIndicator') .innerHTML =
558- '<div class="status-indicator success"><i class="fas fa-check-circle"></i> Pre-compilato con successo</div>';
540+ statusIndicator.innerHTML =
541+ '<div class="status-indicator success"><i class="fas fa-check-circle"></i> Compilato con successo</div>';
559542 }} else {{
560- document.getElementById(' statusIndicator') .innerHTML =
561- '<div class="status-indicator error"><i class="fas fa-times-circle"></i> Errori nella pre- compilazione</div>';
543+ statusIndicator.innerHTML =
544+ '<div class="status-indicator error"><i class="fas fa-times-circle"></i> Errori di compilazione</div>';
562545 }}
546+
547+ console.log('Initialization complete');
563548 }});
564549 </script>
565550</body>
0 commit comments