add entity logs verb (#14170)

This commit is contained in:
Chief-Engineer
2023-02-18 19:00:17 -06:00
committed by GitHub
parent cb8b12ab60
commit e29a3874b8
6 changed files with 83 additions and 0 deletions

View File

@@ -174,6 +174,32 @@ public sealed partial class AdminLogsControl : Control
UpdateLogs();
}
public void SetTypesSelection(HashSet<LogType> selectedTypes, bool invert = false)
{
SelectedTypes.Clear();
foreach (var control in TypesContainer.Children)
{
if (control is not AdminLogTypeButton type)
{
continue;
}
if (selectedTypes.Contains(type.Type) ^ invert)
{
type.Pressed = true;
SelectedTypes.Add(type.Type);
}
else
{
type.Pressed = false;
type.Visible = ShouldShowType(type);
}
}
UpdateLogs();
}
public void UpdateTypes()
{
foreach (var control in TypesContainer.Children)

View File

@@ -137,6 +137,15 @@ public sealed class AdminLogsEui : BaseEui
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;
}
}

View File

@@ -7,6 +7,7 @@ using Content.Server.GameTicking;
using Content.Shared.Administration;
using Content.Shared.Administration.Logs;
using Content.Shared.CCVar;
using Content.Shared.Database;
using Content.Shared.Eui;
using Microsoft.Extensions.ObjectPool;
using Robust.Shared.Configuration;
@@ -140,6 +141,16 @@ public sealed class AdminLogsEui : BaseEui
}
}
public void SetLogFilter(string? search = null, bool invertTypes = false, HashSet<LogType>? types = null)
{
var message = new SetLogFilter(
search,
invertTypes,
types);
SendMessage(message);
}
private async void SendLogs(bool replace)
{
var stopwatch = new Stopwatch();

View File

@@ -1,4 +1,5 @@
using Content.Server.Administration.Commands;
using Content.Server.Administration.Logs;
using Content.Server.Administration.Managers;
using Content.Server.Administration.UI;
using Content.Server.Chemistry.Components.SolutionManager;
@@ -48,6 +49,7 @@ namespace Content.Server.Administration.Systems
[Dependency] private readonly ArtifactSystem _artifactSystem = default!;
[Dependency] private readonly UserInterfaceSystem _uiSystem = default!;
[Dependency] private readonly PrayerSystem _prayerSystem = default!;
[Dependency] private readonly EuiManager _eui = default!;
private readonly Dictionary<IPlayerSession, EditSolutionsEui> _openSolutionUis = new();
@@ -119,6 +121,25 @@ namespace Content.Server.Administration.Systems
});
}
// Admin Logs
if (_adminManager.HasAdminFlag(player, AdminFlags.Logs))
{
Verb logsVerbEntity = new()
{
Priority = -2,
Text = Loc.GetString("admin-verbs-admin-logs-entity"),
Category = VerbCategory.Admin,
Act = () =>
{
var ui = new AdminLogsEui();
_eui.OpenEui(ui, player);
ui.SetLogFilter(search:args.Target.GetHashCode().ToString());
},
Impact = LogImpact.Low
};
args.Verbs.Add(logsVerbEntity);
}
// TeleportTo
args.Verbs.Add(new Verb
{

View File

@@ -27,6 +27,21 @@ public static class AdminLogsEuiMsg
{
}
[Serializable, NetSerializable]
public sealed class SetLogFilter : EuiMessageBase
{
public SetLogFilter(string? search = null, bool invertTypes = false, HashSet<LogType>? types = null)
{
Search = search;
InvertTypes = invertTypes;
Types = types;
}
public string? Search { get; set; }
public bool InvertTypes { get; set; }
public HashSet<LogType>? Types { get; set; }
}
[Serializable, NetSerializable]
public sealed class NewLogs : EuiMessageBase
{

View File

@@ -2,6 +2,7 @@ delete-verb-get-data-text = Delete
edit-solutions-verb-get-data-text = Edit Solutions
explode-verb-get-data-text = Explode
ahelp-verb-get-data-text = Message
admin-verbs-admin-logs-entity = Entity Logs
admin-verbs-teleport-to = Teleport To
admin-verbs-teleport-here = Teleport Here
admin-verbs-freeze = Freeze