pub struct DataVisualization { /* private fields */ }Expand description
Data visualization block representation.
§Fields and Validations
For more details, see the official documentation.
| Field | Type | Required | Validation |
|---|---|---|---|
| title | String | Yes | Max length 50 characters |
| chart | Chart | Yes | N/A |
| block_id | String | No | Max length 255 characters |
§Example 1) Pie chart
use slack_messaging::blocks::data_visualization::prelude::*;
let data_viz = DataVisualization::builder()
.title("My Favorite Candy Bars")
.chart(
PieChart::builder()
.segments(segments(vec![
("Kit Kat", 45),
("Twix", 28),
("Crunch", 18),
("Milky Way", 9),
])?)
.build()?
)
.build()?;
let expected = serde_json::json!({
"type": "data_visualization",
"title": "My Favorite Candy Bars",
"chart": {
"type": "pie",
"segments": [
{ "label": "Kit Kat", "value": 45 },
{ "label": "Twix", "value": 28 },
{ "label": "Crunch", "value": 18 },
{ "label": "Milky Way", "value": 9 }
]
}
});
let json = serde_json::to_value(data_viz).unwrap();
assert_eq!(json, expected);§Example 2) Bar chart
use slack_messaging::blocks::data_visualization::prelude::*;
let data_viz = DataVisualization::builder()
.title("My Favorite Pies by Percentage of Tastiness")
.chart(
BarChart::builder()
.series(vec![
DataSeries::builder()
.name("Pies")
.data(data_points(vec![
("Strawberry Rhubarb", 85),
("Pumpkin", 70),
("Lemon Meringue", 72),
("Blueberry", 90),
("Key Lime", 56),
])?)
.build()?
])
.axis_config(
AxisConfig::builder()
.categories(vec![
"Strawberry Rhubarb",
"Pumpkin",
"Lemon Meringue",
"Blueberry",
"Key Lime",
])
.x_label("Pies")
.y_label("Percentage of Tastiness")
.build()?
)
.build()?
)
.build()?;
let expected = serde_json::json!({
"type": "data_visualization",
"title": "My Favorite Pies by Percentage of Tastiness",
"chart": {
"type": "bar",
"series": [
{
"name": "Pies",
"data": [
{ "label": "Strawberry Rhubarb", "value": 85 },
{ "label": "Pumpkin", "value": 70 },
{ "label": "Lemon Meringue", "value": 72 },
{ "label": "Blueberry", "value": 90 },
{ "label": "Key Lime", "value": 56 }
]
}
],
"axis_config": {
"categories": [
"Strawberry Rhubarb",
"Pumpkin",
"Lemon Meringue",
"Blueberry",
"Key Lime"
],
"x_label": "Pies",
"y_label": "Percentage of Tastiness"
}
}
});
let json = serde_json::to_value(data_viz).unwrap();
assert_eq!(json, expected);§Example 3) Area chart
use slack_messaging::blocks::data_visualization::prelude::*;
let data_viz = DataVisualization::builder()
.title("Daily Active Users")
.chart(
AreaChart::builder()
.series(vec![
DataSeries::builder()
.name("Pied Piper Free Tier")
.data(data_points(vec![
("Mon", 12000),
("Tue", 13500),
("Wed", 15200),
("Thu", 14800),
("Fri", 16400),
])?)
.build()?,
DataSeries::builder()
.name("Pied Piper Paid Tier")
.data(data_points(vec![
("Mon", 4500),
("Tue", 4800),
("Wed", 5100),
("Thu", 5600),
("Fri", 6200),
])?)
.build()?,
])
.axis_config(
AxisConfig::builder()
.categories(vec!["Mon", "Tue", "Wed", "Thu", "Fri"])
.x_label("Day")
.y_label("Users")
.build()?
)
.build()?
)
.build()?;
let expected = serde_json::json!({
"type": "data_visualization",
"title": "Daily Active Users",
"chart": {
"type": "area",
"series": [
{
"name": "Pied Piper Free Tier",
"data": [
{ "label": "Mon", "value": 12000 },
{ "label": "Tue", "value": 13500 },
{ "label": "Wed", "value": 15200 },
{ "label": "Thu", "value": 14800 },
{ "label": "Fri", "value": 16400 }
]
},
{
"name": "Pied Piper Paid Tier",
"data": [
{ "label": "Mon", "value": 4500 },
{ "label": "Tue", "value": 4800 },
{ "label": "Wed", "value": 5100 },
{ "label": "Thu", "value": 5600 },
{ "label": "Fri", "value": 6200 }
]
}
],
"axis_config": {
"categories": ["Mon", "Tue", "Wed", "Thu", "Fri"],
"x_label": "Day",
"y_label": "Users"
}
}
});
let json = serde_json::to_value(data_viz).unwrap();
assert_eq!(json, expected);§Example 4) Line chart
use slack_messaging::blocks::data_visualization::prelude::*;
let data_viz = DataVisualization::builder()
.title("Weekly Paper Sales")
.chart(
LineChart::builder()
.series(vec![
DataSeries::builder()
.name("Website")
.data(data_points(vec![
("Week 1", 32000),
("Week 2", 35000),
("Week 3", 29000),
("Week 4", 41000),
("Week 5", 45000),
])?)
.build()?,
DataSeries::builder()
.name("In-store")
.data(data_points(vec![
("Week 1", 17000),
("Week 2", 20000),
("Week 3", 15000),
("Week 4", 22000),
("Week 5", 30000),
])?)
.build()?,
])
.axis_config(
AxisConfig::builder()
.categories(vec![
"Week 1",
"Week 2",
"Week 3",
"Week 4",
"Week 5",
])
.x_label("Week")
.y_label("Paper Sales (USD)")
.build()?
)
.build()?
)
.build()?;
let expected = serde_json::json!({
"type": "data_visualization",
"title": "Weekly Paper Sales",
"chart": {
"type": "line",
"series": [
{
"name": "Website",
"data": [
{ "label": "Week 1", "value": 32000 },
{ "label": "Week 2", "value": 35000 },
{ "label": "Week 3", "value": 29000 },
{ "label": "Week 4", "value": 41000 },
{ "label": "Week 5", "value": 45000 }
]
},
{
"name": "In-store",
"data": [
{ "label": "Week 1", "value": 17000 },
{ "label": "Week 2", "value": 20000 },
{ "label": "Week 3", "value": 15000 },
{ "label": "Week 4", "value": 22000 },
{ "label": "Week 5", "value": 30000 }
]
}
],
"axis_config": {
"categories": ["Week 1", "Week 2", "Week 3", "Week 4", "Week 5"],
"x_label": "Week",
"y_label": "Paper Sales (USD)"
}
}
});
let json = serde_json::to_value(data_viz).unwrap();
assert_eq!(json, expected);Implementations§
Source§impl DataVisualization
impl DataVisualization
Sourcepub fn builder() -> DataVisualizationBuilder
pub fn builder() -> DataVisualizationBuilder
constract DataVisualizationBuilder object.
Trait Implementations§
Source§impl Clone for DataVisualization
impl Clone for DataVisualization
Source§fn clone(&self) -> DataVisualization
fn clone(&self) -> DataVisualization
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for DataVisualization
impl Debug for DataVisualization
Source§impl From<DataVisualization> for Block
impl From<DataVisualization> for Block
Source§fn from(value: DataVisualization) -> Self
fn from(value: DataVisualization) -> Self
Converts to this type from the input type.
Source§impl PartialEq for DataVisualization
impl PartialEq for DataVisualization
Source§fn eq(&self, other: &DataVisualization) -> bool
fn eq(&self, other: &DataVisualization) -> bool
Tests for
self and other values to be equal, and is used by ==.Source§impl Serialize for DataVisualization
impl Serialize for DataVisualization
impl StructuralPartialEq for DataVisualization
Auto Trait Implementations§
impl Freeze for DataVisualization
impl RefUnwindSafe for DataVisualization
impl Send for DataVisualization
impl Sync for DataVisualization
impl Unpin for DataVisualization
impl UnsafeUnpin for DataVisualization
impl UnwindSafe for DataVisualization
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more