Intellectual Property Rights Checker
Paste Document Text
Select IP Clauses to Scan For
IP Clause Analysis Report
No IP types selected. Go back to select modules and run the analysis.
`; return; } let reportHtml = ``;
reportHtml += `
`;
this.dom.reportArea.innerHTML = reportHtml;
},
createComplianceItem(label, isPresent) {
const icon = isPresent
? ``
: ``;
const textClass = isPresent ? 'text-gray-800' : 'text-gray-800 font-semibold';
return `
Intellectual Property Clause Report
`; this.selectedModules.forEach(key => { const module = this.ipModules[key]; reportHtml += `${module.title}
`; module.checks.forEach(check => { const isPresent = check.keyword.test(this.inputText); reportHtml += this.createComplianceItem(check.label, isPresent); }); }); reportHtml += `
${icon}
${label}: ${isPresent ? 'Detected' : 'Not Detected'}
`;
},
// --- ACTIONS ---
toggleModule(key, isChecked) {
if (isChecked) {
this.selectedModules.add(key);
} else {
this.selectedModules.delete(key);
}
},
// --- NAVIGATION ---
changeTab(tabIndex) {
if (tabIndex > this.currentTab) {
if (this.currentTab === 0 && this.inputText.trim() === '') {
alert("Please paste the document text to continue.");
return;
}
if (this.currentTab === 1 && this.selectedModules.size === 0) {
alert("Please select at least one IP type to scan for.");
return;
}
}
if (tabIndex === 2) {
this.renderReport();
}
this.dom.tabButtons[this.currentTab].classList.remove('active');
this.dom.tabContents[this.currentTab].classList.remove('active');
this.currentTab = tabIndex;
this.dom.tabButtons[this.currentTab].classList.add('active');
this.dom.tabContents[this.currentTab].classList.add('active');
this.updateNavButtons();
},
navigateTabs(direction) {
const newTab = direction === 'next' ? this.currentTab + 1 : this.currentTab - 1;
if (newTab >= 0 && newTab < this.dom.tabButtons.length) {
this.changeTab(newTab);
}
},
updateNavButtons() {
this.dom.prevBtn.style.visibility = this.currentTab === 0 ? 'hidden' : 'visible';
this.dom.nextBtn.textContent = this.currentTab === this.dom.tabButtons.length - 2 ? 'Analyze' : 'Next';
this.dom.nextBtn.style.visibility = this.currentTab === this.dom.tabButtons.length - 1 ? 'hidden' : 'visible';
},
// --- PDF GENERATION ---
generatePdf() {
const { jsPDF } = window.jspdf;
const content = document.getElementById('pdf-content');
if (!content) return;
html2canvas(content, { scale: 2 }).then(canvas => {
const imgData = canvas.toDataURL('image/png');
const pdf = new jsPDF({ orientation: 'portrait', unit: 'px', format: 'a4' });
const pdfWidth = pdf.internal.pageSize.getWidth();
const imgProps= pdf.getImageProperties(imgData);
const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width;
pdf.addImage(imgData, 'PNG', 20, 20, pdfWidth - 40, pdfHeight > 0 ? pdfHeight - 40 : 0);
pdf.save('IP-Rights-Report.pdf');
});
},
};
window.app = {
changeTab: app.changeTab.bind(app),
navigateTabs: app.navigateTabs.bind(app),
toggleModule: app.toggleModule.bind(app),
};
app.init();
});
