Sociology Research Proposal Creator

Sociology Research Proposal Creator

Click "Generate Proposal" to populate the outline below.
Proposal preview will be generated here.

Proposal Basics

Research Focus

Literature Review & Theoretical Framework

Significance

Research Design

Ethical Considerations

Timeline

Budget (USD - $)

Please fill in the Proposal Title and Researcher Name first.

'; return; } let html = `
${data.title.toUpperCase()}
A Research Proposal Submitted by ${data.researcher}
`; // I. INTRODUCTION & PROBLEM STATEMENT html += `

I. INTRODUCTION & PROBLEM STATEMENT

`; html += `
${data.topic || '[Topic/Problem Statement]'}
`; html += `
`; // II. RESEARCH QUESTION & HYPOTHESIS html += `

II. RESEARCH QUESTION & HYPOTHESIS

`; html += `
Research Question: ${data.question || '[Specific Research Question]'}
`; html += `
Hypothesis/Thesis: ${data.hypothesis || '[Hypothesis/Thesis]'}
`; html += `
`; // III. LITERATURE REVIEW & THEORETICAL FRAMEWORK html += `

III. LITERATURE REVIEW & THEORETICAL FRAMEWORK

`; html += `
Theoretical Framework: ${data.theories || '[Key Theories/Concepts]'}
`; html += `
Research Gap: ${data.gap || '[Explanation of the gap in existing literature]'}
`; html += `
`; // IV. SIGNIFICANCE OF THE STUDY html += `

IV. SIGNIFICANCE OF THE STUDY

`; html += `
Academic Contribution: ${data.academic || '[Academic Contribution]'}
`; html += `
Societal/Policy Contribution: ${data.societal || '[Societal/Policy Contribution]'}
`; html += `
`; // V. METHODOLOGY html += `

V. METHODOLOGY

`; html += `
Design: ${data.design || '[Methodological Approach]'}. Sample: ${data.sample || '[Sample Size/Scope]'}
`; html += `
Data Collection: ${data.data || '[Data Collection Method]'}
`; html += `
Analysis Plan: ${data.analysis || '[Data Analysis Plan]'}
`; html += `
`; // VI. FEASIBILITY & ETHICS html += `

VI. FEASIBILITY & ETHICS

`; html += `
Timeline: ${data.start} to ${data.end}. Milestones: ${data.schedule.replace(/\n/g, '
')}
`; html += `
Budget (USD): ${data.budget.replace(/\n/g, '
') || '[Detailed Budget]'}
`; html += `
Ethical Concerns: ${data.ethics || '[Ethical Considerations]'}
`; html += `
`; proposalContent.innerHTML = html; showTab(0); // Switch to dashboard } // --- Event Listeners --- // Global Generate Button renderBtn.addEventListener('click', generateProposal); // Load Sample Data document.getElementById('soc-input-title').addEventListener('focus', function loadDefaults() { populateSampleData(); this.removeEventListener('focus', loadDefaults); }); // PDF Download pdfBtn.addEventListener('click', () => { if (!proposalContent.textContent.includes('Research Question')) { alert('Please generate the proposal preview first.'); return; } const { jsPDF } = window.jspdf; const element = document.getElementById('soc-preview-area'); html2canvas(element, { scale: 2, useCORS: true, backgroundColor: '#ffffff' }).then(canvas => { const imgData = canvas.toDataURL('image/png'); const pdf = new jsPDF('p', 'mm', 'a4'); const pdfWidth = pdf.internal.pageSize.getWidth(); const pdfHeight = pdf.internal.pageSize.getHeight(); const imgProps = pdf.getImageProperties(imgData); const contentWidth = pdfWidth - 30; // 15mm margin const contentHeight = (imgProps.height * contentWidth) / imgProps.width; let heightLeft = contentHeight; let position = 15; // Top margin pdf.addImage(imgData, 'PNG', 15, position, contentWidth, contentHeight); heightLeft -= pdfHeight; while (heightLeft >= 0) { position = heightLeft - contentHeight + 15; pdf.addPage(); pdf.addImage(imgData, 'PNG', 15, position, contentWidth, contentHeight); heightLeft -= pdfHeight; } pdf.save(data.title.replace(/ /g, '_').substring(0, 30) + '_Proposal.pdf'); }); }); // --- Tab Logic --- function showTab(index) { tabs.forEach((t, i) => { t.classList.toggle('active', i === index); }); contents.forEach((c, i) => { c.classList.toggle('active', i === index); }); currentTabIndex = index; prevBtn.disabled = (currentTabIndex === 0); nextBtn.disabled = (currentTabIndex === tabs.length - 1); } tabs.forEach((tab, index) => { tab.addEventListener('click', () => showTab(index)); }); prevBtn.addEventListener('click', () => showTab(currentTabIndex - 1)); nextBtn.addEventListener('click', () => showTab(currentTabIndex + 1)); // Init showTab(0); });
Scroll to Top