diff --git a/.gitignore b/.gitignore
index 5ad67c9c..d228c7b8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
# AI stuff
.claude/
+CLAUDE.md
# VS Code
.vscode/*
diff --git a/src/report.jl b/src/report.jl
index 63f81b32..008ffc4f 100644
--- a/src/report.jl
+++ b/src/report.jl
@@ -71,6 +71,12 @@ function _cmp_cell(r::ModelResult, results_root::String, csv_max_size_mb::Int)
end
end
+function _cmp_status(r::ModelResult)::String
+ r.cmp_total == 0 && r.cmp_skip == 0 && return "na"
+ r.cmp_pass == r.cmp_total && return "pass"
+ return "fail"
+end
+
function rel_log_file_or_nothing(results_root::String, model::String,
phase::String)::Union{String,Nothing}
path = joinpath(results_root, "files", model, "$(model)_$(phase).log")
@@ -108,7 +114,7 @@ function generate_report(results::Vector{ModelResult}, results_root::String,
cmp_summary_row = n_cmp_models > 0 ? """
| Reference Comparison (MAP-LIB) | $n_cmp_pass | $n_cmp_models | $(pct(n_cmp_pass,n_cmp_models)) |
""" : ""
- rows = join(["""
+ rows = join(["""
| $(r.name).bmo |
$(_status_cell(r.export_success, r.export_time, rel_log_file_or_nothing(results_root, r.name, "export")))
$(_status_cell(r.parse_success, r.parse_time, rel_log_file_or_nothing(results_root, r.name, "parsing")))
@@ -141,6 +147,10 @@ function generate_report(results::Vector{ModelResult}, results_root::String,
td.na { color: #888; }
a { color: #0366d6; text-decoration: none; }
a:hover { text-decoration: underline; }
+ .filter-row th { background: #f5f5f5; }
+ .filter-row select { font-size: 12px; padding: 1px 4px; }
+ .filter-row input { font-size: 12px; padding: 1px 4px; width: 16em; box-sizing: border-box; }
+ .filter-row input.invalid { outline: 2px solid #c00; }
@@ -162,16 +172,54 @@ Total run time: $(time_str)
| Simulation (MTK.jl) | $n_sim | $n_par | $(pct(n_sim,n_par)) |
$cmp_summary_row
-
-
- | Model |
- BM Export |
- BM Parse |
- MTK Sim |
- Ref Cmp |
-
+
+