< Summary - Syki

Information
Class: Syki.Front.Pages.Academic.AcademicClassroomsPage
Assembly: Front
File(s): /home/runner/work/syki/syki/Front/Pages/Academic/AcademicClassroomsPage.razor
Tag: 4_16869239191
Line coverage
0%
Covered lines: 0
Uncovered lines: 28
Coverable lines: 28
Total lines: 124
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 6
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%
LoadData()100%210%
get__quickFilter()100%210%
OpenDialog()0%620%
GetNotFoundMessage()0%620%
GoToClassroomAssignmentPage()100%210%

File(s)

/home/runner/work/syki/syki/Front/Pages/Academic/AcademicClassroomsPage.razor

#LineLine coverage
 1@using Syki.Front.Features.Academic.CreateTeacher
 2@using Syki.Front.Features.Academic.AssignDisciplinesToTeacher
 3
 4@namespace Syki.Front.Pages.Academic
 5
 6@page "/academic/classrooms"
 7@attribute [Authorize(Roles = "Academic")]
 8
 9<SykiPageTitle Title="Salas" />
 10
 11<MudContainer Class="my-4 px-4">
 12    <SykiPageHeader Icon="@Icons.Material.Filled.VideoLabel" Title="Salas" ButtonText="Nova Sala" OnClick="@OpenDialog" 
 13    <MudCard Class="pl-1 my-4">
 14        <MudCardContent>
 15            <MudGrid Spacing="3">
 16                <MudItem>
 17                    <MudButton
 18                        IconSize="Size.Medium"
 19                        StartIcon="@Icons.Material.Filled.Sort"
 20                        Variant="Variant.Filled"
 21                        Size="Size.Medium"
 22                        Color="Color.Tertiary"
 23                        OnClick="@GoToClassroomAssignmentPage"
 24                    >
 25                        Ensalamento
 26                    </MudButton>
 27                </MudItem>
 28            </MudGrid>
 29        </MudCardContent>
 30    </MudCard>
 31    <MudContainer Class="px-0 mb-4">
 32        <MudTable
 33            Hover
 34            Dense
 35            Class="pa-4"
 36            Items="@_classrooms"
 37            Filter="@_quickFilter"
 38            Loading="@_loading"
 39            RowsPerPage="10"
 40        >
 41            <ToolBarContent>
 42                <SykiDataGridSearchTextField @bind-Value="@_searchString" Placeholder="Busque por nome ou campus"/>
 43            </ToolBarContent>
 44            <HeaderContent>
 45                <MudTh>Nome</MudTh>
 46                <MudTh>Campus</MudTh>
 47                <MudTh>Capacidade</MudTh>
 48            </HeaderContent>
 49            <RowTemplate>
 050                <MudTd DataLabel="Nome">@context.Name</MudTd>
 051                <MudTd DataLabel="Campus">@context.Campus</MudTd>
 052                <MudTd DataLabel="Capacidade">@context.Capacity</MudTd>
 53            </RowTemplate>
 54            <LoadingContent>
 055                @if (_breakpoint == Breakpoint.Xs)
 56                {
 57                    <MudProgressLinear Color="Color.Info" Indeterminate="true" />
 58                }
 59            </LoadingContent>
 60            <NoRecordsContent>
 061                @(GetNotFoundMessage())
 62            </NoRecordsContent>
 63            <PagerContent>
 64                <SykiTablePager />
 65            </PagerContent>
 66        </MudTable>
 67    </MudContainer>
 68</MudContainer>
 69
 70@inject NavigationManager Nav
 71@inject IDialogService DialogService
 72@inject GetClassroomsClient GetClassroomsClient
 73@inject IBrowserViewportService BrowserViewportService
 74
 75@code
 76{
 77    private bool _loading;
 78    private string _searchString;
 079    private List<GetClassroomsOut> _classrooms = [];
 80
 81    private Breakpoint _breakpoint;
 82
 83    protected override async Task OnInitializedAsync()
 84    {
 085        _breakpoint = await BrowserViewportService.GetCurrentBreakpointAsync();
 086        await LoadData();
 087    }
 88
 89    private async Task LoadData()
 90    {
 091        _loading = true;
 092        _classrooms = await GetClassroomsClient.Get();
 093        _loading = false;
 094    }
 95
 096    private Func<GetClassroomsOut, bool> _quickFilter => x => _searchString.IsIn(x.Name, x.Campus);
 97
 98    private async Task OpenDialog()
 99    {
 0100        var breakpoint = await BrowserViewportService.GetCurrentBreakpointAsync();
 0101        var options = new DialogOptions {
 0102            MaxWidth = MaxWidth.Small,
 0103            FullWidth = true,
 0104            FullScreen = breakpoint == Breakpoint.Xs,
 0105        };
 0106        var dialog = await DialogService.ShowAsync<CreateClassroomDialog>("", options);
 107
 0108        var result = await dialog.Result;
 109
 0110        if (result!.Canceled) return;
 111
 0112        await OnInitializedAsync();
 0113    }
 114
 115    private string GetNotFoundMessage()
 116    {
 0117        return (_searchString.IsEmpty()) ? "Não existem salas cadastradas ainda." : "Nenhuma sala encontrada.";
 118    }
 119
 120    private void GoToClassroomAssignmentPage()
 121    {
 0122        Nav.NavigateTo("/academic/classrooms/assignment");
 0123    }
 124}