1Y Return
${etf.return1Y.toFixed(1)}%
AUM (B)
$${etf.aum.toFixed(1)}
`;
this.dom.resultsGrid.innerHTML += card;
});
} else {
this.dom.resultsGrid.classList.add('hidden');
this.dom.noResultsMessage.classList.remove('hidden');
this.dom.pdfBtn.classList.add('hidden');
}
},
generatePdf() {
if (this.filteredETFs.length === 0) return;
const { jsPDF } = window.jspdf;
const pdf = new jsPDF({ unit: 'pt', format: 'a4' });
pdf.setFontSize(18);
pdf.text("ETF Screener Results", 40, 60);
const tableData = this.filteredETFs.map(etf => [
etf.ticker,
etf.name,
etf.issuer,
etf.assetClass,
`${etf.expenseRatio.toFixed(2)}%`,
`${etf.return1Y.toFixed(1)}%`,
`$${etf.aum.toFixed(1)}B`
]);
pdf.autoTable({
startY: 80,
head: [['Ticker', 'Name', 'Issuer', 'Asset Class', 'Exp. Ratio', '1Y Return', 'AUM']],
body: tableData,
headStyles: { fillColor: [79, 70, 229] }, // Indigo
columnStyles: { 1: { cellWidth: 120 } }
});
pdf.save('ETF-Screener-Results.pdf');
}
};
app.init();
});