#![allow(missing_docs, clippy::large_enum_variant)]
use crate::removable_value::RemovableValue;
use derive_builder::Builder;
use derive_more::From;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Vegalite {
#[serde(rename = "$schema")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default = "Some(\"https://vega.github.io/schema/vega-lite/v3.4.0.json\".to_string())"
)]
pub schema: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<AlignUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub autosize: Option<Autosize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub background: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bounds: Option<BoundsEnum>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub center: Option<VegaliteCenter>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub columns: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub config: Option<Config>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub data: RemovableValue<UrlData>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datasets: Option<HashMap<String, InlineDatasetValue>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub encoding: Option<Encoding>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub mark: Option<AnyMark>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub padding: Option<Padding>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub projection: Option<Projection>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub resolve: Option<Resolve>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub selection: Option<HashMap<String, SelectionDef>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub spacing: Option<Spacing>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title: Option<Title>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub transform: Option<Vec<Transform>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub usermeta: Option<HashMap<String, Option<serde_json::Value>>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub view: Option<ViewBackground>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub facet: Option<Facet>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub spec: Option<SpecClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub layer: Option<Vec<LayerSpec>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub repeat: Option<RepeatUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub concat: Option<Vec<Spec>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub vconcat: Option<Vec<Spec>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub hconcat: Option<Vec<Spec>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct RowColLayoutAlign {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub column: Option<LayoutAlign>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub row: Option<LayoutAlign>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct AutoSizeParams {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub contains: Option<Contains>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub resize: Option<bool>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub auto_size_params_type: Option<AutosizeType>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct RowColBoolean {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub column: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub row: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct SpecClass {
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub data: RemovableValue<UrlData>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub encoding: Option<Encoding>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub layer: Option<Vec<LayerSpec>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub projection: Option<Projection>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub resolve: Option<Resolve>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title: Option<Title>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub transform: Option<Vec<Transform>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub view: Option<ViewBackground>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<AlignUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bounds: Option<BoundsEnum>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub center: Option<VegaliteCenter>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub columns: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub mark: Option<AnyMark>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub selection: Option<HashMap<String, SelectionDef>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub spacing: Option<Spacing>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub facet: Option<Facet>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub spec: Option<Box<SpecClass>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub repeat: Option<RepeatUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub concat: Option<Vec<Spec>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub vconcat: Option<Vec<Spec>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub hconcat: Option<Vec<Spec>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Spec {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<AlignUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bounds: Option<BoundsEnum>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub center: Option<VegaliteCenter>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub columns: Option<f64>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub data: RemovableValue<UrlData>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub encoding: Option<Encoding>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub mark: Option<AnyMark>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub projection: Option<Projection>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub resolve: Option<Resolve>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub selection: Option<HashMap<String, SelectionDef>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub spacing: Option<Spacing>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title: Option<Title>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub transform: Option<Vec<Transform>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub view: Option<ViewBackground>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub layer: Option<Vec<LayerSpec>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub facet: Option<Facet>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub spec: Option<SpecClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub repeat: Option<RepeatUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub concat: Option<Vec<Spec>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub vconcat: Option<Vec<Spec>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub hconcat: Option<Vec<Spec>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct UrlData {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format: Option<DataFormat>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub values: Option<UrlDataInlineDataset>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub sequence: Option<SequenceParams>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub sphere: Option<SphereUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub graticule: Option<Graticule>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct DataFormat {
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub parse: RemovableValue<HashMap<String, Option<String>>>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub data_format_type: Option<DataFormatType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub delimiter: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub property: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub feature: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub mesh: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct GraticuleParams {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub extent: Option<Vec<Vec<f64>>>,
#[serde(rename = "extentMajor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub extent_major: Option<Vec<Vec<f64>>>,
#[serde(rename = "extentMinor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub extent_minor: Option<Vec<Vec<f64>>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub precision: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub step: Option<Vec<f64>>,
#[serde(rename = "stepMajor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub step_major: Option<Vec<f64>>,
#[serde(rename = "stepMinor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub step_minor: Option<Vec<f64>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct SequenceParams {
#[serde(rename = "as")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub sequence_params_as: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub start: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub step: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stop: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct SphereClass {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Encoding {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<DefWithConditionMarkPropFieldDefStringNull>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub column: Option<FacetFieldDef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub detail: Option<Detail>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub facet: Option<FacetFieldDef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<DefWithConditionMarkPropFieldDefStringNull>,
#[serde(rename = "fillOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<DefWithConditionMarkPropFieldDefNumber>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub href: Option<HrefClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub key: Option<TypedFieldDef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub latitude: Option<LatitudeClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub latitude2: Option<Latitude2Class>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub longitude: Option<LatitudeClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub longitude2: Option<Latitude2Class>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<DefWithConditionMarkPropFieldDefNumber>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub order: Option<Order>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub row: Option<FacetFieldDef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<DefWithConditionMarkPropFieldDefTypeForShapeStringNull>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<DefWithConditionMarkPropFieldDefNumber>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<DefWithConditionMarkPropFieldDefStringNull>,
#[serde(rename = "strokeOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<DefWithConditionMarkPropFieldDefNumber>,
#[serde(rename = "strokeWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<DefWithConditionMarkPropFieldDefNumber>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<HrefClass>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub tooltip: RemovableValue<Tooltip>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x: Option<XClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x2: Option<X2Class>,
#[serde(rename = "xError")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x_error: Option<Latitude2Class>,
#[serde(rename = "xError2")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x_error2: Option<Latitude2Class>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y: Option<YClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y2: Option<Y2Class>,
#[serde(rename = "yError")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y_error: Option<Latitude2Class>,
#[serde(rename = "yError2")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y_error2: Option<Latitude2Class>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct DefWithConditionMarkPropFieldDefStringNull {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<PurpleBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<ColorCondition>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub legend: RemovableValue<Legend>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub scale: RemovableValue<Scale>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub sort: RemovableValue<Sort>,
#[serde(rename = "timeUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<TimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub def_with_condition_mark_prop_field_def_string_null_type: Option<StandardType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ArgmDef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub argmax: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub argmin: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct BinParams {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub anchor: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub base: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub binned: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub divide: Option<Vec<f64>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub extent: Option<Vec<f64>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub maxbins: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub minstep: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub nice: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub step: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub steps: Option<Vec<f64>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalStringValueDef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<Box<PurpleLogicalOperandPredicate>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub selection: Option<Box<PurpleSelectionOperand>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Selection {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub not: Option<Box<PurpleSelectionOperand>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub and: Option<Vec<SelectionOperandElement>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub or: Option<Vec<SelectionOperandElement>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Predicate {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub not: Option<Box<PurpleLogicalOperandPredicate>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub and: Option<Vec<LogicalOperandPredicateElement>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub or: Option<Vec<LogicalOperandPredicateElement>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub equal: Option<EqualUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<String>,
#[serde(rename = "timeUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<TimeUnit>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub range: Option<Vec<Option<RangeElement>>>,
#[serde(rename = "oneOf")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub one_of: Option<Vec<SelectionInitIntervalElement>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub lt: Option<Lt>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gt: Option<Lt>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub lte: Option<Lt>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gte: Option<Lt>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub valid: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub selection: Option<Box<PurpleSelectionOperand>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct DateTime {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub date: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub day: Option<Day>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub hours: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub milliseconds: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub minutes: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub month: Option<Month>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub quarter: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub seconds: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub utc: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub year: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalPredicateStringValueDefClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<Box<PurpleLogicalOperandPredicate>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub selection: Option<Box<PurpleSelectionOperand>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<PurpleBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub legend: RemovableValue<Legend>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub scale: RemovableValue<Scale>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub sort: RemovableValue<Sort>,
#[serde(rename = "timeUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<TimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub conditional_def_type: Option<StandardType>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct RepeatRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub repeat: Option<RepeatEnum>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Legend {
#[serde(rename = "clipHeight")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub clip_height: Option<f64>,
#[serde(rename = "columnPadding")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub column_padding: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub columns: Option<f64>,
#[serde(rename = "cornerRadius")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub direction: Option<Orientation>,
#[serde(rename = "fillColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_color: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format: Option<String>,
#[serde(rename = "formatType")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format_type: Option<FormatType>,
#[serde(rename = "gradientLength")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_length: Option<f64>,
#[serde(rename = "gradientOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_opacity: Option<f64>,
#[serde(rename = "gradientStrokeColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_stroke_color: Option<String>,
#[serde(rename = "gradientStrokeWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_stroke_width: Option<f64>,
#[serde(rename = "gradientThickness")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_thickness: Option<f64>,
#[serde(rename = "gridAlign")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_align: Option<LayoutAlign>,
#[serde(rename = "labelAlign")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_align: Option<Align>,
#[serde(rename = "labelBaseline")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_baseline: Option<TextBaseline>,
#[serde(rename = "labelColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_color: Option<String>,
#[serde(rename = "labelFont")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font: Option<String>,
#[serde(rename = "labelFontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_size: Option<f64>,
#[serde(rename = "labelFontStyle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_style: Option<String>,
#[serde(rename = "labelFontWeight")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_weight: Option<FontWeight>,
#[serde(rename = "labelLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_limit: Option<f64>,
#[serde(rename = "labelOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_offset: Option<f64>,
#[serde(rename = "labelOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_opacity: Option<f64>,
#[serde(rename = "labelOverlap")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_overlap: Option<LabelOverlap>,
#[serde(rename = "labelPadding")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_padding: Option<f64>,
#[serde(rename = "labelSeparation")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_separation: Option<f64>,
#[serde(rename = "legendX")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub legend_x: Option<f64>,
#[serde(rename = "legendY")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub legend_y: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub offset: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub orient: Option<LegendOrient>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub padding: Option<f64>,
#[serde(rename = "rowPadding")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub row_padding: Option<f64>,
#[serde(rename = "strokeColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_color: Option<String>,
#[serde(rename = "symbolDash")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_dash: Option<Vec<f64>>,
#[serde(rename = "symbolDashOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_dash_offset: Option<f64>,
#[serde(rename = "symbolFillColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_fill_color: Option<String>,
#[serde(rename = "symbolOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_offset: Option<f64>,
#[serde(rename = "symbolOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_opacity: Option<f64>,
#[serde(rename = "symbolSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_size: Option<f64>,
#[serde(rename = "symbolStrokeColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_stroke_color: Option<String>,
#[serde(rename = "symbolStrokeWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_stroke_width: Option<f64>,
#[serde(rename = "symbolType")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_type: Option<String>,
#[serde(rename = "tickCount")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_count: Option<f64>,
#[serde(rename = "tickMinStep")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_min_step: Option<f64>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<String>,
#[serde(rename = "titleAlign")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_align: Option<Align>,
#[serde(rename = "titleAnchor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_anchor: Option<TitleAnchor>,
#[serde(rename = "titleBaseline")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_baseline: Option<TextBaseline>,
#[serde(rename = "titleColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_color: Option<String>,
#[serde(rename = "titleFont")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font: Option<String>,
#[serde(rename = "titleFontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_size: Option<f64>,
#[serde(rename = "titleFontStyle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_style: Option<String>,
#[serde(rename = "titleFontWeight")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_weight: Option<FontWeight>,
#[serde(rename = "titleLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_limit: Option<f64>,
#[serde(rename = "titleOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_opacity: Option<f64>,
#[serde(rename = "titleOrient")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_orient: Option<Orient>,
#[serde(rename = "titlePadding")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_padding: Option<f64>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub legend_type: Option<LegendType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub values: Option<Vec<SelectionInitIntervalElement>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub zindex: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Scale {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub base: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bins: Option<Vec<f64>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub clamp: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub constant: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain: Option<DomainUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub exponent: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interpolate: Option<InterpolateUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub nice: Option<NiceUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub padding: Option<f64>,
#[serde(rename = "paddingInner")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub padding_inner: Option<f64>,
#[serde(rename = "paddingOuter")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub padding_outer: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub range: Option<ScaleRange>,
#[serde(rename = "rangeStep")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub range_step: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub round: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub scheme: Option<Scheme>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub scale_type: Option<ScaleType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub zero: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct DomainClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub selection: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub encoding: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleInterpolateParams {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gamma: Option<f64>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub scale_interpolate_params_type: Option<ScaleInterpolateParamsType>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct NiceClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interval: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub step: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct SchemeParams {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub count: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub extent: Option<Vec<f64>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub name: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct EncodingSortField {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub op: Option<AggregateOp>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub order: RemovableValue<SortOrder>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub encoding: Option<SingleDefUnitChannel>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct FacetFieldDef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<PurpleBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub header: Option<Header>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub sort: RemovableValue<SortArray>,
#[serde(rename = "timeUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<TimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub facet_field_def_type: Option<StandardType>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Header {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format: Option<String>,
#[serde(rename = "formatType")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format_type: Option<FormatType>,
#[serde(rename = "labelAlign")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_align: Option<Align>,
#[serde(rename = "labelAnchor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_anchor: Option<TitleAnchor>,
#[serde(rename = "labelAngle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_angle: Option<f64>,
#[serde(rename = "labelColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_color: Option<String>,
#[serde(rename = "labelFont")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font: Option<String>,
#[serde(rename = "labelFontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_size: Option<f64>,
#[serde(rename = "labelFontStyle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_style: Option<String>,
#[serde(rename = "labelLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_limit: Option<f64>,
#[serde(rename = "labelOrient")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_orient: Option<Orient>,
#[serde(rename = "labelPadding")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_padding: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub labels: Option<bool>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<String>,
#[serde(rename = "titleAlign")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_align: Option<Align>,
#[serde(rename = "titleAnchor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_anchor: Option<TitleAnchor>,
#[serde(rename = "titleAngle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_angle: Option<f64>,
#[serde(rename = "titleBaseline")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_baseline: Option<TextBaseline>,
#[serde(rename = "titleColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_color: Option<String>,
#[serde(rename = "titleFont")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font: Option<String>,
#[serde(rename = "titleFontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_size: Option<f64>,
#[serde(rename = "titleFontStyle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_style: Option<String>,
#[serde(rename = "titleFontWeight")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_weight: Option<FontWeight>,
#[serde(rename = "titleLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_limit: Option<f64>,
#[serde(rename = "titleOrient")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_orient: Option<Orient>,
#[serde(rename = "titlePadding")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_padding: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct SortEncodingSortField {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub op: Option<AggregateOp>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub order: RemovableValue<SortOrder>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct TypedFieldDef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<FluffyBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(rename = "timeUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<TimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub typed_field_def_type: Option<StandardType>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct DefWithConditionMarkPropFieldDefNumber {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<PurpleBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<FillOpacityCondition>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub legend: RemovableValue<Legend>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub scale: RemovableValue<Scale>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub sort: RemovableValue<Sort>,
#[serde(rename = "timeUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<TimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub def_with_condition_mark_prop_field_def_number_type: Option<StandardType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalNumberValueDef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<Box<PurpleLogicalOperandPredicate>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub selection: Option<Box<PurpleSelectionOperand>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalPredicateNumberValueDefClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<Box<PurpleLogicalOperandPredicate>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub selection: Option<Box<PurpleSelectionOperand>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<PurpleBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub legend: RemovableValue<Legend>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub scale: RemovableValue<Scale>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub sort: RemovableValue<Sort>,
#[serde(rename = "timeUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<TimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub conditional_def_type: Option<StandardType>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct HrefClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<FluffyBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<HrefCondition>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format: Option<String>,
#[serde(rename = "formatType")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format_type: Option<FormatType>,
#[serde(rename = "timeUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<TimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub def_with_condition_text_field_def_value_type: Option<StandardType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalValueDef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<Box<PurpleLogicalOperandPredicate>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub selection: Option<Box<PurpleSelectionOperand>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalPredicateValueDefClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<Box<PurpleLogicalOperandPredicate>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub selection: Option<Box<PurpleSelectionOperand>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<FluffyBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format: Option<String>,
#[serde(rename = "formatType")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format_type: Option<FormatType>,
#[serde(rename = "timeUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<TimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub conditional_def_type: Option<StandardType>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct LatitudeClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(rename = "timeUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<TimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub def_type: Option<LatitudeType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Latitude2Class {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(rename = "timeUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<TimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct OrderFieldDef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<FluffyBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub sort: Option<SortOrder>,
#[serde(rename = "timeUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<TimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub order_field_def_type: Option<StandardType>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct OrderFieldDefClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<FluffyBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub sort: Option<SortOrder>,
#[serde(rename = "timeUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<TimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub def_type: Option<StandardType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct DefWithConditionMarkPropFieldDefTypeForShapeStringNull {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<PurpleBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<ConditionUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub legend: RemovableValue<Legend>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub scale: RemovableValue<Scale>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub sort: RemovableValue<Sort>,
#[serde(rename = "timeUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<TimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub def_with_condition_mark_prop_field_def_type_for_shape_string_null_type:
Option<TypeForShape>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Conditional {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<Box<PurpleLogicalOperandPredicate>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub selection: Option<Box<PurpleSelectionOperand>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<PurpleBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub legend: RemovableValue<Legend>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub scale: RemovableValue<Scale>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub sort: RemovableValue<Sort>,
#[serde(rename = "timeUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<TimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub conditional_type: Option<TypeForShape>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct TextFieldDef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<FluffyBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format: Option<String>,
#[serde(rename = "formatType")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format_type: Option<FormatType>,
#[serde(rename = "timeUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<TimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text_field_def_type: Option<StandardType>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct DefWithConditionTextFieldDefValue {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<FluffyBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<HrefCondition>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format: Option<String>,
#[serde(rename = "formatType")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format_type: Option<FormatType>,
#[serde(rename = "timeUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<TimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub def_with_condition_text_field_def_value_type: Option<StandardType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct XClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub axis: RemovableValue<Axis>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<FluffyBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub impute: Option<ImputeParams>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub scale: RemovableValue<Scale>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub sort: RemovableValue<Sort>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stack: Option<Stack>,
#[serde(rename = "timeUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<TimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub def_type: Option<StandardType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<XUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Axis {
#[serde(rename = "bandPosition")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain: Option<bool>,
#[serde(rename = "domainColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_color: Option<String>,
#[serde(rename = "domainDash")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_dash: Option<Vec<f64>>,
#[serde(rename = "domainDashOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_dash_offset: Option<f64>,
#[serde(rename = "domainOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_opacity: Option<f64>,
#[serde(rename = "domainWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format: Option<String>,
#[serde(rename = "formatType")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format_type: Option<FormatType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid: Option<bool>,
#[serde(rename = "gridColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_color: Option<String>,
#[serde(rename = "gridDash")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_dash: Option<Vec<f64>>,
#[serde(rename = "gridDashOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_dash_offset: Option<f64>,
#[serde(rename = "gridOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_opacity: Option<f64>,
#[serde(rename = "gridWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_width: Option<f64>,
#[serde(rename = "labelAlign")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_align: Option<Align>,
#[serde(rename = "labelAngle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_angle: Option<f64>,
#[serde(rename = "labelBaseline")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_baseline: Option<TextBaseline>,
#[serde(rename = "labelBound")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_bound: Option<Label>,
#[serde(rename = "labelColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_color: Option<String>,
#[serde(rename = "labelFlush")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_flush: Option<Label>,
#[serde(rename = "labelFlushOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_flush_offset: Option<f64>,
#[serde(rename = "labelFont")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font: Option<String>,
#[serde(rename = "labelFontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_size: Option<f64>,
#[serde(rename = "labelFontStyle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_style: Option<String>,
#[serde(rename = "labelFontWeight")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_weight: Option<FontWeight>,
#[serde(rename = "labelLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_limit: Option<f64>,
#[serde(rename = "labelOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_opacity: Option<f64>,
#[serde(rename = "labelOverlap")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_overlap: Option<LabelOverlap>,
#[serde(rename = "labelPadding")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_padding: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub labels: Option<bool>,
#[serde(rename = "labelSeparation")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_separation: Option<f64>,
#[serde(rename = "maxExtent")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub max_extent: Option<f64>,
#[serde(rename = "minExtent")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub min_extent: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub offset: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub orient: Option<Orient>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub position: Option<f64>,
#[serde(rename = "tickColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_color: Option<String>,
#[serde(rename = "tickCount")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_count: Option<f64>,
#[serde(rename = "tickDash")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_dash: Option<Vec<f64>>,
#[serde(rename = "tickDashOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_dash_offset: Option<f64>,
#[serde(rename = "tickExtra")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_extra: Option<bool>,
#[serde(rename = "tickMinStep")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_min_step: Option<f64>,
#[serde(rename = "tickOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_offset: Option<f64>,
#[serde(rename = "tickOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_opacity: Option<f64>,
#[serde(rename = "tickRound")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_round: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ticks: Option<bool>,
#[serde(rename = "tickSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_size: Option<f64>,
#[serde(rename = "tickWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_width: Option<f64>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<String>,
#[serde(rename = "titleAlign")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_align: Option<Align>,
#[serde(rename = "titleAnchor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_anchor: Option<TitleAnchor>,
#[serde(rename = "titleAngle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_angle: Option<f64>,
#[serde(rename = "titleBaseline")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_baseline: Option<TextBaseline>,
#[serde(rename = "titleColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_color: Option<String>,
#[serde(rename = "titleFont")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font: Option<String>,
#[serde(rename = "titleFontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_size: Option<f64>,
#[serde(rename = "titleFontStyle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_style: Option<String>,
#[serde(rename = "titleFontWeight")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_weight: Option<FontWeight>,
#[serde(rename = "titleLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_limit: Option<f64>,
#[serde(rename = "titleOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_opacity: Option<f64>,
#[serde(rename = "titlePadding")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_padding: Option<f64>,
#[serde(rename = "titleX")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_x: Option<f64>,
#[serde(rename = "titleY")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_y: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub values: Option<Vec<SelectionInitIntervalElement>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub zindex: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ImputeParams {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub frame: Option<Vec<Option<f64>>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub keyvals: Option<Keyvals>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub method: Option<ImputeMethod>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ImputeSequence {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub start: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub step: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stop: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct X2Class {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(rename = "timeUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<TimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<XUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct YClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub axis: RemovableValue<Axis>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<FluffyBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub impute: Option<ImputeParams>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub scale: RemovableValue<Scale>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub sort: RemovableValue<Sort>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stack: Option<Stack>,
#[serde(rename = "timeUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<TimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub def_type: Option<StandardType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<YUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Y2Class {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(rename = "timeUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<TimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<YUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Facet {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<PurpleBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub header: Option<Header>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub sort: RemovableValue<SortArray>,
#[serde(rename = "timeUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<TimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub facet_type: Option<StandardType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub column: Option<FacetFieldDef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub row: Option<FacetFieldDef>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct LayerSpec {
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub data: RemovableValue<UrlData>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub encoding: Option<LayerEncoding>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub layer: Option<Vec<LayerSpec>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub projection: Option<Projection>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub resolve: Option<Resolve>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title: Option<Title>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub transform: Option<Vec<Transform>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub view: Option<ViewBackground>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub mark: Option<AnyMark>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub selection: Option<HashMap<String, SelectionDef>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct LayerEncoding {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<DefWithConditionMarkPropFieldDefStringNull>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub detail: Option<Detail>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<DefWithConditionMarkPropFieldDefStringNull>,
#[serde(rename = "fillOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<DefWithConditionMarkPropFieldDefNumber>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub href: Option<HrefClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub key: Option<TypedFieldDef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub latitude: Option<LatitudeClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub latitude2: Option<Latitude2Class>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub longitude: Option<LatitudeClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub longitude2: Option<Latitude2Class>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<DefWithConditionMarkPropFieldDefNumber>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub order: Option<Order>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<DefWithConditionMarkPropFieldDefTypeForShapeStringNull>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<DefWithConditionMarkPropFieldDefNumber>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<DefWithConditionMarkPropFieldDefStringNull>,
#[serde(rename = "strokeOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<DefWithConditionMarkPropFieldDefNumber>,
#[serde(rename = "strokeWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<DefWithConditionMarkPropFieldDefNumber>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<HrefClass>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub tooltip: RemovableValue<Tooltip>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x: Option<XClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x2: Option<X2Class>,
#[serde(rename = "xError")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x_error: Option<Latitude2Class>,
#[serde(rename = "xError2")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x_error2: Option<Latitude2Class>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y: Option<YClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y2: Option<Y2Class>,
#[serde(rename = "yError")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y_error: Option<Latitude2Class>,
#[serde(rename = "yError2")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y_error2: Option<Latitude2Class>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct MarkDefClass {
#[serde(rename = "box")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub def_box: Option<DefBox>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub clip: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub extent: Option<BoxPlotDefExtent>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub median: Option<DefBox>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub orient: Option<Orientation>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub outliers: Option<DefBox>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub rule: Option<DefBox>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ticks: Option<DefBox>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub def_type: Option<Mark>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band: Option<DefBox>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub borders: Option<DefBox>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interpolate: Option<Interpolate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tension: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<Align>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub baseline: Option<TextBaseline>,
#[serde(rename = "binSpacing")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin_spacing: Option<f64>,
#[serde(rename = "cornerRadius")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub cursor: Option<Cursor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dir: Option<Dir>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dx: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dy: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ellipsis: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filled: Option<bool>,
#[serde(rename = "fillOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font: Option<String>,
#[serde(rename = "fontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_size: Option<f64>,
#[serde(rename = "fontStyle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_style: Option<String>,
#[serde(rename = "fontWeight")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_weight: Option<FontWeight>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub href: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub limit: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line: Option<Line>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub order: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub point: Option<PointUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<String>,
#[serde(rename = "strokeCap")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_cap: Option<StrokeCap>,
#[serde(rename = "strokeDash")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<Vec<f64>>,
#[serde(rename = "strokeDashOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<f64>,
#[serde(rename = "strokeJoin")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_join: Option<StrokeJoin>,
#[serde(rename = "strokeMiterLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_miter_limit: Option<f64>,
#[serde(rename = "strokeOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<f64>,
#[serde(rename = "strokeWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub style: Option<Style>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub thickness: Option<f64>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub tooltip: RemovableValue<TooltipUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x: Option<XUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x2: Option<XUnion>,
#[serde(rename = "x2Offset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x2_offset: Option<f64>,
#[serde(rename = "xOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x_offset: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y: Option<YUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y2: Option<XUnion>,
#[serde(rename = "y2Offset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y2_offset: Option<f64>,
#[serde(rename = "yOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y_offset: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct MarkConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<Align>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<String>,
#[serde(rename = "cornerRadius")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub cursor: Option<Cursor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dir: Option<Dir>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dx: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dy: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ellipsis: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filled: Option<bool>,
#[serde(rename = "fillOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font: Option<String>,
#[serde(rename = "fontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_size: Option<f64>,
#[serde(rename = "fontStyle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_style: Option<String>,
#[serde(rename = "fontWeight")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_weight: Option<FontWeight>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub href: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interpolate: Option<Interpolate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub limit: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub order: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub orient: Option<Orientation>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<String>,
#[serde(rename = "strokeCap")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_cap: Option<StrokeCap>,
#[serde(rename = "strokeDash")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<Vec<f64>>,
#[serde(rename = "strokeDashOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<f64>,
#[serde(rename = "strokeJoin")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_join: Option<StrokeJoin>,
#[serde(rename = "strokeMiterLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_miter_limit: Option<f64>,
#[serde(rename = "strokeOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<f64>,
#[serde(rename = "strokeWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tension: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta: Option<f64>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub tooltip: RemovableValue<TooltipUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x: Option<XUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x2: Option<XUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y: Option<YUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y2: Option<XUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct TooltipContent {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub content: Option<Content>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct OverlayMarkDef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<Align>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub clip: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<String>,
#[serde(rename = "cornerRadius")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub cursor: Option<Cursor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dir: Option<Dir>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dx: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dy: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ellipsis: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filled: Option<bool>,
#[serde(rename = "fillOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font: Option<String>,
#[serde(rename = "fontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_size: Option<f64>,
#[serde(rename = "fontStyle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_style: Option<String>,
#[serde(rename = "fontWeight")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_weight: Option<FontWeight>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub href: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interpolate: Option<Interpolate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub limit: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub order: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub orient: Option<Orientation>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<String>,
#[serde(rename = "strokeCap")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_cap: Option<StrokeCap>,
#[serde(rename = "strokeDash")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<Vec<f64>>,
#[serde(rename = "strokeDashOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<f64>,
#[serde(rename = "strokeJoin")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_join: Option<StrokeJoin>,
#[serde(rename = "strokeMiterLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_miter_limit: Option<f64>,
#[serde(rename = "strokeOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<f64>,
#[serde(rename = "strokeWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub style: Option<Style>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tension: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta: Option<f64>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub tooltip: RemovableValue<TooltipUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x: Option<XUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x2: Option<XUnion>,
#[serde(rename = "x2Offset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x2_offset: Option<f64>,
#[serde(rename = "xOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x_offset: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y: Option<YUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y2: Option<XUnion>,
#[serde(rename = "y2Offset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y2_offset: Option<f64>,
#[serde(rename = "yOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y_offset: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Projection {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub center: Option<Vec<f64>>,
#[serde(rename = "clipAngle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub clip_angle: Option<f64>,
#[serde(rename = "clipExtent")]
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub clip_extent: RemovableValue<Vec<Vec<f64>>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub coefficient: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub distance: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fraction: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub lobes: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub parallel: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub precision: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ratio: Option<f64>,
#[serde(rename = "reflectX")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub reflect_x: Option<bool>,
#[serde(rename = "reflectY")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub reflect_y: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub rotate: Option<Vec<f64>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub scale: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub spacing: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tilt: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub translate: Option<Vec<f64>>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub projection_type: Option<ProjectionType>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Resolve {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis: Option<AxisResolveMap>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub legend: Option<LegendResolveMap>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub scale: Option<ScaleResolveMap>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct AxisResolveMap {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x: Option<ResolveMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y: Option<ResolveMode>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct LegendResolveMap {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<ResolveMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<ResolveMode>,
#[serde(rename = "fillOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<ResolveMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<ResolveMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<ResolveMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<ResolveMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<ResolveMode>,
#[serde(rename = "strokeOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<ResolveMode>,
#[serde(rename = "strokeWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<ResolveMode>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleResolveMap {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<ResolveMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<ResolveMode>,
#[serde(rename = "fillOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<ResolveMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<ResolveMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<ResolveMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<ResolveMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<ResolveMode>,
#[serde(rename = "strokeOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<ResolveMode>,
#[serde(rename = "strokeWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<ResolveMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x: Option<ResolveMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y: Option<ResolveMode>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct SelectionDef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bind: Option<SelectionDefBind>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub clear: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub empty: Option<Empty>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub encodings: Option<Vec<SingleDefUnitChannel>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fields: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub init: Option<SelectionDefInit>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub nearest: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub on: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub resolve: Option<SelectionResolution>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub selection_def_type: Option<SelectionDefType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub toggle: Option<Translate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub mark: Option<BrushConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub translate: Option<Translate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub zoom: Option<Translate>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Binding {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub debounce: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub element: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub input: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub name: Option<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub binding_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub options: Option<Vec<Option<serde_json::Value>>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub max: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub min: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub step: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub autocomplete: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub placeholder: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct BrushConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<String>,
#[serde(rename = "fillOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<String>,
#[serde(rename = "strokeDash")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<Vec<f64>>,
#[serde(rename = "strokeDashOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<f64>,
#[serde(rename = "strokeOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<f64>,
#[serde(rename = "strokeWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct TitleParams {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<Align>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub anchor: Option<TitleAnchor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dx: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dy: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font: Option<String>,
#[serde(rename = "fontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_size: Option<f64>,
#[serde(rename = "fontStyle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_style: Option<String>,
#[serde(rename = "fontWeight")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_weight: Option<FontWeight>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub frame: Option<TitleFrame>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub limit: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub offset: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub orient: Option<TitleOrient>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub style: Option<Style>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub zindex: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Transform {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Vec<AggregatedFieldDef>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub groupby: Option<Vec<String>>,
#[serde(rename = "as")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub transform_as: Option<Style>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<PurpleBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub calculate: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filter: Option<PurpleLogicalOperandPredicate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub flatten: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fold: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub frame: Option<Vec<Option<f64>>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub impute: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub key: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub keyvals: Option<Keyvals>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub method: Option<ImputeMethod>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub joinaggregate: Option<Vec<JoinAggregateFieldDef>>,
#[serde(rename = "default")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub transform_default: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub from: Option<LookupData>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub lookup: Option<String>,
#[serde(rename = "timeUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<TimeUnit>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub sample: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub offset: Option<StackOffset>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub sort: Option<Vec<SortField>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stack: Option<String>,
#[serde(rename = "ignorePeers")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ignore_peers: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub window: Option<Vec<WindowFieldDef>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct AggregatedFieldDef {
#[serde(rename = "as")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregated_field_def_as: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub op: Option<AggregateOp>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct LookupData {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub data: Option<Data>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fields: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub key: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Data {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format: Option<DataFormat>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub values: Option<UrlDataInlineDataset>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub sequence: Option<SequenceParams>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub sphere: Option<SphereUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub graticule: Option<Graticule>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct JoinAggregateFieldDef {
#[serde(rename = "as")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub join_aggregate_field_def_as: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub op: Option<AggregateOp>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct SortField {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<String>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub order: RemovableValue<SortOrder>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct WindowFieldDef {
#[serde(rename = "as")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub window_field_def_as: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub op: Option<Op>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub param: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ViewBackground {
#[serde(rename = "cornerRadius")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<String>,
#[serde(rename = "fillOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<String>,
#[serde(rename = "strokeCap")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_cap: Option<StrokeCap>,
#[serde(rename = "strokeDash")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<Vec<f64>>,
#[serde(rename = "strokeDashOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<f64>,
#[serde(rename = "strokeJoin")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_join: Option<StrokeJoin>,
#[serde(rename = "strokeMiterLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_miter_limit: Option<f64>,
#[serde(rename = "strokeOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<f64>,
#[serde(rename = "strokeWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub style: Option<Style>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct RepeatMapping {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub column: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub row: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct RowColNumber {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub column: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub row: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Config {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub area: Option<AreaConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub autosize: Option<Autosize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis: Option<AxisConfig>,
#[serde(rename = "axisBand")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_band: Option<AxisConfig>,
#[serde(rename = "axisBottom")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_bottom: Option<AxisConfig>,
#[serde(rename = "axisLeft")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_left: Option<AxisConfig>,
#[serde(rename = "axisRight")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_right: Option<AxisConfig>,
#[serde(rename = "axisTop")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_top: Option<AxisConfig>,
#[serde(rename = "axisX")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_x: Option<AxisConfig>,
#[serde(rename = "axisY")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_y: Option<AxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub background: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bar: Option<RectConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub boxplot: Option<BoxPlotConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub circle: Option<MarkConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub concat: Option<CompositionConfig>,
#[serde(rename = "countTitle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub count_title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub errorband: Option<ErrorBandConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub errorbar: Option<ErrorBarConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub facet: Option<CompositionConfig>,
#[serde(rename = "fieldTitle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field_title: Option<FieldTitle>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub geoshape: Option<MarkConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub header: Option<HeaderConfig>,
#[serde(rename = "headerColumn")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub header_column: Option<HeaderConfig>,
#[serde(rename = "headerFacet")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub header_facet: Option<HeaderConfig>,
#[serde(rename = "headerRow")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub header_row: Option<HeaderConfig>,
#[serde(rename = "invalidValues")]
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub invalid_values: RemovableValue<InvalidValues>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub legend: Option<LegendConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line: Option<LineConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub mark: Option<MarkConfig>,
#[serde(rename = "numberFormat")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub number_format: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub padding: Option<Padding>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub point: Option<MarkConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub projection: Option<Projection>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub range: Option<HashMap<String, RangeValue>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub rect: Option<RectConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub repeat: Option<CompositionConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub rule: Option<MarkConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub scale: Option<ScaleConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub selection: Option<SelectionConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub square: Option<MarkConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stack: Option<StackOffset>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub style: Option<HashMap<String, BaseMarkConfig>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<TextConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick: Option<TickConfig>,
#[serde(rename = "timeFormat")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_format: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title: Option<BaseTitleConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub trail: Option<LineConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub view: Option<ViewConfig>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct AreaConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<Align>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<String>,
#[serde(rename = "cornerRadius")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub cursor: Option<Cursor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dir: Option<Dir>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dx: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dy: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ellipsis: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filled: Option<bool>,
#[serde(rename = "fillOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font: Option<String>,
#[serde(rename = "fontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_size: Option<f64>,
#[serde(rename = "fontStyle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_style: Option<String>,
#[serde(rename = "fontWeight")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_weight: Option<FontWeight>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub href: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interpolate: Option<Interpolate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub limit: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line: Option<Line>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub order: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub orient: Option<Orientation>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub point: Option<PointUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<String>,
#[serde(rename = "strokeCap")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_cap: Option<StrokeCap>,
#[serde(rename = "strokeDash")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<Vec<f64>>,
#[serde(rename = "strokeDashOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<f64>,
#[serde(rename = "strokeJoin")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_join: Option<StrokeJoin>,
#[serde(rename = "strokeMiterLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_miter_limit: Option<f64>,
#[serde(rename = "strokeOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<f64>,
#[serde(rename = "strokeWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tension: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta: Option<f64>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub tooltip: RemovableValue<TooltipUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x: Option<XUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x2: Option<XUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y: Option<YUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y2: Option<XUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct AxisConfig {
#[serde(rename = "bandPosition")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain: Option<bool>,
#[serde(rename = "domainColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_color: Option<String>,
#[serde(rename = "domainDash")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_dash: Option<Vec<f64>>,
#[serde(rename = "domainDashOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_dash_offset: Option<f64>,
#[serde(rename = "domainOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_opacity: Option<f64>,
#[serde(rename = "domainWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid: Option<bool>,
#[serde(rename = "gridColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_color: Option<String>,
#[serde(rename = "gridDash")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_dash: Option<Vec<f64>>,
#[serde(rename = "gridDashOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_dash_offset: Option<f64>,
#[serde(rename = "gridOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_opacity: Option<f64>,
#[serde(rename = "gridWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_width: Option<f64>,
#[serde(rename = "labelAlign")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_align: Option<Align>,
#[serde(rename = "labelAngle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_angle: Option<f64>,
#[serde(rename = "labelBaseline")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_baseline: Option<TextBaseline>,
#[serde(rename = "labelBound")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_bound: Option<Label>,
#[serde(rename = "labelColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_color: Option<String>,
#[serde(rename = "labelFlush")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_flush: Option<Label>,
#[serde(rename = "labelFlushOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_flush_offset: Option<f64>,
#[serde(rename = "labelFont")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font: Option<String>,
#[serde(rename = "labelFontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_size: Option<f64>,
#[serde(rename = "labelFontStyle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_style: Option<String>,
#[serde(rename = "labelFontWeight")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_weight: Option<FontWeight>,
#[serde(rename = "labelLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_limit: Option<f64>,
#[serde(rename = "labelOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_opacity: Option<f64>,
#[serde(rename = "labelOverlap")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_overlap: Option<LabelOverlap>,
#[serde(rename = "labelPadding")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_padding: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub labels: Option<bool>,
#[serde(rename = "labelSeparation")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_separation: Option<f64>,
#[serde(rename = "maxExtent")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub max_extent: Option<f64>,
#[serde(rename = "minExtent")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub min_extent: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub orient: Option<Orient>,
#[serde(rename = "shortTimeLabels")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub short_time_labels: Option<bool>,
#[serde(rename = "tickColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_color: Option<String>,
#[serde(rename = "tickDash")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_dash: Option<Vec<f64>>,
#[serde(rename = "tickDashOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_dash_offset: Option<f64>,
#[serde(rename = "tickExtra")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_extra: Option<bool>,
#[serde(rename = "tickOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_offset: Option<f64>,
#[serde(rename = "tickOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_opacity: Option<f64>,
#[serde(rename = "tickRound")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_round: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ticks: Option<bool>,
#[serde(rename = "tickSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_size: Option<f64>,
#[serde(rename = "tickWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_width: Option<f64>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<serde_json::Value>,
#[serde(rename = "titleAlign")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_align: Option<Align>,
#[serde(rename = "titleAnchor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_anchor: Option<TitleAnchor>,
#[serde(rename = "titleAngle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_angle: Option<f64>,
#[serde(rename = "titleBaseline")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_baseline: Option<TextBaseline>,
#[serde(rename = "titleColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_color: Option<String>,
#[serde(rename = "titleFont")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font: Option<String>,
#[serde(rename = "titleFontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_size: Option<f64>,
#[serde(rename = "titleFontStyle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_style: Option<String>,
#[serde(rename = "titleFontWeight")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_weight: Option<FontWeight>,
#[serde(rename = "titleLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_limit: Option<f64>,
#[serde(rename = "titleOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_opacity: Option<f64>,
#[serde(rename = "titlePadding")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_padding: Option<f64>,
#[serde(rename = "titleX")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_x: Option<f64>,
#[serde(rename = "titleY")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_y: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct RectConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<Align>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub baseline: Option<TextBaseline>,
#[serde(rename = "binSpacing")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin_spacing: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<String>,
#[serde(rename = "continuousBandSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub continuous_band_size: Option<f64>,
#[serde(rename = "cornerRadius")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub cursor: Option<Cursor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dir: Option<Dir>,
#[serde(rename = "discreteBandSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub discrete_band_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dx: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dy: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ellipsis: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filled: Option<bool>,
#[serde(rename = "fillOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font: Option<String>,
#[serde(rename = "fontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_size: Option<f64>,
#[serde(rename = "fontStyle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_style: Option<String>,
#[serde(rename = "fontWeight")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_weight: Option<FontWeight>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub href: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interpolate: Option<Interpolate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub limit: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub order: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub orient: Option<Orientation>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<String>,
#[serde(rename = "strokeCap")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_cap: Option<StrokeCap>,
#[serde(rename = "strokeDash")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<Vec<f64>>,
#[serde(rename = "strokeDashOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<f64>,
#[serde(rename = "strokeJoin")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_join: Option<StrokeJoin>,
#[serde(rename = "strokeMiterLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_miter_limit: Option<f64>,
#[serde(rename = "strokeOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<f64>,
#[serde(rename = "strokeWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tension: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta: Option<f64>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub tooltip: RemovableValue<TooltipUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x: Option<XUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x2: Option<XUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y: Option<YUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y2: Option<XUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct BoxPlotConfig {
#[serde(rename = "box")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub box_plot_config_box: Option<DefBox>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub extent: Option<BoxplotExtent>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub median: Option<DefBox>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub outliers: Option<DefBox>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub rule: Option<DefBox>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ticks: Option<DefBox>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct CompositionConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub columns: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub spacing: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ErrorBandConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band: Option<DefBox>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub borders: Option<DefBox>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub extent: Option<ErrorbandExtent>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interpolate: Option<Interpolate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tension: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ErrorBarConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub extent: Option<ErrorbandExtent>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub rule: Option<DefBox>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ticks: Option<DefBox>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct HeaderConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format: Option<String>,
#[serde(rename = "formatType")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format_type: Option<FormatType>,
#[serde(rename = "labelAlign")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_align: Option<Align>,
#[serde(rename = "labelAnchor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_anchor: Option<TitleAnchor>,
#[serde(rename = "labelAngle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_angle: Option<f64>,
#[serde(rename = "labelColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_color: Option<String>,
#[serde(rename = "labelFont")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font: Option<String>,
#[serde(rename = "labelFontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_size: Option<f64>,
#[serde(rename = "labelFontStyle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_style: Option<String>,
#[serde(rename = "labelLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_limit: Option<f64>,
#[serde(rename = "labelOrient")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_orient: Option<Orient>,
#[serde(rename = "labelPadding")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_padding: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub labels: Option<bool>,
#[serde(rename = "shortTimeLabels")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub short_time_labels: Option<bool>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<serde_json::Value>,
#[serde(rename = "titleAlign")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_align: Option<Align>,
#[serde(rename = "titleAnchor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_anchor: Option<TitleAnchor>,
#[serde(rename = "titleAngle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_angle: Option<f64>,
#[serde(rename = "titleBaseline")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_baseline: Option<TextBaseline>,
#[serde(rename = "titleColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_color: Option<String>,
#[serde(rename = "titleFont")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font: Option<String>,
#[serde(rename = "titleFontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_size: Option<f64>,
#[serde(rename = "titleFontStyle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_style: Option<String>,
#[serde(rename = "titleFontWeight")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_weight: Option<FontWeight>,
#[serde(rename = "titleLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_limit: Option<f64>,
#[serde(rename = "titleOrient")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_orient: Option<Orient>,
#[serde(rename = "titlePadding")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_padding: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct LegendConfig {
#[serde(rename = "clipHeight")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub clip_height: Option<f64>,
#[serde(rename = "columnPadding")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub column_padding: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub columns: Option<f64>,
#[serde(rename = "cornerRadius")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<f64>,
#[serde(rename = "fillColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_color: Option<String>,
#[serde(rename = "gradientDirection")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_direction: Option<Orientation>,
#[serde(rename = "gradientHorizontalMaxLength")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_horizontal_max_length: Option<f64>,
#[serde(rename = "gradientHorizontalMinLength")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_horizontal_min_length: Option<f64>,
#[serde(rename = "gradientLabelLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_label_limit: Option<f64>,
#[serde(rename = "gradientLabelOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_label_offset: Option<f64>,
#[serde(rename = "gradientLength")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_length: Option<f64>,
#[serde(rename = "gradientOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_opacity: Option<f64>,
#[serde(rename = "gradientStrokeColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_stroke_color: Option<String>,
#[serde(rename = "gradientStrokeWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_stroke_width: Option<f64>,
#[serde(rename = "gradientThickness")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_thickness: Option<f64>,
#[serde(rename = "gradientVerticalMaxLength")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_vertical_max_length: Option<f64>,
#[serde(rename = "gradientVerticalMinLength")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_vertical_min_length: Option<f64>,
#[serde(rename = "gridAlign")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_align: Option<LayoutAlign>,
#[serde(rename = "labelAlign")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_align: Option<Align>,
#[serde(rename = "labelBaseline")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_baseline: Option<TextBaseline>,
#[serde(rename = "labelColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_color: Option<String>,
#[serde(rename = "labelFont")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font: Option<String>,
#[serde(rename = "labelFontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_size: Option<f64>,
#[serde(rename = "labelFontStyle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_style: Option<String>,
#[serde(rename = "labelFontWeight")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_weight: Option<FontWeight>,
#[serde(rename = "labelLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_limit: Option<f64>,
#[serde(rename = "labelOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_offset: Option<f64>,
#[serde(rename = "labelOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_opacity: Option<f64>,
#[serde(rename = "labelOverlap")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_overlap: Option<LabelOverlap>,
#[serde(rename = "labelPadding")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_padding: Option<f64>,
#[serde(rename = "labelSeparation")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_separation: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub layout: Option<LegendLayout>,
#[serde(rename = "legendX")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub legend_x: Option<f64>,
#[serde(rename = "legendY")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub legend_y: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub offset: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub orient: Option<LegendOrient>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub padding: Option<f64>,
#[serde(rename = "rowPadding")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub row_padding: Option<f64>,
#[serde(rename = "shortTimeLabels")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub short_time_labels: Option<bool>,
#[serde(rename = "strokeColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_color: Option<String>,
#[serde(rename = "strokeDash")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<Vec<f64>>,
#[serde(rename = "strokeWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<f64>,
#[serde(rename = "symbolBaseFillColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_base_fill_color: Option<String>,
#[serde(rename = "symbolBaseStrokeColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_base_stroke_color: Option<String>,
#[serde(rename = "symbolDash")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_dash: Option<Vec<f64>>,
#[serde(rename = "symbolDashOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_dash_offset: Option<f64>,
#[serde(rename = "symbolDirection")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_direction: Option<Orientation>,
#[serde(rename = "symbolFillColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_fill_color: Option<String>,
#[serde(rename = "symbolOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_offset: Option<f64>,
#[serde(rename = "symbolOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_opacity: Option<f64>,
#[serde(rename = "symbolSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_size: Option<f64>,
#[serde(rename = "symbolStrokeColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_stroke_color: Option<String>,
#[serde(rename = "symbolStrokeWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_stroke_width: Option<f64>,
#[serde(rename = "symbolType")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_type: Option<String>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<serde_json::Value>,
#[serde(rename = "titleAlign")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_align: Option<Align>,
#[serde(rename = "titleAnchor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_anchor: Option<TitleAnchor>,
#[serde(rename = "titleBaseline")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_baseline: Option<TextBaseline>,
#[serde(rename = "titleColor")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_color: Option<String>,
#[serde(rename = "titleFont")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font: Option<String>,
#[serde(rename = "titleFontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_size: Option<f64>,
#[serde(rename = "titleFontStyle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_style: Option<String>,
#[serde(rename = "titleFontWeight")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_weight: Option<FontWeight>,
#[serde(rename = "titleLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_limit: Option<f64>,
#[serde(rename = "titleOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_opacity: Option<f64>,
#[serde(rename = "titleOrient")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_orient: Option<Orient>,
#[serde(rename = "titlePadding")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_padding: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct LegendLayout {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub anchor: Option<TitleAnchor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bottom: Option<BaseLegendLayout>,
#[serde(rename = "bottom-left")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bottom_left: Option<BaseLegendLayout>,
#[serde(rename = "bottom-right")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bottom_right: Option<BaseLegendLayout>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bounds: Option<LayoutBounds>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub center: Option<BottomCenter>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub direction: Option<Direction>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub left: Option<BaseLegendLayout>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub margin: Option<Margin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub offset: Option<Margin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub right: Option<BaseLegendLayout>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub top: Option<BaseLegendLayout>,
#[serde(rename = "top-left")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub top_left: Option<BaseLegendLayout>,
#[serde(rename = "top-right")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub top_right: Option<BaseLegendLayout>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct BaseLegendLayout {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub anchor: Option<TitleAnchor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bounds: Option<LayoutBounds>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub center: Option<BottomCenter>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub direction: Option<Direction>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub margin: Option<Margin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub offset: Option<Margin>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct SignalRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub signal: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct LineConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<Align>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<String>,
#[serde(rename = "cornerRadius")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub cursor: Option<Cursor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dir: Option<Dir>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dx: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dy: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ellipsis: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filled: Option<bool>,
#[serde(rename = "fillOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font: Option<String>,
#[serde(rename = "fontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_size: Option<f64>,
#[serde(rename = "fontStyle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_style: Option<String>,
#[serde(rename = "fontWeight")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_weight: Option<FontWeight>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub href: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interpolate: Option<Interpolate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub limit: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub order: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub orient: Option<Orientation>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub point: Option<PointUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<String>,
#[serde(rename = "strokeCap")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_cap: Option<StrokeCap>,
#[serde(rename = "strokeDash")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<Vec<f64>>,
#[serde(rename = "strokeDashOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<f64>,
#[serde(rename = "strokeJoin")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_join: Option<StrokeJoin>,
#[serde(rename = "strokeMiterLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_miter_limit: Option<f64>,
#[serde(rename = "strokeOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<f64>,
#[serde(rename = "strokeWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tension: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta: Option<f64>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub tooltip: RemovableValue<TooltipUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x: Option<XUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x2: Option<XUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y: Option<YUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y2: Option<XUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct PaddingClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bottom: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub left: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub right: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub top: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct SchemeConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub count: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub extent: Option<Vec<f64>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub scheme: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub step: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleConfig {
#[serde(rename = "bandPaddingInner")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_padding_inner: Option<f64>,
#[serde(rename = "bandPaddingOuter")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_padding_outer: Option<f64>,
#[serde(rename = "barBandPaddingInner")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bar_band_padding_inner: Option<f64>,
#[serde(rename = "barBandPaddingOuter")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bar_band_padding_outer: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub clamp: Option<bool>,
#[serde(rename = "continuousPadding")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub continuous_padding: Option<f64>,
#[serde(rename = "maxBandSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub max_band_size: Option<f64>,
#[serde(rename = "maxFontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub max_font_size: Option<f64>,
#[serde(rename = "maxOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub max_opacity: Option<f64>,
#[serde(rename = "maxSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub max_size: Option<f64>,
#[serde(rename = "maxStrokeWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub max_stroke_width: Option<f64>,
#[serde(rename = "minBandSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub min_band_size: Option<f64>,
#[serde(rename = "minFontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub min_font_size: Option<f64>,
#[serde(rename = "minOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub min_opacity: Option<f64>,
#[serde(rename = "minSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub min_size: Option<f64>,
#[serde(rename = "minStrokeWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub min_stroke_width: Option<f64>,
#[serde(rename = "pointPadding")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub point_padding: Option<f64>,
#[serde(rename = "quantileCount")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub quantile_count: Option<f64>,
#[serde(rename = "quantizeCount")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub quantize_count: Option<f64>,
#[serde(rename = "rangeStep")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub range_step: Option<f64>,
#[serde(rename = "rectBandPaddingInner")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub rect_band_padding_inner: Option<f64>,
#[serde(rename = "rectBandPaddingOuter")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub rect_band_padding_outer: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub round: Option<bool>,
#[serde(rename = "textXRangeStep")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text_x_range_step: Option<f64>,
#[serde(rename = "useUnaggregatedDomain")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub use_unaggregated_domain: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct SelectionConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interval: Option<IntervalSelectionConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub multi: Option<MultiSelectionConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub single: Option<SingleSelectionConfig>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct IntervalSelectionConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bind: Option<BindEnum>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub clear: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub empty: Option<Empty>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub encodings: Option<Vec<SingleDefUnitChannel>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fields: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub init: Option<HashMap<String, Vec<SelectionInitIntervalElement>>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub mark: Option<BrushConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub on: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub resolve: Option<SelectionResolution>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub translate: Option<Translate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub zoom: Option<Translate>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct MultiSelectionConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub clear: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub empty: Option<Empty>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub encodings: Option<Vec<SingleDefUnitChannel>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fields: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub init: Option<MultiInit>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub nearest: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub on: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub resolve: Option<SelectionResolution>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub toggle: Option<Translate>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct SingleSelectionConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bind: Option<HashMap<String, BindValue>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub clear: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub empty: Option<Empty>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub encodings: Option<Vec<SingleDefUnitChannel>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fields: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub init: Option<HashMap<String, SelectionInitIntervalElement>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub nearest: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub on: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub resolve: Option<SelectionResolution>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct BaseMarkConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<Align>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub baseline: Option<TextBaseline>,
#[serde(rename = "cornerRadius")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub cursor: Option<Cursor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dir: Option<Dir>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dx: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dy: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ellipsis: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<String>,
#[serde(rename = "fillOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font: Option<String>,
#[serde(rename = "fontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_size: Option<f64>,
#[serde(rename = "fontStyle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_style: Option<String>,
#[serde(rename = "fontWeight")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_weight: Option<FontWeight>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub href: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interpolate: Option<Interpolate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub limit: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub orient: Option<Orientation>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<String>,
#[serde(rename = "strokeCap")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_cap: Option<StrokeCap>,
#[serde(rename = "strokeDash")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<Vec<f64>>,
#[serde(rename = "strokeDashOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<f64>,
#[serde(rename = "strokeJoin")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_join: Option<StrokeJoin>,
#[serde(rename = "strokeMiterLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_miter_limit: Option<f64>,
#[serde(rename = "strokeOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<f64>,
#[serde(rename = "strokeWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tension: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta: Option<f64>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub tooltip: RemovableValue<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x: Option<XUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x2: Option<XUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y: Option<YUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y2: Option<XUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct TextConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<Align>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<String>,
#[serde(rename = "cornerRadius")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub cursor: Option<Cursor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dir: Option<Dir>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dx: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dy: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ellipsis: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filled: Option<bool>,
#[serde(rename = "fillOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font: Option<String>,
#[serde(rename = "fontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_size: Option<f64>,
#[serde(rename = "fontStyle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_style: Option<String>,
#[serde(rename = "fontWeight")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_weight: Option<FontWeight>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub href: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interpolate: Option<Interpolate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub limit: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub order: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub orient: Option<Orientation>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<String>,
#[serde(rename = "shortTimeLabels")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub short_time_labels: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<String>,
#[serde(rename = "strokeCap")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_cap: Option<StrokeCap>,
#[serde(rename = "strokeDash")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<Vec<f64>>,
#[serde(rename = "strokeDashOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<f64>,
#[serde(rename = "strokeJoin")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_join: Option<StrokeJoin>,
#[serde(rename = "strokeMiterLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_miter_limit: Option<f64>,
#[serde(rename = "strokeOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<f64>,
#[serde(rename = "strokeWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tension: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta: Option<f64>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub tooltip: RemovableValue<TooltipUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x: Option<XUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x2: Option<XUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y: Option<YUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y2: Option<XUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct TickConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<Align>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<f64>,
#[serde(rename = "bandSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<String>,
#[serde(rename = "cornerRadius")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub cursor: Option<Cursor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dir: Option<Dir>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dx: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dy: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ellipsis: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filled: Option<bool>,
#[serde(rename = "fillOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font: Option<String>,
#[serde(rename = "fontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_size: Option<f64>,
#[serde(rename = "fontStyle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_style: Option<String>,
#[serde(rename = "fontWeight")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_weight: Option<FontWeight>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub href: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interpolate: Option<Interpolate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub limit: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub order: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub orient: Option<Orientation>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<String>,
#[serde(rename = "strokeCap")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_cap: Option<StrokeCap>,
#[serde(rename = "strokeDash")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<Vec<f64>>,
#[serde(rename = "strokeDashOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<f64>,
#[serde(rename = "strokeJoin")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_join: Option<StrokeJoin>,
#[serde(rename = "strokeMiterLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_miter_limit: Option<f64>,
#[serde(rename = "strokeOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<f64>,
#[serde(rename = "strokeWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tension: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub thickness: Option<f64>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub tooltip: RemovableValue<TooltipUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x: Option<XUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x2: Option<XUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y: Option<YUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y2: Option<XUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct BaseTitleConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<Align>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub anchor: Option<TitleAnchor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dx: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dy: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font: Option<String>,
#[serde(rename = "fontSize")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_size: Option<f64>,
#[serde(rename = "fontStyle")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_style: Option<String>,
#[serde(rename = "fontWeight")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_weight: Option<FontWeight>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub frame: Option<TitleFrame>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub limit: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub offset: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub orient: Option<TitleOrient>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ViewConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub clip: Option<bool>,
#[serde(rename = "cornerRadius")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<String>,
#[serde(rename = "fillOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<f64>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub stroke: RemovableValue<String>,
#[serde(rename = "strokeCap")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_cap: Option<StrokeCap>,
#[serde(rename = "strokeDash")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<Vec<f64>>,
#[serde(rename = "strokeDashOffset")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<f64>,
#[serde(rename = "strokeJoin")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_join: Option<StrokeJoin>,
#[serde(rename = "strokeMiterLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_miter_limit: Option<f64>,
#[serde(rename = "strokeOpacity")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<f64>,
#[serde(rename = "strokeWidth")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum AlignUnion {
Enum(LayoutAlign),
RowColLayoutAlign(RowColLayoutAlign),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Autosize {
AutoSizeParams(AutoSizeParams),
Enum(AutosizeType),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum VegaliteCenter {
Bool(bool),
RowColBoolean(RowColBoolean),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Graticule {
Bool(bool),
GraticuleParams(GraticuleParams),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum SphereUnion {
Bool(bool),
SphereClass(SphereClass),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum UrlDataInlineDataset {
AnythingMap(HashMap<String, Option<serde_json::Value>>),
String(String),
UnionArray(Vec<serde_json::value::Value>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
#[allow(unused)]
enum UnusedInlineDataset {
AnythingMap(HashMap<String, Option<serde_json::Value>>),
Bool(bool),
Double(f64),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Aggregate {
ArgmDef(ArgmDef),
Enum(AggregateOp),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum PurpleBin {
BinParams(BinParams),
Bool(bool),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ColorCondition {
ConditionalPredicateStringValueDefClass(ConditionalPredicateStringValueDefClass),
ConditionalStringValueDefArray(Vec<ConditionalStringValueDef>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum SelectionOperandElement {
Selection(Selection),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum PurpleSelectionOperand {
Selection(Selection),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum LogicalOperandPredicateElement {
Predicate(Predicate),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum PurpleLogicalOperandPredicate {
Predicate(Predicate),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum EqualUnion {
Bool(bool),
DateTime(DateTime),
Double(f64),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Day {
Double(f64),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Month {
Double(f64),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Lt {
DateTime(DateTime),
Double(f64),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum SelectionInitIntervalElement {
Bool(bool),
DateTime(DateTime),
Double(f64),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum RangeElement {
DateTime(DateTime),
Double(f64),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Field {
RepeatRef(RepeatRef),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum FontWeight {
Double(f64),
Enum(FontWeightEnum),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum LabelOverlap {
Bool(bool),
Enum(LabelOverlapEnum),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum DomainUnion {
DomainClass(DomainClass),
Enum(Domain),
UnionArray(Vec<SelectionInitIntervalElement>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum InterpolateUnion {
Enum(ScaleInterpolate),
ScaleInterpolateParams(ScaleInterpolateParams),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum NiceUnion {
Bool(bool),
Double(f64),
Enum(NiceTime),
NiceClass(NiceClass),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleRange {
String(String),
UnionArray(Vec<RangeRange>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum RangeRange {
Double(f64),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Scheme {
SchemeParams(SchemeParams),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Sort {
EncodingSortField(EncodingSortField),
Enum(SortOrder),
UnionArray(Vec<SelectionInitIntervalElement>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum SortArray {
Enum(SortOrder),
SortEncodingSortField(SortEncodingSortField),
UnionArray(Vec<SelectionInitIntervalElement>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Detail {
TypedFieldDef(TypedFieldDef),
TypedFieldDefArray(Vec<TypedFieldDef>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum FluffyBin {
BinParams(BinParams),
Bool(bool),
Enum(BinEnum),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum FillOpacityCondition {
ConditionalNumberValueDefArray(Vec<ConditionalNumberValueDef>),
ConditionalPredicateNumberValueDefClass(ConditionalPredicateNumberValueDefClass),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum HrefCondition {
ConditionalPredicateValueDefClass(ConditionalPredicateValueDefClass),
ConditionalValueDefArray(Vec<ConditionalValueDef>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Value {
Bool(bool),
Double(f64),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Order {
OrderFieldDefArray(Vec<OrderFieldDef>),
OrderFieldDefClass(OrderFieldDefClass),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ConditionUnion {
Conditional(Conditional),
ConditionalStringValueDefArray(Vec<ConditionalStringValueDef>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Tooltip {
DefWithConditionTextFieldDefValue(DefWithConditionTextFieldDefValue),
TextFieldDefArray(Vec<TextFieldDef>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Label {
Bool(bool),
Double(f64),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Keyvals {
AnythingArray(Vec<Option<serde_json::Value>>),
ImputeSequence(ImputeSequence),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Stack {
Bool(bool),
Enum(StackOffset),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum XUnion {
Double(f64),
Enum(XEnum),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum YUnion {
Double(f64),
Enum(YEnum),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum AnyMark {
MarkDefClass(MarkDefClass),
Enum(Mark),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum DefBox {
Bool(bool),
MarkConfig(MarkConfig),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum TooltipUnion {
Bool(bool),
Double(f64),
String(String),
TooltipContent(TooltipContent),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum BoxPlotDefExtent {
Double(f64),
Enum(ExtentExtent),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Line {
Bool(bool),
OverlayMarkDef(OverlayMarkDef),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Style {
String(String),
StringArray(Vec<String>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum PointUnion {
Bool(bool),
Enum(PointEnum),
OverlayMarkDef(OverlayMarkDef),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum SelectionDefBind {
Enum(BindEnum),
UnionMap(HashMap<String, BindValue>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum BindValue {
AnythingArray(Vec<Option<serde_json::Value>>),
Binding(Binding),
Double(f64),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum SelectionDefInit {
UnionMap(HashMap<String, InitSelectionInitMapping>),
UnionMapArray(Vec<HashMap<String, SelectionInitIntervalElement>>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum InitSelectionInitMapping {
Bool(bool),
DateTime(DateTime),
Double(f64),
String(String),
UnionArray(Vec<SelectionInitIntervalElement>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Translate {
Bool(bool),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Title {
String(String),
TitleParams(TitleParams),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum RepeatUnion {
RepeatMapping(RepeatMapping),
StringArray(Vec<String>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Spacing {
Double(f64),
RowColNumber(RowColNumber),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum BoxplotExtent {
Double(f64),
Enum(ExtentEnum),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum LayoutBounds {
Enum(BoundsEnum),
SignalRef(SignalRef),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum BottomCenter {
Bool(bool),
SignalRef(SignalRef),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Direction {
Enum(Orientation),
SignalRef(SignalRef),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Margin {
Double(f64),
SignalRef(SignalRef),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Padding {
Double(f64),
PaddingClass(PaddingClass),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum RangeValue {
SchemeConfig(SchemeConfig),
UnionArray(Vec<RangeRange>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum MultiInit {
UnionMap(HashMap<String, SelectionInitIntervalElement>),
UnionMapArray(Vec<HashMap<String, SelectionInitIntervalElement>>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum InlineDatasetValue {
AnythingMap(HashMap<String, Option<serde_json::Value>>),
String(String),
UnionArray(Vec<serde_json::value::Value>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum LayoutAlign {
#[serde(rename = "all")]
All,
#[serde(rename = "each")]
Each,
#[serde(rename = "none")]
None,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum AutosizeType {
#[serde(rename = "fit")]
Fit,
#[serde(rename = "none")]
None,
#[serde(rename = "pad")]
Pad,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Contains {
#[serde(rename = "content")]
Content,
#[serde(rename = "padding")]
Padding,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum BoundsEnum {
#[serde(rename = "flush")]
Flush,
#[serde(rename = "full")]
Full,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum DataFormatType {
#[serde(rename = "csv")]
Csv,
#[serde(rename = "dsv")]
Dsv,
#[serde(rename = "json")]
Json,
#[serde(rename = "topojson")]
Topojson,
#[serde(rename = "tsv")]
Tsv,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum AggregateOp {
#[serde(rename = "argmax")]
Argmax,
#[serde(rename = "argmin")]
Argmin,
#[serde(rename = "average")]
Average,
#[serde(rename = "ci0")]
Ci0,
#[serde(rename = "ci1")]
Ci1,
#[serde(rename = "count")]
Count,
#[serde(rename = "distinct")]
Distinct,
#[serde(rename = "max")]
Max,
#[serde(rename = "mean")]
Mean,
#[serde(rename = "median")]
Median,
#[serde(rename = "min")]
Min,
#[serde(rename = "missing")]
Missing,
#[serde(rename = "q1")]
Q1,
#[serde(rename = "q3")]
Q3,
#[serde(rename = "stderr")]
Stderr,
#[serde(rename = "stdev")]
Stdev,
#[serde(rename = "stdevp")]
Stdevp,
#[serde(rename = "sum")]
Sum,
#[serde(rename = "valid")]
Valid,
#[serde(rename = "values")]
Values,
#[serde(rename = "variance")]
Variance,
#[serde(rename = "variancep")]
Variancep,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum TimeUnit {
#[serde(rename = "date")]
Date,
#[serde(rename = "day")]
Day,
#[serde(rename = "hours")]
Hours,
#[serde(rename = "hoursminutes")]
Hoursminutes,
#[serde(rename = "hoursminutesseconds")]
Hoursminutesseconds,
#[serde(rename = "milliseconds")]
Milliseconds,
#[serde(rename = "minutes")]
Minutes,
#[serde(rename = "minutesseconds")]
Minutesseconds,
#[serde(rename = "month")]
Month,
#[serde(rename = "monthdate")]
Monthdate,
#[serde(rename = "monthdatehours")]
Monthdatehours,
#[serde(rename = "quarter")]
Quarter,
#[serde(rename = "quartermonth")]
Quartermonth,
#[serde(rename = "seconds")]
Seconds,
#[serde(rename = "secondsmilliseconds")]
Secondsmilliseconds,
#[serde(rename = "utcdate")]
Utcdate,
#[serde(rename = "utcday")]
Utcday,
#[serde(rename = "utchours")]
Utchours,
#[serde(rename = "utchoursminutes")]
Utchoursminutes,
#[serde(rename = "utchoursminutesseconds")]
Utchoursminutesseconds,
#[serde(rename = "utcmilliseconds")]
Utcmilliseconds,
#[serde(rename = "utcminutes")]
Utcminutes,
#[serde(rename = "utcminutesseconds")]
Utcminutesseconds,
#[serde(rename = "utcmonth")]
Utcmonth,
#[serde(rename = "utcmonthdate")]
Utcmonthdate,
#[serde(rename = "utcmonthdatehours")]
Utcmonthdatehours,
#[serde(rename = "utcquarter")]
Utcquarter,
#[serde(rename = "utcquartermonth")]
Utcquartermonth,
#[serde(rename = "utcseconds")]
Utcseconds,
#[serde(rename = "utcsecondsmilliseconds")]
Utcsecondsmilliseconds,
#[serde(rename = "utcyear")]
Utcyear,
#[serde(rename = "utcyearmonth")]
Utcyearmonth,
#[serde(rename = "utcyearmonthdate")]
Utcyearmonthdate,
#[serde(rename = "utcyearmonthdatehours")]
Utcyearmonthdatehours,
#[serde(rename = "utcyearmonthdatehoursminutes")]
Utcyearmonthdatehoursminutes,
#[serde(rename = "utcyearmonthdatehoursminutesseconds")]
Utcyearmonthdatehoursminutesseconds,
#[serde(rename = "utcyearquarter")]
Utcyearquarter,
#[serde(rename = "utcyearquartermonth")]
Utcyearquartermonth,
#[serde(rename = "year")]
Year,
#[serde(rename = "yearmonth")]
Yearmonth,
#[serde(rename = "yearmonthdate")]
Yearmonthdate,
#[serde(rename = "yearmonthdatehours")]
Yearmonthdatehours,
#[serde(rename = "yearmonthdatehoursminutes")]
Yearmonthdatehoursminutes,
#[serde(rename = "yearmonthdatehoursminutesseconds")]
Yearmonthdatehoursminutesseconds,
#[serde(rename = "yearquarter")]
Yearquarter,
#[serde(rename = "yearquartermonth")]
Yearquartermonth,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum StandardType {
#[serde(rename = "nominal")]
Nominal,
#[serde(rename = "ordinal")]
Ordinal,
#[serde(rename = "quantitative")]
Quantitative,
#[serde(rename = "temporal")]
Temporal,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum RepeatEnum {
#[serde(rename = "column")]
Column,
#[serde(rename = "repeat")]
Repeat,
#[serde(rename = "row")]
Row,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Orientation {
#[serde(rename = "horizontal")]
Horizontal,
#[serde(rename = "vertical")]
Vertical,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum FormatType {
#[serde(rename = "number")]
Number,
#[serde(rename = "time")]
Time,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Align {
#[serde(rename = "center")]
Center,
#[serde(rename = "left")]
Left,
#[serde(rename = "right")]
Right,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum TextBaseline {
#[serde(rename = "alphabetic")]
Alphabetic,
#[serde(rename = "bottom")]
Bottom,
#[serde(rename = "middle")]
Middle,
#[serde(rename = "top")]
Top,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum FontWeightEnum {
#[serde(rename = "bold")]
Bold,
#[serde(rename = "bolder")]
Bolder,
#[serde(rename = "lighter")]
Lighter,
#[serde(rename = "normal")]
Normal,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum LabelOverlapEnum {
#[serde(rename = "greedy")]
Greedy,
#[serde(rename = "parity")]
Parity,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum LegendType {
#[serde(rename = "gradient")]
Gradient,
#[serde(rename = "symbol")]
Symbol,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum LegendOrient {
#[serde(rename = "bottom")]
Bottom,
#[serde(rename = "bottom-left")]
BottomLeft,
#[serde(rename = "bottom-right")]
BottomRight,
#[serde(rename = "left")]
Left,
#[serde(rename = "none")]
None,
#[serde(rename = "right")]
Right,
#[serde(rename = "top")]
Top,
#[serde(rename = "top-left")]
TopLeft,
#[serde(rename = "top-right")]
TopRight,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum TitleAnchor {
#[serde(rename = "end")]
End,
#[serde(rename = "middle")]
Middle,
#[serde(rename = "start")]
Start,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Orient {
#[serde(rename = "bottom")]
Bottom,
#[serde(rename = "left")]
Left,
#[serde(rename = "right")]
Right,
#[serde(rename = "top")]
Top,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Domain {
#[serde(rename = "unaggregated")]
Unaggregated,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum ScaleInterpolateParamsType {
#[serde(rename = "cubehelix")]
Cubehelix,
#[serde(rename = "cubehelix-long")]
CubehelixLong,
#[serde(rename = "rgb")]
Rgb,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum ScaleInterpolate {
#[serde(rename = "cubehelix")]
Cubehelix,
#[serde(rename = "cubehelix-long")]
CubehelixLong,
#[serde(rename = "hcl")]
Hcl,
#[serde(rename = "hcl-long")]
HclLong,
#[serde(rename = "hsl")]
Hsl,
#[serde(rename = "hsl-long")]
HslLong,
#[serde(rename = "lab")]
Lab,
#[serde(rename = "rgb")]
Rgb,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum NiceTime {
#[serde(rename = "day")]
Day,
#[serde(rename = "hour")]
Hour,
#[serde(rename = "minute")]
Minute,
#[serde(rename = "month")]
Month,
#[serde(rename = "second")]
Second,
#[serde(rename = "week")]
Week,
#[serde(rename = "year")]
Year,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum ScaleType {
#[serde(rename = "band")]
Band,
#[serde(rename = "bin-ordinal")]
BinOrdinal,
#[serde(rename = "linear")]
Linear,
#[serde(rename = "log")]
Log,
#[serde(rename = "ordinal")]
Ordinal,
#[serde(rename = "point")]
Point,
#[serde(rename = "pow")]
Pow,
#[serde(rename = "quantile")]
Quantile,
#[serde(rename = "quantize")]
Quantize,
#[serde(rename = "sqrt")]
Sqrt,
#[serde(rename = "symlog")]
Symlog,
#[serde(rename = "threshold")]
Threshold,
#[serde(rename = "time")]
Time,
#[serde(rename = "utc")]
Utc,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum SingleDefUnitChannel {
#[serde(rename = "color")]
Color,
#[serde(rename = "fill")]
Fill,
#[serde(rename = "fillOpacity")]
FillOpacity,
#[serde(rename = "href")]
Href,
#[serde(rename = "key")]
Key,
#[serde(rename = "latitude")]
Latitude,
#[serde(rename = "latitude2")]
Latitude2,
#[serde(rename = "longitude")]
Longitude,
#[serde(rename = "longitude2")]
Longitude2,
#[serde(rename = "opacity")]
Opacity,
#[serde(rename = "shape")]
Shape,
#[serde(rename = "size")]
Size,
#[serde(rename = "stroke")]
Stroke,
#[serde(rename = "strokeOpacity")]
StrokeOpacity,
#[serde(rename = "strokeWidth")]
StrokeWidth,
#[serde(rename = "text")]
Text,
#[serde(rename = "tooltip")]
Tooltip,
#[serde(rename = "x")]
X,
#[serde(rename = "x2")]
X2,
#[serde(rename = "y")]
Y,
#[serde(rename = "y2")]
Y2,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum SortOrder {
#[serde(rename = "ascending")]
Ascending,
#[serde(rename = "descending")]
Descending,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum BinEnum {
#[serde(rename = "binned")]
Binned,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum LatitudeType {
#[serde(rename = "quantitative")]
Quantitative,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum TypeForShape {
#[serde(rename = "geojson")]
Geojson,
#[serde(rename = "nominal")]
Nominal,
#[serde(rename = "ordinal")]
Ordinal,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum ImputeMethod {
#[serde(rename = "max")]
Max,
#[serde(rename = "mean")]
Mean,
#[serde(rename = "median")]
Median,
#[serde(rename = "min")]
Min,
#[serde(rename = "value")]
Value,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum StackOffset {
#[serde(rename = "center")]
Center,
#[serde(rename = "normalize")]
Normalize,
#[serde(rename = "zero")]
Zero,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum XEnum {
#[serde(rename = "width")]
Width,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum YEnum {
#[serde(rename = "height")]
Height,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Cursor {
#[serde(rename = "alias")]
Alias,
#[serde(rename = "all-scroll")]
AllScroll,
#[serde(rename = "auto")]
Auto,
#[serde(rename = "cell")]
Cell,
#[serde(rename = "col-resize")]
ColResize,
#[serde(rename = "context-menu")]
ContextMenu,
#[serde(rename = "copy")]
Copy,
#[serde(rename = "crosshair")]
Crosshair,
#[serde(rename = "default")]
Default,
#[serde(rename = "e-resize")]
EResize,
#[serde(rename = "ew-resize")]
EwResize,
#[serde(rename = "grab")]
Grab,
#[serde(rename = "grabbing")]
Grabbing,
#[serde(rename = "help")]
Help,
#[serde(rename = "move")]
Move,
#[serde(rename = "n-resize")]
NResize,
#[serde(rename = "ne-resize")]
NeResize,
#[serde(rename = "nesw-resize")]
NeswResize,
#[serde(rename = "no-drop")]
NoDrop,
#[serde(rename = "none")]
None,
#[serde(rename = "not-allowed")]
NotAllowed,
#[serde(rename = "ns-resize")]
NsResize,
#[serde(rename = "nw-resize")]
NwResize,
#[serde(rename = "nwse-resize")]
NwseResize,
#[serde(rename = "pointer")]
Pointer,
#[serde(rename = "progress")]
Progress,
#[serde(rename = "row-resize")]
RowResize,
#[serde(rename = "s-resize")]
SResize,
#[serde(rename = "se-resize")]
SeResize,
#[serde(rename = "sw-resize")]
SwResize,
#[serde(rename = "text")]
Text,
#[serde(rename = "vertical-text")]
VerticalText,
#[serde(rename = "w-resize")]
WResize,
#[serde(rename = "wait")]
Wait,
#[serde(rename = "zoom-in")]
ZoomIn,
#[serde(rename = "zoom-out")]
ZoomOut,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Dir {
#[serde(rename = "ltr")]
Ltr,
#[serde(rename = "rtl")]
Rtl,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Interpolate {
#[serde(rename = "basis")]
Basis,
#[serde(rename = "basis-closed")]
BasisClosed,
#[serde(rename = "basis-open")]
BasisOpen,
#[serde(rename = "bundle")]
Bundle,
#[serde(rename = "cardinal")]
Cardinal,
#[serde(rename = "cardinal-closed")]
CardinalClosed,
#[serde(rename = "cardinal-open")]
CardinalOpen,
#[serde(rename = "linear")]
Linear,
#[serde(rename = "linear-closed")]
LinearClosed,
#[serde(rename = "monotone")]
Monotone,
#[serde(rename = "step")]
Step,
#[serde(rename = "step-after")]
StepAfter,
#[serde(rename = "step-before")]
StepBefore,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum StrokeCap {
#[serde(rename = "butt")]
Butt,
#[serde(rename = "round")]
Round,
#[serde(rename = "square")]
Square,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum StrokeJoin {
#[serde(rename = "bevel")]
Bevel,
#[serde(rename = "miter")]
Miter,
#[serde(rename = "round")]
Round,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Content {
#[serde(rename = "data")]
Data,
#[serde(rename = "encoding")]
Encoding,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Mark {
#[serde(rename = "area")]
Area,
#[serde(rename = "bar")]
Bar,
#[serde(rename = "boxplot")]
Boxplot,
#[serde(rename = "circle")]
Circle,
#[serde(rename = "errorband")]
Errorband,
#[serde(rename = "errorbar")]
Errorbar,
#[serde(rename = "geoshape")]
Geoshape,
#[serde(rename = "line")]
Line,
#[serde(rename = "point")]
Point,
#[serde(rename = "rect")]
Rect,
#[serde(rename = "rule")]
Rule,
#[serde(rename = "square")]
Square,
#[serde(rename = "text")]
Text,
#[serde(rename = "tick")]
Tick,
#[serde(rename = "trail")]
Trail,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum ExtentExtent {
#[serde(rename = "ci")]
Ci,
#[serde(rename = "iqr")]
Iqr,
#[serde(rename = "min-max")]
MinMax,
#[serde(rename = "stderr")]
Stderr,
#[serde(rename = "stdev")]
Stdev,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum PointEnum {
#[serde(rename = "transparent")]
Transparent,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum ProjectionType {
#[serde(rename = "albers")]
Albers,
#[serde(rename = "albersUsa")]
AlbersUsa,
#[serde(rename = "azimuthalEqualArea")]
AzimuthalEqualArea,
#[serde(rename = "azimuthalEquidistant")]
AzimuthalEquidistant,
#[serde(rename = "conicConformal")]
ConicConformal,
#[serde(rename = "conicEqualArea")]
ConicEqualArea,
#[serde(rename = "conicEquidistant")]
ConicEquidistant,
#[serde(rename = "equirectangular")]
Equirectangular,
#[serde(rename = "gnomonic")]
Gnomonic,
#[serde(rename = "identity")]
Identity,
#[serde(rename = "mercator")]
Mercator,
#[serde(rename = "naturalEarth1")]
NaturalEarth1,
#[serde(rename = "orthographic")]
Orthographic,
#[serde(rename = "stereographic")]
Stereographic,
#[serde(rename = "transverseMercator")]
TransverseMercator,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum ResolveMode {
#[serde(rename = "independent")]
Independent,
#[serde(rename = "shared")]
Shared,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum BindEnum {
#[serde(rename = "scales")]
Scales,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Empty {
#[serde(rename = "all")]
All,
#[serde(rename = "none")]
None,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum SelectionResolution {
#[serde(rename = "global")]
Global,
#[serde(rename = "intersect")]
Intersect,
#[serde(rename = "union")]
Union,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum SelectionDefType {
#[serde(rename = "interval")]
Interval,
#[serde(rename = "multi")]
Multi,
#[serde(rename = "single")]
Single,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum TitleFrame {
#[serde(rename = "bounds")]
Bounds,
#[serde(rename = "group")]
Group,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum TitleOrient {
#[serde(rename = "bottom")]
Bottom,
#[serde(rename = "left")]
Left,
#[serde(rename = "none")]
None,
#[serde(rename = "right")]
Right,
#[serde(rename = "top")]
Top,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Op {
#[serde(rename = "argmax")]
Argmax,
#[serde(rename = "argmin")]
Argmin,
#[serde(rename = "average")]
Average,
#[serde(rename = "ci0")]
Ci0,
#[serde(rename = "ci1")]
Ci1,
#[serde(rename = "count")]
Count,
#[serde(rename = "cume_dist")]
CumeDist,
#[serde(rename = "dense_rank")]
DenseRank,
#[serde(rename = "distinct")]
Distinct,
#[serde(rename = "first_value")]
FirstValue,
#[serde(rename = "lag")]
Lag,
#[serde(rename = "last_value")]
LastValue,
#[serde(rename = "lead")]
Lead,
#[serde(rename = "max")]
Max,
#[serde(rename = "mean")]
Mean,
#[serde(rename = "median")]
Median,
#[serde(rename = "min")]
Min,
#[serde(rename = "missing")]
Missing,
#[serde(rename = "nth_value")]
NthValue,
#[serde(rename = "ntile")]
Ntile,
#[serde(rename = "percent_rank")]
PercentRank,
#[serde(rename = "q1")]
Q1,
#[serde(rename = "q3")]
Q3,
#[serde(rename = "rank")]
Rank,
#[serde(rename = "row_number")]
RowNumber,
#[serde(rename = "stderr")]
Stderr,
#[serde(rename = "stdev")]
Stdev,
#[serde(rename = "stdevp")]
Stdevp,
#[serde(rename = "sum")]
Sum,
#[serde(rename = "valid")]
Valid,
#[serde(rename = "values")]
Values,
#[serde(rename = "variance")]
Variance,
#[serde(rename = "variancep")]
Variancep,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum ExtentEnum {
#[serde(rename = "min-max")]
MinMax,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum ErrorbandExtent {
#[serde(rename = "ci")]
Ci,
#[serde(rename = "iqr")]
Iqr,
#[serde(rename = "stderr")]
Stderr,
#[serde(rename = "stdev")]
Stdev,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum FieldTitle {
#[serde(rename = "functional")]
Functional,
#[serde(rename = "plain")]
Plain,
#[serde(rename = "verbal")]
Verbal,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum InvalidValues {
#[serde(rename = "filter")]
Filter,
}