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 Brushes = System.Windows.Media.Brushes;
using ColorConverter = System.Windows.Media.ColorConverter; using ColorConverter = System.Windows.Media.ColorConverter;
using Color = System.Windows.Media.Color; using Color = System.Windows.Media.Color;
using static AgroBase.Models.Enums;
namespace OperationControl.ViewModels.Views.Operacao namespace OperationControl.ViewModels.Views.Operacao
{ {
@ -86,54 +87,76 @@ namespace OperationControl.ViewModels.Views.Operacao
set { _corTextoBadge = value; OnPropertyChanged(nameof(CorTextoBadge)); } 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")); public void AtualizarStatus(StatusModulo status, string titulo, string linha1, string linha2, string status_str, string resumo)
CorBorda = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#2C7A57")); {
CorAccent = Brushes.LightGreen; ContextoSelecionado = titulo;
CorBadge = Brushes.LightGreen; TituloStatus = linha1;
CorTexto = Brushes.White; MotivoPrincipal = linha2;
CorTextoBadge = Brushes.Black; BadgeTexto = status_str;
ResumoCurto = resumo;
AplicarPaletaStatus(status);
} }
public void MockarParadoPorInclinacao() private void AplicarPaletaStatus(StatusModulo status)
{ {
ContextoSelecionado = "ROVER 01"; switch (status)
TituloStatus = "ROVER PARADO POR SEGURANÇA"; {
MotivoPrincipal = "Inclinação lateral acima do limite permitido."; case StatusModulo.Desconectado:
BadgeTexto = "PARADO"; CorFundo = BrushFromHex("#2A2F36");
ResumoCurto = "Verificar IMU"; CorBorda = BrushFromHex("#4B5563");
CorAccent = BrushFromHex("#9CA3AF");
CorBadge = BrushFromHex("#9CA3AF");
CorTexto = Brushes.White;
CorTextoBadge = BrushFromHex("#111827");
break;
CorFundo = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#4A1F1F")); case StatusModulo.Conectado:
CorBorda = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#9B3A3A")); CorFundo = BrushFromHex("#15324A");
CorAccent = Brushes.OrangeRed; CorBorda = BrushFromHex("#2563EB");
CorBadge = Brushes.OrangeRed; CorAccent = BrushFromHex("#60A5FA");
CorTexto = Brushes.White; CorBadge = BrushFromHex("#60A5FA");
CorTextoBadge = Brushes.Black; 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"; return new SolidColorBrush((Color)ColorConverter.ConvertFromString(hex));
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;
} }
public event PropertyChangedEventHandler? PropertyChanged; public event PropertyChangedEventHandler? PropertyChanged;
private void OnPropertyChanged(string nome) private void OnPropertyChanged(string nome)
{ {

View File

@ -9,6 +9,7 @@ using AgroBase.Models.Operacoes;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using OperationControl.ViewModels.Views.Operacao; using OperationControl.ViewModels.Views.Operacao;
using OperationControl.Controls; using OperationControl.Controls;
using static AgroBase.Models.Enums;
namespace OperationControl.ViewModels namespace OperationControl.ViewModels
{ {
@ -345,6 +346,7 @@ namespace OperationControl.ViewModels
BottomContent = _viewOperacaoBottom; BottomContent = _viewOperacaoBottom;
CriarMarcadorBase(_viewOperacaoCenter?.Mapa); CriarMarcadorBase(_viewOperacaoCenter?.Mapa);
AtualizarDadosMapa(null); AtualizarDadosMapa(null);
AtualizarBarraSuperior(StatusModulo.Conectado, "BASE", "VISÃO GERAL", "Selecione um equipamento na lista à direita para configurá-lo", "NORMAL", "Aguardando");
break; break;
} }
@ -360,6 +362,13 @@ namespace OperationControl.ViewModels
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nome)); 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) 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) private void AbrirDiagnosticoPeloAlerta(AlertaModel alerta)
{ {
if (alerta == null) if (alerta == null)
@ -693,7 +693,7 @@ namespace OperationControl.ViewModels
_viewOperacaoCenter?._vm?.SelecionarRoverLista(rover); _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(); _viewOperacaoLeft?._vm?.DefinirSemRover();
} }
else else
@ -711,7 +711,7 @@ namespace OperationControl.ViewModels
AtualizarDadosMapa(VariaveisControleOperacao.RoverEmFoco); 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) private void OnSecaoSelecionadaChanged(SecaoRightBar secao)