< Summary - Syki

Information
Class: Syki.Front.Pages.Student.StudentClassActivitiesTab
Assembly: Front
File(s): /home/runner/work/syki/syki/Front/Pages/Student/StudentClassActivitiesTab.razor
Tag: 4_16869239191
Line coverage
0%
Covered lines: 0
Uncovered lines: 57
Coverable lines: 57
Total lines: 177
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 12
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_ClassId()100%210%
.ctor()100%210%
OnParametersSetAsync()0%620%
RenderChart()100%210%
GetActivities()100%210%
GoToDetails(...)100%210%
HandleNotesFilterChange()0%620%
GetNotFoundMessage()0%620%

File(s)

/home/runner/work/syki/syki/Front/Pages/Student/StudentClassActivitiesTab.razor

#LineLine coverage
 1@namespace Syki.Front.Pages.Student
 2
 3<MudContainer Class="my-4 px-0">
 4    <style>.mud-table-toolbar { height: auto }</style>
 5    <MudDataGrid
 6        T="StudentClassActivityOut"
 7        Class="pa-4 mt-4"
 8        Items="@GetActivities()"
 9        Hover="true"
 10        Dense="true"
 11        Loading="@_loading"
 12        SortMode="@SortMode.None"
 13        RowsPerPage="100"
 14    >
 15        <ToolBarContent>
 16            <MudGrid Class="align-center mb-1" Spacing="3">
 17                <MudItem xs="12" sm="3" md="3" lg="3">
 18                    <MudStack Row="true" AlignItems="AlignItems.Center" Spacing="3" Style="width: 100%;">
 19                        <MudToggleGroup T="ClassNoteType" SelectionMode="SelectionMode.MultiSelection" Values="@_notesFi
 20                            <MudToggleItem Value="@(ClassNoteType.N1)" UnselectedIcon="@Icons.Material.Filled.CheckBoxOu
 21                            <MudToggleItem Value="@(ClassNoteType.N2)" UnselectedIcon="@Icons.Material.Filled.CheckBoxOu
 22                            <MudToggleItem Value="@(ClassNoteType.N3)" UnselectedIcon="@Icons.Material.Filled.CheckBoxOu
 23                        </MudToggleGroup>
 24                    </MudStack>
 25                </MudItem>
 26                <MudItem xs="12" sm="9" md="9" lg="9" Class="d-flex justify-end">
 27                    <MudStack Row>
 028                        @if (_notesFilter.Contains(ClassNoteType.N1))
 29                        {
 30                            <MudChip T="string" Class="px-3 ma-0" Size="Size.Medium" Label="true">
 031                                <b>N1: @_class.N1.Format()</b>
 32                            </MudChip>
 33                        }
 034                        @if (_notesFilter.Contains(ClassNoteType.N2))
 35                        {
 36                            <MudChip T="string" Class="px-3 ma-0" Size="Size.Medium" Label="true">
 037                                <b>N2: @_class.N2.Format()</b>
 38                            </MudChip>
 39                        }
 040                        @if (_notesFilter.Contains(ClassNoteType.N3))
 41                        {
 42                            <MudChip T="string" Class="px-3 ma-0" Size="Size.Medium" Label="true">
 043                                <b>N3: @_class.N3.Format()</b>
 44                            </MudChip>
 45                        }
 46                    </MudStack>
 47                </MudItem>
 48            </MudGrid>
 49        </ToolBarContent>
 50        <Columns>
 51            <PropertyColumn Property="x => x.Title" Title="Título" />
 52            <PropertyColumn Property="x => x.Type.GetDescription()" Title="Tipo" />
 53            <PropertyColumn Property="x => x.Value.Format()" Title="Pontuação" />
 54            <PropertyColumn Property="x => x.GetWeight()" Title="Peso" />
 55            <PropertyColumn Property="x => x.GetNote()" Title="Nota" />
 56            <PropertyColumn Property="x => x.GetDueDate()" Title="Data de entrega" />
 57            <TemplateColumn Title="Status">
 58                <CellTemplate>
 59                    <MudChip T="string" Label="true" Class="px-4 ma-0" Size="Size.Small" Color="@context.Item.GetColor()
 060                        <b>@context.Item.WorkStatus.GetDescription()</b>
 61                    </MudChip>
 62                </CellTemplate>
 63            </TemplateColumn>
 64            <TemplateColumn>
 65                <CellTemplate>
 066                    <MudIconButton Size="@Size.Small" Icon="@Icons.Material.Filled.RemoveRedEye" OnClick="@(() => GoToDe
 67                </CellTemplate>
 68            </TemplateColumn>
 69        </Columns>
 70        <NoRecordsContent>
 071            @(GetNotFoundMessage())
 72        </NoRecordsContent>
 73        <PagerContent>
 74        </PagerContent>
 75    </MudDataGrid>
 76</MudContainer>
 77
 78<MudContainer Class="my-4 px-0">
 79    <MudPaper Class="px-4 pt-4">
 080        <ApexCharts.ApexChart @ref="@_chart" TItem="StudentClassActivityOut" Options="@_options" Height="@_height">
 081            <ApexCharts.ApexPointSeries
 082                Name="Pontuação"
 083                TItem="StudentClassActivityOut"
 084                Items="@GetActivities()"
 085                SeriesType="ApexCharts.SeriesType.Bar"
 086                XValue="@(a => a.Title)"
 087                YValue="@(e => e.Value)"
 88                ShowDataLabels/>
 89            <ApexCharts.ApexPointSeries
 90                Name="Pontuação ponderada"
 91                TItem="StudentClassActivityOut"
 92                Items="@GetActivities()"
 93                SeriesType="ApexCharts.SeriesType.Bar"
 094                XValue="@(a => a.PonderedValueMessage())"
 095                YValue="@(e => e.PonderedValue)"
 96                ShowDataLabels/>
 97        </ApexCharts.ApexChart>
 98    </MudPaper>
 99</MudContainer>
 100
 101@inject NavigationManager Nav
 102@inject GetStudentClassClient GetStudentClassClient
 103@inject GetStudentClassActivitiesClient GetStudentClassActivitiesClient
 104
 105@code
 106{
 107  [Parameter]
 0108  public Guid ClassId { get; set; }
 109
 110    private int _height;
 111    private bool _loading;
 0112    private StudentClassOut _class = new();
 113
 0114    private List<StudentClassActivityOut> _activities = [];
 0115    private IEnumerable<ClassNoteType> _notesFilter = [ClassNoteType.N1, ClassNoteType.N2, ClassNoteType.N3];
 116
 117    private ApexCharts.ApexChart<StudentClassActivityOut> _chart;
 0118    private ApexCharts.ApexChartOptions<StudentClassActivityOut> _options = new()
 0119    {
 0120        Chart = new ApexCharts.Chart
 0121        {
 0122            Toolbar = new ApexCharts.Toolbar { Show = false },
 0123        },
 0124        PlotOptions = new ApexCharts.PlotOptions
 0125        {
 0126            Bar = new ApexCharts.PlotOptionsBar { Horizontal = true }
 0127        },
 0128        Yaxis = [ new ApexCharts.YAxis { Max = 10 } ]
 0129    };
 130
 131    protected override async Task OnParametersSetAsync()
 132    {
 0133        _loading = true;
 0134        _class = await GetStudentClassClient.Get(ClassId);
 0135        var response = await GetStudentClassActivitiesClient.Get(ClassId);
 0136        if (response.IsSuccess)
 137        {
 0138            _activities = response.Success;
 139        }
 0140        await RenderChart();
 0141        _loading = false;
 0142    }
 143
 144    private async Task RenderChart()
 145    {
 0146        _height = 100 + GetActivities().Count() * 60;
 0147        StateHasChanged();
 0148        await _chart.RenderAsync();
 0149    }
 150
 151    private IEnumerable<StudentClassActivityOut> GetActivities()
 152    {
 0153        return _activities.Where(x => _notesFilter.Contains(x.Note)).ToList();
 154    }
 155
 156    private void GoToDetails(StudentClassActivityOut activity)
 157    {
 0158        Nav.NavigateTo($"student/classes/{activity.ClassId}/activities/{activity.Id}");
 0159    }
 160
 161    private async Task HandleNotesFilterChange(IEnumerable<ClassNoteType> newValues)
 162    {
 0163        if (!newValues.Any())
 164        {
 0165            _notesFilter = _notesFilter.ToList();
 0166            return;
 167        }
 168
 0169        _notesFilter = newValues;
 0170        await RenderChart();
 0171    }
 172
 173    private string GetNotFoundMessage()
 174    {
 0175        return _notesFilter.Count() == 3  ? "Não existem atividades ainda." : "Nenhuma atividade encontrada.";
 176    }
 177}