///|
/// 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 · 月拓镜分析报告
#|
#|
#|
#|
#|几何投影与代表环路
灰线为当前进入的边,橙线为选中环路在出生时的代表;青绿色方格表示已进入的网格二维面。Rips 三角形未绘制。
#|
#|Betti 曲线
蓝色 H0 / 橙色 H1;按全部出生和死亡事件绘制精确阶梯曲线;同尺度事件合并,区间使用左闭右开约定。
#|代表环路用于解释计算结果,不保证最短。高维点云仅投影前两个坐标,投影交叉不代表原空间相交。距离矩阵没有几何坐标时仍可查看全部拓扑结果。
#|
#|
header + data + script
}