let Some(graph) = graph else { todo!() };
let mut axes = HashMap::new();
- let mut major_ticks = HashMap::new();
for child in &graph.facet_layout.children {
if let FacetLayoutChild::FacetLevel(facet_level) = child {
axes.insert(facet_level.level, &facet_level.axis);
- major_ticks.insert(
- facet_level.axis.major_ticks.id.as_str(),
- &facet_level.axis.major_ticks,
- );
}
}
}
impl TargetType {
- fn from_id(
- target: &str,
- graph: &Graph,
- major_ticks: &HashMap<&str, &MajorTicks>,
- ) -> Option<Self> {
- if let Some(id) = &graph.interval.labeling.id
- && id == target
- {
+ fn from_id(target: &str) -> Option<Self> {
+ if target == "labeling" {
Some(Self::Labeling)
- } else if major_ticks.contains_key(target) {
+ } else if target.ends_with("majorTicks") {
Some(Self::MajorTicks)
} else {
None
.iter()
.filter_map(|set| set.as_set_format())
.filter_map(|sf| {
- TargetType::from_id(&sf.target, graph, &major_ticks)
- .map(|target_type| Target { sf, target_type })
+ TargetType::from_id(&sf.target).map(|target_type| Target { sf, target_type })
})
.collect::<Vec<_>>();
#[derive(Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
struct Labeling {
- #[serde(rename = "@id")]
- id: Option<String>,
-
#[serde(rename = "$value", default)]
children: Vec<LabelingChild>,
}
#[derive(Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
struct MajorTicks {
- #[serde(rename = "@id")]
- id: String,
-
#[serde(rename = "@labelAngle")]
label_angle: f64,