diff --git a/AgroBase/OperationControl/ViewModels/Views/Operacao/OperacaoTopViewModel.cs b/AgroBase/OperationControl/ViewModels/Views/Operacao/OperacaoTopViewModel.cs index 329976120..79300e25f 100644 --- a/AgroBase/OperationControl/ViewModels/Views/Operacao/OperacaoTopViewModel.cs +++ b/AgroBase/OperationControl/ViewModels/Views/Operacao/OperacaoTopViewModel.cs @@ -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) { diff --git a/AgroBase/OperationControl/ViewModels/Windows/DockWindowViewModel.cs b/AgroBase/OperationControl/ViewModels/Windows/DockWindowViewModel.cs index 71883f604..e40a108fe 100644 --- a/AgroBase/OperationControl/ViewModels/Windows/DockWindowViewModel.cs +++ b/AgroBase/OperationControl/ViewModels/Windows/DockWindowViewModel.cs @@ -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)