Add support for generating treemaps
Dependencies
- [2]
PVUQYWZELive-reload generated site using Trunk - [3]
ZEN3WUPDAdd support for histogram charts - [4]
7CVIL7UJCreate simple metadata parser - [5]
Q3Z6XMP5Migrate dependency tree to `petgraph::Graph` - [6]
T34OV3YQStore timings output in `timings::Output` struct - [7]
V2NPEIA6Use custom types to deserialize `--timings=json` output - [8]
C43IWI7GMove visualization logic into separate module - [9]
B2L26LOAStore index of dependency nodes - [10]
LOR3KOXGParse JSON output from `cargo build --timings` - [11]
UQJO24KBUse `forceatlas2` to construct graph layout - [12]
ZPFD3275Switch from `cargo_metadata`+`petgraph` to `guppy` - [13]
JVYWRCPTAdd basic chart visualisation - [14]
YA5ITLOVAdd support for Sankey diagrams - [*]
OPTMCUTBUse timings `duration` to set size of rendered node
Change contents
- replacement in src/visualize/mod.rs at line 3
use charming::series::{Bar, Graph, GraphLayoutForce, Sankey, Series};use charming::element::{ColorBy, ItemStyle, Label};use charming::series::{Bar, Graph, GraphLayoutForce, Sankey, Series, Treemap}; - edit in src/visualize/mod.rs at line 11
mod treemap; - edit in src/visualize/mod.rs at line 18
Treemap, - edit in src/visualize/mod.rs at line 46
Style::Treemap => {Treemap::new().data(treemap::data(graph, timings)).item_style(ItemStyle::new().border_width(5).gap_width(1)).visible_min(300_u64).upper_label(Label::new().show(true)).color(treemap::color())// TODO: this is a hack that sets the levels to be a complete worst-case.levels(treemap::levels(timings.pkg_times().count())).color_by(ColorBy::Series).into()} - replacement in src/timings.rs at line 25
enum Mode {pub enum Mode { - replacement in src/timings.rs at line 37
enum TargetKind {pub enum TargetKind { - replacement in src/timings.rs at line 54
struct Target {kind: Vec<TargetKind>,name: String,src_path: Utf8PathBuf,edition: Edition,doc: bool,doctest: bool,test: bool,pub struct Target {pub kind: Vec<TargetKind>,pub name: String,pub src_path: Utf8PathBuf,pub edition: Edition,pub doc: bool,pub doctest: bool,pub test: bool, - replacement in src/timings.rs at line 68
struct Message {pub struct Message { - replacement in src/timings.rs at line 70
package_id: cargo_metadata::PackageId,target: Target,mode: Mode,duration: f64,rmeta_time: Option<f64>,pub package_id: cargo_metadata::PackageId,pub target: Target,pub mode: Mode,pub duration: f64,pub rmeta_time: Option<f64>, - edit in src/timings.rs at line 149[16.181][3.3272]
}pub fn pkg_messages(&self, pkg: &PackageId) -> Option<&Vec<Message>> {self.repr.get(pkg) - edit in src/timings.rs at line 162
pub fn len(&self) -> usize {self.repr.len()} - replacement in src/main.rs at line 14
visualize::for_style(visualize::Style::Histogram, &package_graph, &timings);visualize::for_style(visualize::Style::Treemap, &package_graph, &timings); - replacement in Trunk.toml at line 21
watch = ["src/"]watch = ["src/", "Cargo.toml"] - replacement in Cargo.toml at line 8
charming = "0.3.1"charming = { path = "../charming/charming" } - edit in Cargo.lock at line 96
source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "f4c6b6990238a64b4ae139e7085ce2a11815cb67a0c066a3333ce40f3a329be3"