From f79db22c00568cb5cd9ec1dedda5f4f8e8293200 Mon Sep 17 00:00:00 2001 From: Tom Clark Date: Mon, 26 Oct 2026 10:08:15 +0100 Subject: [PATCH] DOC: Tag the bar, stairs and cells gallery figures by chart kind Tag the new gallery figures with the words a reader searches for, such as stacked, grouped, histogram, 2d-histogram, density, tick-angle and occupancy, replace the physics tag with the field each figure comes from, and pin the searches in the browsing tests. --- .../ironlab-gallery/src/figures/bar_chart.rs | 3 +- .../src/figures/bar_variants.rs | 7 ++- .../src/figures/branch_coverage.rs | 5 ++ .../src/figures/coverage_matrix.rs | 5 ++ .../ironlab-gallery/src/figures/histogram.rs | 4 ++ .../src/figures/histogram_2d.rs | 5 +- crates/ironlab-gallery/src/figures/stairs.rs | 3 + crates/ironlab-gallery/tests/browsing.rs | 60 +++++++++++++++++++ 8 files changed, 89 insertions(+), 3 deletions(-) diff --git a/crates/ironlab-gallery/src/figures/bar_chart.rs b/crates/ironlab-gallery/src/figures/bar_chart.rs index 7928b9c..4f60684 100644 --- a/crates/ironlab-gallery/src/figures/bar_chart.rs +++ b/crates/ironlab-gallery/src/figures/bar_chart.rs @@ -42,7 +42,8 @@ pub fn figure() -> Figure { .tag("legend") .tag("comparison") .tag("categorical") - .tag("physics") + .tag("grouped") + .tag("aerodynamics") .parameter("dimensionality", "2D") .parameter("artists", SECTIONS.len() as i64) .parameter("data_points", 16) diff --git a/crates/ironlab-gallery/src/figures/bar_variants.rs b/crates/ironlab-gallery/src/figures/bar_variants.rs index 1df903f..b37e9ab 100644 --- a/crates/ironlab-gallery/src/figures/bar_variants.rs +++ b/crates/ironlab-gallery/src/figures/bar_variants.rs @@ -67,7 +67,12 @@ pub fn figure() -> Figure { .tag("legend") .tag("categorical") .tag("ticks") - .tag("physics") + .tag("stacked") + .tag("horizontal") + .tag("floating") + .tag("highlighted") + .tag("tick-angle") + .tag("engineering") .parameter("dimensionality", "2D") .parameter("artists", 9) .parameter("data_points", 96) diff --git a/crates/ironlab-gallery/src/figures/branch_coverage.rs b/crates/ironlab-gallery/src/figures/branch_coverage.rs index ec303ae..5c4d2e0 100644 --- a/crates/ironlab-gallery/src/figures/branch_coverage.rs +++ b/crates/ironlab-gallery/src/figures/branch_coverage.rs @@ -89,6 +89,11 @@ pub fn figure() -> Figure { .tag("categorical") .tag("aspect") .tag("simulations") + .tag("occupancy") + .tag("grouped-rows") + .tag("hidden-axis") + .tag("coverage") + .tag("testing") .parameter("dimensionality", "2D") .parameter("artists", 1) .parameter("data_points", 760) diff --git a/crates/ironlab-gallery/src/figures/coverage_matrix.rs b/crates/ironlab-gallery/src/figures/coverage_matrix.rs index bed75d3..6f86ca4 100644 --- a/crates/ironlab-gallery/src/figures/coverage_matrix.rs +++ b/crates/ironlab-gallery/src/figures/coverage_matrix.rs @@ -84,6 +84,11 @@ pub fn figure() -> Figure { .tag("ticks") .tag("aspect") .tag("simulations") + .tag("occupancy") + .tag("heatmap") + .tag("tick-angle") + .tag("coverage") + .tag("testing") .parameter("dimensionality", "2D") .parameter("artists", 2) .parameter("data_points", 100) diff --git a/crates/ironlab-gallery/src/figures/histogram.rs b/crates/ironlab-gallery/src/figures/histogram.rs index a54f9e5..4d67b0b 100644 --- a/crates/ironlab-gallery/src/figures/histogram.rs +++ b/crates/ironlab-gallery/src/figures/histogram.rs @@ -80,6 +80,10 @@ pub fn figure() -> Figure { .tag("statistics") .tag("measurements") .tag("comparison") + .tag("histogram") + .tag("density") + .tag("stacked") + .tag("distribution") .parameter("dimensionality", "2D") .parameter("artists", 6) .parameter("data_points", 1071) diff --git a/crates/ironlab-gallery/src/figures/histogram_2d.rs b/crates/ironlab-gallery/src/figures/histogram_2d.rs index dfaf36b..1c43e76 100644 --- a/crates/ironlab-gallery/src/figures/histogram_2d.rs +++ b/crates/ironlab-gallery/src/figures/histogram_2d.rs @@ -76,7 +76,10 @@ pub fn figure() -> Figure { .tag("colorbar") .tag("aspect") .tag("statistics") - .tag("physics") + .tag("histogram") + .tag("2d-histogram") + .tag("density") + .tag("turbulence") .parameter("dimensionality", "2D") .parameter("artists", 2) .parameter("data_points", 2306) diff --git a/crates/ironlab-gallery/src/figures/stairs.rs b/crates/ironlab-gallery/src/figures/stairs.rs index 05e6a5c..f6f1646 100644 --- a/crates/ironlab-gallery/src/figures/stairs.rs +++ b/crates/ironlab-gallery/src/figures/stairs.rs @@ -64,6 +64,9 @@ pub fn figure() -> Figure { .tag("log") .tag("signals") .tag("measurements") + .tag("step") + .tag("sample-and-hold") + .tag("spectrum") .parameter("dimensionality", "2D") .parameter("artists", 4) .parameter("data_points", 692) diff --git a/crates/ironlab-gallery/tests/browsing.rs b/crates/ironlab-gallery/tests/browsing.rs index ae68e63..e7ce5d9 100644 --- a/crates/ironlab-gallery/tests/browsing.rs +++ b/crates/ironlab-gallery/tests/browsing.rs @@ -386,6 +386,14 @@ fn the_labels_of_the_gallery_are_the_words_a_reader_would_look_for() { "markers", "placement", "transparency", + "grouped", + "stacked", + "histogram", + "2d-histogram", + "density", + "tick-angle", + "occupancy", + "hidden-axis", ] { assert!( values.iter().any(|value| value == wanted), @@ -395,6 +403,58 @@ fn the_labels_of_the_gallery_are_the_words_a_reader_would_look_for() { } } +// Why: a reader looking for a kind of chart types the word they know for it, and the tag menu offers whole tags, +// so each kind must be named by a tag rather than left to a title. These words name kinds of chart that the bar, +// stairs and cells artists make, which no structural tag distinguishes: a stacked or grouped bar chart and a +// histogram are all bars, and an occupancy matrix and a two-dimensional histogram are both cells. "2d" alone +// would not do, because every flat figure's dimensionality parameter already reads "2D". +#[test] +fn each_kind_of_bar_and_cell_chart_is_found_by_its_name() { + let expect = |query: &str, titles: &[&str]| { + let mut got = found(query); + got.sort(); + let mut want: Vec = titles.iter().map(|title| (*title).to_owned()).collect(); + want.sort(); + assert_eq!(got, want, "{query:?} should find exactly these figures"); + }; + expect( + "tag:stacked", + &[ + "Histograms", + "Stacked, horizontal, floating and highlighted bars", + ], + ); + expect( + "tag:grouped", + &["Grouped bar chart", "Branch coverage occupancy matrix"], + ); + expect( + "tag:histogram", + &[ + "Histograms", + "Two-dimensional histogram and density contour", + ], + ); + expect( + "tag:2d-histogram", + &["Two-dimensional histogram and density contour"], + ); + expect( + "tag:angle", + &[ + "Stacked, horizontal, floating and highlighted bars", + "Case by subroutine coverage matrix", + ], + ); + expect( + "tag:occupancy", + &[ + "Branch coverage occupancy matrix", + "Case by subroutine coverage matrix", + ], + ); +} + // Why: the counts are what make the menu worth opening rather than guessing, and they have to come from the whole // gallery rather than from whatever the panel has drawn. The surfaces are the count worth pinning, because they // are the request the browser was built for and because several entries draw one without saying so in their title.