Skip to main content

Sparkline

Struct Sparkline 

Source
pub struct Sparkline<Msg> { /* private fields */ }
Expand description

A compact trend: one column per value, newest on the right, measured in eighths of a cell.

Columns scale from the lowest to the highest value shown, or over a fixed range. Every value keeps at least one eighth so a quiet moment still reads as a sample. ASCII mode has no partial blocks: whole cells fill with colour and the cell a column ends in takes the share of colour it covers, so even the lowest sample tints one cell. When the series is wider than the area, the newest values are kept. Give the node a height for taller columns.

With Sparkline::on_read a point can be read off the chart: pressing or dragging over the columns reads the one under the pointer, and while focused ←/→ move one point, Home and End jump to the oldest and the newest shown, and Esc stops reading. The message carries the position in the values given, so the application writes the value itself; the application owns which point is being read (Sparkline::reading). The read column rises to a tone band of its own and is drawn in the accent, the hovered column’s band is one hover step brighter than the ground, and nothing moves: bands and columns stay in their cells.

Style keys: sparkline (fg for the columns, peak and low for the highlighted extremes, reading for the column being read, baseline for the tone band of a reference value, track for the ground in ASCII mode).

Implementations§

Source§

impl<Msg: 'static> Sparkline<Msg>

Source

pub fn new(values: impl IntoIterator<Item = f32>) -> Self

A sparkline of values, oldest first.

Source

pub fn range(self, min: f32, max: f32) -> Self

Scales columns over min..max instead of the values shown, e.g. 0.0..100.0 for percent.

Source

pub fn highlight_extremes(self) -> Self

Colours the highest and the lowest column shown.

Source

pub fn baseline(self, value: f32) -> Self

Tints the cells at the level of value, such as a limit or an average, with a quiet band.

Source

pub fn reading(self, index: Option<usize>) -> Self

The point being read, as a position in the values given. A point that is not shown, because the area is narrower than the series, is not marked.

Source

pub fn on_read(self, message: impl Fn(Option<usize>) -> Msg + 'static) -> Self

Lets a point be read off the chart with the pointer and the keyboard; the message carries the position in the values given, or nothing when reading stops.

Trait Implementations§

Source§

impl<Msg: 'static> Widget<Msg> for Sparkline<Msg>

Source§

fn measure(&self, _cx: &mut MeasureCx<'_>, available: Size) -> Size

The size the widget wants when it may use up to available.
Source§

fn paint(&self, cx: &mut PaintCx<'_>, area: Rect)

Draws the widget into area.
Source§

fn event(&self, cx: &mut EventCx<'_, Msg>, event: &Event) -> bool

Handles input. Returns true when the event was used; unused key and scroll events bubble to the parent widget.
Source§

fn focusable(&self) -> bool

Whether the widget can take keyboard focus.
Source§

fn paint_overlay(&self, _cx: &mut PaintCx<'_>, _anchor: Rect)

Draws the widget’s overlay after the whole view was painted, when it asked for one with PaintCx::request_overlay. anchor is the area the widget was painted in.
Source§

fn children(&self) -> &[Node<Msg>]

Child nodes, for widgets that contain other widgets.
Source§

fn children_mut(&mut self) -> &mut [Node<Msg>]

Mutable child nodes, used to assign ids.

Auto Trait Implementations§

§

impl<Msg> !RefUnwindSafe for Sparkline<Msg>

§

impl<Msg> !Send for Sparkline<Msg>

§

impl<Msg> !Sync for Sparkline<Msg>

§

impl<Msg> !UnwindSafe for Sparkline<Msg>

§

impl<Msg> Freeze for Sparkline<Msg>
where Option<Box<dyn Fn(Option<usize>) -> Msg>>: Freeze,

§

impl<Msg> Unpin for Sparkline<Msg>
where Option<Box<dyn Fn(Option<usize>) -> Msg>>: Unpin,

§

impl<Msg> UnsafeUnpin for Sparkline<Msg>
where Option<Box<dyn Fn(Option<usize>) -> Msg>>: UnsafeUnpin,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.