< Summary - Syki

Information
Class: Syki.Front.Pages.Adm.AdmCommandsPage
Assembly: Front
File(s): /home/runner/work/syki/syki/Front/Pages/Adm/AdmCommandsPage.razor
Tag: 4_16869239191
Line coverage
0%
Covered lines: 0
Uncovered lines: 39
Coverable lines: 39
Total lines: 217
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 10
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor()100%210%
OnInitializedAsync()100%210%
Filter()0%620%
SearchInstitution()0%620%
GoToDetails(...)100%210%
GetNotFoundMessage()0%620%

File(s)

/home/runner/work/syki/syki/Front/Pages/Adm/AdmCommandsPage.razor

#LineLine coverage
 1@using Syki.Front.Components.Summaries
 2@using Syki.Front.Features.Adm.GetCommands
 3@using Syki.Front.Features.Adm.GetCommandsSummary
 4
 5@namespace Syki.Front.Pages.Adm
 6
 7@page "/adm/commands"
 8@attribute [Authorize(Roles = "Adm")]
 9
 10<SykiPageTitle Title="Comandos" />
 11
 12<MudContainer Class="my-4 px-4">
 13    <MudCard>
 14        <MudCardContent>
 15            <MudGrid>
 16                <MudItem xs="12" sm="8" md="8" lg="8">
 17                    <MudStack Row="true" AlignItems="AlignItems.Center">
 18                        <MudIcon Icon="@Icons.Material.Filled.Task" Class="mb-1" Size="Size.Large"/>
 19                        <MudText Typo="Typo.h5" Style="font-weight: bold">Comandos</MudText>
 20                    </MudStack>
 21                </MudItem>
 22                <MudItem xs="12" sm="4" md="4" lg="4" Class="d-flex justify-end">
 023                    <MudText Typo="Typo.h4" Style="font-weight: bold">@_data.Summary.Total.ToThousandSeparated()</MudTex
 24                </MudItem>
 25            </MudGrid>
 26        </MudCardContent>
 27    </MudCard>
 28
 29    <MudContainer Class="px-0 my-4">
 30        <MudGrid Spacing="2">
 31            <SummaryCard Loading="@_loading" Icon="@Icons.Material.Rounded.WarningAmber" Color="MudBlazor.Color.Warning"
 32            <SummaryCard Loading="@_loading" Icon="@Icons.Material.Filled.Autorenew" Color="MudBlazor.Color.Info" Text="
 33            <SummaryCard Loading="@_loading" Icon="@Icons.Material.Filled.ErrorOutline" Color="MudBlazor.Color.Error" Te
 34            <SummaryCard Loading="@_loading" Icon="@Icons.Material.Filled.CheckCircleOutline" Color="MudBlazor.Color.Suc
 35        </MudGrid>
 36    </MudContainer>
 37
 38    <style>
 39        .mud-table-toolbar {
 40            height: auto;
 41        }
 42    </style>
 43    <MudContainer Class="px-0 my-4">
 44        <MudTable
 45            Class="mb-4"
 46            Dense="true"
 47            Hover="true"
 48            Items="@_commands"
 49            RowsPerPage="10"
 50            T="CommandTableOut"
 51            Loading="@_tableLoading"
 52            Breakpoint="Breakpoint.Sm"
 53        >
 54            <ToolBarContent>
 55                <MudCard Class="my-4 mr-2" Style="width: 100%" Elevation="0" Outlined="true">
 56                    <MudCardContent>
 57                        <MudGrid Spacing="3">
 58                            <MudItem xs="12" sm="3" md="3" lg="3">
 59                                <MudSelect
 60                                    Dense="true"
 61                                    Margin="Margin.Dense"
 62                                    Variant="Variant.Outlined"
 63                                    @bind-Value="@_status"
 64                                    Label="Status"
 65                                    Clearable="true"
 66                                    AdornmentColor="Color.Primary
 67                                ">
 068                                    @foreach (CommandStatus? item in Enum.GetValues<CommandStatus>())
 69                                    {
 70                                        <MudSelectItem Value="@item">
 71                                            <MudStack Row="true" AlignItems="AlignItems.Center">
 72                                                <MudIcon Class="mb-1" Icon="@item.Value.GetIcon()" Color="@item.Value.Ge
 073                                                <MudText>@item.GetDescription()</MudText>
 74                                            </MudStack>
 75                                        </MudSelectItem>
 76                                    }
 77                                </MudSelect>
 78                            </MudItem>
 79                            <MudItem xs="12" sm="4" md="4" lg="4">
 80                                <MudSelect
 81                                    Dense="true"
 82                                    Margin="Margin.Dense"
 83                                    Variant="Variant.Outlined"
 84                                    @bind-Value="@_type"
 85                                    Label="Tipo"
 86                                    Clearable="true"
 87                                    AdornmentColor="Color.Primary
 88                                ">
 089                                    @foreach (CommandTypeCountOut item in _data.Types)
 90                                    {
 091                                        <MudSelectItem Value="@item.Type">@item.Description</MudSelectItem>
 92                                    }
 93                                </MudSelect>
 94                            </MudItem>
 95                            <MudItem xs="12" sm="5" md="5" lg="5">
 96                                <MudAutocomplete
 97                                    T="TinyInstitutionOut"
 98                                    MaxItems="50"
 99                                    SearchFunc="@SearchInstitution"
 100                                    Dense="true"
 101                                    Margin="Margin.Dense"
 102                                    Variant="Variant.Outlined"
 103                                    @bind-Value="@_institution"
 104                                    Label="Instituição"
 105                                    Clearable="true"
 0106                                    OnClearButtonClick="@(() => _institution = null)"
 107                                    AdornmentColor="Color.Primary"
 108                                />
 109                            </MudItem>
 110                            <MudItem xs="12" sm="12" md="12" lg="12" Class="d-flex justify-end align-center pt-1">
 111                                <MudStack Row="true" AlignItems="AlignItems.Center" Spacing="1">
 0112                                    <MudChip T="string" Variant="Variant.Text" Color="Color.Primary" Class="mt-1 pt-1">@
 113                                    <MudButton
 114                                        OnClick="@Filter"
 115                                        Size="Size.Medium"
 116                                        Color="Color.Primary"
 117                                        IconSize="Size.Medium"
 118                                        Variant="Variant.Filled"
 119                                        StartIcon="@Icons.Material.Outlined.FilterList"
 120                                    >
 121                                        Filtrar
 122                                    </MudButton>
 123                                </MudStack>
 124                            </MudItem>
 125                        </MudGrid>
 126                    </MudCardContent>
 127                </MudCard>
 128            </ToolBarContent>
 129
 130            <HeaderContent>
 131                <MudTh>Tipo</MudTh>
 132                <MudTh>Criação</MudTh>
 133                <MudTh>Processamento</MudTh>
 134                <MudTh>Duração (ms)</MudTh>
 135                <MudTh></MudTh>
 136            </HeaderContent>
 137            <RowTemplate>
 138                <MudTd DataLabel="Tipo">
 139                    <MudStack Row="true" AlignItems="AlignItems.Center" Spacing="1">
 140                        <MudIcon Icon="@context.Status.GetIcon()" Color="@context.Status.GetColor()" Size="Size.Small" /
 0141                        <MudText Typo="Typo.body2">@context.Description</MudText>
 142                    </MudStack>
 143                </MudTd>
 0144                <MudTd DataLabel="Criação">@context.CreatedAt.ToMinuteString()</MudTd>
 0145                <MudTd DataLabel="Processamento">@context.ProcessedAt.ToMinuteString()</MudTd>
 0146                <MudTd DataLabel="Duração (ms)">@context.Duration.ToThousandSeparated()</MudTd>
 147                <MudTd>
 0148                    <MudIconButton Size="@Size.Small" Icon="@Icons.Material.Filled.RemoveRedEye" OnClick="@(() => GoToDe
 149                </MudTd>
 150            </RowTemplate>
 151            <NoRecordsContent>
 0152                @(GetNotFoundMessage())
 153            </NoRecordsContent>
 154            <PagerContent>
 155                <SykiTablePager />
 156            </PagerContent>
 157        </MudTable>
 158    </MudContainer>
 159</MudContainer>
 160
 161@inject NavigationManager Nav
 162@inject GetCommandsClient GetCommandsClient
 163@inject GetCommandsSummaryClient GetCommandsSummaryClient
 164
 165@code
 166{
 167    private bool _loading;
 168    private bool _tableLoading;
 0169    private GetCommandsSummaryOut _data = new();
 0170    private List<CommandTableOut> _commands = [];
 171
 172    private TinyInstitutionOut? _institution;
 173    private string? _type;
 174    private CommandStatus? _status;
 175
 176    protected override async Task OnInitializedAsync()
 177    {
 0178        _loading = true;
 0179        _tableLoading = true;
 0180        _data = await GetCommandsSummaryClient.Get();
 0181        await Filter();
 0182        _loading = false;
 0183    }
 184
 185    private async Task Filter()
 186    {
 0187        _tableLoading = true;
 0188        var filters = new CommandTableFilterIn()
 0189        {
 0190            Type = _type,
 0191            Status = _status,
 0192            InstitutionId = _institution?.Id,
 0193        };
 0194        _commands = await GetCommandsClient.Get(filters);
 0195        _tableLoading = false;
 0196    }
 197
 198    private async Task<IEnumerable<TinyInstitutionOut>> SearchInstitution(string value, CancellationToken cancellationTo
 199    {
 0200        await Task.Delay(0);
 201
 0202        if (string.IsNullOrEmpty(value))
 0203            return _data.Institutions;
 204
 0205        return _data.Institutions.Where(x => value.IsIn(x.Name));
 0206    }
 207
 208    private void GoToDetails(Guid id)
 209    {
 0210        Nav.NavigateTo($"adm/commands/{id}");
 0211    }
 212
 213    private string GetNotFoundMessage()
 214    {
 0215        return _tableLoading ? "" : "Não existem comandos ainda.";
 216    }
 217}