///|
/// A self-contained offline report. JavaScript only displays precomputed results:
/// slider filtering, table selection and 2D projection; no homology runs in UI.
/// JSON escapes '<' so public cell keys cannot terminate the data script.
pub fn html_report(analysis : Analysis) -> String {
  let data = report_json(analysis)
    .stringify()
    .replace_all(old="<", new="\\u003c")
  let header =
    #|
    #|
    #|MoonTopoLens · 月拓镜分析报告
    #|
#|
OFFLINE REPORT / GF(2)

MoonTopoLens 月拓镜

观察尺度变化中的连接分量与闭合环路。此报告可离线打开,不会上传数据。

#|
当前连接分量 H0
当前环路 H1
细胞总数
H1 最长有限寿命
#|

选择观察尺度

统计采用 [出生,死亡) 区间;截止处仍存在的类不代表无限寿命。
#|

几何投影与代表环路

灰线为当前进入的边,橙线为选中环路在出生时的代表;青绿色方格表示已进入的网格二维面。Rips 三角形未绘制。
#|

区间筛选与排名

选择维度出生死亡观察寿命
未死亡区间以截止尺度减出生尺度作为寿命下界。筛选结果可逐页查看,CSV 和 JSON 保留全部数据。
#|

Betti 曲线

蓝色 H0 / 橙色 H1;按全部出生和死亡事件绘制精确阶梯曲线;同尺度事件合并,区间使用左闭右开约定。
#|
代表环路用于解释计算结果,不保证最短。高维点云仅投影前两个坐标,投影交叉不代表原空间相交。距离矩阵没有几何坐标时仍可查看全部拓扑结果。
#|
由 MoonBit 核心计算生成。配套文件:report.json、intervals.csv、betti.csv、betti-events.csv、barcode.svg、diagram.svg。
#|
header + data + script }