style(énergie): solaire en jaune, SOC en vert, maison en bleu
Demande de Patrick du 2026-10-15, alignée sur la lecture Victron : - autoconsommé : jaune doré (était orange) — tout le solaire est jaune, l'exporté en jaune pâle par-dessus (nouveau jeton exportSolaire) ; - SOC de la batterie : vert pointillé (était l'indigo des bornes) ; - consommation / soutiré : bleu, inchangé. Le jeton garde son nom (selfUse) : c'est son rôle, pas sa teinte. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
467384cd4d
commit
c1a4d5f46c
@ -617,7 +617,7 @@ class _EnergyScreenState extends State<EnergyScreen> {
|
||||
subtitle: 'kWh par période',
|
||||
legend: [
|
||||
_LegendDot(EtmTokens.selfUse, 'Autoconsommé'),
|
||||
_LegendDot(EtmTokens.amber, 'Exporté'),
|
||||
_LegendDot(EtmTokens.exportSolaire, 'Exporté'),
|
||||
_LegendDot(EtmTokens.blue, 'Soutiré'),
|
||||
],
|
||||
height: 240,
|
||||
@ -661,10 +661,10 @@ class _EnergyScreenState extends State<EnergyScreen> {
|
||||
: 'kW — le sommet de la pile est la production',
|
||||
legend: [
|
||||
_LegendDot(EtmTokens.selfUse, 'Autoconsommé'),
|
||||
_LegendDot(EtmTokens.amber, 'Exporté'),
|
||||
_LegendDot(EtmTokens.exportSolaire, 'Exporté'),
|
||||
_LegendDot(EtmTokens.blue, 'Consommation'),
|
||||
if (_aUneBatterie)
|
||||
_LegendDot(EtmTokens.ev, 'SOC %', dashed: true),
|
||||
_LegendDot(EtmTokens.soc, 'SOC %', dashed: true),
|
||||
],
|
||||
height: 220,
|
||||
loading: _loading,
|
||||
@ -988,7 +988,7 @@ class _EnergyScreenState extends State<EnergyScreen> {
|
||||
meta: meta,
|
||||
child: Text(
|
||||
'$pct%',
|
||||
style: EtmTokens.sans(size: 9, color: EtmTokens.ev),
|
||||
style: EtmTokens.sans(size: 9, color: EtmTokens.soc),
|
||||
),
|
||||
);
|
||||
},
|
||||
@ -1033,11 +1033,14 @@ class _EnergyScreenState extends State<EnergyScreen> {
|
||||
//
|
||||
// Empilées, il n'y a plus de recouvrement possible :
|
||||
//
|
||||
// jaune PV → réseau (exporté) ┐
|
||||
// orange PV → maison (autoconsommé) ┘ sommet = production totale
|
||||
// jaune pâle PV → réseau (exporté) ┐
|
||||
// jaune doré PV → maison (autoconsommé) ┘ sommet = production totale
|
||||
//
|
||||
// (L'autoconsommé était orange jusqu'au 2026-10-15 ; Patrick : tout le solaire en
|
||||
// jaune, les deux parts distinguées par la luminosité.)
|
||||
//
|
||||
// La production cesse d'être une courbe : elle EST le haut de la pile. Et quand
|
||||
// rien n'est exporté, la bande jaune a une hauteur nulle — ce qui est vrai, et se
|
||||
// rien n'est exporté, la bande pâle a une hauteur nulle — ce qui est vrai, et se
|
||||
// lit d'un coup d'œil : « tout ce qui est produit est consommé sur place ».
|
||||
// L'export devient une SURFACE au lieu d'un écart à mesurer à l'œil entre deux
|
||||
// traits.
|
||||
@ -1045,14 +1048,14 @@ class _EnergyScreenState extends State<EnergyScreen> {
|
||||
// Tracé du haut vers le bas : chaque aire est remplie jusqu'à zéro et la suivante
|
||||
// repeint par-dessus. Même procédé que l'empilement par consommateur.
|
||||
lineBarsData: [
|
||||
_aire(prodSpots, EtmTokens.amber), // sommet = production
|
||||
_aire(prodSpots, EtmTokens.exportSolaire), // sommet = production
|
||||
_aire(autoSpots, EtmTokens.selfUse), // repeint la part autoconsommée
|
||||
_line(consoSpots, EtmTokens.blue),
|
||||
// Le SOC est en indigo, pas en vert pointillé : le vert pointillé a servi à
|
||||
// l'autoconsommation le temps d'un essai, et sur une installation AVEC batterie
|
||||
// les deux auraient été indiscernables. Aucun banc sans batterie ne pouvait le
|
||||
// montrer.
|
||||
if (hasSoc) _line(socSpots, EtmTokens.ev, dashed: true, width: 1.5),
|
||||
// Le SOC est VERT pointillé (Patrick, 2026-10-15 : vert = SOC, bleu = maison,
|
||||
// jaune = solaire). Il avait été passé en indigo parce qu'un essai donnait le
|
||||
// vert pointillé à l'autoconsommation ; celle-ci est désormais jaune, le conflit
|
||||
// a disparu.
|
||||
if (hasSoc) _line(socSpots, EtmTokens.soc, dashed: true, width: 1.5),
|
||||
],
|
||||
lineTouchData: LineTouchData(
|
||||
touchTooltipData: LineTouchTooltipData(
|
||||
@ -1184,9 +1187,9 @@ class _EnergyScreenState extends State<EnergyScreen> {
|
||||
|
||||
final groupes = <BarChartGroupData>[];
|
||||
var maxKwh = 0.5;
|
||||
final orange = EtmTokens.selfUse;
|
||||
final jaune = EtmTokens.amber;
|
||||
// Le soutiré passe du rouge au BLEU (demande de Patrick, 2026-09-09) : avec l'orange
|
||||
final dore = EtmTokens.selfUse; // l'autoconsommé, partagé par les deux barres
|
||||
final jaune = EtmTokens.exportSolaire;
|
||||
// Le soutiré passe du rouge au BLEU (demande de Patrick, 2026-09-09) : avec le bloc
|
||||
// partagé sur les deux barres, le rouge en faisait une image trop chaude, et le bleu
|
||||
// est déjà la couleur de la maison partout ailleurs dans l'app.
|
||||
final bleu = EtmTokens.blue;
|
||||
@ -1216,7 +1219,7 @@ class _EnergyScreenState extends State<EnergyScreen> {
|
||||
width: _largeurBarre(),
|
||||
borderRadius: const BorderRadius.vertical(top: Radius.circular(2)),
|
||||
rodStackItems: [
|
||||
BarChartRodStackItem(0, self, orange),
|
||||
BarChartRodStackItem(0, self, dore),
|
||||
BarChartRodStackItem(self, prod, jaune),
|
||||
],
|
||||
color: jaune,
|
||||
@ -1226,7 +1229,7 @@ class _EnergyScreenState extends State<EnergyScreen> {
|
||||
width: _largeurBarre(),
|
||||
borderRadius: const BorderRadius.vertical(top: Radius.circular(2)),
|
||||
rodStackItems: [
|
||||
BarChartRodStackItem(0, self.clamp(0.0, conso), orange),
|
||||
BarChartRodStackItem(0, self.clamp(0.0, conso), dore),
|
||||
BarChartRodStackItem(self.clamp(0.0, conso), conso, bleu),
|
||||
],
|
||||
color: bleu,
|
||||
@ -1791,7 +1794,7 @@ class _KpiSection extends StatelessWidget {
|
||||
Row(children: [
|
||||
_KpiTile(
|
||||
icon: Icons.recycling_rounded,
|
||||
color: EtmTokens.selfUse,
|
||||
color: EtmTokens.selfUse, // jaune doré, comme sa bande dans les graphes
|
||||
bgColor: EtmTokens.amberSoft,
|
||||
label: 'Autoconsommation',
|
||||
value: pct(b?.selfConsumptionRate),
|
||||
|
||||
@ -93,15 +93,24 @@ class EtmTokens {
|
||||
static const Color ev = Color(0xFF7C6CE4); // bornes — indigo
|
||||
static const Color evDark = Color(0xFF8E80EA);
|
||||
|
||||
/// **L'autoconsommé**, dans l'empilement du graphe de flux — orange, sous le jaune de
|
||||
/// l'exporté dont le sommet donne la production totale.
|
||||
/// **L'autoconsommé** — le solaire gardé sur place. JAUNE doré, depuis le 2026-10-15
|
||||
/// (Patrick : « la production solaire doit être jaune ; vert = SOC ; bleu = la maison ») :
|
||||
/// c'était un orange, qui faisait lire le solaire consommé comme autre chose que du solaire.
|
||||
///
|
||||
/// ⚠️ Voisine de [pac] (ambre-orange), et c'est assumé : les deux n'apparaissent jamais
|
||||
/// dans le même graphe — celle-ci décompose la PRODUCTION, celle-là un CONSOMMATEUR. Si
|
||||
/// la proximité gêne à l'écran sur la page complète, c'est [pac] qui bougera : la paire
|
||||
/// jaune/orange a été choisie par Patrick pour ce graphe-ci.
|
||||
static const Color selfUse = Color(0xFFF4661B);
|
||||
static const Color selfUseDark = Color(0xFFFA7A34);
|
||||
/// Il s'empile sous [exportSolaire] (jaune pâle) : les deux ensemble font la production,
|
||||
/// et restent distincts par la luminosité plutôt que par la teinte.
|
||||
static const Color selfUse = Color(0xFFE6A100);
|
||||
static const Color selfUseDark = Color(0xFFF5B700);
|
||||
|
||||
/// **Le solaire exporté** — jaune pâle, posé sur [selfUse] dans les empilements.
|
||||
static const Color exportSolaire = Color(0xFFFFD54F);
|
||||
static const Color exportSolaireDark = Color(0xFFFFE07A);
|
||||
static Color exportSolaireOf(BuildContext c) =>
|
||||
_isDark(c) ? exportSolaireDark : exportSolaire;
|
||||
|
||||
/// **L'état de charge de la batterie** — vert (même demande du 2026-10-15). Était l'indigo
|
||||
/// des bornes, ce qui faisait lire le SOC comme une grandeur de recharge VE.
|
||||
static const Color soc = green;
|
||||
static Color selfUseOf(BuildContext c) => _isDark(c) ? selfUseDark : selfUse;
|
||||
|
||||
static Color pacOf(BuildContext c) => _isDark(c) ? pacDark : pac;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user