#![allow(
missing_docs,
clippy::doc_lazy_continuation,
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/v5.json\".to_string())")]
pub schema: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<Box<VegaliteAlign>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub autosize: Option<Box<Autosize>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub background: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bounds: Option<Box<Bounds>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub center: Option<Box<Center>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub config: Option<Box<ConfigClass>>,
#[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<Box<EdEncoding>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<SpecHeight>,
#[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<Box<Padding>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub params: Option<Vec<TopLevelParameter>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub projection: Option<Box<Projection>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub resolve: Option<Box<Resolve>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub spacing: Option<Box<Spacing>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title: Option<TitleUnion>,
#[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<Box<ViewBackground>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<SpecHeight>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub columns: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub facet: Option<Box<Facet>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub spec: Option<Box<VegaliteSpec>>,
#[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<Box<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)]
#[serde(untagged)]
#[derive(From)]
pub enum VegaliteAlign {
Enum(LayoutAlign),
RowColLayoutAlign(RowColLayoutAlign),
}
#[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)]
#[serde(rename_all = "snake_case")]
pub enum LayoutAlign {
All,
Each,
None,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Autosize {
AutoSizeParams(AutoSizeParams),
Enum(AutosizeType),
}
#[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)]
#[serde(rename_all = "kebab-case")]
pub enum AutosizeType {
Fit,
#[serde(rename = "fit-x")]
FitX,
#[serde(rename = "fit-y")]
FitY,
None,
Pad,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum Contains {
Content,
Padding,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Color {
BackgroundExprRef(BackgroundExprRef),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct BackgroundExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum Bounds {
Flush,
Full,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Center {
Bool(bool),
RowColBoolean(RowColBoolean),
}
#[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 SpecSpec {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<Box<VegaliteAlign>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bounds: Option<Box<Bounds>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub center: Option<Box<Center>>,
#[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<SpecEncoding>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<SpecHeight>,
#[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 params: Option<Vec<SelectionParameter>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub projection: Option<Box<Projection>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub resolve: Option<Box<Resolve>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub spacing: Option<Box<Spacing>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title: Option<TitleUnion>,
#[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<Box<ViewBackground>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<SpecHeight>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub layer: Option<Vec<LayerSpec>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub columns: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub repeat: Option<Box<RepeatUnion>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub spec: Option<Box<SpecSpec>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub facet: Option<Box<Facet>>,
#[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<Box<VegaliteAlign>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bounds: Option<Box<Bounds>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub center: Option<Box<Center>>,
#[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<Box<EdEncoding>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<SpecHeight>,
#[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 params: Option<Vec<SelectionParameter>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub projection: Option<Box<Projection>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub resolve: Option<Box<Resolve>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub spacing: Option<Box<Spacing>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title: Option<TitleUnion>,
#[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<Box<ViewBackground>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<SpecHeight>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub layer: Option<Vec<LayerSpec>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub columns: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub repeat: Option<Box<RepeatUnion>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub spec: Option<Box<SpecSpec>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub facet: Option<Box<Facet>>,
#[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)]
#[serde(rename_all = "snake_case")]
pub enum DataFormatType {
Csv,
Dsv,
Json,
Topojson,
Tsv,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Graticule {
Bool(bool),
GraticuleParams(GraticuleParams),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub extent_major: Option<Vec<Vec<f64>>>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub step_major: Option<Vec<f64>>,
#[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)]
#[serde(untagged)]
#[derive(From)]
pub enum SphereUnion {
Bool(bool),
SphereClass(SphereClass),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct 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(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct SpecEncoding {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<AngleClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<ColorClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub column: Option<RowColumnEncodingFieldDef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub description: Option<DescriptionClass>,
#[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<FacetEncodingFieldDef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<FillClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<FillOpacityClass>,
#[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<KeyClass>,
#[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<LongitudeClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub longitude2: Option<Longitude2Class>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<OpacityClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub order: Option<Order>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius: Option<RadiusClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius2: Option<Radius2Class>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub row: Option<RowColumnEncodingFieldDef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<MarkPropDefStringNullTypeForShape>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<SizeClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<StrokeClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<MarkPropDefNumber>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<StrokeOpacityClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<StrokeWidthClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<TextDef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta: Option<ThetaClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta2: Option<Theta2Class>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time: Option<TimeFieldDef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tooltip: Option<EncodingTooltip>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub url: Option<UrlClass>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x_error: Option<XErrorClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x_error2: Option<XError2Class>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x_offset: Option<XOffsetClass>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y_error: Option<YErrorClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y_error2: Option<YError2Class>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y_offset: Option<YOffsetClass>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct AngleClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<AngleCondition>,
#[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<SortUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub mark_prop_def_number_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<CornerRadiusUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Aggregate {
ArgmDef(ArgmDef),
Enum(NonArgAggregateOp),
}
#[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)]
#[serde(rename_all = "snake_case")]
pub enum NonArgAggregateOp {
Average,
Ci0,
Ci1,
Count,
Distinct,
Exponential,
Exponentialb,
Max,
Mean,
Median,
Min,
Missing,
Product,
Q1,
Q3,
Stderr,
Stdev,
Stdevp,
Sum,
Valid,
Values,
Variance,
Variancep,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum AngleBin {
BinParams(BinParams),
Bool(bool),
}
#[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<BinExtent>,
#[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)]
#[serde(untagged)]
#[derive(From)]
pub enum BinExtent {
BinExtentClass(BinExtentClass),
DoubleArray(Vec<f64>),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct BinExtentClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub param: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub encoding: Option<SingleDefUnitChannel>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum SingleDefUnitChannel {
Angle,
Color,
Description,
Fill,
#[serde(rename = "fillOpacity")]
FillOpacity,
Href,
Key,
Latitude,
Latitude2,
Longitude,
Longitude2,
Opacity,
Radius,
Radius2,
Shape,
Size,
Stroke,
#[serde(rename = "strokeDash")]
StrokeDash,
#[serde(rename = "strokeOpacity")]
StrokeOpacity,
#[serde(rename = "strokeWidth")]
StrokeWidth,
Text,
Theta,
Theta2,
Time,
Url,
X,
X2,
#[serde(rename = "xOffset")]
XOffset,
Y,
Y2,
#[serde(rename = "yOffset")]
YOffset,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum AngleCondition {
ConditionalPredicateValueDefNumberExprRefClass(ConditionalPredicateValueDefNumberExprRefClass),
ConditionalValueDefNumberExprRefArray(Vec<ConditionalValueDefNumberExprRef>),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalValueDefNumberExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<ConditionalValueDefNumberExprRefPredicateComposition>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<ConditionalValueDefNumberExprRefValue>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub empty: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub param: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum PredicateCompositionElement {
Predicate(Box<Predicate>),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Predicate {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub not: Option<ConditionalValueDefNumberExprRefPredicateComposition>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub and: Option<Vec<PredicateCompositionElement>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub or: Option<Vec<PredicateCompositionElement>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub equal: Option<Equal>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub range: Option<LogicalNotPredicateRange>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub one_of: Option<Vec<UnionWith>>,
#[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 empty: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub param: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ConditionalValueDefNumberExprRefPredicateComposition {
Predicate(Box<Predicate>),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Equal {
Bool(bool),
Double(f64),
EqualDateTime(EqualDateTime),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct EqualDateTime {
#[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<DayUnion>,
#[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>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum DayUnion {
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 {
Double(f64),
GtDateTime(GtDateTime),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct GtDateTime {
#[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<DayUnion>,
#[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>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum UnionWith {
Bool(bool),
DateTime(DateTime),
Double(f64),
String(String),
}
#[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<DayUnion>,
#[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)]
#[serde(untagged)]
#[derive(From)]
pub enum LogicalNotPredicateRange {
BackgroundExprRef(BackgroundExprRef),
UnionArray(Vec<Option<PurpleRange>>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum PurpleRange {
Double(f64),
RangeDateTime(RangeDateTime),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct RangeDateTime {
#[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<DayUnion>,
#[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>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum LogicalNotPredicateTimeUnit {
Enum(BinnedTimeUnitEnum),
TimeUnitParams(TimeUnitParams),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct TimeUnitParams {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub binned: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub maxbins: 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 unit: Option<TimeUnit>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub utc: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum TimeUnit {
Date,
Day,
Dayhours,
Dayhoursminutes,
Dayhoursminutesseconds,
Dayofyear,
Hours,
Hoursminutes,
Hoursminutesseconds,
Milliseconds,
Minutes,
Minutesseconds,
Month,
Monthdate,
Monthdatehours,
Monthdatehoursminutes,
Monthdatehoursminutesseconds,
Quarter,
Quartermonth,
Seconds,
Secondsmilliseconds,
Utcdate,
Utcday,
Utcdayhours,
Utcdayhoursminutes,
Utcdayhoursminutesseconds,
Utcdayofyear,
Utchours,
Utchoursminutes,
Utchoursminutesseconds,
Utcmilliseconds,
Utcminutes,
Utcminutesseconds,
Utcmonth,
Utcmonthdate,
Utcmonthdatehours,
Utcmonthdatehoursminutes,
Utcmonthdatehoursminutesseconds,
Utcquarter,
Utcquartermonth,
Utcseconds,
Utcsecondsmilliseconds,
Utcweek,
Utcweekday,
Utcweekdayhours,
Utcweekdayhoursminutes,
Utcweekdayhoursminutesseconds,
Utcyear,
Utcyeardayofyear,
Utcyearmonth,
Utcyearmonthdate,
Utcyearmonthdatehours,
Utcyearmonthdatehoursminutes,
Utcyearmonthdatehoursminutesseconds,
Utcyearquarter,
Utcyearquartermonth,
Utcyearweek,
Utcyearweekday,
Utcyearweekdayhours,
Utcyearweekdayhoursminutes,
Utcyearweekdayhoursminutesseconds,
Week,
Weekday,
Weekdayhours,
Weekdayhoursminutes,
Weekdayhoursminutesseconds,
Year,
Yeardayofyear,
Yearmonth,
Yearmonthdate,
Yearmonthdatehours,
Yearmonthdatehoursminutes,
Yearmonthdatehoursminutesseconds,
Yearquarter,
Yearquartermonth,
Yearweek,
Yearweekday,
Yearweekdayhours,
Yearweekdayhoursminutes,
Yearweekdayhoursminutesseconds,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum BinnedTimeUnitEnum {
Binnedutcyear,
Binnedutcyeardayofyear,
Binnedutcyearmonth,
Binnedutcyearmonthdate,
Binnedutcyearmonthdatehours,
Binnedutcyearmonthdatehoursminutes,
Binnedutcyearmonthdatehoursminutesseconds,
Binnedutcyearquarter,
Binnedutcyearquartermonth,
Binnedutcyearweek,
Binnedutcyearweekday,
Binnedutcyearweekdayhours,
Binnedutcyearweekdayhoursminutes,
Binnedutcyearweekdayhoursminutesseconds,
Binnedyear,
Binnedyeardayofyear,
Binnedyearmonth,
Binnedyearmonthdate,
Binnedyearmonthdatehours,
Binnedyearmonthdatehoursminutes,
Binnedyearmonthdatehoursminutesseconds,
Binnedyearquarter,
Binnedyearquartermonth,
Binnedyearweek,
Binnedyearweekday,
Binnedyearweekdayhours,
Binnedyearweekdayhoursminutes,
Binnedyearweekdayhoursminutesseconds,
Date,
Day,
Dayhours,
Dayhoursminutes,
Dayhoursminutesseconds,
Dayofyear,
Hours,
Hoursminutes,
Hoursminutesseconds,
Milliseconds,
Minutes,
Minutesseconds,
Month,
Monthdate,
Monthdatehours,
Monthdatehoursminutes,
Monthdatehoursminutesseconds,
Quarter,
Quartermonth,
Seconds,
Secondsmilliseconds,
Utcdate,
Utcday,
Utcdayhours,
Utcdayhoursminutes,
Utcdayhoursminutesseconds,
Utcdayofyear,
Utchours,
Utchoursminutes,
Utchoursminutesseconds,
Utcmilliseconds,
Utcminutes,
Utcminutesseconds,
Utcmonth,
Utcmonthdate,
Utcmonthdatehours,
Utcmonthdatehoursminutes,
Utcmonthdatehoursminutesseconds,
Utcquarter,
Utcquartermonth,
Utcseconds,
Utcsecondsmilliseconds,
Utcweek,
Utcweekday,
Utcweekdayhours,
Utcweekdayhoursminutes,
Utcweekdayhoursminutesseconds,
Utcyear,
Utcyeardayofyear,
Utcyearmonth,
Utcyearmonthdate,
Utcyearmonthdatehours,
Utcyearmonthdatehoursminutes,
Utcyearmonthdatehoursminutesseconds,
Utcyearquarter,
Utcyearquartermonth,
Utcyearweek,
Utcyearweekday,
Utcyearweekdayhours,
Utcyearweekdayhoursminutes,
Utcyearweekdayhoursminutesseconds,
Week,
Weekday,
Weekdayhours,
Weekdayhoursminutes,
Weekdayhoursminutesseconds,
Year,
Yeardayofyear,
Yearmonth,
Yearmonthdate,
Yearmonthdatehours,
Yearmonthdatehoursminutes,
Yearmonthdatehoursminutesseconds,
Yearquarter,
Yearquartermonth,
Yearweek,
Yearweekday,
Yearweekdayhours,
Yearweekdayhoursminutes,
Yearweekdayhoursminutesseconds,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ConditionalValueDefNumberExprRefValue {
BackgroundExprRef(BackgroundExprRef),
Double(f64),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalPredicateValueDefNumberExprRefClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<ConditionalValueDefNumberExprRefPredicateComposition>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub empty: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub param: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[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<SortUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub conditional_p_value_def_number_expr_ref_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum Type {
Geojson,
Nominal,
Ordinal,
Quantitative,
Temporal,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum PrimitiveValue {
Bool(bool),
Double(f64),
RepeatRefClass(RepeatRefClass),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct RepeatRefClass {
#[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<DayUnion>,
#[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>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub repeat: Option<RepeatEnum>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum RepeatEnum {
Column,
Layer,
Repeat,
Row,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Field {
RepeatRef(RepeatRef),
String(String),
}
#[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)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Legend {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub clip_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub column_padding: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub columns: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub description: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub direction: Option<Orientation>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format: Option<Format>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_length: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_opacity: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_stroke_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_stroke_width: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_thickness: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_align: Option<GridAlign>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_align: Option<TitleAlignUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_expr: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_size: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_offset: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_opacity: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_overlap: Option<LabelOverlapUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_padding: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_separation: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub legend_x: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub legend_y: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub offset: Option<CornerRadiusUnion>,
#[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<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub row_padding: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_dash: Option<StrokeDashUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_dash_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_fill_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_opacity: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_size: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_stroke_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_stroke_width: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_type: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_count: Option<TickCount>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_min_step: Option<CornerRadiusUnion>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_align: Option<TitleAlignUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_anchor: Option<TitleAnchorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_size: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_limit: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_opacity: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_orient: Option<TitleOrientUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_padding: Option<CornerRadiusUnion>,
#[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<Values>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub zindex: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Aria {
BackgroundExprRef(BackgroundExprRef),
Bool(bool),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum CornerRadiusUnion {
BackgroundExprRef(BackgroundExprRef),
Double(f64),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum Orientation {
Horizontal,
Vertical,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Format {
AnythingMap(HashMap<String, Option<serde_json::Value>>),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum FontSize {
BackgroundExprRef(BackgroundExprRef),
Double(f64),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum GridAlign {
BackgroundExprRef(BackgroundExprRef),
Enum(LayoutAlign),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum TitleAlignUnion {
BackgroundExprRef(BackgroundExprRef),
Enum(Align),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum Align {
Center,
Left,
Right,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum TextBaseline {
BackgroundExprRef(BackgroundExprRef),
Enum(Baseline),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum Baseline {
Alphabetic,
Bottom,
#[serde(rename = "line-bottom")]
LineBottom,
#[serde(rename = "line-top")]
LineTop,
Middle,
Top,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum FontWeightUnion {
BackgroundExprRef(BackgroundExprRef),
Double(f64),
Enum(FontWeightEnum),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum FontWeightEnum {
Bold,
Bolder,
Lighter,
Normal,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum LabelOverlapUnion {
BackgroundExprRef(BackgroundExprRef),
Bool(bool),
Enum(LabelOverlapEnum),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum LabelOverlapEnum {
Greedy,
Parity,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum LegendType {
Gradient,
Symbol,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum LegendOrient {
Bottom,
#[serde(rename = "bottom-left")]
BottomLeft,
#[serde(rename = "bottom-right")]
BottomRight,
Left,
None,
Right,
Top,
#[serde(rename = "top-left")]
TopLeft,
#[serde(rename = "top-right")]
TopRight,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum StrokeDashUnion {
BackgroundExprRef(BackgroundExprRef),
DoubleArray(Vec<f64>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum TickCount {
Double(f64),
Enum(TimeInterval),
TickCountTimeIntervalStep(TickCountTimeIntervalStep),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct TickCountTimeIntervalStep {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interval: Option<TimeInterval>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub step: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum TimeInterval {
Day,
Hour,
Millisecond,
Minute,
Month,
Second,
Week,
Year,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum LegendText {
String(String),
StringArray(Vec<String>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum TitleAnchorUnion {
BackgroundExprRef(BackgroundExprRef),
Enum(TitleAnchorEnum),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum TitleAnchorEnum {
End,
Middle,
Start,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum TitleOrientUnion {
BackgroundExprRef(BackgroundExprRef),
Enum(Orient),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum Orient {
Bottom,
Left,
Right,
Top,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Values {
BackgroundExprRef(BackgroundExprRef),
UnionArray(Vec<UnionWith>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Scale {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub base: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bins: Option<ScaleBins>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub clamp: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub constant: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain: Option<DomainUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_max: Option<DomainM>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_mid: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_min: Option<DomainM>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_raw: Option<BackgroundExprRef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub exponent: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interpolate: Option<ScaleInterpolate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub nice: Option<Nice>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub padding: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub padding_inner: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub padding_outer: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub range: Option<ScaleRange>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub range_max: Option<RangeM>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub range_min: Option<RangeM>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub reverse: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub round: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub scheme: Option<SchemeUnion>,
#[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<Aria>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleBins {
DoubleArray(Vec<f64>),
ScaleBinParams(ScaleBinParams),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleBinParams {
#[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)]
#[serde(untagged)]
#[derive(From)]
pub enum DomainUnion {
DomainUnionWith(DomainUnionWith),
Enum(DomainEnum),
UnionArray(Vec<Option<DomainElement>>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum DomainElement {
Bool(bool),
DomainDateTime(DomainDateTime),
Double(f64),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct DomainDateTime {
#[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<DayUnion>,
#[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>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct DomainUnionWith {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub param: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub encoding: Option<SingleDefUnitChannel>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub union_with: Option<Vec<UnionWith>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum DomainEnum {
Unaggregated,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum DomainM {
DomainMaxDateTime(DomainMaxDateTime),
Double(f64),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct DomainMaxDateTime {
#[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<DayUnion>,
#[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>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleInterpolate {
Enum(ScaleInterpolateEnum),
ScaleInterpolateParamsClass(ScaleInterpolateParamsClass),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleInterpolateParamsClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
#[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 expr_ref_type: Option<ScaleInterpolateParamsType>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum ScaleInterpolateParamsType {
Cubehelix,
#[serde(rename = "cubehelix-long")]
CubehelixLong,
Rgb,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum ScaleInterpolateEnum {
Cubehelix,
#[serde(rename = "cubehelix-long")]
CubehelixLong,
Hcl,
#[serde(rename = "hcl-long")]
HclLong,
Hsl,
#[serde(rename = "hsl-long")]
HslLong,
Lab,
Rgb,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Nice {
Bool(bool),
Double(f64),
Enum(TimeInterval),
NiceTimeIntervalStep(NiceTimeIntervalStep),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct NiceTimeIntervalStep {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interval: Option<TimeInterval>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub step: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleRange {
Enum(RangeEnum),
FieldRange(FieldRange),
UnionArray(Vec<FluffyRange>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum FluffyRange {
BackgroundExprRef(BackgroundExprRef),
Double(f64),
DoubleArray(Vec<f64>),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct FieldRange {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum RangeEnum {
Category,
Diverging,
Heatmap,
Height,
Ordinal,
Ramp,
Symbol,
Width,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum RangeM {
BackgroundExprRef(BackgroundExprRef),
Double(f64),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum ScaleType {
Band,
#[serde(rename = "bin-ordinal")]
BinOrdinal,
Identity,
Linear,
Log,
Ordinal,
Point,
Pow,
Quantile,
Quantize,
Sequential,
Sqrt,
Symlog,
Threshold,
Time,
Utc,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum SchemeUnion {
Enum(ColorScheme),
SchemeParams(SchemeParams),
}
#[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<ColorScheme>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum ColorScheme {
Accent,
Bluegreen,
#[serde(rename = "bluegreen-3")]
Bluegreen3,
#[serde(rename = "bluegreen-4")]
Bluegreen4,
#[serde(rename = "bluegreen-5")]
Bluegreen5,
#[serde(rename = "bluegreen-6")]
Bluegreen6,
#[serde(rename = "bluegreen-7")]
Bluegreen7,
#[serde(rename = "bluegreen-8")]
Bluegreen8,
#[serde(rename = "bluegreen-9")]
Bluegreen9,
Blueorange,
#[serde(rename = "blueorange-10")]
Blueorange10,
#[serde(rename = "blueorange-11")]
Blueorange11,
#[serde(rename = "blueorange-3")]
Blueorange3,
#[serde(rename = "blueorange-4")]
Blueorange4,
#[serde(rename = "blueorange-5")]
Blueorange5,
#[serde(rename = "blueorange-6")]
Blueorange6,
#[serde(rename = "blueorange-7")]
Blueorange7,
#[serde(rename = "blueorange-8")]
Blueorange8,
#[serde(rename = "blueorange-9")]
Blueorange9,
Bluepurple,
#[serde(rename = "bluepurple-3")]
Bluepurple3,
#[serde(rename = "bluepurple-4")]
Bluepurple4,
#[serde(rename = "bluepurple-5")]
Bluepurple5,
#[serde(rename = "bluepurple-6")]
Bluepurple6,
#[serde(rename = "bluepurple-7")]
Bluepurple7,
#[serde(rename = "bluepurple-8")]
Bluepurple8,
#[serde(rename = "bluepurple-9")]
Bluepurple9,
Blues,
Brownbluegreen,
#[serde(rename = "brownbluegreen-10")]
Brownbluegreen10,
#[serde(rename = "brownbluegreen-11")]
Brownbluegreen11,
#[serde(rename = "brownbluegreen-3")]
Brownbluegreen3,
#[serde(rename = "brownbluegreen-4")]
Brownbluegreen4,
#[serde(rename = "brownbluegreen-5")]
Brownbluegreen5,
#[serde(rename = "brownbluegreen-6")]
Brownbluegreen6,
#[serde(rename = "brownbluegreen-7")]
Brownbluegreen7,
#[serde(rename = "brownbluegreen-8")]
Brownbluegreen8,
#[serde(rename = "brownbluegreen-9")]
Brownbluegreen9,
Browns,
Category10,
Category20,
Category20B,
Category20C,
Cividis,
Dark2,
Darkblue,
#[serde(rename = "darkblue-3")]
Darkblue3,
#[serde(rename = "darkblue-4")]
Darkblue4,
#[serde(rename = "darkblue-5")]
Darkblue5,
#[serde(rename = "darkblue-6")]
Darkblue6,
#[serde(rename = "darkblue-7")]
Darkblue7,
#[serde(rename = "darkblue-8")]
Darkblue8,
#[serde(rename = "darkblue-9")]
Darkblue9,
Darkgold,
#[serde(rename = "darkgold-3")]
Darkgold3,
#[serde(rename = "darkgold-4")]
Darkgold4,
#[serde(rename = "darkgold-5")]
Darkgold5,
#[serde(rename = "darkgold-6")]
Darkgold6,
#[serde(rename = "darkgold-7")]
Darkgold7,
#[serde(rename = "darkgold-8")]
Darkgold8,
#[serde(rename = "darkgold-9")]
Darkgold9,
Darkgreen,
#[serde(rename = "darkgreen-3")]
Darkgreen3,
#[serde(rename = "darkgreen-4")]
Darkgreen4,
#[serde(rename = "darkgreen-5")]
Darkgreen5,
#[serde(rename = "darkgreen-6")]
Darkgreen6,
#[serde(rename = "darkgreen-7")]
Darkgreen7,
#[serde(rename = "darkgreen-8")]
Darkgreen8,
#[serde(rename = "darkgreen-9")]
Darkgreen9,
Darkmulti,
#[serde(rename = "darkmulti-3")]
Darkmulti3,
#[serde(rename = "darkmulti-4")]
Darkmulti4,
#[serde(rename = "darkmulti-5")]
Darkmulti5,
#[serde(rename = "darkmulti-6")]
Darkmulti6,
#[serde(rename = "darkmulti-7")]
Darkmulti7,
#[serde(rename = "darkmulti-8")]
Darkmulti8,
#[serde(rename = "darkmulti-9")]
Darkmulti9,
Darkred,
#[serde(rename = "darkred-3")]
Darkred3,
#[serde(rename = "darkred-4")]
Darkred4,
#[serde(rename = "darkred-5")]
Darkred5,
#[serde(rename = "darkred-6")]
Darkred6,
#[serde(rename = "darkred-7")]
Darkred7,
#[serde(rename = "darkred-8")]
Darkred8,
#[serde(rename = "darkred-9")]
Darkred9,
Goldgreen,
#[serde(rename = "goldgreen-3")]
Goldgreen3,
#[serde(rename = "goldgreen-4")]
Goldgreen4,
#[serde(rename = "goldgreen-5")]
Goldgreen5,
#[serde(rename = "goldgreen-6")]
Goldgreen6,
#[serde(rename = "goldgreen-7")]
Goldgreen7,
#[serde(rename = "goldgreen-8")]
Goldgreen8,
#[serde(rename = "goldgreen-9")]
Goldgreen9,
Goldorange,
#[serde(rename = "goldorange-3")]
Goldorange3,
#[serde(rename = "goldorange-4")]
Goldorange4,
#[serde(rename = "goldorange-5")]
Goldorange5,
#[serde(rename = "goldorange-6")]
Goldorange6,
#[serde(rename = "goldorange-7")]
Goldorange7,
#[serde(rename = "goldorange-8")]
Goldorange8,
#[serde(rename = "goldorange-9")]
Goldorange9,
Goldred,
#[serde(rename = "goldred-3")]
Goldred3,
#[serde(rename = "goldred-4")]
Goldred4,
#[serde(rename = "goldred-5")]
Goldred5,
#[serde(rename = "goldred-6")]
Goldred6,
#[serde(rename = "goldred-7")]
Goldred7,
#[serde(rename = "goldred-8")]
Goldred8,
#[serde(rename = "goldred-9")]
Goldred9,
Greenblue,
#[serde(rename = "greenblue-3")]
Greenblue3,
#[serde(rename = "greenblue-4")]
Greenblue4,
#[serde(rename = "greenblue-5")]
Greenblue5,
#[serde(rename = "greenblue-6")]
Greenblue6,
#[serde(rename = "greenblue-7")]
Greenblue7,
#[serde(rename = "greenblue-8")]
Greenblue8,
#[serde(rename = "greenblue-9")]
Greenblue9,
Greens,
Greys,
Inferno,
Lightgreyred,
#[serde(rename = "lightgreyred-3")]
Lightgreyred3,
#[serde(rename = "lightgreyred-4")]
Lightgreyred4,
#[serde(rename = "lightgreyred-5")]
Lightgreyred5,
#[serde(rename = "lightgreyred-6")]
Lightgreyred6,
#[serde(rename = "lightgreyred-7")]
Lightgreyred7,
#[serde(rename = "lightgreyred-8")]
Lightgreyred8,
#[serde(rename = "lightgreyred-9")]
Lightgreyred9,
Lightgreyteal,
#[serde(rename = "lightgreyteal-3")]
Lightgreyteal3,
#[serde(rename = "lightgreyteal-4")]
Lightgreyteal4,
#[serde(rename = "lightgreyteal-5")]
Lightgreyteal5,
#[serde(rename = "lightgreyteal-6")]
Lightgreyteal6,
#[serde(rename = "lightgreyteal-7")]
Lightgreyteal7,
#[serde(rename = "lightgreyteal-8")]
Lightgreyteal8,
#[serde(rename = "lightgreyteal-9")]
Lightgreyteal9,
Lightmulti,
#[serde(rename = "lightmulti-3")]
Lightmulti3,
#[serde(rename = "lightmulti-4")]
Lightmulti4,
#[serde(rename = "lightmulti-5")]
Lightmulti5,
#[serde(rename = "lightmulti-6")]
Lightmulti6,
#[serde(rename = "lightmulti-7")]
Lightmulti7,
#[serde(rename = "lightmulti-8")]
Lightmulti8,
#[serde(rename = "lightmulti-9")]
Lightmulti9,
Lightorange,
#[serde(rename = "lightorange-3")]
Lightorange3,
#[serde(rename = "lightorange-4")]
Lightorange4,
#[serde(rename = "lightorange-5")]
Lightorange5,
#[serde(rename = "lightorange-6")]
Lightorange6,
#[serde(rename = "lightorange-7")]
Lightorange7,
#[serde(rename = "lightorange-8")]
Lightorange8,
#[serde(rename = "lightorange-9")]
Lightorange9,
Lighttealblue,
#[serde(rename = "lighttealblue-3")]
Lighttealblue3,
#[serde(rename = "lighttealblue-4")]
Lighttealblue4,
#[serde(rename = "lighttealblue-5")]
Lighttealblue5,
#[serde(rename = "lighttealblue-6")]
Lighttealblue6,
#[serde(rename = "lighttealblue-7")]
Lighttealblue7,
#[serde(rename = "lighttealblue-8")]
Lighttealblue8,
#[serde(rename = "lighttealblue-9")]
Lighttealblue9,
Magma,
Observable10,
Orangered,
#[serde(rename = "orangered-3")]
Orangered3,
#[serde(rename = "orangered-4")]
Orangered4,
#[serde(rename = "orangered-5")]
Orangered5,
#[serde(rename = "orangered-6")]
Orangered6,
#[serde(rename = "orangered-7")]
Orangered7,
#[serde(rename = "orangered-8")]
Orangered8,
#[serde(rename = "orangered-9")]
Orangered9,
Oranges,
Paired,
Pastel1,
Pastel2,
Pinkyellowgreen,
#[serde(rename = "pinkyellowgreen-10")]
Pinkyellowgreen10,
#[serde(rename = "pinkyellowgreen-11")]
Pinkyellowgreen11,
#[serde(rename = "pinkyellowgreen-3")]
Pinkyellowgreen3,
#[serde(rename = "pinkyellowgreen-4")]
Pinkyellowgreen4,
#[serde(rename = "pinkyellowgreen-5")]
Pinkyellowgreen5,
#[serde(rename = "pinkyellowgreen-6")]
Pinkyellowgreen6,
#[serde(rename = "pinkyellowgreen-7")]
Pinkyellowgreen7,
#[serde(rename = "pinkyellowgreen-8")]
Pinkyellowgreen8,
#[serde(rename = "pinkyellowgreen-9")]
Pinkyellowgreen9,
Plasma,
Purpleblue,
#[serde(rename = "purpleblue-3")]
Purpleblue3,
#[serde(rename = "purpleblue-4")]
Purpleblue4,
#[serde(rename = "purpleblue-5")]
Purpleblue5,
#[serde(rename = "purpleblue-6")]
Purpleblue6,
#[serde(rename = "purpleblue-7")]
Purpleblue7,
#[serde(rename = "purpleblue-8")]
Purpleblue8,
#[serde(rename = "purpleblue-9")]
Purpleblue9,
Purplebluegreen,
#[serde(rename = "purplebluegreen-3")]
Purplebluegreen3,
#[serde(rename = "purplebluegreen-4")]
Purplebluegreen4,
#[serde(rename = "purplebluegreen-5")]
Purplebluegreen5,
#[serde(rename = "purplebluegreen-6")]
Purplebluegreen6,
#[serde(rename = "purplebluegreen-7")]
Purplebluegreen7,
#[serde(rename = "purplebluegreen-8")]
Purplebluegreen8,
#[serde(rename = "purplebluegreen-9")]
Purplebluegreen9,
Purplegreen,
#[serde(rename = "purplegreen-10")]
Purplegreen10,
#[serde(rename = "purplegreen-11")]
Purplegreen11,
#[serde(rename = "purplegreen-3")]
Purplegreen3,
#[serde(rename = "purplegreen-4")]
Purplegreen4,
#[serde(rename = "purplegreen-5")]
Purplegreen5,
#[serde(rename = "purplegreen-6")]
Purplegreen6,
#[serde(rename = "purplegreen-7")]
Purplegreen7,
#[serde(rename = "purplegreen-8")]
Purplegreen8,
#[serde(rename = "purplegreen-9")]
Purplegreen9,
Purpleorange,
#[serde(rename = "purpleorange-10")]
Purpleorange10,
#[serde(rename = "purpleorange-11")]
Purpleorange11,
#[serde(rename = "purpleorange-3")]
Purpleorange3,
#[serde(rename = "purpleorange-4")]
Purpleorange4,
#[serde(rename = "purpleorange-5")]
Purpleorange5,
#[serde(rename = "purpleorange-6")]
Purpleorange6,
#[serde(rename = "purpleorange-7")]
Purpleorange7,
#[serde(rename = "purpleorange-8")]
Purpleorange8,
#[serde(rename = "purpleorange-9")]
Purpleorange9,
Purplered,
#[serde(rename = "purplered-3")]
Purplered3,
#[serde(rename = "purplered-4")]
Purplered4,
#[serde(rename = "purplered-5")]
Purplered5,
#[serde(rename = "purplered-6")]
Purplered6,
#[serde(rename = "purplered-7")]
Purplered7,
#[serde(rename = "purplered-8")]
Purplered8,
#[serde(rename = "purplered-9")]
Purplered9,
Purples,
Rainbow,
Redblue,
#[serde(rename = "redblue-10")]
Redblue10,
#[serde(rename = "redblue-11")]
Redblue11,
#[serde(rename = "redblue-3")]
Redblue3,
#[serde(rename = "redblue-4")]
Redblue4,
#[serde(rename = "redblue-5")]
Redblue5,
#[serde(rename = "redblue-6")]
Redblue6,
#[serde(rename = "redblue-7")]
Redblue7,
#[serde(rename = "redblue-8")]
Redblue8,
#[serde(rename = "redblue-9")]
Redblue9,
Redgrey,
#[serde(rename = "redgrey-10")]
Redgrey10,
#[serde(rename = "redgrey-11")]
Redgrey11,
#[serde(rename = "redgrey-3")]
Redgrey3,
#[serde(rename = "redgrey-4")]
Redgrey4,
#[serde(rename = "redgrey-5")]
Redgrey5,
#[serde(rename = "redgrey-6")]
Redgrey6,
#[serde(rename = "redgrey-7")]
Redgrey7,
#[serde(rename = "redgrey-8")]
Redgrey8,
#[serde(rename = "redgrey-9")]
Redgrey9,
Redpurple,
#[serde(rename = "redpurple-3")]
Redpurple3,
#[serde(rename = "redpurple-4")]
Redpurple4,
#[serde(rename = "redpurple-5")]
Redpurple5,
#[serde(rename = "redpurple-6")]
Redpurple6,
#[serde(rename = "redpurple-7")]
Redpurple7,
#[serde(rename = "redpurple-8")]
Redpurple8,
#[serde(rename = "redpurple-9")]
Redpurple9,
Reds,
Redyellowblue,
#[serde(rename = "redyellowblue-10")]
Redyellowblue10,
#[serde(rename = "redyellowblue-11")]
Redyellowblue11,
#[serde(rename = "redyellowblue-3")]
Redyellowblue3,
#[serde(rename = "redyellowblue-4")]
Redyellowblue4,
#[serde(rename = "redyellowblue-5")]
Redyellowblue5,
#[serde(rename = "redyellowblue-6")]
Redyellowblue6,
#[serde(rename = "redyellowblue-7")]
Redyellowblue7,
#[serde(rename = "redyellowblue-8")]
Redyellowblue8,
#[serde(rename = "redyellowblue-9")]
Redyellowblue9,
Redyellowgreen,
#[serde(rename = "redyellowgreen-10")]
Redyellowgreen10,
#[serde(rename = "redyellowgreen-11")]
Redyellowgreen11,
#[serde(rename = "redyellowgreen-3")]
Redyellowgreen3,
#[serde(rename = "redyellowgreen-4")]
Redyellowgreen4,
#[serde(rename = "redyellowgreen-5")]
Redyellowgreen5,
#[serde(rename = "redyellowgreen-6")]
Redyellowgreen6,
#[serde(rename = "redyellowgreen-7")]
Redyellowgreen7,
#[serde(rename = "redyellowgreen-8")]
Redyellowgreen8,
#[serde(rename = "redyellowgreen-9")]
Redyellowgreen9,
Set1,
Set2,
Set3,
Sinebow,
Spectral,
#[serde(rename = "spectral-10")]
Spectral10,
#[serde(rename = "spectral-11")]
Spectral11,
#[serde(rename = "spectral-3")]
Spectral3,
#[serde(rename = "spectral-4")]
Spectral4,
#[serde(rename = "spectral-5")]
Spectral5,
#[serde(rename = "spectral-6")]
Spectral6,
#[serde(rename = "spectral-7")]
Spectral7,
#[serde(rename = "spectral-8")]
Spectral8,
#[serde(rename = "spectral-9")]
Spectral9,
Tableau10,
Tableau20,
Tealblues,
Teals,
Turbo,
Viridis,
Warmgreys,
Yellowgreen,
#[serde(rename = "yellowgreen-3")]
Yellowgreen3,
#[serde(rename = "yellowgreen-4")]
Yellowgreen4,
#[serde(rename = "yellowgreen-5")]
Yellowgreen5,
#[serde(rename = "yellowgreen-6")]
Yellowgreen6,
#[serde(rename = "yellowgreen-7")]
Yellowgreen7,
#[serde(rename = "yellowgreen-8")]
Yellowgreen8,
#[serde(rename = "yellowgreen-9")]
Yellowgreen9,
Yellowgreenblue,
#[serde(rename = "yellowgreenblue-3")]
Yellowgreenblue3,
#[serde(rename = "yellowgreenblue-4")]
Yellowgreenblue4,
#[serde(rename = "yellowgreenblue-5")]
Yellowgreenblue5,
#[serde(rename = "yellowgreenblue-6")]
Yellowgreenblue6,
#[serde(rename = "yellowgreenblue-7")]
Yellowgreenblue7,
#[serde(rename = "yellowgreenblue-8")]
Yellowgreenblue8,
#[serde(rename = "yellowgreenblue-9")]
Yellowgreenblue9,
Yelloworangebrown,
#[serde(rename = "yelloworangebrown-3")]
Yelloworangebrown3,
#[serde(rename = "yelloworangebrown-4")]
Yelloworangebrown4,
#[serde(rename = "yelloworangebrown-5")]
Yelloworangebrown5,
#[serde(rename = "yelloworangebrown-6")]
Yelloworangebrown6,
#[serde(rename = "yelloworangebrown-7")]
Yelloworangebrown7,
#[serde(rename = "yelloworangebrown-8")]
Yelloworangebrown8,
#[serde(rename = "yelloworangebrown-9")]
Yelloworangebrown9,
Yelloworangered,
#[serde(rename = "yelloworangered-3")]
Yelloworangered3,
#[serde(rename = "yelloworangered-4")]
Yelloworangered4,
#[serde(rename = "yelloworangered-5")]
Yelloworangered5,
#[serde(rename = "yelloworangered-6")]
Yelloworangered6,
#[serde(rename = "yelloworangered-7")]
Yelloworangered7,
#[serde(rename = "yelloworangered-8")]
Yelloworangered8,
#[serde(rename = "yelloworangered-9")]
Yelloworangered9,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum SortUnion {
EncodingSortField(EncodingSortField),
Enum(Sort),
UnionArray(Vec<UnionWith>),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct EncodingSortField {
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub field: RemovableValue<Field>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub op: Option<NonArgAggregateOp>,
#[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<SortByChannel>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum SortByChannel {
Color,
Fill,
#[serde(rename = "fillOpacity")]
FillOpacity,
Opacity,
Shape,
Size,
Stroke,
#[serde(rename = "strokeOpacity")]
StrokeOpacity,
#[serde(rename = "strokeWidth")]
StrokeWidth,
Text,
X,
Y,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum SortOrder {
Ascending,
Descending,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum Sort {
Ascending,
Color,
Descending,
Fill,
#[serde(rename = "fillOpacity")]
FillOpacity,
Opacity,
Shape,
Size,
#[serde(rename = "-color")]
SortColor,
#[serde(rename = "-fill")]
SortFill,
#[serde(rename = "-fillOpacity")]
SortFillOpacity,
#[serde(rename = "-opacity")]
SortOpacity,
#[serde(rename = "-shape")]
SortShape,
#[serde(rename = "-size")]
SortSize,
#[serde(rename = "-stroke")]
SortStroke,
#[serde(rename = "-strokeOpacity")]
SortStrokeOpacity,
#[serde(rename = "-strokeWidth")]
SortStrokeWidth,
#[serde(rename = "-text")]
SortText,
#[serde(rename = "-x")]
SortX,
#[serde(rename = "-y")]
SortY,
Stroke,
#[serde(rename = "strokeOpacity")]
StrokeOpacity,
#[serde(rename = "strokeWidth")]
StrokeWidth,
Text,
X,
Y,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ColorClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[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<SortUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub mark_prop_def_gradient_string_null_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<ConditionalValueDefGradientStringNullExprRefValue>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ColorCondition {
ConditionalPValueDefGradientStringNullExprRef(ConditionalPValueDefGradientStringNullExprRef),
ConditionalValueDefGradientStringNullExprRefArray(
Vec<ConditionalValueDefGradientStringNullExprRef>,
),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalValueDefGradientStringNullExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<ConditionalValueDefNumberExprRefPredicateComposition>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<ConditionalValueDefGradientStringNullExprRefValue>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub empty: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub param: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ConditionalValueDefGradientStringNullExprRefValue {
String(String),
ValueLinearGradient(ValueLinearGradient),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ValueLinearGradient {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient: Option<Gradient>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stops: Option<Vec<GradientStop>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x1: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x2: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y1: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y2: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub r1: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub r2: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum Gradient {
Linear,
Radial,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct GradientStop {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub offset: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalPValueDefGradientStringNullExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<ConditionalValueDefNumberExprRefPredicateComposition>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<ConditionalValueDefGradientStringNullExprRefValue>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub empty: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub param: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[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<SortUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub conditional_p_value_def_gradient_string_null_expr_ref_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct RowColumnEncodingFieldDef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<LayoutAlign>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub center: Option<bool>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub spacing: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub row_column_encoding_field_def_type: Option<StandardType>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Header {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format: Option<Format>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_align: Option<TitleAlignUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_anchor: Option<TitleAnchorEnum>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_angle: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_expr: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_size: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_orient: Option<Orient>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_padding: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub labels: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub orient: Option<Orient>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_align: Option<TitleAlignUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_anchor: Option<TitleAnchorEnum>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_angle: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_size: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_orient: Option<Orient>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_padding: Option<CornerRadiusUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum StandardType {
Nominal,
Ordinal,
Quantitative,
Temporal,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum SortArray {
Enum(SortOrder),
SortEncodingSortField(SortEncodingSortField),
UnionArray(Vec<UnionWith>),
}
#[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<NonArgAggregateOp>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub order: RemovableValue<SortOrder>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct DescriptionClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<DescriptionBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<DescriptionCondition>,
#[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<Format>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field_or_datum_def_with_condition_string_field_def_string_type: Option<StandardType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Box<Color>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum DescriptionBin {
BinParams(BinParams),
Bool(bool),
Enum(BinEnum),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum BinEnum {
Binned,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum DescriptionCondition {
PurpleConditionalPExprRef(PurpleConditionalPExprRef),
PurpleConditionalValueDefStringExprRefArray(Vec<PurpleConditionalValueDefStringExprRef>),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct PurpleConditionalValueDefStringExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<ConditionalValueDefNumberExprRefPredicateComposition>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub empty: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub param: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct PurpleConditionalPExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<ConditionalValueDefNumberExprRefPredicateComposition>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub empty: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub param: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[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<SortUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub conditional_p_expr_ref_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Detail {
TypedFieldDef(TypedFieldDef),
TypedFieldDefArray(Vec<TypedFieldDef>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(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 band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<DescriptionBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub typed_field_def_type: Option<StandardType>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct FacetEncodingFieldDef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<Box<VegaliteAlign>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bounds: Option<Box<Bounds>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub center: Option<Box<Center>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub columns: Option<f64>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub spacing: Option<Box<Spacing>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub facet_encoding_field_def_type: Option<StandardType>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Spacing {
Double(f64),
RowColNumber(RowColNumber),
}
#[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)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct FillClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[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<SortUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub mark_prop_def_gradient_string_null_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<ConditionalValueDefGradientStringNullExprRefValue>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct FillOpacityClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<AngleCondition>,
#[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<SortUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub mark_prop_def_number_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<CornerRadiusUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(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 band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<DescriptionBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<DescriptionCondition>,
#[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<Format>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field_or_datum_def_with_condition_string_field_def_string_type: Option<StandardType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Box<Color>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct KeyClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<DescriptionBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub typed_field_def_type: Option<StandardType>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(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 band_position: Option<f64>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub lat_long_def_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(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 band_position: Option<f64>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub position2_def_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Latitude2Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Latitude2Value {
BackgroundExprRef(BackgroundExprRef),
Double(f64),
Enum(ValueEnum),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum ValueEnum {
Height,
Width,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct LongitudeClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub lat_long_def_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Longitude2Class {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub position2_def_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Latitude2Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct OpacityClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<AngleCondition>,
#[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<SortUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub mark_prop_def_number_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<CornerRadiusUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Order {
OrderDef(OrderDef),
OrderFieldDefArray(Vec<OrderFieldDef>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(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 band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<DescriptionBin>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub order_field_def_type: Option<StandardType>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct OrderDef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<DescriptionBin>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub order_def_type: Option<StandardType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<OrderFieldDefCondition>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<CornerRadiusUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum OrderFieldDefCondition {
ConditionalPValueDefNumber(ConditionalPValueDefNumber),
ConditionalValueDefNumberArray(Vec<ConditionalValueDefNumber>),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalValueDefNumber {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<ConditionalValueDefNumberExprRefPredicateComposition>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub empty: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub param: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalPValueDefNumber {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<ConditionalValueDefNumberExprRefPredicateComposition>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub empty: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub param: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct RadiusClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<DescriptionBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[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<SortUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stack: Option<Stack>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub polar_def_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Latitude2Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Stack {
Bool(bool),
Enum(StackOffset),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum StackOffset {
Center,
Normalize,
Zero,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Radius2Class {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub position2_def_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Latitude2Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct MarkPropDefStringNullTypeForShape {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<ShapeCondition>,
#[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<SortUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub mark_prop_def_string_null_type_for_shape_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Box<Color>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ShapeCondition {
ConditionalPValueDefStringNullExprRef(ConditionalPValueDefStringNullExprRef),
ConditionalValueDefStringNullExprRefArray(Vec<ConditionalValueDefStringNullExprRef>),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalValueDefStringNullExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<ConditionalValueDefNumberExprRefPredicateComposition>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub empty: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub param: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalPValueDefStringNullExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<ConditionalValueDefNumberExprRefPredicateComposition>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub empty: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub param: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[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<SortUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub conditional_p_value_def_string_null_expr_ref_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct SizeClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<AngleCondition>,
#[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<SortUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub mark_prop_def_number_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<CornerRadiusUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct StrokeClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[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<SortUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub mark_prop_def_gradient_string_null_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<ConditionalValueDefGradientStringNullExprRefValue>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct MarkPropDefNumber {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<StrokeDashCondition>,
#[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<SortUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub mark_prop_def_number_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<StrokeDashUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum StrokeDashCondition {
ConditionalParameterValueDefNumberExprRefClass(ConditionalParameterValueDefNumberExprRefClass),
ConditionalValueDefNumberExprRefElementArray(Vec<ConditionalValueDefNumberExprRefElement>),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalValueDefNumberExprRefElement {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<ConditionalValueDefNumberExprRefPredicateComposition>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<ConditionalValueDefNumberExprRefValueUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub empty: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub param: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ConditionalValueDefNumberExprRefValueUnion {
BackgroundExprRef(BackgroundExprRef),
DoubleArray(Vec<f64>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalParameterValueDefNumberExprRefClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<ConditionalValueDefNumberExprRefPredicateComposition>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<StrokeDashUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub empty: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub param: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[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<SortUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub conditional_p_value_def_number_expr_ref_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct StrokeOpacityClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<AngleCondition>,
#[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<SortUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub mark_prop_def_number_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<CornerRadiusUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct StrokeWidthClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<AngleCondition>,
#[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<SortUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub mark_prop_def_number_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<CornerRadiusUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct TextDef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<DescriptionBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<TextCondition>,
#[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<Format>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text_def_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<ConditionalPredicateValueDefTextExprRefText>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum TextCondition {
ConditionalP(ConditionalP),
ConditionalValueDefTextExprRefArray(Vec<ConditionalValueDefTextExprRef>),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalValueDefTextExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<ConditionalValueDefNumberExprRefPredicateComposition>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<ConditionalValueDefTextExprRefText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub empty: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub param: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ConditionalValueDefTextExprRefText {
BackgroundExprRef(BackgroundExprRef),
String(String),
StringArray(Vec<String>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalP {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<ConditionalValueDefNumberExprRefPredicateComposition>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<ConditionalPredicateValueDefTextExprRefText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub empty: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub param: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<DescriptionBin>,
#[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<Format>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub conditional_p_type: Option<StandardType>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ConditionalPredicateValueDefTextExprRefText {
BackgroundExprRef(BackgroundExprRef),
String(String),
StringArray(Vec<String>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ThetaClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<DescriptionBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[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<SortUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stack: Option<Stack>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub polar_def_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Latitude2Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Theta2Class {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub position2_def_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Latitude2Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct TimeFieldDef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub rescale: Option<bool>,
#[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<SortUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_field_def_type: Option<StandardType>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum EncodingTooltip {
FieldOrDatumDefWithConditionStringFieldDefString(
FieldOrDatumDefWithConditionStringFieldDefString,
),
StringFieldDefArray(Vec<StringFieldDef>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct StringFieldDef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<DescriptionBin>,
#[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<Format>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub string_field_def_type: Option<StandardType>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct FieldOrDatumDefWithConditionStringFieldDefString {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<DescriptionBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<FieldOrDatumDefWithConditionStringFieldDefStringCondition>,
#[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<Format>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field_or_datum_def_with_condition_string_field_def_string_type: Option<StandardType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Box<Color>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum FieldOrDatumDefWithConditionStringFieldDefStringCondition {
FluffyConditionalPExprRef(FluffyConditionalPExprRef),
FluffyConditionalValueDefStringExprRefArray(Vec<FluffyConditionalValueDefStringExprRef>),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct FluffyConditionalValueDefStringExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<ConditionalValueDefNumberExprRefPredicateComposition>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub empty: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub param: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct FluffyConditionalPExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<ConditionalValueDefNumberExprRefPredicateComposition>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub empty: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub param: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[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<SortUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub conditional_p_expr_ref_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct UrlClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<DescriptionBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<DescriptionCondition>,
#[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<Format>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field_or_datum_def_with_condition_string_field_def_string_type: Option<StandardType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Box<Color>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(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 band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<DescriptionBin>,
#[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<SortUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stack: Option<Stack>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub position_def_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Latitude2Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Axis {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub description: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_cap: Option<Cap>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_dash: Option<StrokeDashUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_dash_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_opacity: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_width: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format: Option<Format>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_cap: Option<Cap>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_color: Option<GridColorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_dash: Option<AxisGridDash>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_dash_offset: Option<GridDashOffsetUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_opacity: Option<GridOpacityUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_width: Option<GridWidthUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_align: Option<ConditionalAxisPropertyAlignNull>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_angle: Option<LabelAngle>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_baseline: Option<PurpleTextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_bound: Option<Label>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_color: Option<GridColorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_expr: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_flush: Option<LabelFlush>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_flush_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font: Option<ConditionalAxisPropertyStringNull>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_size: Option<GridWidthUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_style: Option<ConditionalAxisPropertyFontStyleNull>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_weight: Option<FontWeight>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_offset: Option<GridDashOffsetUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_opacity: Option<GridDashOffsetUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_overlap: Option<LabelOverlapUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_padding: Option<GridDashOffsetUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub labels: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_separation: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub max_extent: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub min_extent: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub orient: Option<TitleOrientUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub position: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub style: Option<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_band: Option<TickBandUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_cap: Option<Cap>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_color: Option<GridColorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_count: Option<TickCount>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_dash: Option<AxisTickDash>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_dash_offset: Option<GridDashOffsetUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_extra: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_min_step: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_opacity: Option<GridDashOffsetUnion>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_size: Option<GridWidthUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_width: Option<GridWidthUnion>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_align: Option<TitleAlignUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_anchor: Option<TitleAnchorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_size: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_limit: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_opacity: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_padding: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_x: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_y: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub translate: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub values: Option<Values>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub zindex: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Cap {
BackgroundExprRef(BackgroundExprRef),
Enum(StrokeCap),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum StrokeCap {
Butt,
Round,
Square,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum GridColorUnion {
GridColorExprRef(GridColorExprRef),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct GridColorExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<ConditionUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ConditionUnion {
ConditionClass(ConditionClass),
ConditionalPredicateValueDefColorNullExprRefArray(
Vec<ConditionalPredicateValueDefColorNullExprRef>,
),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalPredicateValueDefColorNullExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<PredicateCompositionElement>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<PredicateCompositionElement>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum AxisGridDash {
DoubleArray(Vec<f64>),
PurpleExprRef(PurpleExprRef),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct PurpleExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<TentacledConditionalPredicateValueDefNumberNullExprRef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Vec<f64>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum TentacledConditionalPredicateValueDefNumberNullExprRef {
ConditionalPredicateValueDefNumberNullExprRefArray(
Vec<ConditionalPredicateValueDefNumberNullExprRef>,
),
PurpleConditionalPredicateValueDefNumberNullExprRef(
PurpleConditionalPredicateValueDefNumberNullExprRef,
),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalPredicateValueDefNumberNullExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<PredicateCompositionElement>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Vec<f64>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct PurpleConditionalPredicateValueDefNumberNullExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<PredicateCompositionElement>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Vec<f64>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum GridDashOffsetUnion {
Double(f64),
GridDashOffsetExprRef(GridDashOffsetExprRef),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct GridDashOffsetExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<StickyConditionalPredicateValueDefNumberNullExprRef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum StickyConditionalPredicateValueDefNumberNullExprRef {
ConditionalPredicateValueDefNumberNullExprRefElementArray(
Vec<ConditionalPredicateValueDefNumberNullExprRefElement>,
),
FluffyConditionalPredicateValueDefNumberNullExprRef(
FluffyConditionalPredicateValueDefNumberNullExprRef,
),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalPredicateValueDefNumberNullExprRefElement {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<PredicateCompositionElement>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct FluffyConditionalPredicateValueDefNumberNullExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<PredicateCompositionElement>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum GridOpacityUnion {
Double(f64),
GridOpacityExprRef(GridOpacityExprRef),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct GridOpacityExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<StickyConditionalPredicateValueDefNumberNullExprRef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum GridWidthUnion {
Double(f64),
GridWidthExprRef(GridWidthExprRef),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct GridWidthExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<StickyConditionalPredicateValueDefNumberNullExprRef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ConditionalAxisPropertyAlignNull {
Enum(Align),
FluffyExprRef(FluffyExprRef),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct FluffyExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<ExprRefCondition>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Align>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ExprRefCondition {
ConditionCondition(ConditionCondition),
ConditionalPredicateValueDefAlignNullExprRefArray(
Vec<ConditionalPredicateValueDefAlignNullExprRef>,
),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalPredicateValueDefAlignNullExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<PredicateCompositionElement>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Align>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionCondition {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<PredicateCompositionElement>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Align>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum LabelAngle {
BackgroundExprRef(BackgroundExprRef),
Double(f64),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum PurpleTextBaseline {
Enum(Baseline),
TentacledExprRef(TentacledExprRef),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct TentacledExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<ExprRefConditionUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Baseline>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ExprRefConditionUnion {
ConditionConditionClass(ConditionConditionClass),
ConditionalPredicateValueDefTextBaselineNullExprRefArray(
Vec<ConditionalPredicateValueDefTextBaselineNullExprRef>,
),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalPredicateValueDefTextBaselineNullExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<PredicateCompositionElement>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Baseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionConditionClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<PredicateCompositionElement>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Baseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Label {
BackgroundExprRef(BackgroundExprRef),
Bool(bool),
Double(f64),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum LabelFlush {
Bool(bool),
Double(f64),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ConditionalAxisPropertyStringNull {
StickyExprRef(StickyExprRef),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct StickyExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<FluffyConditionalPredicateValueDefStringNullExprRef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum FluffyConditionalPredicateValueDefStringNullExprRef {
ConditionalPredicateValueDefStringNullExprRefArray(
Vec<ConditionalPredicateValueDefStringNullExprRef>,
),
PurpleConditionalPredicateValueDefStringNullExprRef(
PurpleConditionalPredicateValueDefStringNullExprRef,
),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalPredicateValueDefStringNullExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<PredicateCompositionElement>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct PurpleConditionalPredicateValueDefStringNullExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<PredicateCompositionElement>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ConditionalAxisPropertyFontStyleNull {
IndigoExprRef(IndigoExprRef),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct IndigoExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<FluffyConditionalPredicateValueDefFontStyleNullExprRef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum FluffyConditionalPredicateValueDefFontStyleNullExprRef {
ConditionalPredicateValueDefFontStyleNullExprRefArray(
Vec<ConditionalPredicateValueDefFontStyleNullExprRef>,
),
PurpleConditionalPredicateValueDefFontStyleNullExprRef(
PurpleConditionalPredicateValueDefFontStyleNullExprRef,
),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalPredicateValueDefFontStyleNullExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<PredicateCompositionElement>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct PurpleConditionalPredicateValueDefFontStyleNullExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<PredicateCompositionElement>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum FontWeight {
Double(f64),
Enum(FontWeightEnum),
IndecentExprRef(IndecentExprRef),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct IndecentExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<FluffyConditionalPredicateValueDefFontWeightNullExprRef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<ValueUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum FluffyConditionalPredicateValueDefFontWeightNullExprRef {
ConditionalPredicateValueDefFontWeightNullExprRefArray(
Vec<ConditionalPredicateValueDefFontWeightNullExprRef>,
),
PurpleConditionalPredicateValueDefFontWeightNullExprRef(
PurpleConditionalPredicateValueDefFontWeightNullExprRef,
),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConditionalPredicateValueDefFontWeightNullExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<PredicateCompositionElement>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<ValueUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ValueUnion {
Double(f64),
Enum(FontWeightEnum),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct PurpleConditionalPredicateValueDefFontWeightNullExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub test: Option<PredicateCompositionElement>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<ValueUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum TickBandUnion {
BackgroundExprRef(BackgroundExprRef),
Enum(TickBandEnum),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum TickBandEnum {
Center,
Extent,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum AxisTickDash {
DoubleArray(Vec<f64>),
HilariousExprRef(HilariousExprRef),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct HilariousExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<TentacledConditionalPredicateValueDefNumberNullExprRef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Vec<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<ImputeParamsMethod>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<serde_json::Value>,
}
#[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, 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)]
#[serde(rename_all = "snake_case")]
pub enum ImputeParamsMethod {
Max,
Mean,
Median,
Min,
Value,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(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 band_position: Option<f64>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub position2_def_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Latitude2Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct XErrorClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct XError2Class {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct XOffsetClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[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<SortUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub offset_def_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(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 band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<DescriptionBin>,
#[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<SortUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stack: Option<Stack>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub position_def_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Latitude2Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(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 band_position: Option<f64>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub position2_def_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Latitude2Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct YErrorClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct YError2Class {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct YOffsetClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aggregate: Option<Aggregate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field: Option<Field>,
#[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<SortUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub offset_def_type: Option<Type>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub datum: Option<PrimitiveValue>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(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 band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[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)]
#[serde(rename_all = "camelCase")]
#[derive(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 band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<LogicalNotPredicateTimeUnit>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub facet_field_def_type: Option<StandardType>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum SpecHeight {
Double(f64),
Enum(HeightEnum),
Step(Box<Step>),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Step {
#[serde(rename = "for")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub step_for: Option<StepFor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub step: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum StepFor {
Offset,
Position,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum HeightEnum {
Container,
}
#[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<SpecHeight>,
#[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<Box<Projection>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub resolve: Option<Box<Resolve>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title: Option<TitleUnion>,
#[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<Box<ViewBackground>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<SpecHeight>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub mark: Option<AnyMark>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub params: Option<Vec<SelectionParameter>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct LayerEncoding {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<AngleClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<ColorClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub description: Option<DescriptionClass>,
#[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<FillClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<FillOpacityClass>,
#[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<KeyClass>,
#[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<LongitudeClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub longitude2: Option<Longitude2Class>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<OpacityClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub order: Option<Order>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius: Option<RadiusClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius2: Option<Radius2Class>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<MarkPropDefStringNullTypeForShape>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<SizeClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<StrokeClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<MarkPropDefNumber>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<StrokeOpacityClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<StrokeWidthClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<TextDef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta: Option<ThetaClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta2: Option<Theta2Class>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time: Option<TimeFieldDef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tooltip: Option<EncodingTooltip>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub url: Option<UrlClass>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x_error: Option<XErrorClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x_error2: Option<XError2Class>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x_offset: Option<XOffsetClass>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y_error: Option<YErrorClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y_error2: Option<YError2Class>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y_offset: Option<YOffsetClass>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum AnyMark {
Def(Def),
Enum(Mark),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Def {
#[serde(rename = "box")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub def_box: Option<AnyMarkConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub clip: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<MarkConfigColor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub extent: Option<MarkDefExtent>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub invalid: Option<MarkInvalidDataMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub median: Option<AnyMarkConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<Opacity>,
#[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<AnyMarkConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub rule: Option<AnyMarkConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ticks: Option<AnyMarkConfig>,
#[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 thickness: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band: Option<AnyMarkConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub borders: Option<AnyMarkConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interpolate: Option<MarkConfigInterpolate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tension: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<TitleAlignUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<Angle>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria_role: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria_role_description: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aspect: Option<Aria>,
#[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 bin_spacing: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub blend: Option<BlendUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub continuous_band_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_bottom_left: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_bottom_right: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_end: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_top_left: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_top_right: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub cursor: Option<CursorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub description: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dir: Option<Dir>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub discrete_band_size: Option<DiscreteBandSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dx: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dy: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ellipsis: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<MarkConfigFill>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_size: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<BoxPlotDefHeight>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub href: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub inner_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line: Option<Line>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line_break: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub min_band_size: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub order: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub outer_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub pad_angle: Option<CornerRadiusUnion>,
#[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<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius2: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius2_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub smooth: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<MarkConfigFill>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_cap: Option<Cap>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<StrokeDashUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_join: Option<StrokeJoinUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_miter_limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub style: Option<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<ConditionalPredicateValueDefTextExprRefText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta2: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta2_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit_band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit_band_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tooltip: Option<OverlayMarkDefTooltip>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub url: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<BoxPlotDefHeight>,
#[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 x2_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x_offset: Option<CornerRadiusUnion>,
#[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<YUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y2_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y_offset: Option<CornerRadiusUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Angle {
BackgroundExprRef(BackgroundExprRef),
Double(f64),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum AnyMarkConfig {
Bool(bool),
Config(Config),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Config {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<TitleAlignUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<Angle>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria_role: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria_role_description: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aspect: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub blend: Option<BlendUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<MarkConfigColor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_bottom_left: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_bottom_right: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_top_left: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_top_right: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub cursor: Option<CursorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub description: Option<Box<Color>>,
#[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<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dy: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ellipsis: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub end_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<MarkConfigFill>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_size: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub href: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub inner_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interpolate: Option<MarkConfigInterpolate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub invalid: Option<MarkInvalidDataMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line_break: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<CornerRadiusUnion>,
#[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 outer_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub pad_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius2: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub smooth: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub start_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<MarkConfigFill>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_cap: Option<Cap>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<StrokeDashUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_join: Option<StrokeJoinUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_miter_limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tension: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<ConditionalPredicateValueDefTextExprRefText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta2: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit_band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit_band_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tooltip: Option<OverlayMarkDefTooltip>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub url: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<CornerRadiusUnion>,
#[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<YUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line: Option<Line>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub point: Option<PointUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin_spacing: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub continuous_band_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_end: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub discrete_band_size: Option<DiscreteBandSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub min_band_size: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub thickness: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum BlendUnion {
BackgroundExprRef(BackgroundExprRef),
Enum(BlendEnum),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum BlendEnum {
Color,
#[serde(rename = "color-burn")]
ColorBurn,
#[serde(rename = "color-dodge")]
ColorDodge,
Darken,
Difference,
Exclusion,
#[serde(rename = "hard-light")]
HardLight,
Hue,
Lighten,
Luminosity,
Multiply,
Overlay,
Saturation,
Screen,
#[serde(rename = "soft-light")]
SoftLight,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum MarkConfigColor {
ColorLinearGradient(ColorLinearGradient),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ColorLinearGradient {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient: Option<Gradient>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stops: Option<Vec<GradientStop>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x1: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x2: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y1: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y2: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub r1: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub r2: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum CursorUnion {
BackgroundExprRef(BackgroundExprRef),
Enum(Cursor),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum Cursor {
Alias,
#[serde(rename = "all-scroll")]
AllScroll,
Auto,
Cell,
#[serde(rename = "col-resize")]
ColResize,
#[serde(rename = "context-menu")]
ContextMenu,
Copy,
Crosshair,
Default,
#[serde(rename = "e-resize")]
EResize,
#[serde(rename = "ew-resize")]
EwResize,
Grab,
Grabbing,
Help,
Move,
#[serde(rename = "n-resize")]
NResize,
#[serde(rename = "ne-resize")]
NeResize,
#[serde(rename = "nesw-resize")]
NeswResize,
#[serde(rename = "no-drop")]
NoDrop,
None,
#[serde(rename = "not-allowed")]
NotAllowed,
#[serde(rename = "ns-resize")]
NsResize,
#[serde(rename = "nw-resize")]
NwResize,
#[serde(rename = "nwse-resize")]
NwseResize,
Pointer,
Progress,
#[serde(rename = "row-resize")]
RowResize,
#[serde(rename = "s-resize")]
SResize,
#[serde(rename = "se-resize")]
SeResize,
#[serde(rename = "sw-resize")]
SwResize,
Text,
#[serde(rename = "vertical-text")]
VerticalText,
#[serde(rename = "w-resize")]
WResize,
Wait,
#[serde(rename = "zoom-in")]
ZoomIn,
#[serde(rename = "zoom-out")]
ZoomOut,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Dir {
BackgroundExprRef(BackgroundExprRef),
Enum(TextDirection),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum TextDirection {
Ltr,
Rtl,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum DiscreteBandSize {
Double(f64),
RelativeBandSize(RelativeBandSize),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct RelativeBandSize {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum MarkConfigFill {
FillLinearGradient(FillLinearGradient),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct FillLinearGradient {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient: Option<Gradient>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stops: Option<Vec<GradientStop>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x1: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x2: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y1: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y2: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub r1: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub r2: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Opacity {
BackgroundExprRef(BackgroundExprRef),
Double(f64),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum MarkConfigInterpolate {
BackgroundExprRef(BackgroundExprRef),
Enum(Interpolate),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum Interpolate {
Basis,
#[serde(rename = "basis-closed")]
BasisClosed,
#[serde(rename = "basis-open")]
BasisOpen,
Bundle,
Cardinal,
#[serde(rename = "cardinal-closed")]
CardinalClosed,
#[serde(rename = "cardinal-open")]
CardinalOpen,
#[serde(rename = "catmull-rom")]
CatmullRom,
Linear,
#[serde(rename = "linear-closed")]
LinearClosed,
Monotone,
Natural,
Step,
#[serde(rename = "step-after")]
StepAfter,
#[serde(rename = "step-before")]
StepBefore,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum MarkInvalidDataMode {
#[serde(rename = "break-paths-filter-domains")]
BreakPathsFilterDomains,
#[serde(rename = "break-paths-show-domains")]
BreakPathsShowDomains,
#[serde(rename = "break-paths-show-path-domains")]
BreakPathsShowPathDomains,
Filter,
Show,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Line {
Bool(bool),
OverlayMarkDef(OverlayMarkDef),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct OverlayMarkDef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<TitleAlignUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<Angle>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria_role: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria_role_description: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aspect: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub blend: Option<BlendUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub clip: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<MarkConfigColor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_bottom_left: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_bottom_right: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_top_left: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_top_right: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub cursor: Option<CursorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub description: Option<Box<Color>>,
#[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<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dy: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ellipsis: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub end_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<MarkConfigFill>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_size: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub href: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub inner_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interpolate: Option<MarkConfigInterpolate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub invalid: Option<MarkInvalidDataMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line_break: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<CornerRadiusUnion>,
#[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 outer_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub pad_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius2: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius2_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub smooth: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub start_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<MarkConfigFill>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_cap: Option<Cap>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<StrokeDashUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_join: Option<StrokeJoinUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_miter_limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub style: Option<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tension: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<ConditionalPredicateValueDefTextExprRefText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta2: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta2_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit_band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit_band_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tooltip: Option<OverlayMarkDefTooltip>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub url: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<CornerRadiusUnion>,
#[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 x2_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x_offset: Option<CornerRadiusUnion>,
#[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<YUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y2_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y_offset: Option<CornerRadiusUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum StrokeJoinUnion {
BackgroundExprRef(BackgroundExprRef),
Enum(StrokeJoin),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum StrokeJoin {
Bevel,
Miter,
Round,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum OverlayMarkDefTooltip {
Bool(bool),
Double(f64),
String(String),
TooltipContent(TooltipContent),
}
#[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>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum Content {
Data,
Encoding,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum XUnion {
BackgroundExprRef(BackgroundExprRef),
Double(f64),
Enum(XEnum),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum XEnum {
Width,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum YUnion {
BackgroundExprRef(BackgroundExprRef),
Double(f64),
Enum(YEnum),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum YEnum {
Height,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum PointUnion {
Bool(bool),
Enum(PointEnum),
OverlayMarkDef(OverlayMarkDef),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum PointEnum {
Transparent,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum Mark {
Arc,
Area,
Bar,
Boxplot,
Circle,
Errorband,
Errorbar,
Geoshape,
Image,
Line,
Point,
Rect,
Rule,
Square,
Text,
Tick,
Trail,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum MarkDefExtent {
Double(f64),
Enum(ExtentExtent),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum ExtentExtent {
Ci,
Iqr,
#[serde(rename = "min-max")]
MinMax,
Stderr,
Stdev,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum BoxPlotDefHeight {
Double(f64),
RelativeBandSizeClass(RelativeBandSizeClass),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct RelativeBandSizeClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct SelectionParameter {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bind: Option<ParamBind>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub select: Option<ParamSelect>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<ParamValue>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ParamBind {
Enum(LegendBinding),
UnionMap(HashMap<String, PurpleStream>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum LegendBinding {
Legend,
Scales,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum PurpleStream {
AnythingArray(Vec<Option<serde_json::Value>>),
Double(f64),
PurpleBinding(PurpleBinding),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct PurpleBinding {
#[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<ElementUnion>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub labels: Option<Vec<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>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub event: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub between: Option<Vec<Stream>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub consume: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filter: Option<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub markname: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub marktype: Option<MarkType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub source: Option<Source>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub throttle: Option<f64>,
#[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 stream: Option<Stream>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub merge: Option<Vec<Stream>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Stream {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub between: Option<Vec<Stream>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub consume: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub debounce: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filter: Option<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub markname: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub marktype: Option<MarkType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub source: Option<Source>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub throttle: Option<f64>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stream_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stream: Option<Box<Stream>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub merge: Option<Vec<Stream>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum MarkType {
Arc,
Area,
Group,
Image,
Line,
Path,
Rect,
Rule,
Shape,
Symbol,
Text,
Trail,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum Source {
Scope,
View,
Window,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ElementUnion {
ElementClass(ElementClass),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ElementClass {}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ParamSelect {
Enum(SelectionType),
SelectionConfig(SelectionConfig),
}
#[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 clear: Option<ClearUnion>,
#[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 nearest: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub on: Option<OnUnion>,
#[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<Toggle>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub selection_config_type: Option<SelectionType>,
#[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<Toggle>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub zoom: Option<Toggle>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ClearUnion {
Bool(bool),
ClearDerivedStream(ClearDerivedStream),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ClearDerivedStream {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub between: Option<Vec<Stream>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub consume: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub debounce: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filter: Option<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub markname: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub marktype: Option<MarkType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub source: Option<Source>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub throttle: Option<f64>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ed_stream_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stream: Option<Stream>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub merge: Option<Vec<Stream>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct BrushConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub cursor: Option<Cursor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<String>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<Vec<f64>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum OnUnion {
OnDerivedStream(OnDerivedStream),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct OnDerivedStream {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub between: Option<Vec<Stream>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub consume: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub debounce: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filter: Option<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub markname: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub marktype: Option<MarkType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub source: Option<Source>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub throttle: Option<f64>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ed_stream_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stream: Option<Stream>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub merge: Option<Vec<Stream>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum SelectionResolution {
Global,
Intersect,
Union,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum SelectionType {
Interval,
Point,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Toggle {
Bool(bool),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ParamValue {
Bool(bool),
Double(f64),
String(String),
UnionMap(HashMap<String, DateTimeValue>),
UnionMapArray(Vec<HashMap<String, Option<SelectionInit>>>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum SelectionInit {
Bool(bool),
DateTime(DateTime),
Double(f64),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum DateTimeValue {
Bool(bool),
Double(f64),
String(String),
UnionArray(Vec<UnionWith>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Projection {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub center: Option<StrokeDashUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub clip_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub clip_extent: Option<ClipExtentUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub coefficient: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub distance: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub extent: Option<ClipExtentUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fit: Option<ProjectionFit>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fraction: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub lobes: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub parallel: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub parallels: Option<StrokeDashUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub point_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub precision: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ratio: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub reflect_x: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub reflect_y: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub rotate: Option<StrokeDashUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub scale: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<StrokeDashUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub spacing: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tilt: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub translate: Option<StrokeDashUnion>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub projection_type: Option<TypeUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ClipExtentUnion {
BackgroundExprRef(BackgroundExprRef),
DoubleArrayArray(Vec<Vec<f64>>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ProjectionFit {
ExprRefClass(ExprRefClass),
UnionArray(Vec<FitElement>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum FitElement {
FeatureArray(Vec<Feature>),
PurpleFeature(PurpleFeature),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Feature {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bbox: Option<Vec<f64>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub geometry: Option<Geometry>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub id: Option<Id>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub properties: Option<HashMap<String, Option<serde_json::Value>>>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub feature_type: Option<FitType>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum FitType {
Feature,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Geometry {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bbox: Option<Vec<f64>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub coordinates: Option<Vec<Coordinate>>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub geometry_type: Option<GeometryType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub geometries: Option<Vec<Geometry>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Coordinate {
Double(f64),
UnionArray(Vec<CoordinateVector2Number>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum CoordinateVector2Number {
Double(f64),
UnionArray(Vec<Vector2NumberVector2Number>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Vector2NumberVector2Number {
Double(f64),
DoubleArray(Vec<f64>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum GeometryType {
#[serde(rename = "GeometryCollection")]
GeometryCollection,
#[serde(rename = "LineString")]
LineString,
#[serde(rename = "MultiLineString")]
MultiLineString,
#[serde(rename = "MultiPoint")]
MultiPoint,
#[serde(rename = "MultiPolygon")]
MultiPolygon,
Point,
Polygon,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Id {
Double(f64),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct PurpleFeature {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bbox: Option<Vec<f64>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub geometry: Option<Geometry>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub id: Option<Id>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub properties: Option<HashMap<String, Option<serde_json::Value>>>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub feature_type: Option<FeatureType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub features: Option<Vec<FeatureGeometryGeoJsonProperties>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum FeatureType {
Feature,
#[serde(rename = "FeatureCollection")]
FeatureCollection,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct FeatureGeometryGeoJsonProperties {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bbox: Option<Vec<f64>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub geometry: Option<Geometry>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub id: Option<Id>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub properties: Option<HashMap<String, Option<serde_json::Value>>>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub feature_geometry_geo_json_properties_type: Option<FitType>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ExprRefClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bbox: Option<Vec<f64>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub geometry: Option<Geometry>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub id: Option<Id>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub properties: Option<HashMap<String, Option<serde_json::Value>>>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub feature_type: Option<FeatureType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub features: Option<Vec<FeatureGeometryGeoJsonProperties>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum TypeUnion {
BackgroundExprRef(BackgroundExprRef),
Enum(ProjectionType),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum ProjectionType {
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 = "equalEarth")]
EqualEarth,
Equirectangular,
Gnomonic,
Identity,
Mercator,
#[serde(rename = "naturalEarth1")]
NaturalEarth1,
Orthographic,
Stereographic,
#[serde(rename = "transverseMercator")]
TransverseMercator,
}
#[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)]
#[serde(rename_all = "snake_case")]
pub enum ResolveMode {
Independent,
Shared,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct LegendResolveMap {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<ResolveMode>,
#[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(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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<ResolveMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<ResolveMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<ResolveMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time: Option<ResolveMode>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleResolveMap {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<ResolveMode>,
#[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(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 radius: 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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<ResolveMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<ResolveMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<ResolveMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta: Option<ResolveMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time: 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 x_offset: Option<ResolveMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y: Option<ResolveMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y_offset: Option<ResolveMode>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum TitleUnion {
String(String),
StringArray(Vec<String>),
TitleParams(Box<TitleParams>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(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<TitleAnchorEnum>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub baseline: Option<Baseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dx: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dy: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_size: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub frame: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub limit: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub orient: Option<TitleParamsOrient>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub style: Option<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub subtitle: Option<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub subtitle_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub subtitle_font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub subtitle_font_size: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub subtitle_font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub subtitle_font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub subtitle_line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub subtitle_padding: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<ConditionalValueDefTextExprRefText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub zindex: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum TitleParamsOrient {
BackgroundExprRef(BackgroundExprRef),
Enum(TitleOrient),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum TitleOrient {
Bottom,
Left,
None,
Right,
Top,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(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<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin: Option<AngleBin>,
#[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 bandwidth: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub counts: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub cumulative: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub density: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub extent: Option<TransformExtent>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub maxsteps: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub minsteps: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub resolve: Option<ResolveMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub steps: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub param: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filter: Option<ConditionalValueDefNumberExprRefPredicateComposition>,
#[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<TransformMethod>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub loess: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub on: Option<String>,
#[serde(rename = "default")]
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub transform_default: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub from: Option<Lookup>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub lookup: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub probs: Option<Vec<f64>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub quantile: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub step: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub order: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub params: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub regression: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit: Option<TransformTimeUnit>,
#[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(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>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub limit: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub op: Option<AggregateOp>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub pivot: Option<String>,
}
#[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)]
#[serde(rename_all = "snake_case")]
pub enum AggregateOp {
Argmax,
Argmin,
Average,
Ci0,
Ci1,
Count,
Distinct,
Exponential,
Exponentialb,
Max,
Mean,
Median,
Min,
Missing,
Product,
Q1,
Q3,
Stderr,
Stdev,
Stdevp,
Sum,
Valid,
Values,
Variance,
Variancep,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum TransformExtent {
DoubleArray(Vec<f64>),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Lookup {
#[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>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub param: 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)]
#[serde(rename_all = "snake_case")]
pub enum TransformMethod {
Exp,
Linear,
Log,
Max,
Mean,
Median,
Min,
Poly,
Pow,
Quad,
Value,
}
#[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)]
#[serde(untagged)]
#[derive(From)]
pub enum TransformTimeUnit {
Enum(TimeUnit),
TimeUnitTransformParams(TimeUnitTransformParams),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct TimeUnitTransformParams {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub maxbins: 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 unit: Option<TimeUnit>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub utc: Option<bool>,
}
#[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)]
#[serde(rename_all = "snake_case")]
pub enum Op {
Argmax,
Argmin,
Average,
Ci0,
Ci1,
Count,
#[serde(rename = "cume_dist")]
CumeDist,
#[serde(rename = "dense_rank")]
DenseRank,
Distinct,
Exponential,
Exponentialb,
#[serde(rename = "first_value")]
FirstValue,
Lag,
#[serde(rename = "last_value")]
LastValue,
Lead,
Max,
Mean,
Median,
Min,
Missing,
#[serde(rename = "nth_value")]
NthValue,
Ntile,
#[serde(rename = "percent_rank")]
PercentRank,
Product,
Q1,
Q3,
Rank,
#[serde(rename = "row_number")]
RowNumber,
Stderr,
Stdev,
Stdevp,
Sum,
Valid,
Values,
Variance,
Variancep,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ViewBackground {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub cursor: Option<Cursor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<CornerRadiusUnion>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub stroke: RemovableValue<Color>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_cap: Option<Cap>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<StrokeDashUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_join: Option<StrokeJoinUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_miter_limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub style: Option<LegendText>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum RepeatUnion {
RepeatMapping(RepeatMapping),
StringArray(Vec<String>),
}
#[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>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub layer: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct EdEncoding {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<AngleClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<ColorClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub column: Option<RowColumnEncodingFieldDef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub description: Option<DescriptionClass>,
#[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<FacetEncodingFieldDef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<FillClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<FillOpacityClass>,
#[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<KeyClass>,
#[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<LongitudeClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub longitude2: Option<Longitude2Class>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<OpacityClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub order: Option<Order>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius: Option<RadiusClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius2: Option<Radius2Class>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub row: Option<RowColumnEncodingFieldDef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<MarkPropDefStringNullTypeForShape>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<SizeClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<StrokeClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<MarkPropDefNumber>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<StrokeOpacityClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<StrokeWidthClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<TextDef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta: Option<ThetaClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta2: Option<Theta2Class>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time: Option<TimeFieldDef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tooltip: Option<EncodingTooltip>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub url: Option<UrlClass>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x_error: Option<XErrorClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x_error2: Option<XError2Class>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x_offset: Option<XOffsetClass>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y_error: Option<YErrorClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y_error2: Option<YError2Class>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y_offset: Option<YOffsetClass>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ConfigClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub arc: Option<RectConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub area: Option<AreaConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub autosize: Option<Box<Autosize>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis: Option<AxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_band: Option<AxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_bottom: Option<AxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_discrete: Option<AxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_left: Option<AxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_point: Option<AxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_quantitative: Option<AxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_right: Option<AxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_temporal: Option<AxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_top: Option<AxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_x: Option<AxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_x_band: Option<AxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_x_discrete: Option<AxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_x_point: Option<AxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_x_quantitative: Option<AxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_x_temporal: Option<AxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_y: Option<AxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_y_band: Option<AxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_y_discrete: Option<AxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_y_point: Option<AxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_y_quantitative: Option<AxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub axis_y_temporal: Option<AxisConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub background: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bar: Option<BarConfig>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub count_title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub custom_format_types: Option<bool>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub field_title: Option<FieldTitle>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font: Option<String>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub header_column: Option<HeaderConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub header_facet: Option<HeaderConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub header_row: Option<HeaderConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub image: Option<RectConfig>,
#[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 line_break: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub locale: Option<Locale>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub mark: Option<MarkConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub normalized_number_format: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub normalized_number_format_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub number_format: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub number_format_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub padding: Option<Box<Padding>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub params: Option<Vec<TopLevelParameter>>,
#[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<Box<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 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<SelectionClass>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub square: Option<MarkConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub style: Option<HashMap<String, StyleValue>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<MarkConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick: Option<TickConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_format: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_format_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title: Option<BaseTitleNoValueRefs>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tooltip_format: Option<FormatConfig>,
#[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)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct RectConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<TitleAlignUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<Angle>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria_role: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria_role_description: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aspect: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin_spacing: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub blend: Option<BlendUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<MarkConfigColor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub continuous_band_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_bottom_left: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_bottom_right: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_top_left: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_top_right: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub cursor: Option<CursorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub description: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dir: Option<Dir>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub discrete_band_size: Option<DiscreteBandSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dx: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dy: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ellipsis: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub end_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<MarkConfigFill>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_size: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub href: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub inner_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interpolate: Option<MarkConfigInterpolate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub invalid: Option<MarkInvalidDataMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line_break: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub min_band_size: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<CornerRadiusUnion>,
#[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 outer_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub pad_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius2: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub smooth: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub start_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<MarkConfigFill>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_cap: Option<Cap>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<StrokeDashUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_join: Option<StrokeJoinUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_miter_limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tension: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<ConditionalPredicateValueDefTextExprRefText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta2: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit_band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit_band_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tooltip: Option<OverlayMarkDefTooltip>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub url: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<CornerRadiusUnion>,
#[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<YUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct AreaConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<TitleAlignUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<Angle>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria_role: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria_role_description: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aspect: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub blend: Option<BlendUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<MarkConfigColor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_bottom_left: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_bottom_right: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_top_left: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_top_right: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub cursor: Option<CursorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub description: Option<Box<Color>>,
#[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<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dy: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ellipsis: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub end_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<MarkConfigFill>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_size: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub href: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub inner_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interpolate: Option<MarkConfigInterpolate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub invalid: Option<MarkInvalidDataMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line: Option<Line>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line_break: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<CornerRadiusUnion>,
#[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 outer_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub pad_angle: Option<CornerRadiusUnion>,
#[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<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius2: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub smooth: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub start_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<MarkConfigFill>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_cap: Option<Cap>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<StrokeDashUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_join: Option<StrokeJoinUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_miter_limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tension: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<ConditionalPredicateValueDefTextExprRefText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta2: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit_band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit_band_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tooltip: Option<OverlayMarkDefTooltip>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub url: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<CornerRadiusUnion>,
#[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<YUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct AxisConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub description: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub disable: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_cap: Option<Cap>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_dash: Option<StrokeDashUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_dash_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_opacity: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_width: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format: Option<Format>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_cap: Option<Cap>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_color: Option<GridColorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_dash: Option<AxisBandGridDash>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_dash_offset: Option<GridDashOffsetUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_opacity: Option<GridOpacityUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_width: Option<GridWidthUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_align: Option<ConditionalAxisPropertyAlignNull>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_angle: Option<LabelAngle>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_baseline: Option<PurpleTextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_bound: Option<Label>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_color: Option<GridColorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_expr: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_flush: Option<LabelFlush>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_flush_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font: Option<ConditionalAxisPropertyStringNull>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_size: Option<GridWidthUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_style: Option<ConditionalAxisPropertyFontStyleNull>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_weight: Option<FontWeight>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_offset: Option<GridDashOffsetUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_opacity: Option<GridDashOffsetUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_overlap: Option<LabelOverlapUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_padding: Option<GridDashOffsetUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub labels: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_separation: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub max_extent: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub min_extent: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub orient: Option<TitleOrientUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub position: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub style: Option<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_band: Option<TickBandUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_cap: Option<Cap>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_color: Option<GridColorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_count: Option<TickCount>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_dash: Option<AxisBandTickDash>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_dash_offset: Option<GridDashOffsetUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_extra: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_min_step: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_opacity: Option<GridDashOffsetUnion>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_size: Option<GridWidthUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_width: Option<GridWidthUnion>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_align: Option<TitleAlignUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_anchor: Option<TitleAnchorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_size: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_limit: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_opacity: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_padding: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_x: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_y: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub translate: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub values: Option<Values>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub zindex: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum AxisBandGridDash {
AmbitiousExprRef(AmbitiousExprRef),
DoubleArray(Vec<f64>),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct AmbitiousExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<TentacledConditionalPredicateValueDefNumberNullExprRef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Vec<f64>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum AxisBandTickDash {
CunningExprRef(CunningExprRef),
DoubleArray(Vec<f64>),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct CunningExprRef {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub condition: Option<TentacledConditionalPredicateValueDefNumberNullExprRef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Vec<f64>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct BarConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<TitleAlignUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<Angle>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria_role: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria_role_description: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aspect: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin_spacing: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub blend: Option<BlendUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<MarkConfigColor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub continuous_band_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_bottom_left: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_bottom_right: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_end: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_top_left: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_top_right: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub cursor: Option<CursorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub description: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dir: Option<Dir>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub discrete_band_size: Option<DiscreteBandSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dx: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dy: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ellipsis: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub end_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<MarkConfigFill>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_size: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub href: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub inner_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interpolate: Option<MarkConfigInterpolate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub invalid: Option<MarkInvalidDataMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line_break: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub min_band_size: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<CornerRadiusUnion>,
#[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 outer_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub pad_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius2: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub smooth: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub start_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<MarkConfigFill>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_cap: Option<Cap>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<StrokeDashUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_join: Option<StrokeJoinUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_miter_limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tension: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<ConditionalPredicateValueDefTextExprRefText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta2: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit_band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit_band_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tooltip: Option<OverlayMarkDefTooltip>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub url: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<CornerRadiusUnion>,
#[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<YUnion>,
}
#[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<AnyMarkConfig>,
#[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<AnyMarkConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub outliers: Option<AnyMarkConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub rule: Option<AnyMarkConfig>,
#[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<AnyMarkConfig>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum BoxplotExtent {
Double(f64),
Enum(ExtentEnum),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum ExtentEnum {
#[serde(rename = "min-max")]
MinMax,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct MarkConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<TitleAlignUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<Angle>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria_role: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria_role_description: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aspect: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub blend: Option<BlendUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<MarkConfigColor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_bottom_left: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_bottom_right: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_top_left: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_top_right: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub cursor: Option<CursorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub description: Option<Box<Color>>,
#[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<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dy: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ellipsis: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub end_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<MarkConfigFill>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_size: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub href: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub inner_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interpolate: Option<MarkConfigInterpolate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub invalid: Option<MarkInvalidDataMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line_break: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<CornerRadiusUnion>,
#[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 outer_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub pad_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius2: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub smooth: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub start_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<MarkConfigFill>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_cap: Option<Cap>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<StrokeDashUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_join: Option<StrokeJoinUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_miter_limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tension: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<ConditionalPredicateValueDefTextExprRefText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta2: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit_band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit_band_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tooltip: Option<OverlayMarkDefTooltip>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub url: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<CornerRadiusUnion>,
#[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<YUnion>,
}
#[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<AnyMarkConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub borders: Option<AnyMarkConfig>,
#[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)]
#[serde(rename_all = "snake_case")]
pub enum ErrorbandExtent {
Ci,
Iqr,
Stderr,
Stdev,
}
#[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<AnyMarkConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub thickness: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ticks: Option<AnyMarkConfig>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum FieldTitle {
Functional,
Plain,
Verbal,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct HeaderConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format: Option<Format>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_align: Option<TitleAlignUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_anchor: Option<TitleAnchorEnum>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_angle: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_expr: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_size: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_orient: Option<Orient>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_padding: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub labels: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub orient: Option<Orient>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_align: Option<TitleAlignUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_anchor: Option<TitleAnchorEnum>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_angle: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_size: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_orient: Option<Orient>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_padding: Option<CornerRadiusUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct LegendConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub clip_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub column_padding: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub columns: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub description: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub direction: Option<Orientation>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub disable: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_direction: Option<Direction>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_horizontal_max_length: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_horizontal_min_length: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_label_limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_label_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_length: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_opacity: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_stroke_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_stroke_width: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_thickness: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_vertical_max_length: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient_vertical_min_length: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_align: Option<GridAlign>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_align: Option<TitleAlignUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_size: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_offset: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_opacity: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_overlap: Option<LabelOverlapUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_padding: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_separation: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub layout: Option<BackgroundExprRef>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub legend_x: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub legend_y: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub offset: Option<CornerRadiusUnion>,
#[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<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub row_padding: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<StrokeDashUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_base_fill_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_base_stroke_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_dash: Option<StrokeDashUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_dash_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_direction: Option<Direction>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_fill_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_opacity: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_size: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_stroke_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_stroke_width: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub symbol_type: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_count: Option<TickCount>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_align: Option<TitleAlignUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_anchor: Option<TitleAnchorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_size: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_limit: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_opacity: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_orient: Option<TitleOrientUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_padding: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub unselected_opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub zindex: Option<FontSize>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Direction {
BackgroundExprRef(BackgroundExprRef),
Enum(Orientation),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct LineConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<TitleAlignUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<Angle>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria_role: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria_role_description: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aspect: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub blend: Option<BlendUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<MarkConfigColor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_bottom_left: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_bottom_right: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_top_left: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_top_right: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub cursor: Option<CursorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub description: Option<Box<Color>>,
#[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<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dy: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ellipsis: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub end_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<MarkConfigFill>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_size: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub href: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub inner_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interpolate: Option<MarkConfigInterpolate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub invalid: Option<MarkInvalidDataMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line_break: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<CornerRadiusUnion>,
#[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 outer_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub pad_angle: Option<CornerRadiusUnion>,
#[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<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius2: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub smooth: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub start_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<MarkConfigFill>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_cap: Option<Cap>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<StrokeDashUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_join: Option<StrokeJoinUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_miter_limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tension: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<ConditionalPredicateValueDefTextExprRefText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta2: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit_band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit_band_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tooltip: Option<OverlayMarkDefTooltip>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub url: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<CornerRadiusUnion>,
#[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<YUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct Locale {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub number: Option<NumberLocale>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time: Option<TimeLocale>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct NumberLocale {
pub currency: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub decimal: Option<String>,
pub grouping: Vec<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub minus: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub nan: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub numerals: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub percent: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub thousands: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct TimeLocale {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub date_time: Option<String>,
pub days: Vec<String>,
pub months: Vec<String>,
pub periods: Vec<String>,
pub short_days: Vec<String>,
pub short_months: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum Padding {
Double(f64),
MagentaExprRef(MagentaExprRef),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct MagentaExprRef {
#[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>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct TopLevelParameter {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bind: Option<TopLevelParameterBind>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub expr: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub react: Option<bool>,
#[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 select: Option<TopLevelParameterSelect>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub views: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum TopLevelParameterBind {
Enum(LegendBinding),
UnionMap(HashMap<String, BindingValue>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum BindingValue {
AnythingArray(Vec<Option<serde_json::Value>>),
BindingBinding(BindingBinding),
Double(f64),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct BindingBinding {
#[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<ElementUnion>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub labels: Option<Vec<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>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub event: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub between: Option<Vec<Stream>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub consume: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filter: Option<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub markname: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub marktype: Option<MarkType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub source: Option<Source>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub throttle: Option<f64>,
#[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 stream: Option<Stream>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub merge: Option<Vec<Stream>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum TopLevelParameterSelect {
Enum(SelectionType),
SelectionConfig(SelectionConfig),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum RangeValue {
AnythingArray(Vec<Option<serde_json::Value>>),
Enum(RangeEnum),
RangeClass(RangeClass),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct RangeClass {
#[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<RangeText>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum RangeText {
String(String),
StringArray(Vec<String>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub animation_duration: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_padding_inner: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_padding_outer: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_with_nested_offset_padding_inner: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_with_nested_offset_padding_outer: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bar_band_padding_inner: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub clamp: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub continuous_padding: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub frames_per_second: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub invalid: Option<ScaleInvalidDataConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub max_band_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub max_font_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub max_opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub max_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub max_stroke_width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub min_band_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub min_font_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub min_opacity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub min_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub min_stroke_width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub offset_band_padding_inner: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub offset_band_padding_outer: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub point_padding: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub quantile_count: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub quantize_count: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub rect_band_padding_inner: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub round: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_band_padding_inner: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub use_unaggregated_domain: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x_reverse: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub zero: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleInvalidDataConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<ScaleInvalidDataShowAsAngle>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<ScaleInvalidDataShowAsColor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<ScaleInvalidDataShowAsFill>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<ScaleInvalidDataShowAsFillOpacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<ScaleInvalidDataShowAsOpacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius: Option<ScaleInvalidDataShowAsRadius>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<ScaleInvalidDataShowAsShape>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<ScaleInvalidDataShowAsSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<ScaleInvalidDataShowAsStroke>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<ScaleInvalidDataShowAsStrokeDash>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<ScaleInvalidDataShowAsStrokeOpacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<ScaleInvalidDataShowAsStrokeWidth>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta: Option<ScaleInvalidDataShowAsTheta>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time: Option<ScaleInvalidDataShowAsTime>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x: Option<ScaleInvalidDataShowAsX>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x_offset: Option<ScaleInvalidDataShowAsXOffset>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y: Option<ScaleInvalidDataShowAsY>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y_offset: Option<ScaleInvalidDataShowAsYOffset>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleInvalidDataShowAsAngle {
Enum(ScaleInvalidDataShowAs),
ScaleInvalidDataShowAsValueAngle(ScaleInvalidDataShowAsValueAngle),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleInvalidDataShowAsValueAngle {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum ScaleInvalidDataShowAs {
#[serde(rename = "zero-or-min")]
ZeroOrMin,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleInvalidDataShowAsColor {
Enum(ScaleInvalidDataShowAs),
ScaleInvalidDataShowAsValueColor(ScaleInvalidDataShowAsValueColor),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleInvalidDataShowAsValueColor {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<ScaleInvalidDataShowAsValueColorValue>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleInvalidDataShowAsValueColorValue {
PurpleGradient(PurpleGradient),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct PurpleGradient {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient: Option<Gradient>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub id: Option<String>,
pub stops: Vec<GradientStop>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x1: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x2: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y1: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y2: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub r1: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub r2: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleInvalidDataShowAsFill {
Enum(ScaleInvalidDataShowAs),
ScaleInvalidDataShowAsValueFill(ScaleInvalidDataShowAsValueFill),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleInvalidDataShowAsValueFill {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<ScaleInvalidDataShowAsValueFillValue>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleInvalidDataShowAsValueFillValue {
FluffyGradient(FluffyGradient),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct FluffyGradient {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub gradient: Option<Gradient>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub id: Option<String>,
pub stops: Vec<GradientStop>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x1: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub x2: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y1: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub y2: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub r1: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub r2: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleInvalidDataShowAsFillOpacity {
Enum(ScaleInvalidDataShowAs),
ScaleInvalidDataShowAsValueFillOpacity(ScaleInvalidDataShowAsValueFillOpacity),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleInvalidDataShowAsValueFillOpacity {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleInvalidDataShowAsOpacity {
Enum(ScaleInvalidDataShowAs),
ScaleInvalidDataShowAsValueOpacity(ScaleInvalidDataShowAsValueOpacity),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleInvalidDataShowAsValueOpacity {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleInvalidDataShowAsRadius {
Enum(ScaleInvalidDataShowAs),
ScaleInvalidDataShowAsValueRadius(ScaleInvalidDataShowAsValueRadius),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleInvalidDataShowAsValueRadius {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleInvalidDataShowAsShape {
Enum(ScaleInvalidDataShowAs),
ScaleInvalidDataShowAsValueShape(ScaleInvalidDataShowAsValueShape),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleInvalidDataShowAsValueShape {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleInvalidDataShowAsSize {
Enum(ScaleInvalidDataShowAs),
ScaleInvalidDataShowAsValueSize(ScaleInvalidDataShowAsValueSize),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleInvalidDataShowAsValueSize {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleInvalidDataShowAsStroke {
Enum(ScaleInvalidDataShowAs),
ScaleInvalidDataShowAsValueStroke(ScaleInvalidDataShowAsValueStroke),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleInvalidDataShowAsValueStroke {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<ScaleInvalidDataShowAsValueFillValue>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleInvalidDataShowAsStrokeDash {
Enum(ScaleInvalidDataShowAs),
ScaleInvalidDataShowAsValueStrokeDash(ScaleInvalidDataShowAsValueStrokeDash),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleInvalidDataShowAsValueStrokeDash {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<Vec<f64>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleInvalidDataShowAsStrokeOpacity {
Enum(ScaleInvalidDataShowAs),
ScaleInvalidDataShowAsValueStrokeOpacity(ScaleInvalidDataShowAsValueStrokeOpacity),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleInvalidDataShowAsValueStrokeOpacity {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleInvalidDataShowAsStrokeWidth {
Enum(ScaleInvalidDataShowAs),
ScaleInvalidDataShowAsValueStrokeWidth(ScaleInvalidDataShowAsValueStrokeWidth),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleInvalidDataShowAsValueStrokeWidth {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleInvalidDataShowAsTheta {
Enum(ScaleInvalidDataShowAs),
ScaleInvalidDataShowAsValueTheta(ScaleInvalidDataShowAsValueTheta),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleInvalidDataShowAsValueTheta {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleInvalidDataShowAsTime {
Enum(ScaleInvalidDataShowAs),
ScaleInvalidDataShowAsValueTime(ScaleInvalidDataShowAsValueTime),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleInvalidDataShowAsValueTime {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleInvalidDataShowAsX {
Enum(ScaleInvalidDataShowAs),
ScaleInvalidDataShowAsValueX(ScaleInvalidDataShowAsValueX),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleInvalidDataShowAsValueX {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<ScaleInvalidDataShowAsValueXValue>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleInvalidDataShowAsValueXValue {
Double(f64),
Enum(XEnum),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleInvalidDataShowAsXOffset {
Enum(ScaleInvalidDataShowAs),
ScaleInvalidDataShowAsValueXOffset(ScaleInvalidDataShowAsValueXOffset),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleInvalidDataShowAsValueXOffset {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleInvalidDataShowAsY {
Enum(ScaleInvalidDataShowAs),
ScaleInvalidDataShowAsValueY(ScaleInvalidDataShowAsValueY),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleInvalidDataShowAsValueY {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub value: Option<ScaleInvalidDataShowAsValueYValue>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleInvalidDataShowAsValueYValue {
Double(f64),
Enum(YEnum),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum ScaleInvalidDataShowAsYOffset {
Enum(ScaleInvalidDataShowAs),
ScaleInvalidDataShowAsValueYOffset(ScaleInvalidDataShowAsValueYOffset),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ScaleInvalidDataShowAsValueYOffset {
#[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 SelectionClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interval: Option<IntervalSelectionConfigWithoutType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub point: Option<PointSelectionConfigWithoutType>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct IntervalSelectionConfigWithoutType {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub clear: Option<ClearUnion>,
#[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 mark: Option<BrushConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub on: Option<OnUnion>,
#[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<Toggle>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub zoom: Option<Toggle>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct PointSelectionConfigWithoutType {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub clear: Option<ClearUnion>,
#[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 nearest: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub on: Option<OnUnion>,
#[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<Toggle>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct StyleValue {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<TitleAlignUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<Angle>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria_role: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria_role_description: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aspect: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bin_spacing: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub blend: Option<BlendUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<MarkConfigColor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub continuous_band_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_bottom_left: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_bottom_right: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_top_left: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_top_right: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub cursor: Option<CursorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub description: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dir: Option<Dir>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub discrete_band_size: Option<DiscreteBandSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dx: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dy: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ellipsis: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub end_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<MarkConfigFill>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_size: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub href: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub inner_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interpolate: Option<MarkConfigInterpolate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub invalid: Option<MarkInvalidDataMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line_break: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub min_band_size: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<CornerRadiusUnion>,
#[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<StyleOrient>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub outer_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub pad_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius2: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub smooth: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub start_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<MarkConfigFill>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_cap: Option<Cap>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<StrokeDashUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_join: Option<StrokeJoinUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_miter_limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tension: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<ConditionalPredicateValueDefTextExprRefText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta2: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit_band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit_band_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tooltip: Option<OverlayMarkDefTooltip>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub url: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<CornerRadiusUnion>,
#[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<YUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line: Option<Line>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub point: Option<PointUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_end: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub thickness: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub band_position: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_cap: Option<Cap>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_dash: Option<StrokeDashUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_dash_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_opacity: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub domain_width: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format: Option<Format>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub format_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_cap: Option<Cap>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_color: Option<GridColorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_dash: Option<AxisGridDash>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_dash_offset: Option<GridDashOffsetUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_opacity: Option<GridOpacityUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub grid_width: Option<GridWidthUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_align: Option<ConditionalAxisPropertyAlignNull>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_angle: Option<LabelAngle>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_baseline: Option<PurpleTextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_bound: Option<Label>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_color: Option<GridColorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_expr: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_flush: Option<LabelFlush>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_flush_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font: Option<ConditionalAxisPropertyStringNull>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_size: Option<GridWidthUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_style: Option<ConditionalAxisPropertyFontStyleNull>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_font_weight: Option<FontWeight>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_offset: Option<GridDashOffsetUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_opacity: Option<GridDashOffsetUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_overlap: Option<LabelOverlapUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_padding: Option<GridDashOffsetUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub labels: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub label_separation: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub max_extent: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub min_extent: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub position: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub style: Option<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_band: Option<TickBandUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_cap: Option<Cap>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_color: Option<GridColorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_count: Option<TickCount>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_dash: Option<AxisTickDash>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_dash_offset: Option<GridDashOffsetUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_extra: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_min_step: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_opacity: Option<GridDashOffsetUnion>,
#[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(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_size: Option<GridWidthUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tick_width: Option<GridWidthUnion>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub title: RemovableValue<LegendText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_align: Option<TitleAlignUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_anchor: Option<TitleAnchorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_baseline: Option<TextBaseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_size: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_limit: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_opacity: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_padding: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_x: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title_y: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub translate: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub values: Option<Values>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub zindex: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum StyleOrient {
BackgroundExprRef(BackgroundExprRef),
Enum(AxisOrient),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum AxisOrient {
Bottom,
Horizontal,
Left,
Right,
Top,
Vertical,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct TickConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<TitleAlignUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<Angle>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria_role: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria_role_description: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aspect: Option<Aria>,
#[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 bin_spacing: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub blend: Option<BlendUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<MarkConfigColor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub continuous_band_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_bottom_left: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_bottom_right: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_top_left: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius_top_right: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub cursor: Option<CursorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub description: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dir: Option<Dir>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub discrete_band_size: Option<DiscreteBandSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dx: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dy: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub ellipsis: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub end_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<MarkConfigFill>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub filled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_size: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub href: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub inner_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub interpolate: Option<MarkConfigInterpolate>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub invalid: Option<MarkInvalidDataMode>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line_break: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub min_band_size: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<CornerRadiusUnion>,
#[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 outer_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub pad_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub radius2: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub shape: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub size: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub smooth: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub start_angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke: Option<MarkConfigFill>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_cap: Option<Cap>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<StrokeDashUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_join: Option<StrokeJoinUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_miter_limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tension: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub text: Option<ConditionalPredicateValueDefTextExprRefText>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub theta2: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub thickness: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit_band_position: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_unit_band_size: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub tooltip: Option<OverlayMarkDefTooltip>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub url: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<CornerRadiusUnion>,
#[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<YUnion>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct BaseTitleNoValueRefs {
#[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<TitleAnchorUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub angle: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub aria: Option<Aria>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub baseline: Option<Baseline>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dx: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub dy: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_size: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub frame: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub limit: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub orient: Option<TitleParamsOrient>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub subtitle_color: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub subtitle_font: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub subtitle_font_size: Option<FontSize>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub subtitle_font_style: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub subtitle_font_weight: Option<FontWeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub subtitle_line_height: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub subtitle_padding: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub zindex: Option<FontSize>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct FormatConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub normalized_number_format: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub normalized_number_format_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub number_format: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub number_format_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_format: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub time_format_type: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[derive(Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct ViewConfig {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub clip: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub continuous_height: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub continuous_width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub corner_radius: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub cursor: Option<Cursor>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub discrete_height: Option<DiscreteHeightUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub discrete_width: Option<DiscreteWidthUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill: Option<Box<Color>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub fill_opacity: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub opacity: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub step: Option<f64>,
#[serde(default, skip_serializing_if = "RemovableValue::is_default")]
#[builder(default)]
pub stroke: RemovableValue<Color>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_cap: Option<Cap>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash: Option<StrokeDashUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_dash_offset: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_join: Option<StrokeJoinUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_miter_limit: Option<CornerRadiusUnion>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_opacity: Option<Opacity>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub stroke_width: Option<FontSize>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum DiscreteHeightUnion {
DiscreteHeightClass(DiscreteHeightClass),
Double(f64),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct DiscreteHeightClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub step: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
#[derive(From)]
pub enum DiscreteWidthUnion {
DiscreteWidthClass(DiscreteWidthClass),
Double(f64),
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct DiscreteWidthClass {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub step: Option<f64>,
}
#[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, Default, Builder)]
#[builder(setter(into, strip_option))]
pub struct VegaliteSpec {
#[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<SpecEncoding>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub height: Option<SpecHeight>,
#[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<Box<Projection>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub resolve: Option<Box<Resolve>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub title: Option<TitleUnion>,
#[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<Box<ViewBackground>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub width: Option<SpecHeight>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub mark: Option<AnyMark>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub params: Option<Vec<SelectionParameter>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<Box<VegaliteAlign>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub bounds: Option<Box<Bounds>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub center: Option<Box<Center>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub spacing: Option<Box<Spacing>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub columns: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub repeat: Option<Box<RepeatUnion>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub spec: Option<Box<SpecSpec>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub facet: Option<Box<Facet>>,
#[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>>,
}