Protocols and type definitions for the TI-Toolbox reporting system.
This module defines the core interfaces and enums used by reportlets
and report generators.
ReportletType
Bases: Enum
Enumeration of reportlet types.
SeverityLevel
Bases: Enum
Severity levels for errors and warnings.
StatusType
Bases: Enum
Status types for processing steps.
Reportlet
Bases: Protocol
Protocol defining the interface for all reportlets.
reportlet_type
property
Return the type of this reportlet.
reportlet_id
property
Return a unique identifier for this reportlet.
render_html
Render the reportlet as HTML.
Source code in tit/reporting/core/protocols.py
| def render_html(self) -> str:
"""Render the reportlet as HTML."""
...
|
to_dict
Convert the reportlet to a dictionary representation.
Source code in tit/reporting/core/protocols.py
| def to_dict(self) -> dict[str, Any]:
"""Convert the reportlet to a dictionary representation."""
...
|
ReportMetadata(title: str, subject_id: str | None = None, session_id: str | None = None, report_type: str = 'general', generation_time: datetime = now(), software_versions: dict[str, str] = dict(), project_dir: str | None = None, bids_version: str = '1.8.0', dataset_type: str = 'derivative')
Metadata for a generated report.
Convert metadata to dictionary.
Source code in tit/reporting/core/protocols.py
| def to_dict(self) -> dict[str, Any]:
"""Convert metadata to dictionary."""
return {
"title": self.title,
"subject_id": self.subject_id,
"session_id": self.session_id,
"report_type": self.report_type,
"generation_time": self.generation_time.isoformat(),
"software_versions": self.software_versions,
"project_dir": self.project_dir,
"bids_version": self.bids_version,
"dataset_type": self.dataset_type,
}
|
ReportSection
dataclass
ReportSection(section_id: str, title: str, reportlets: list[Any] = list(), description: str | None = None, collapsed: bool = False, order: int = 0)
A section within a report containing multiple reportlets.
add_reportlet
add_reportlet(reportlet: Any) -> None
Add a reportlet to this section.
Source code in tit/reporting/core/protocols.py
| def add_reportlet(self, reportlet: Any) -> None:
"""Add a reportlet to this section."""
self.reportlets.append(reportlet)
|
render_html
Render the section and all its reportlets as HTML.
Source code in tit/reporting/core/protocols.py
| def render_html(self) -> str:
"""Render the section and all its reportlets as HTML."""
collapse_class = "collapsible" if self.collapsed else ""
content_parts = []
for reportlet in self.reportlets:
content_parts.append(reportlet.render_html())
content = "\n".join(content_parts)
description_html = ""
if self.description:
description_html = f'<p class="section-description">{self.description}</p>'
return f"""
<section id="{self.section_id}" class="report-section {collapse_class}">
<h2 class="section-title">{self.title}</h2>
{description_html}
<div class="section-content">
{content}
</div>
</section>
"""
|
to_dict
Convert section to dictionary.
Source code in tit/reporting/core/protocols.py
| def to_dict(self) -> dict[str, Any]:
"""Convert section to dictionary."""
return {
"section_id": self.section_id,
"title": self.title,
"description": self.description,
"collapsed": self.collapsed,
"order": self.order,
"reportlets": [r.to_dict() for r in self.reportlets],
}
|