| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- using System.Linq;
- using Content.Client.Eui;
- using Content.Shared.Administration.Logs;
- using Content.Shared.Eui;
- using JetBrains.Annotations;
- using Robust.Client.Graphics;
- using Robust.Client.UserInterface;
- using Robust.Client.UserInterface.Controls;
- using static Content.Shared.Administration.Logs.AdminLogsEuiMsg;
- namespace Content.Client.Administration.UI.Logs;
- [UsedImplicitly]
- public sealed class AdminLogsEui : BaseEui
- {
- [Dependency] private readonly IClyde _clyde = default!;
- [Dependency] private readonly IUserInterfaceManager _uiManager = default!;
- public AdminLogsEui()
- {
- LogsWindow = new AdminLogsWindow();
- LogsWindow.OnClose += OnCloseWindow;
- LogsControl = LogsWindow.Logs;
- LogsControl.LogSearch.OnTextEntered += _ => RequestLogs();
- LogsControl.RefreshButton.OnPressed += _ => RequestLogs();
- LogsControl.NextButton.OnPressed += _ => NextLogs();
- LogsControl.PopOutButton.OnPressed += _ => PopOut();
- }
- private WindowRoot? Root { get; set; }
- private IClydeWindow? ClydeWindow { get; set; }
- private AdminLogsWindow? LogsWindow { get; set; }
- private AdminLogsControl LogsControl { get; }
- private bool FirstState { get; set; } = true;
- private void OnRequestClosed(WindowRequestClosedEventArgs args)
- {
- SendMessage(new CloseEuiMessage());
- }
- private void OnCloseWindow()
- {
- if (ClydeWindow == null)
- SendMessage(new CloseEuiMessage());
- }
- private void RequestLogs()
- {
- var request = new LogsRequest(
- LogsControl.SelectedRoundId,
- LogsControl.Search,
- LogsControl.SelectedTypes.ToHashSet(),
- null,
- null,
- null,
- LogsControl.SelectedPlayers.Count != 0,
- LogsControl.SelectedPlayers.ToArray(),
- null,
- LogsControl.IncludeNonPlayerLogs,
- DateOrder.Descending);
- SendMessage(request);
- }
- private void NextLogs()
- {
- LogsControl.NextButton.Disabled = true;
- var request = new NextLogsRequest();
- SendMessage(request);
- }
- private void PopOut()
- {
- if (LogsWindow == null)
- {
- return;
- }
- var monitor = _clyde.EnumerateMonitors().First();
- ClydeWindow = _clyde.CreateWindow(new WindowCreateParameters
- {
- Maximized = false,
- Title = "Admin Logs",
- Monitor = monitor,
- Width = 1100,
- Height = 400
- });
- LogsControl.Orphan();
- LogsWindow.Dispose();
- LogsWindow = null;
- ClydeWindow.RequestClosed += OnRequestClosed;
- ClydeWindow.DisposeOnClose = true;
- Root = _uiManager.CreateWindowRoot(ClydeWindow);
- Root.AddChild(LogsControl);
- LogsControl.PopOutButton.Disabled = true;
- LogsControl.PopOutButton.Visible = false;
- }
- public override void HandleState(EuiStateBase state)
- {
- var s = (AdminLogsEuiState) state;
- if (s.IsLoading)
- {
- return;
- }
- LogsControl.SetCurrentRound(s.RoundId);
- LogsControl.SetPlayers(s.Players);
- LogsControl.UpdateCount(round: s.RoundLogs);
- if (!FirstState)
- {
- return;
- }
- FirstState = false;
- LogsControl.SetRoundSpinBox(s.RoundId);
- RequestLogs();
- }
- public override void HandleMessage(EuiMessageBase msg)
- {
- base.HandleMessage(msg);
- switch (msg)
- {
- case NewLogs newLogs:
- if (newLogs.Replace)
- {
- LogsControl.SetLogs(newLogs.Logs);
- }
- else
- {
- LogsControl.AddLogs(newLogs.Logs);
- }
- LogsControl.NextButton.Disabled = !newLogs.HasNext;
- break;
- case SetLogFilter setLogFilter:
- if (setLogFilter.Search != null)
- LogsControl.LogSearch.SetText(setLogFilter.Search);
- if (setLogFilter.Types != null)
- LogsControl.SetTypesSelection(setLogFilter.Types, setLogFilter.InvertTypes);
- break;
- }
- }
- public override void Opened()
- {
- base.Opened();
- LogsWindow?.OpenCentered();
- }
- public override void Closed()
- {
- base.Closed();
- if (ClydeWindow != null)
- {
- ClydeWindow.RequestClosed -= OnRequestClosed;
- }
- LogsControl.Dispose();
- LogsWindow?.Dispose();
- Root?.Dispose();
- ClydeWindow?.Dispose();
- }
- }
|