diff options
author | Rory& <root@rory.gay> | 2024-01-24 02:31:56 +0100 |
---|---|---|
committer | Rory& <root@rory.gay> | 2024-01-24 17:05:25 +0100 |
commit | 03313562d21d5db9bf6a14ebbeab80e06c883d3a (patch) | |
tree | e000546a2ee8e6a886a7ed9fd01ad674178fb7cb /MatrixRoomUtils.Web/Shared/PolicyEditorComponents/PolicyEditorModal.razor | |
parent | Make RMU installable (diff) | |
download | MatrixUtils-03313562d21d5db9bf6a14ebbeab80e06c883d3a.tar.xz |
MRU->RMU, fixes, cleanup
Diffstat (limited to 'MatrixRoomUtils.Web/Shared/PolicyEditorComponents/PolicyEditorModal.razor')
-rw-r--r-- | MatrixRoomUtils.Web/Shared/PolicyEditorComponents/PolicyEditorModal.razor | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/MatrixRoomUtils.Web/Shared/PolicyEditorComponents/PolicyEditorModal.razor b/MatrixRoomUtils.Web/Shared/PolicyEditorComponents/PolicyEditorModal.razor deleted file mode 100644 index 4fd151d..0000000 --- a/MatrixRoomUtils.Web/Shared/PolicyEditorComponents/PolicyEditorModal.razor +++ /dev/null @@ -1,92 +0,0 @@ -@using LibMatrix.EventTypes.Spec.State.Policy -@using System.Reflection -@using ArcaneLibs.Attributes -@using ArcaneLibs.Extensions -@using LibMatrix -@using System.Collections.Frozen -@using LibMatrix.EventTypes -<ModalWindow Title="@((string.IsNullOrWhiteSpace(PolicyEvent.EventId) ? "Creating new " : "Editing ") + (PolicyEvent.MappedType.GetFriendlyNameOrNull()?.ToLower() ?? "event"))" - OnCloseClicked="@OnClose" X="60" Y="60" MinWidth="300"> - @{ - var policyData = (PolicyEvent.TypedContent as PolicyRuleEventContent)!; - } - @if (string.IsNullOrWhiteSpace(PolicyEvent.EventId)) { - <span>Policy type:</span> - <select @bind="@PolicyEvent.Type"> - <option>Select a value</option> - @foreach (var (type, mappedType) in PolicyTypes) { - <option value="@type">@mappedType.GetFriendlyName().ToLower()</option> - } - </select> - } - - - @{ - // enumerate all properties with friendly name - var props = PolicyEvent.MappedType.GetProperties(BindingFlags.Public | BindingFlags.Instance) - .Where(x => (x.GetFriendlyNameOrNull() ?? x.GetJsonPropertyNameOrNull()) is not null) - .Where(x => x.GetCustomAttribute<TableHideAttribute>() is null) - .ToFrozenSet(); - var propNames = props.Select(x => x.GetFriendlyNameOrNull() ?? x.GetJsonPropertyName()!).ToFrozenSet(); - } - <table> - <thead style="border-bottom: solid #ffffff44 1px;"> - <tr> - <th>Property</th> - <th>Value</th> - </tr> - </thead> - <tbody> - @foreach (var prop in props) { - <tr> - <td style="padding-right: 8px;"> - <span>@prop.GetFriendlyName()</span> - @if (Nullable.GetUnderlyingType(prop.PropertyType) is not null) { - <span style="color: red;">*</span> - } - </td> - @{ - var getter = prop.GetGetMethod(); - var setter = prop.GetSetMethod(); - } - @switch (Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType) { - case Type t when t == typeof(string): - <FancyTextBox Value="@(getter?.Invoke(policyData, null) as string)" ValueChanged="@(e => { Console.WriteLine($"{prop.Name} ({setter is not null}) -> {e}"); setter?.Invoke(policyData, [e]); StateHasChanged(); })"></FancyTextBox> - break; - default: - <p style="color: red;">Unsupported type: @prop.PropertyType</p> - break; - } - </tr> - } - </tbody> - </table> - <br/> - <pre> - @PolicyEvent.ToJson(true, false) - </pre> - <LinkButton OnClick="@(() => { OnClose.Invoke(); return Task.CompletedTask; })">Cancel</LinkButton> - <LinkButton OnClick="@(() => { OnSave.Invoke(PolicyEvent); return Task.CompletedTask; })">Save</LinkButton> - @* <span>Target entity: </span> *@ - @* <FancyTextBox @bind-Value="@policyData.Entity"></FancyTextBox><br/> *@ - @* <span>Reason: </span> *@ - @* <FancyTextBox @bind-Value="@policyData.Reason"></FancyTextBox> *@ -</ModalWindow> - -@code { - - [Parameter] - public StateEventResponse? PolicyEvent { get; set; } - - [Parameter] - public required Action OnClose { get; set; } - - [Parameter] - public required Action<StateEventResponse> OnSave { get; set; } - - private static FrozenSet<Type> KnownPolicyTypes = StateEvent.KnownStateEventTypes.Where(x => x.IsAssignableTo(typeof(PolicyRuleEventContent))).ToFrozenSet(); - - private static Dictionary<string, Type> PolicyTypes = KnownPolicyTypes - .ToDictionary(x => x.GetCustomAttributes<MatrixEventAttribute>().First(y => !string.IsNullOrWhiteSpace(y.EventName)).EventName, x => x); - -} \ No newline at end of file |