Make dashboard titles customizable
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Pierre HUBERT 2024-11-19 19:02:09 +01:00
parent dc621984fb
commit d6e0eccb00
6 changed files with 45 additions and 3 deletions

View File

@ -110,6 +110,18 @@ pub struct AppConfig {
#[arg(short('f'), long, env, default_value_t = 5)]
pub energy_fetch_interval: u64,
/// Custom current consumption title in dashboard
#[arg(long, env)]
pub dashboard_custom_current_consumption_title: Option<String>,
/// Custom relays consumption title in dashboard
#[arg(long, env)]
pub dashboard_custom_relays_consumption_title: Option<String>,
/// Custom cached consumption title in dashboard
#[arg(long, env)]
pub dashboard_custom_cached_consumption_title: Option<String>,
/// Consumption backend provider
#[clap(subcommand)]
pub consumption_backend: Option<ConsumptionBackend>,

View File

@ -14,6 +14,9 @@ struct ServerConfig {
constraints: StaticConstraints,
unsecure_origin: String,
backend_version: &'static str,
dashboard_custom_current_consumption_title: Option<&'static str>,
dashboard_custom_relays_consumption_title: Option<&'static str>,
dashboard_custom_cached_consumption_title: Option<&'static str>,
}
impl Default for ServerConfig {
@ -23,6 +26,15 @@ impl Default for ServerConfig {
constraints: Default::default(),
unsecure_origin: AppConfig::get().unsecure_origin(),
backend_version: env!("CARGO_PKG_VERSION"),
dashboard_custom_current_consumption_title: AppConfig::get()
.dashboard_custom_current_consumption_title
.as_deref(),
dashboard_custom_relays_consumption_title: AppConfig::get()
.dashboard_custom_relays_consumption_title
.as_deref(),
dashboard_custom_cached_consumption_title: AppConfig::get()
.dashboard_custom_cached_consumption_title
.as_deref(),
}
}
}

View File

@ -5,6 +5,9 @@ export interface ServerConfig {
constraints: ServerConstraint;
unsecure_origin: string;
backend_version: string;
dashboard_custom_current_consumption_title?: string;
dashboard_custom_relays_consumption_title?: string;
dashboard_custom_cached_consumption_title?: string;
}
export interface ServerConstraint {

View File

@ -2,6 +2,7 @@ import React from "react";
import { EnergyApi } from "../../api/EnergyApi";
import { useSnackbar } from "../../hooks/context_providers/SnackbarProvider";
import StatCard from "../../widgets/StatCard";
import { ServerApi } from "../../api/ServerApi";
export function CachedConsumptionWidget(): React.ReactElement {
const snackbar = useSnackbar();
@ -26,6 +27,12 @@ export function CachedConsumptionWidget(): React.ReactElement {
});
return (
<StatCard title="Cached consumption" value={val?.toString() ?? "Loading"} />
<StatCard
title={
ServerApi.Config.dashboard_custom_cached_consumption_title ??
"Cached consumption"
}
value={val?.toString() ?? "Loading"}
/>
);
}

View File

@ -2,6 +2,7 @@ import React from "react";
import { EnergyApi } from "../../api/EnergyApi";
import { useSnackbar } from "../../hooks/context_providers/SnackbarProvider";
import StatCard from "../../widgets/StatCard";
import { ServerApi } from "../../api/ServerApi";
export function CurrConsumptionWidget(): React.ReactElement {
const snackbar = useSnackbar();
@ -29,7 +30,10 @@ export function CurrConsumptionWidget(): React.ReactElement {
return (
<StatCard
title="Current consumption"
title={
ServerApi.Config.dashboard_custom_current_consumption_title ??
"Current consumption"
}
data={history ?? []}
interval="Last day"
value={val?.toString() ?? "Loading"}

View File

@ -2,6 +2,7 @@ import React from "react";
import { EnergyApi } from "../../api/EnergyApi";
import { useSnackbar } from "../../hooks/context_providers/SnackbarProvider";
import StatCard from "../../widgets/StatCard";
import { ServerApi } from "../../api/ServerApi";
export function RelayConsumptionWidget(): React.ReactElement {
const snackbar = useSnackbar();
@ -29,7 +30,10 @@ export function RelayConsumptionWidget(): React.ReactElement {
return (
<StatCard
title="Relays consumption"
title={
ServerApi.Config.dashboard_custom_relays_consumption_title ??
"Relays consumption"
}
data={history ?? []}
interval="Last day"
value={val?.toString() ?? "Loading"}