add entity logs verb (#14170)
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user