theme config, layout preview, container alignment
Server: ThemeConfig entity + CRUD (GET/PUT /theme), SQLite persistence, ThemeUpdate broadcast to ESP32 on save and initial connect. Client: render engine uses theme colors, full-screen redraw on theme change. SPA: theme page with color pickers + presets, layout preview with TS port of layout engine, justify/align controls on containers. DisplayHint refactored to struct (kind + h_align + v_align).
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
use crate::entities::WidgetId;
|
||||
use crate::value_objects::{DisplayHint, Layout, WidgetState};
|
||||
use crate::value_objects::{DisplayHint, Layout, ThemeConfig, WidgetState};
|
||||
use std::future::Future;
|
||||
|
||||
pub trait BroadcastPort {
|
||||
@@ -15,4 +15,9 @@ pub trait BroadcastPort {
|
||||
&self,
|
||||
updates: &[(WidgetId, DisplayHint, WidgetState)],
|
||||
) -> impl Future<Output = Result<(), Self::Error>> + Send;
|
||||
|
||||
fn push_theme_update(
|
||||
&self,
|
||||
theme: &ThemeConfig,
|
||||
) -> impl Future<Output = Result<(), Self::Error>> + Send;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use crate::entities::{
|
||||
DataSource, DataSourceId, LayoutPreset, LayoutPresetId, User, WidgetConfig, WidgetId,
|
||||
};
|
||||
use crate::value_objects::Layout;
|
||||
use crate::value_objects::{Layout, ThemeConfig};
|
||||
use std::future::Future;
|
||||
|
||||
pub trait ConfigRepository {
|
||||
@@ -51,6 +51,12 @@ pub trait ConfigRepository {
|
||||
id: LayoutPresetId,
|
||||
) -> impl Future<Output = Result<(), Self::Error>> + Send;
|
||||
|
||||
fn get_theme(&self) -> impl Future<Output = Result<Option<ThemeConfig>, Self::Error>> + Send;
|
||||
fn save_theme(
|
||||
&self,
|
||||
theme: &ThemeConfig,
|
||||
) -> impl Future<Output = Result<(), Self::Error>> + Send;
|
||||
|
||||
fn get_user_by_username(
|
||||
&self,
|
||||
username: &str,
|
||||
|
||||
Reference in New Issue
Block a user