Build / Build (push) Successful in 1m8s
Follow requests answered on the persona's own profile and from the Notifications tab; its followers and the accounts it follows listed there, a follower removed (asked first). Downvotes on threadiverse posts, after the public-vote notice. A notification dismissed from its line. "Filter this post" from a card's menu, and the Filters page showing the posts a filter holds. Who may quote the persona's own posts, and revoking a quote of one. Statistics: a server in detail with "describe again", the ledger's events, the server's own days. The composer deletes an upload taken out before posting. MediaType.Documents goes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WpVCoDeM1qUTRp4fXQdfof
59 lines
2.2 KiB
Plaintext
59 lines
2.2 KiB
Plaintext
@inherits LocalizableComponentBase
|
|
|
|
@* The federation ledger's events, newest first (ViewInteractionEvent): what was received, delivered or fetched and how
|
|
it ended, never who. Channels and outcomes show as the ledger keys them, like the statistics' counters. In the
|
|
statistics' Events section and in a server's detail. *@
|
|
<DTable Size="DSize.Xs" Zebra="true" WrapperClass="max-h-[28rem] rounded-xl neo-inset neo-2xs" data-statistics-events-table data-scroll-x>
|
|
<thead>
|
|
<tr>
|
|
<th>@Localizer["When"]</th>
|
|
@if (ShowHost)
|
|
{
|
|
<th>@Localizer["server"]</th>
|
|
}
|
|
<th>@Localizer["Channel"]</th>
|
|
<th>@Localizer["Activity"]</th>
|
|
<th>@Localizer["Outcome"]</th>
|
|
<th>@Localizer["Reason"]</th>
|
|
<th class="text-right">HTTP</th>
|
|
<th class="text-right">ms</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach (var happened in Events)
|
|
{
|
|
<tr data-statistics-event="@happened.Channel" data-outcome="@happened.Outcome">
|
|
<td class="whitespace-nowrap" title="@NerdRow.Time(happened.At)">@happened.At.ToLocalTime().ToString(SUtility.dateTimeFormatExt)</td>
|
|
@if (ShowHost)
|
|
{
|
|
<td class="max-w-40 truncate" title="@happened.Host">@happened.Host</td>
|
|
}
|
|
<td>@happened.Channel</td>
|
|
<td class="max-w-48 truncate" title="@happened.Object">@happened.Activity</td>
|
|
<td>
|
|
<DBadge Size="DSize.Xs" Color="@OutcomeColor(happened.Outcome)">@happened.Outcome</DBadge>
|
|
</td>
|
|
<td class="max-w-48 truncate" title="@happened.Reason">@happened.Reason</td>
|
|
<td class="text-right tabular-nums">@happened.Status</td>
|
|
<td class="text-right tabular-nums">@happened.LatencyMs</td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
</DTable>
|
|
|
|
@code {
|
|
[Parameter, EditorRequired] public List<ViewInteractionEvent> Events { get; set; } = [];
|
|
/// <summary>A column for the server, where the events are of many.</summary>
|
|
[Parameter] public bool ShowHost { get; set; } = true;
|
|
|
|
protected override void OnInitialized() => IsLoading = false;
|
|
|
|
static DColor OutcomeColor(string outcome) => outcome switch
|
|
{
|
|
"ok" or "accepted" => DColor.Success,
|
|
"queued" or "deferred" or "retry" => DColor.Warning,
|
|
"failed" or "dead" or "refused" or "rejected" or "dropped" => DColor.Error,
|
|
_ => DColor.None
|
|
};
|
|
}
|