Learn how to use JSPlotPage and Pages to create multi-page HTML reports with automatic navigation
JSPlots.jl makes it easy to create multi-page HTML reports. You create individual pages using JSPlotPage,
then combine them into a multi-page report using Pages.
A JSPlotPage represents a single HTML page with charts, tables, and text content:
page = JSPlotPage(
Dict(:data_name => dataframe), # Data dictionary
[chart1, chart2, text_block], # Content items
tab_title = "My Page", # Browser tab title
page_header = "Analysis Report", # Page header
dataformat = :parquet # Data storage format
)
The Pages constructor creates a multi-page report with automatic navigation:
# Easy constructor - automatically creates LinkList!
report = Pages(
[coverpage_content], # Items for the coverpage
[page1, page2, page3], # Your JSPlotPage objects
tab_title = "Report Home",
page_header = "Business Report",
dataformat = :parquet
)
Key Feature: The Pages constructor automatically generates a LinkList from your pages
and adds it to the coverpage!
[page1, page2, page3] array becomes a linktab_titlenotes fieldYou can also create LinkLists manually for custom navigation:
links = LinkList([
("Title 1", "page_1.html", "Description of page 1"),
("Title 2", "page_2.html", "Description of page 2")
])
# Create individual pages
analysis_page = JSPlotPage(
Dict(:sales => sales_df),
[scatter_chart, line_chart],
tab_title = "Sales Analysis",
notes = "Detailed sales trends and patterns"
)
metrics_page = JSPlotPage(
Dict(:kpis => kpi_df),
[kde_chart, dist_chart],
tab_title = "Key Metrics",
notes = "Performance indicators and distributions"
)
# Create multi-page report with automatic LinkList
report = Pages(
[TextBlock("<h1>Q4 Report</h1>")],
[analysis_page, metrics_page],
tab_title = "Q4 2024 Report"
)
# Generate HTML
create_html(report, "my_report")
# Creates: my_report.html (coverpage with links)
# page_1.html (Sales Analysis)
# page_2.html (Key Metrics)
When you use external data formats (:parquet, :csv_external, :json_external),
JSPlots.jl automatically generates launcher scripts in the project directory:
Why? Browsers block loading external files from file:// URLs for security.
The launcher scripts solve this by either running a local web server or launching the browser
with flags to allow local file access.
This page was created using JSPlots.jl.