summaryrefslogtreecommitdiff
path: root/schist_desktop_gui/src/gui/components/balances_view.rs
blob: a1c8db37f0bf77bfb6c6c5d333c2462d791f2c2e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
mod make_balances_view_greeting;
mod update_balances_view;
mod view_balances_view;
mod view_group_names;

use self::view_group_names::view_group_names;

use schist_models::Bucket;

use crate::gui::components::{
    balances_view::make_balances_view_greeting::make_balances_view_greeting, navigation,
    Navigation, Text,
};

#[derive(Clone, Debug)]
pub struct BalancesView {
    buckets: Vec<Bucket>,
    greeting: String,
    navigation: Navigation<Text>,
}

#[derive(Clone, Debug)]
pub enum Message {
    NavigationMessage(navigation::Message<Text>),
    SelectNextBucket,
    SelectPrevBucket,
    SetBuckets(Vec<Bucket>),
}

pub enum Action {
    None,
}

impl BalancesView {
    pub fn new(buckets: Vec<Bucket>) -> Self {
        let groups = view_group_names(buckets.clone());
        let active_group = groups.clone().first().cloned();
        let navigation = Navigation::new(active_group.clone(), groups);
        Self {
            buckets: buckets.clone(),
            greeting: make_balances_view_greeting(active_group),
            navigation: navigation,
        }
    }
}