Atualização automática: 2026-05-23 22:02:28

This commit is contained in:
Hermes
2026-05-23 22:02:28 +00:00
parent 7cfc1724d3
commit bfa0ab4394
6 changed files with 152 additions and 14 deletions
+69 -3
View File
@@ -59,7 +59,8 @@ function navigateToPage(page) {
'dashboard': 'Dashboard',
'new-clone': 'Nova Clonagem',
'history': 'Histórico',
'settings': 'Configurações'
'settings': 'Configurações',
'optimized-pages': 'Páginas Otimizadas (AI)'
};
document.getElementById('pageTitle').textContent = titles[page] || page;
@@ -70,6 +71,8 @@ function navigateToPage(page) {
loadDashboard();
} else if (page === 'history') {
loadHistory();
} else if (page === 'optimized-pages') {
loadOptimizedPages();
}
}
@@ -206,6 +209,7 @@ async function handleCloneSubmit(e) {
const includeCSSEl = document.getElementById('includeCSS');
const includeJSEl = document.getElementById('includeJS');
const convertLinksEl = document.getElementById('convertLinks');
const customFolderEl = document.getElementById('customFolder');
if (!cloneUrlEl || !depthLevelEl || !includeImagesEl || !includeCSSEl || !includeJSEl || !convertLinksEl) {
console.error('Form elements not found');
@@ -219,6 +223,7 @@ async function handleCloneSubmit(e) {
const includeCSS = includeCSSEl.checked;
const includeJS = includeJSEl.checked;
const convertLinks = convertLinksEl.checked;
const folderName = customFolderEl ? customFolderEl.value.trim() : '';
const cloneMethod = 'wget';
if (!url) {
@@ -240,6 +245,7 @@ async function handleCloneSubmit(e) {
includeCSS,
includeJS,
convertLinks,
folderName,
method: cloneMethod
});
}
@@ -306,7 +312,8 @@ async function startCloning(url, options) {
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
url,
outputDir: settings.outputDir
outputDir: settings.outputDir,
folderName: options.folderName
})
});
} else {
@@ -317,7 +324,8 @@ async function startCloning(url, options) {
body: JSON.stringify({
url,
depth: options.depth,
outputDir: settings.outputDir
outputDir: settings.outputDir,
folderName: options.folderName
})
});
}
@@ -709,3 +717,61 @@ function formatRelativeTime(dateString) {
if (minutes > 0) return minutes === 1 ? 'Há 1 minuto' : `${minutes} minutos`;
return 'Agora mesmo';
}
// Optimized Pages
async function loadOptimizedPages() {
const listEl = document.getElementById('optimizedList');
if (!listEl) return;
listEl.innerHTML = `
<div class="empty-state">
<i class="fas fa-spinner fa-spin"></i>
<h3>Carregando...</h3>
</div>
`;
try {
const response = await fetch('/api/optimized-pages');
const data = await response.json();
if (data.success && data.pages.length > 0) {
listEl.innerHTML = data.pages.map(page => `
<div class="clone-item">
<div class="clone-info">
<div class="clone-icon" style="background: linear-gradient(135deg, #ec4899 0%, #8b5cf6 100%);">
<i class="fas fa-magic" style="color: white;"></i>
</div>
<div class="clone-details">
<h4>${page.name}</h4>
<p>Otimizada pela IA • ${page.directory}</p>
</div>
</div>
<div class="clone-actions">
<button class="btn btn-primary btn-sm" onclick="openClonedSite('${page.directory}')">
<i class="fas fa-external-link-alt"></i> Visualizar
</button>
<button class="btn btn-secondary btn-sm" onclick="openCloneFolder('${page.directory}')">
<i class="fas fa-folder-open"></i> Pasta
</button>
</div>
</div>
`).join('');
} else {
listEl.innerHTML = `
<div class="empty-state">
<i class="fas fa-paint-brush"></i>
<h3>Nenhuma página otimizada encontrada</h3>
<p>Use o Agente Designer para otimizar suas clonagens.</p>
</div>
`;
}
} catch (e) {
listEl.innerHTML = `
<div class="empty-state">
<i class="fas fa-exclamation-triangle"></i>
<h3>Erro ao carregar</h3>
<p>${e.message}</p>
</div>
`;
}
}