@using System.ComponentModel @using Newtonsoft.Json @model Tuple<Channel, Enumerations.LewdnessFilterLevel, Enumerations.MeannessFilterLevel> @{ var ThisChannel = Model.Item1; var IfInheritedLewdnessFilterLevel = Model.Item2; var IfInheritedMeannessFilterLevel = Model.Item3; } <a href="/">home</a>/ @Html.Raw(ViewData["breadcrumbs"]) <table class="table"> <tbody> <tr> <th scope="row">Display Name</th> <td>@ThisChannel.DisplayName</td> </tr> <tr> <th scope="row">Channel type</th> <td>@(ThisChannel.ChannelType != null ? Enumerations.GetDescription(ThisChannel.ChannelType) : "?")</td> </tr> <tr> <th scope="row">Lewdness Filter Level</th> <td> <select name="LewdnessFilterLevel" id="LewdnessFilterLevel" onchange="patchModel(jsonifyChannel(), '/api/Channels/')"> <!option value="" @(ThisChannel.LewdnessFilterLevel == null ? "selected" : "")>⤵ inherited - @Enumerations.GetDescription(IfInheritedLewdnessFilterLevel)</!option> @foreach (Enumerations.LewdnessFilterLevel enumVal in Enum.GetValues(typeof(Enumerations.LewdnessFilterLevel))) { <!option value="@((int)enumVal)" @(ThisChannel.LewdnessFilterLevel == enumVal ? "selected" : "")> @(Enumerations.GetDescription<Enumerations.LewdnessFilterLevel>(enumVal))</!option> } </select> </td> </tr> <tr> <th scope="row">Links Allowed</th> <td>@(ThisChannel.LinksAllowed?.ToString() ?? "unknown")</td> </tr> <tr> <th scope="row">Lineage summary</th> <td>@ThisChannel.LineageSummary</td> </tr> <tr> <th scope="row">max attachment bytes</th> <td>@ThisChannel.MaxAttachmentBytes (i hear there's "ByteSize")</td> </tr> <tr> <th scope="row">max message length</th> <td>@(ThisChannel.MaxTextChars?.ToString() ?? "inherited")</td> </tr> <tr> <th scope="row">Meanness Filter Level</th> <td> <select name="MeannessFilterLevel" id="MeannessFilterLevel" onchange="patchModel(jsonifyChannel(), '/api/Channels/')"> <!option value="" @(ThisChannel.MeannessFilterLevel == null ? "selected" : "")>⤵ inherited - @Enumerations.GetDescription(IfInheritedMeannessFilterLevel)</!option> @foreach (Enumerations.MeannessFilterLevel enumVal in Enum.GetValues(typeof(Enumerations.MeannessFilterLevel))) { <!option value="@((int)enumVal)" @(ThisChannel.MeannessFilterLevel == enumVal ? "selected" : "")> @(Enumerations.GetDescription<Enumerations.MeannessFilterLevel>(enumVal))</!option> } </select> </td> </tr> <tr> <th scope="row">Messages (count)</th> <td>@(ThisChannel.Messages?.Count ?? 0)</td> </tr> <tr> <th scope="row">Protocol</th> <td>@ThisChannel.Protocol</td> </tr> <tr> <th scope="row">Reactions Possible</th> <td>@(ThisChannel.ReactionsPossible?.ToString() ?? "inherited")</td> </tr> <tr> <th scope="row">Sub Channels</th> <td> @if((ThisChannel.SubChannels?.Count ?? 0) > 0) { @Html.Raw("<div id=\"channelsTree\"></div>"); } else { @Html.Raw("0") } </td> </tr> <tr> <th scope="row">Accounts</th> <td>@(ThisChannel.Users?.Count ?? 0)</td> </tr> <tr> <td colspan="2"> <button onclick="forget()">forget</button> </td> </tr> </tbody> </table> @section Scripts{ <script type="text/javascript"> @{ var modelAsString = JsonConvert.SerializeObject(ThisChannel, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }); } const channelOnLoad = @Html.Raw(modelAsString); function jsonifyChannel() { var channelNow = structuredClone(channelOnLoad); channelNow.SubChannels = null; channelNow.ParentChannel = null; channelNow.Messages = null; channelNow.Users = null; channelNow.LewdnessFilterLevel = document.querySelector("#LewdnessFilterLevel").value; channelNow.MeannessFilterLevel = document.querySelector("#MeannessFilterLevel").value; console.log(channelNow); return channelNow; } function forget(){ console.log("here we go"); if(window.confirm("delete? really really?") == true){ deleteModel(jsonifyChannel(), '/api/Channels/'); } } function channelsTree() { var tree = @Html.Raw(ViewData["channelsTree"]); return tree; } $('#channelsTree').bstreeview({ data: channelsTree() }); </script> }