Criado método para preencher a barra superior

This commit is contained in:
Diego Freitas 2026-03-12 19:16:15 -03:00
parent a3590bd224
commit 1ff65eeb67
2 changed files with 72 additions and 49 deletions

View File

@ -4,6 +4,7 @@ using Brush = System.Windows.Media.Brush;
using Brushes = System.Windows.Media.Brushes;
using ColorConverter = System.Windows.Media.ColorConverter;
using Color = System.Windows.Media.Color;
using static AgroBase.Models.Enums;
namespace OperationControl.ViewModels.Views.Operacao
{
@ -86,54 +87,76 @@ namespace OperationControl.ViewModels.Views.Operacao
set { _corTextoBadge = value; OnPropertyChanged(nameof(CorTextoBadge)); }
}
public void MockarNormal()
{
ContextoSelecionado = "ROVER 01";
TituloStatus = "ROVER OPERANDO NORMALMENTE";
MotivoPrincipal = "Todos os módulos obrigatórios e regras de controle estão OK.";
BadgeTexto = "NORMAL";
ResumoCurto = "Sistema saudável";
CorFundo = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#153D2C"));
CorBorda = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#2C7A57"));
CorAccent = Brushes.LightGreen;
CorBadge = Brushes.LightGreen;
CorTexto = Brushes.White;
CorTextoBadge = Brushes.Black;
public void AtualizarStatus(StatusModulo status, string titulo, string linha1, string linha2, string status_str, string resumo)
{
ContextoSelecionado = titulo;
TituloStatus = linha1;
MotivoPrincipal = linha2;
BadgeTexto = status_str;
ResumoCurto = resumo;
AplicarPaletaStatus(status);
}
public void MockarParadoPorInclinacao()
private void AplicarPaletaStatus(StatusModulo status)
{
ContextoSelecionado = "ROVER 01";
TituloStatus = "ROVER PARADO POR SEGURANÇA";
MotivoPrincipal = "Inclinação lateral acima do limite permitido.";
BadgeTexto = "PARADO";
ResumoCurto = "Verificar IMU";
switch (status)
{
case StatusModulo.Desconectado:
CorFundo = BrushFromHex("#2A2F36");
CorBorda = BrushFromHex("#4B5563");
CorAccent = BrushFromHex("#9CA3AF");
CorBadge = BrushFromHex("#9CA3AF");
CorTexto = Brushes.White;
CorTextoBadge = BrushFromHex("#111827");
break;
CorFundo = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#4A1F1F"));
CorBorda = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#9B3A3A"));
CorAccent = Brushes.OrangeRed;
CorBadge = Brushes.OrangeRed;
CorTexto = Brushes.White;
CorTextoBadge = Brushes.Black;
case StatusModulo.Conectado:
CorFundo = BrushFromHex("#15324A");
CorBorda = BrushFromHex("#2563EB");
CorAccent = BrushFromHex("#60A5FA");
CorBadge = BrushFromHex("#60A5FA");
CorTexto = Brushes.White;
CorTextoBadge = BrushFromHex("#0B1220");
break;
case StatusModulo.Falha:
CorFundo = BrushFromHex("#4A1D1D");
CorBorda = BrushFromHex("#DC2626");
CorAccent = BrushFromHex("#F87171");
CorBadge = BrushFromHex("#F87171");
CorTexto = Brushes.White;
CorTextoBadge = BrushFromHex("#1F0A0A");
break;
case StatusModulo.Alerta:
CorFundo = BrushFromHex("#4A3A12");
CorBorda = BrushFromHex("#D97706");
CorAccent = BrushFromHex("#FBBF24");
CorBadge = BrushFromHex("#FBBF24");
CorTexto = Brushes.White;
CorTextoBadge = BrushFromHex("#1F1400");
break;
case StatusModulo.Operante:
default:
CorFundo = BrushFromHex("#153D2C");
CorBorda = BrushFromHex("#2C7A57");
CorAccent = BrushFromHex("#86EFAC");
CorBadge = BrushFromHex("#86EFAC");
CorTexto = Brushes.White;
CorTextoBadge = BrushFromHex("#052E16");
break;
}
}
public void MockarObstaculo()
private SolidColorBrush BrushFromHex(string hex)
{
ContextoSelecionado = "ROVER 01";
TituloStatus = "MOVIMENTO BLOQUEADO PREVENTIVAMENTE";
MotivoPrincipal = "Obstáculo detectado no corredor à frente.";
BadgeTexto = "ATENÇÃO";
ResumoCurto = "Inspecionar caminho";
CorFundo = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#4A3315"));
CorBorda = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#B7791F"));
CorAccent = Brushes.Orange;
CorBadge = Brushes.Orange;
CorTexto = Brushes.White;
CorTextoBadge = Brushes.Black;
return new SolidColorBrush((Color)ColorConverter.ConvertFromString(hex));
}
public event PropertyChangedEventHandler? PropertyChanged;
private void OnPropertyChanged(string nome)
{

View File

@ -9,6 +9,7 @@ using AgroBase.Models.Operacoes;
using Newtonsoft.Json.Linq;
using OperationControl.ViewModels.Views.Operacao;
using OperationControl.Controls;
using static AgroBase.Models.Enums;
namespace OperationControl.ViewModels
{
@ -345,6 +346,7 @@ namespace OperationControl.ViewModels
BottomContent = _viewOperacaoBottom;
CriarMarcadorBase(_viewOperacaoCenter?.Mapa);
AtualizarDadosMapa(null);
AtualizarBarraSuperior(StatusModulo.Conectado, "BASE", "VISÃO GERAL", "Selecione um equipamento na lista à direita para configurá-lo", "NORMAL", "Aguardando");
break;
}
@ -360,6 +362,13 @@ namespace OperationControl.ViewModels
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nome));
}
public void AtualizarBarraSuperior(StatusModulo status, string titulo, string linha1, string linha2, string status_str, string resumo)
{
System.Windows.Application.Current.Dispatcher.BeginInvoke(new Action(() =>
{
_viewOperacaoTop?._vm.AtualizarStatus(status, titulo, linha1, linha2, status_str, resumo);
}));
}
public void AtualizarDadosGnss(AgroBase.Models.GPSModel dados)
{
@ -639,15 +648,6 @@ namespace OperationControl.ViewModels
}
public void AtualizarTopOperacaoRover(string nomeRover, bool modoManual)
{
System.Windows.Application.Current.Dispatcher.BeginInvoke(new Action(() =>
{
_viewOperacaoTop?._vm.MockarNormal();
}));
}
private void AbrirDiagnosticoPeloAlerta(AlertaModel alerta)
{
if (alerta == null)
@ -693,7 +693,7 @@ namespace OperationControl.ViewModels
_viewOperacaoCenter?._vm?.SelecionarRoverLista(rover);
AtualizarTopOperacaoRover(VariaveisControleOperacao.SelectedRoverId, true);
AtualizarBarraSuperior(StatusModulo.Conectado, "BASE", "VISÃO GERAL", "Selecione um equipamento na lista à direita para configurá-lo", "NORMAL", "Aguardando");
_viewOperacaoLeft?._vm?.DefinirSemRover();
}
else
@ -711,7 +711,7 @@ namespace OperationControl.ViewModels
AtualizarDadosMapa(VariaveisControleOperacao.RoverEmFoco);
AtualizarTopOperacaoRover(VariaveisControleOperacao.SelectedRoverId, ModoOperacaoAtual == ModoOperacao.Manual);
AtualizarBarraSuperior(rover.Status, rover.NumeroSerie, "VISÃO GERAL", VariaveisControleOperacao.RoverEmFoco?.DadosLeitura?.Operacao?.ImpedimentoErro ?? "Sistema operante", rover.Status.ToString(), (VariaveisControleOperacao.RoverEmFoco?.DadosLeitura?.Operacao?.Status ?? StatusOperacao.NaoIniciado).ToString());
}
}
private void OnSecaoSelecionadaChanged(SecaoRightBar secao)