Intellectual Property Rights Checker

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 += `

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 += `
`; this.dom.reportArea.innerHTML = reportHtml; }, createComplianceItem(label, isPresent) { const icon = isPresent ? `` : ``; const textClass = isPresent ? 'text-gray-800' : 'text-gray-800 font-semibold'; return `
${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(); });
Scroll to Top