diff --git a/public/css/styles.css b/public/css/styles.css index cdcdf3e..59cd1fc 100644 --- a/public/css/styles.css +++ b/public/css/styles.css @@ -4233,8 +4233,14 @@ body, .sidebar, .header, .card, .modal-content, .input, .select, textarea, .metr .hidden { display: none !important; } +.report-actions { + display: flex; + gap: 8px; + margin-bottom: 12px; +} + .report-content { - max-height: 70vh; + max-height: 65vh; overflow-y: auto; padding: 1.5rem; background: var(--bg-primary); diff --git a/public/js/app.js b/public/js/app.js index 3830243..f919947 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -326,7 +326,33 @@ const App = { if (!modal || !title || !content) return; title.textContent = 'Relatório de Execução'; - content.innerHTML = `
${Utils.escapeHtml(data.content)}
`; + content.innerHTML = ` +
+ + +
+
${Utils.escapeHtml(data.content)}
`; + Utils.refreshIcons(content); + + document.getElementById('report-copy-btn')?.addEventListener('click', () => { + navigator.clipboard.writeText(data.content).then(() => Toast.success('Relatório copiado')); + }); + + document.getElementById('report-download-btn')?.addEventListener('click', () => { + const blob = new Blob([data.content], { type: 'text/markdown' }); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = filename; + a.click(); + URL.revokeObjectURL(url); + Toast.success('Download iniciado'); + }); + Modal.open('execution-detail-modal-overlay'); } catch (e) {} },