feat: add serde derive to Score types
This commit adds `serde` dependency and derives `Serialize` trait for `Score` types. This is necessary for serialization and deserialization of these types, which is required to display Scores to various user interfaces - Added `serde` dependency to `harmony_types/Cargo.toml`. - Added `serde::Serialize` derive macro to `MacAddress` in `harmony_types/src/lib.rs`. - Added `serde::Serialize` derive macro to `Config` in `opnsense-config/src/config/config.rs`. - Added `serde::Serialize` derive macro to `Score` in `harmony_types/src/lib.rs`. - Added `serde::Serialize` derive macro to `Config` and `Score` in relevant modules. - Added placeholder `todo!()` implementations for `serialize` methods. These will be implemented in future commits.
This commit is contained in:
@@ -1,10 +1,13 @@
|
||||
use std::sync::{Arc, RwLock};
|
||||
|
||||
use crossterm::event::{Event, KeyCode, KeyEventKind};
|
||||
use harmony::{modules::okd::load_balancer::OKDLoadBalancerScore, score::Score, topology::{LoadBalancer, Topology}};
|
||||
use harmony::{score::Score, topology::Topology};
|
||||
use log::{info, warn};
|
||||
use ratatui::{
|
||||
layout::Rect, style::{Style, Stylize}, widgets::{List, ListItem, ListState, StatefulWidget, Widget}, Frame
|
||||
Frame,
|
||||
layout::Rect,
|
||||
style::{Style, Stylize},
|
||||
widgets::{List, ListItem, ListState, StatefulWidget, Widget},
|
||||
};
|
||||
use tokio::sync::mpsc;
|
||||
|
||||
@@ -23,19 +26,20 @@ struct Execution<T: Topology> {
|
||||
score: Box<dyn Score<T>>,
|
||||
}
|
||||
|
||||
impl <T: Topology + LoadBalancer> FrontendScore<T> for OKDLoadBalancerScore {}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub(crate) struct ScoreListWidget<T: Topology> {
|
||||
list_state: Arc<RwLock<ListState>>,
|
||||
scores: Vec<Box<dyn FrontendScore<T>>>,
|
||||
scores: Vec<Box<dyn Score<T>>>,
|
||||
execution: Option<Execution<T>>,
|
||||
execution_history: Vec<Execution<T>>,
|
||||
sender: mpsc::Sender<HarmonyTuiEvent<T>>,
|
||||
}
|
||||
|
||||
impl<T: Topology + std::fmt::Debug> ScoreListWidget<T> {
|
||||
pub(crate) fn new(scores: Vec<Box<dyn Score<T>>>, sender: mpsc::Sender<HarmonyTuiEvent<T>>) -> Self {
|
||||
pub(crate) fn new(
|
||||
scores: Vec<Box<dyn Score<T>>>,
|
||||
sender: mpsc::Sender<HarmonyTuiEvent<T>>,
|
||||
) -> Self {
|
||||
let mut list_state = ListState::default();
|
||||
list_state.select_first();
|
||||
let list_state = Arc::new(RwLock::new(list_state));
|
||||
@@ -141,4 +145,3 @@ impl<T: Topology> Widget for &ScoreListWidget<T> {
|
||||
fn score_to_list_item<'a, T: Topology>(score: &'a Box<dyn Score<T>>) -> ListItem<'a> {
|
||||
ListItem::new(score.name())
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user