dot_ix_web_components

Crates.iodot_ix_web_components
lib.rsdot_ix_web_components
version0.8.1
sourcesrc
created_at2024-02-04 04:00:42.867633
updated_at2024-09-27 07:43:08.989771
descriptionWeb components provided by the `dot_ix` library.
homepagehttps://github.com/azriel91/dot_ix
repositoryhttps://github.com/azriel91/dot_ix
max_upload_size
id1126079
size170,753
Azriel Hoh (azriel91)

documentation

https://docs.rs/dot_ix_rt/

README

✒️ dot_ix

Crates.io docs.rs CI Coverage Status

🚧 This is very much a work in progress

Try it yourself: (demo_1, demo_2)

Example

Original Concept

https://user-images.githubusercontent.com/2993230/253878816-0729970f-651f-45ef-a986-470f383b8018.mp4

Usage

Add the following to Cargo.toml

dot_ix = "0.8.1"

# Enables the `FlexDiag` web component.
dot_ix = { version = "0.8.1", features = ["flex_diag"] }

# Enables server side dot generation.
# Requires graphviz `dot` to be installed server side.
dot_ix = { version = "0.8.1", features = ["server_side_graphviz"] }

Development

cargo install cargo-leptos

# Then, one of:
# * client side rendering -- uses WASM compiled graphviz to generate the graph.
cargo leptos watch
# * server side rendering -- runs `dot` on the server to generate the graph.
#   Requires `graphviz` to be installed.
cargo leptos watch --features "server_side_graphviz" -v

For server side rendering, the "server_side_graphviz" feature needs to be passed in separately because that feature still needs to be enabled for the lib compilation, i.e.

  • server side rendering:
    • lib features: "server_side_graphviz"
    • bin features: "ssr,server_side_graphviz"
  • client side rendering:
    • lib features: ""

    • bin features: ""

To Do

🦜 Feel free to do any of these -- this project isn't my main focus, but I should be responsive in reviewing / merging things.

  • Split crate into multiple subcrates.
  • Split app::info_graph::InfoGraph into smaller components.
  • Get rid of main.scss and replace with tailwind classes.
  • Inline styles in SVG.
  • Inline font in SVG styles.
  • Change rt/into_graphviz_dot_src/info_graph.rs to write to a buffer, instead of individual strings.
  • Take each node with a "type".
  • Take in tailwindcss classes to attach to node types.
  • Take in theme / merge with default theme.
  • Split dot_ix library from the web app, so it can be embedded in other apps.
  • GitHub Actions / automated testing / releasing / publishing.
  • Playground: Render pre-written graphs
    • Graph in URL
    • Link to gist
Commit count: 415

cargo fmt