diff --git a/src/index.php b/src/index.php index 934a477..50dafaf 100644 --- a/src/index.php +++ b/src/index.php @@ -13,6 +13,16 @@ Web Crawler + + + + + + + + + + @@ -223,7 +285,7 @@

Crawl Jobs

- +
@@ -256,7 +318,7 @@
-
ID
+
@@ -272,7 +334,7 @@
URL
+
@@ -289,7 +351,7 @@
-
Von
+
@@ -307,7 +369,7 @@

Redirect Statistics

-
URL
+
@@ -326,7 +388,7 @@

SEO Issues

-
URL
+
@@ -380,12 +442,19 @@ } } + let jobsDataTable = null; + async function loadJobs() { try { const response = await fetch('/api.php?action=jobs'); const data = await response.json(); if (data.success) { + // Destroy existing DataTable if it exists + if (jobsDataTable) { + jobsDataTable.destroy(); + } + const tbody = document.getElementById('jobsBody'); tbody.innerHTML = data.jobs.map(job => ` @@ -402,6 +471,25 @@ `).join(''); + + // Initialize DataTable + jobsDataTable = $('#jobsTable').DataTable({ + pageLength: 25, + order: [[0, 'desc']], + language: { + search: 'Suchen:', + lengthMenu: 'Zeige _MENU_ Einträge', + info: 'Zeige _START_ bis _END_ von _TOTAL_ Einträgen', + infoEmpty: 'Keine Einträge verfügbar', + infoFiltered: '(gefiltert von _MAX_ Einträgen)', + paginate: { + first: 'Erste', + last: 'Letzte', + next: 'Nächste', + previous: 'Vorherige' + } + } + }); } } catch (e) { console.error('Fehler beim Laden der Jobs:', e); @@ -473,6 +561,10 @@ const pagesResponse = await fetch(`/api.php?action=pages&job_id=${currentJobId}`); const pagesData = await pagesResponse.json(); + if ($.fn.DataTable.isDataTable('#pagesTable')) { + $('#pagesTable').DataTable().destroy(); + } + if (pagesData.success && pagesData.pages.length > 0) { document.getElementById('pagesBody').innerHTML = pagesData.pages.map(page => ` @@ -482,12 +574,33 @@ `).join(''); + + $('#pagesTable').DataTable({ + pageLength: 50, + language: { + search: 'Suchen:', + lengthMenu: 'Zeige _MENU_ Einträge', + info: 'Zeige _START_ bis _END_ von _TOTAL_ Einträgen', + infoEmpty: 'Keine Einträge verfügbar', + infoFiltered: '(gefiltert von _MAX_ Einträgen)', + paginate: { + first: 'Erste', + last: 'Letzte', + next: 'Nächste', + previous: 'Vorherige' + } + } + }); } // Load links const linksResponse = await fetch(`/api.php?action=links&job_id=${currentJobId}`); const linksData = await linksResponse.json(); + if ($.fn.DataTable.isDataTable('#linksTable')) { + $('#linksTable').DataTable().destroy(); + } + if (linksData.success && linksData.links.length > 0) { document.getElementById('linksBody').innerHTML = linksData.links.map(link => ` @@ -498,12 +611,33 @@ `).join(''); + + $('#linksTable').DataTable({ + pageLength: 50, + language: { + search: 'Suchen:', + lengthMenu: 'Zeige _MENU_ Einträge', + info: 'Zeige _START_ bis _END_ von _TOTAL_ Einträgen', + infoEmpty: 'Keine Einträge verfügbar', + infoFiltered: '(gefiltert von _MAX_ Einträgen)', + paginate: { + first: 'Erste', + last: 'Letzte', + next: 'Nächste', + previous: 'Vorherige' + } + } + }); } // Load broken links const brokenResponse = await fetch(`/api.php?action=broken-links&job_id=${currentJobId}`); const brokenData = await brokenResponse.json(); + if ($.fn.DataTable.isDataTable('#brokenTable')) { + $('#brokenTable').DataTable().destroy(); + } + if (brokenData.success && brokenData.broken_links.length > 0) { document.getElementById('brokenBody').innerHTML = brokenData.broken_links.map(page => ` @@ -513,6 +647,23 @@ `).join(''); + + $('#brokenTable').DataTable({ + pageLength: 25, + language: { + search: 'Suchen:', + lengthMenu: 'Zeige _MENU_ Einträge', + info: 'Zeige _START_ bis _END_ von _TOTAL_ Einträgen', + infoEmpty: 'Keine Einträge verfügbar', + infoFiltered: '(gefiltert von _MAX_ Einträgen)', + paginate: { + first: 'Erste', + last: 'Letzte', + next: 'Nächste', + previous: 'Vorherige' + } + } + }); } else { document.getElementById('brokenBody').innerHTML = ''; } @@ -539,6 +690,10 @@ `; // SEO Issues + if ($.fn.DataTable.isDataTable('#seoTable')) { + $('#seoTable').DataTable().destroy(); + } + if (seoData.issues.length > 0) { document.getElementById('seoIssuesBody').innerHTML = seoData.issues.map(item => ` @@ -548,6 +703,23 @@ `).join(''); + + $('#seoTable').DataTable({ + pageLength: 25, + language: { + search: 'Suchen:', + lengthMenu: 'Zeige _MENU_ Einträge', + info: 'Zeige _START_ bis _END_ von _TOTAL_ Einträgen', + infoEmpty: 'Keine Einträge verfügbar', + infoFiltered: '(gefiltert von _MAX_ Einträgen)', + paginate: { + first: 'Erste', + last: 'Letzte', + next: 'Nächste', + previous: 'Vorherige' + } + } + }); } else { document.getElementById('seoIssuesBody').innerHTML = ''; } @@ -598,6 +770,10 @@ `; // Redirect Table + if ($.fn.DataTable.isDataTable('#redirectsTable')) { + $('#redirectsTable').DataTable().destroy(); + } + if (redirectsData.redirects.length > 0) { document.getElementById('redirectsBody').innerHTML = redirectsData.redirects.map(redirect => { const isExcessive = redirect.redirect_count > stats.threshold; @@ -614,6 +790,23 @@ `; }).join(''); + + $('#redirectsTable').DataTable({ + pageLength: 25, + language: { + search: 'Suchen:', + lengthMenu: 'Zeige _MENU_ Einträge', + info: 'Zeige _START_ bis _END_ von _TOTAL_ Einträgen', + infoEmpty: 'Keine Einträge verfügbar', + infoFiltered: '(gefiltert von _MAX_ Einträgen)', + paginate: { + first: 'Erste', + last: 'Letzte', + next: 'Nächste', + previous: 'Vorherige' + } + } + }); } else { document.getElementById('redirectsBody').innerHTML = ''; }
URL
${page.crawled_at}
${link.is_internal ? 'Intern' : 'Extern'}
${page.crawled_at}
Keine defekten Links gefunden
${item.issues.join(', ')}
Keine SEO-Probleme gefunden
Keine Redirects gefunden