fission_charts/series/
graph.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4pub struct GraphNode {
5 pub id: String,
6 pub name: String,
7 pub value: f32,
8}
9
10#[derive(Debug, Clone, Serialize, Deserialize)]
11pub struct GraphEdge {
12 pub source: String,
13 pub target: String,
14}
15
16#[derive(Debug, Clone, Serialize, Deserialize)]
17pub struct GraphSeries {
18 pub name: String,
19 pub nodes: Vec<GraphNode>,
20 pub edges: Vec<GraphEdge>,
21}
22
23impl GraphSeries {
24 pub fn new(name: &str) -> Self {
25 Self {
26 name: name.into(),
27 nodes: Vec::new(),
28 edges: Vec::new(),
29 }
30 }
31
32 pub fn nodes(mut self, nodes: Vec<GraphNode>) -> Self {
33 self.nodes = nodes;
34 self
35 }
36
37 pub fn edges(mut self, edges: Vec<GraphEdge>) -> Self {
38 self.edges = edges;
39 self
40 }
41}
42
43impl Into<super::Series> for GraphSeries {
44 fn into(self) -> super::Series {
45 super::Series::Graph(self)
46 }
47}