2026-03-10 19:56:55 +00:00
|
|
|
|
using OperationControl.Controls;
|
|
|
|
|
|
using OperationControl.Models;
|
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
|
|
|
|
|
|
|
namespace OperationControl.ViewModels.Views.Operacao
|
|
|
|
|
|
{
|
|
|
|
|
|
public class OperacaoCenterViewModel : INotifyPropertyChanged
|
|
|
|
|
|
{
|
|
|
|
|
|
public OperacaoCenterViewModel()
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public event Action<string> RoverSelecionadoChanged;
|
|
|
|
|
|
|
|
|
|
|
|
public event PropertyChangedEventHandler? PropertyChanged;
|
|
|
|
|
|
|
|
|
|
|
|
private RoverCardModel? roverSelecionado;
|
|
|
|
|
|
private bool _comRoverSelecionado;
|
|
|
|
|
|
public bool ComRoverSelecionado
|
|
|
|
|
|
{
|
|
|
|
|
|
get => _comRoverSelecionado;
|
|
|
|
|
|
set
|
|
|
|
|
|
{
|
|
|
|
|
|
if (_comRoverSelecionado != value)
|
|
|
|
|
|
{
|
|
|
|
|
|
_comRoverSelecionado = value;
|
|
|
|
|
|
OnPropertyChanged(nameof(ComRoverSelecionado));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private OperacaoCenterConteudo _conteudoAtual = OperacaoCenterConteudo.Mapa;
|
|
|
|
|
|
public OperacaoCenterConteudo ConteudoAtual
|
|
|
|
|
|
{
|
|
|
|
|
|
get => _conteudoAtual;
|
|
|
|
|
|
set
|
|
|
|
|
|
{
|
|
|
|
|
|
_conteudoAtual = value;
|
|
|
|
|
|
OnPropertyChanged(nameof(ConteudoAtual));
|
|
|
|
|
|
OnPropertyChanged(nameof(ExibirMapa));
|
|
|
|
|
|
OnPropertyChanged(nameof(ExibirDiagnostico));
|
|
|
|
|
|
OnPropertyChanged(nameof(ExibirMonitoramento));
|
2026-03-20 02:03:07 +00:00
|
|
|
|
OnPropertyChanged(nameof(ExibirHistorico));
|
2026-03-10 19:56:55 +00:00
|
|
|
|
OnPropertyChanged(nameof(TituloCentro));
|
|
|
|
|
|
OnPropertyChanged(nameof(SubtituloCentro));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public bool ExibirMapa => ConteudoAtual == OperacaoCenterConteudo.Mapa;
|
|
|
|
|
|
public bool ExibirDiagnostico => ConteudoAtual == OperacaoCenterConteudo.Diagnostico;
|
|
|
|
|
|
public bool ExibirMonitoramento => ConteudoAtual == OperacaoCenterConteudo.Monitoramento;
|
2026-03-20 02:03:07 +00:00
|
|
|
|
public bool ExibirHistorico => ConteudoAtual == OperacaoCenterConteudo.Historico;
|
2026-03-10 19:56:55 +00:00
|
|
|
|
|
|
|
|
|
|
public string TituloCentro
|
|
|
|
|
|
{
|
|
|
|
|
|
get
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!ComRoverSelecionado)
|
|
|
|
|
|
return "Nenhum rover selecionado";
|
|
|
|
|
|
|
|
|
|
|
|
return ConteudoAtual switch
|
|
|
|
|
|
{
|
|
|
|
|
|
OperacaoCenterConteudo.Diagnostico => "Diagnóstico do Rover",
|
|
|
|
|
|
OperacaoCenterConteudo.Monitoramento => "Monitoramento do Rover",
|
|
|
|
|
|
OperacaoCenterConteudo.Mapa => "Mapa da Operação",
|
|
|
|
|
|
_ => "Área Principal da Operação"
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public string SubtituloCentro
|
|
|
|
|
|
{
|
|
|
|
|
|
get
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!ComRoverSelecionado)
|
|
|
|
|
|
return "Selecione um rover para visualizar os dados.";
|
|
|
|
|
|
|
|
|
|
|
|
return ConteudoAtual switch
|
|
|
|
|
|
{
|
|
|
|
|
|
OperacaoCenterConteudo.Diagnostico => "Aqui serão exibidos os dados de diagnóstico do rover selecionado.",
|
|
|
|
|
|
OperacaoCenterConteudo.Monitoramento => "Aqui serão exibidos os dados de monitoramento em tempo real do rover.",
|
|
|
|
|
|
OperacaoCenterConteudo.Mapa => "Aqui será exibido o mapa e os dados operacionais do rover selecionado.",
|
|
|
|
|
|
_ => "Conteúdo da operação."
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void SelecionarRoverLista(RoverCardModel? rover)
|
|
|
|
|
|
{
|
|
|
|
|
|
roverSelecionado = rover;
|
|
|
|
|
|
ComRoverSelecionado = roverSelecionado != null;
|
|
|
|
|
|
DefinirSecao(ComRoverSelecionado ? SecaoRightBar.Menu : SecaoRightBar.SemRoverSelecionado);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void DefinirSecao(SecaoRightBar secao)
|
|
|
|
|
|
{
|
|
|
|
|
|
ConteudoAtual = secao switch
|
|
|
|
|
|
{
|
|
|
|
|
|
SecaoRightBar.Diagnostico => OperacaoCenterConteudo.Diagnostico,
|
|
|
|
|
|
|
|
|
|
|
|
SecaoRightBar.Resumo => OperacaoCenterConteudo.Monitoramento,
|
|
|
|
|
|
SecaoRightBar.Controle => OperacaoCenterConteudo.Monitoramento,
|
|
|
|
|
|
SecaoRightBar.Parametrizacao => OperacaoCenterConteudo.Mapa,
|
|
|
|
|
|
SecaoRightBar.Menu => OperacaoCenterConteudo.Monitoramento,
|
2026-03-20 02:03:07 +00:00
|
|
|
|
SecaoRightBar.Historico => OperacaoCenterConteudo.Historico,
|
2026-03-10 19:56:55 +00:00
|
|
|
|
|
|
|
|
|
|
_ => OperacaoCenterConteudo.Mapa
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void OnPropertyChanged(string nome)
|
|
|
|
|
|
{
|
|
|
|
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nome));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void ProcessarMarkerClicked(MapMarkerManager.MarkerClickedEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (string.IsNullOrEmpty(e.MarkerId))
|
|
|
|
|
|
{
|
|
|
|
|
|
Variaveis.MostrarLog("Sem rover em foco");
|
|
|
|
|
|
RoverSelecionadoChanged?.Invoke(null);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
Variaveis.MostrarLog($"Rover em foco: {e.MarkerId}");
|
|
|
|
|
|
RoverSelecionadoChanged?.Invoke(e.MarkerId);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void ProcessarStreetMapClicked(MapViewControl.StreetMapClickedEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
Variaveis.MostrarLog($"Rua clicada: {e.StreetId}. Ruas selecionadas: {string.Join(",", e.SelectedStreetsIds)}");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public enum OperacaoCenterConteudo
|
|
|
|
|
|
{
|
|
|
|
|
|
Mapa = 1,
|
|
|
|
|
|
Diagnostico = 2,
|
2026-03-20 02:03:07 +00:00
|
|
|
|
Monitoramento = 3,
|
|
|
|
|
|
Historico = 4,
|
2026-03-10 19:56:55 +00:00
|
|
|
|
}
|
|
|
|
|
|
}
|