Add basic chart visualisation

finchie
Apr 18, 2024, 2:05 AM
JVYWRCPTXQUCJ2BYOWAU36BM5ZKJ5FLKHIKMLSJA7XWOVIY2DMDQC

Dependencies

  • [2] B2L26LOA Store index of dependency nodes
  • [3] 7CVIL7UJ Create simple metadata parser

Change contents

  • edit in src/main.rs at line 4
    [3.89]
    [3.89]
    use charming::{
    series::{Graph, GraphCategory, GraphData, GraphLayout, GraphLink, GraphNode},
    Chart, HtmlRenderer,
    };
  • edit in src/main.rs at line 37
    [2.430]
    [3.687]
    }
    }
    fn graph(&self) -> GraphData {
    let categories = vec![GraphCategory {
    name: String::from("default"),
    }];
    let nodes = self
    .packages
    .iter()
    .zip(0..self.packages.len())
    .map(|(pkg, coords)| GraphNode {
    id: pkg.id.repr.clone(),
    name: self.data[&pkg.id].name.clone(),
    x: coords as f64,
    y: coords as f64,
    value: 1_f64,
    category: 0,
    symbol_size: 1_f64,
    label: None,
    })
    .collect();
    let links = self
    .node_index
    .values()
    .map(|node| {
    node.deps
    .iter()
    .map(move |child| (node, child.pkg.repr.clone()))
    })
    .flatten()
    .map(|(parent, child)| GraphLink {
    source: parent.id.repr.clone(),
    target: child,
    value: None,
    })
    .collect();
    GraphData {
    nodes,
    links,
    categories,
  • replacement in src/main.rs at line 90
    [3.897][2.431:469]()
    dbg!(&metadata[root_crate.root]);
    [3.897]
    [3.924]
    let chart = Chart::new().series(
    Graph::new()
    .name("Cargo dependencies")
    .layout(GraphLayout::None)
    .roam(true)
    .data(root_crate.graph()),
    );
    let mut renderer = HtmlRenderer::new("Cargo dependencies", 1000, 800);
    renderer.save(&chart, "/tmp/chart.html").unwrap();
  • edit in Cargo.toml at line 8
    [3.1066]
    charming = "0.3.1"
  • edit in Cargo.lock at line 4
    [3.1206]
    [3.1206]
    [[package]]
    name = "block-buffer"
    version = "0.10.4"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
    dependencies = [
    "generic-array",
    ]
  • edit in Cargo.lock at line 47
    [3.1963]
    [3.1963]
    name = "cfg-if"
    version = "1.0.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
    [[package]]
    name = "charming"
    version = "0.3.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "f4c6b6990238a64b4ae139e7085ce2a11815cb67a0c066a3333ce40f3a329be3"
    dependencies = [
    "handlebars",
    "serde",
    "serde_json",
    ]
    [[package]]
    name = "cpufeatures"
    version = "0.2.12"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
    dependencies = [
    "libc",
    ]
    [[package]]
    name = "crypto-common"
    version = "0.1.6"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
    dependencies = [
    "generic-array",
    "typenum",
    ]
    [[package]]
  • edit in Cargo.lock at line 87
    [3.2033]
    [3.2033]
    "charming",
    ]
    [[package]]
    name = "digest"
    version = "0.10.7"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
    dependencies = [
    "block-buffer",
    "crypto-common",
    ]
    [[package]]
    name = "generic-array"
    version = "0.14.7"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
    dependencies = [
    "typenum",
    "version_check",
    ]
    [[package]]
    name = "handlebars"
    version = "4.5.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "faa67bab9ff362228eb3d00bd024a4965d8231bbb7921167f0cfa66c6626b225"
    dependencies = [
    "log",
    "pest",
    "pest_derive",
    "serde",
    "serde_json",
    "thiserror",
  • edit in Cargo.lock at line 129
    [3.2224]
    [3.2224]
    [[package]]
    name = "libc"
    version = "0.2.153"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
    [[package]]
    name = "log"
    version = "0.4.21"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
    [[package]]
    name = "memchr"
    version = "2.7.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
  • edit in Cargo.lock at line 149
    [3.2237]
    [3.2237]
    name = "once_cell"
    version = "1.19.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
    [[package]]
    name = "pest"
    version = "2.7.9"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "311fb059dee1a7b802f036316d790138c613a4e8b180c822e3925a662e9f0c95"
    dependencies = [
    "memchr",
    "thiserror",
    "ucd-trie",
    ]
    [[package]]
    name = "pest_derive"
    version = "2.7.9"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "f73541b156d32197eecda1a4014d7f868fd2bcb3c550d5386087cfba442bf69c"
    dependencies = [
    "pest",
    "pest_generator",
    ]
    [[package]]
    name = "pest_generator"
    version = "2.7.9"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "c35eeed0a3fab112f75165fdc026b3913f4183133f19b49be773ac9ea966e8bd"
    dependencies = [
    "pest",
    "pest_meta",
    "proc-macro2",
    "quote",
    "syn",
    ]
    [[package]]
    name = "pest_meta"
    version = "2.7.9"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "2adbf29bb9776f28caece835398781ab24435585fe0d4dc1374a61db5accedca"
    dependencies = [
    "once_cell",
    "pest",
    "sha2",
    ]
    [[package]]
  • edit in Cargo.lock at line 261
    [3.3808]
    [3.3808]
    ]
    [[package]]
    name = "sha2"
    version = "0.10.8"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
    dependencies = [
    "cfg-if",
    "cpufeatures",
    "digest",
  • edit in Cargo.lock at line 304
    [3.4545]
    [3.4545]
    [[package]]
    name = "typenum"
    version = "1.17.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
    [[package]]
    name = "ucd-trie"
    version = "0.1.6"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9"
  • edit in Cargo.lock at line 322
    [3.4743]
    [[package]]
    name = "version_check"
    version = "0.9.4"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"