Academic Journal Submission Checker

Academic Journal Submission Checker

Verify your manuscript against common journal guidelines before submission.

Complete the Submission Checklist and click "Generate Report" to see your manuscript's readiness summary here.

Readiness Score

`; data.checks.forEach(check => { const statusClass = check.isMet ? 'status-met' : 'status-attention'; const icon = check.isMet ? `` : ``; html += `
${icon}

${check.title}

${check.message}

`; }); html += `
`; reportOutputArea.innerHTML = html; }; const generatePDF = () => { if (!reportData) { alert('Please generate a report first.'); return; } const { jsPDF } = window.jspdf; const doc = new jsPDF({ orientation: 'portrait', unit: 'mm', format: 'a4' }); const tableBody = reportData.checks.map(check => { return [check.title, check.message, check.isMet ? 'Met' : 'Attention']; }); // Header doc.setFont('helvetica', 'bold'); doc.setFontSize(18); doc.setTextColor('#1e293b'); doc.text('Submission Readiness Report', 105, 20, { align: 'center' }); doc.setFont('helvetica', 'normal'); doc.setFontSize(12); doc.setTextColor('#475569'); doc.text('Manuscript:', 20, 35); doc.setFont('helvetica', 'italic'); doc.text(doc.splitTextToSize(reportData.title, 170), 20, 42); const scoreY = doc.getTextDimensions(reportData.title, {maxWidth: 170}).h + 50; doc.setFont('helvetica', 'bold'); doc.setFontSize(22); doc.setTextColor('#4f46e5'); doc.text(`${reportData.score}%`, 20, scoreY); doc.setFontSize(12); doc.setTextColor('#475569'); doc.text('Overall Readiness Score', 20, scoreY + 7); // Table doc.autoTable({ startY: scoreY + 15, head: [['Checklist Item', 'Details', 'Status']], body: tableBody, theme: 'grid', headStyles: { fillColor: '#4f46e5', textColor: '#ffffff', fontStyle: 'bold' }, didDrawCell: (data) => { if (data.section === 'body' && data.column.index === 2) { const text = data.cell.text[0]; if (text === 'Met') { data.cell.styles.textColor = '#166534'; data.cell.styles.fontStyle = 'bold'; } else if (text === 'Attention') { data.cell.styles.textColor = '#854d0e'; data.cell.styles.fontStyle = 'bold'; } } } }); // Footer const pageCount = doc.internal.getNumberOfPages(); for(let i = 1; i <= pageCount; i++) { doc.setPage(i); doc.setFontSize(9); doc.setTextColor('#64748b'); const date = `Generated on ${new Date().toLocaleDateString('en-US')}`; doc.text(date, 20, 285); doc.text(`Page ${i} of ${pageCount}`, 190, 285, { align: 'right' }); } doc.save(`Submission_Report_${reportData.title.slice(0,15).replace(/\s/g, '_')}.pdf`); }; const loadSample = () => { formInputs.title.value = 'The Role of Mitochondria in Synaptic Plasticity in the Hippocampus'; formInputs.wordCount.value = 7500; formInputs.abstractCount.value = 245; formInputs.refStyle.value = 'APA 7th Ed.'; formInputs.fileFormat.value = 'DOCX'; formInputs.isBlinded.checked = true; formInputs.hasCoi.checked = true; formInputs.hasData.checked = false; // Example of a non-met item }; // --- Event Listeners --- tabReport.addEventListener('click', () => switchTab('report')); tabConfig.addEventListener('click', () => switchTab('config')); nextBtn.addEventListener('click', () => switchTab('config')); prevBtn.addEventListener('click', () => switchTab('report')); generateBtn.addEventListener('click', generateReport); downloadPdfBtn.addEventListener('click', generatePDF); loadSampleBtn.addEventListener('click', loadSample); // --- Initializer --- switchTab('report'); });
Scroll to Top