Skip to main content

fission_charts/series/
graph.rs

1use 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}