Skip to main content

mdbook_plotly/code_handler/plot_obj_parser/
table_parser.rs

1use super::until::{Map, must_translate};
2use crate::{translate, translate_enum};
3use anyhow::Result;
4use plotly::traces::table::{Cells, Header, Table};
5
6pub fn parse_table_data(
7    table_obj: &mut serde_json::Value,
8    map: &Map,
9) -> Result<Box<Table<Vec<String>, String>>> {
10    let header_values: Vec<Vec<String>> = must_translate(table_obj, map, "header_values")?;
11    let cells_values: Vec<Vec<String>> = must_translate(table_obj, map, "cells_values")?;
12    let header = Header::new(header_values);
13    let cells = Cells::new(cells_values);
14    let table = Table::new(header, cells);
15    let table = translate! {
16        table,
17        table_obj,
18        map,
19        (name, String),
20        (column_width, f64),
21        (column_order, Vec<usize>),
22    }?;
23
24    use plotly::common::Visible;
25    let table = translate_enum! {
26        table,
27        table_obj,
28        map,
29        (visible, {
30            "true" =>       Visible::True,
31            "false" =>      Visible::False,
32            "legendonly" => Visible::LegendOnly,
33        }),
34    }?;
35
36    Ok(table)
37}