Skip to content

Commit

Permalink
Implemented ValutazioniViewModel + progressring + methods refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
Gabboxl committed Sep 5, 2023
1 parent 9a0aa42 commit bb83fa3
Show file tree
Hide file tree
Showing 5 changed files with 77 additions and 38 deletions.
1 change: 1 addition & 0 deletions ClassevivaPCTO/ClassevivaPCTO.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,7 @@
<Compile Include="Utils\IClassevivaAPI.cs" />
<Compile Include="DataModels\OverviewDataModel.cs" />
<Compile Include="ViewModels\AssenzeViewModel.cs" />
<Compile Include="ViewModels\ValutazioniViewModel.cs" />
<Compile Include="ViewModels\NoteViewModel.cs" />
<Compile Include="ViewModels\ScrutiniViewModel.cs" />
<Compile Include="ViewModels\OverviewControlViewModel.cs" />
Expand Down
19 changes: 19 additions & 0 deletions ClassevivaPCTO/ViewModels/ValutazioniViewModel.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using CommunityToolkit.Mvvm.ComponentModel;

namespace ClassevivaPCTO.ViewModels
{
public class ValutazioniViewModel : ObservableObject
{
private bool _isLoadingValutazioni = true;

public bool IsLoadingValutazioni
{
get { return _isLoadingValutazioni; }
set { SetProperty(ref _isLoadingValutazioni, value); }
}

public ValutazioniViewModel()
{
}
}
}
3 changes: 0 additions & 3 deletions ClassevivaPCTO/Views/Note.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,6 @@ protected override async void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);

NoteViewModel.IsLoadingNote = true;


await Task.Run(async () => { await LoadData(); });
}

Expand Down
8 changes: 7 additions & 1 deletion ClassevivaPCTO/Views/Valutazioni.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,15 @@
xmlns:controls="using:CommunityToolkit.WinUI.Controls"
xmlns:adapters="using:ClassevivaPCTO.Adapters"
xmlns:winUi="using:CommunityToolkit.Labs.WinUI"
xmlns:converters="using:Microsoft.Toolkit.Uwp.UI.Converters"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
muxc:BackdropMaterial.ApplyToRootOrPageBackground="True">

<Page.Resources>

<converters:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter" />


<Style x:Key="ListViewFullStretchStyle" TargetType="ListViewItem"
BasedOn="{StaticResource DefaultListViewItemStyle}">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
Expand Down Expand Up @@ -87,7 +91,8 @@
<muxc:ProgressRing IsActive="True" x:Name="ProgressRingVoti"
RelativePanel.AlignVerticalCenterWith="MainTitleTextBox"
RelativePanel.RightOf="MainTitleTextBox"
Margin="16,0,0,0" Width="28" Height="28" />
Margin="16,0,0,0" Width="28" Height="28"
Visibility="{x:Bind ValutazioniViewModel.IsLoadingValutazioni, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}" />

<Button x:Name="AggiornaCommand"
HorizontalAlignment="Right"
Expand All @@ -111,6 +116,7 @@
Background="{ThemeResource CardBackgroundFillColorDefaultBrush}">

<controls:Segmented
IsEnabled="False"
x:Name="SegmentedVoti"
SelectionChanged="SegmentedVoti_OnSelectionChanged"
HorizontalAlignment="Stretch">
Expand Down
84 changes: 50 additions & 34 deletions ClassevivaPCTO/Views/Valutazioni.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Windows.ApplicationModel.Core;
using Windows.UI.Core;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
using ClassevivaPCTO.Adapters;
using ClassevivaPCTO.Controls;


namespace ClassevivaPCTO.Views
Expand All @@ -31,6 +34,8 @@ public sealed partial class Valutazioni : Page

private List<PeriodList> _periodList;

private ValutazioniViewModel ValutazioniViewModel { get; } = new();

public Valutazioni()
{
this.InitializeComponent();
Expand All @@ -45,13 +50,28 @@ protected override async void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);

await Task.Run(async () => { await LoadData(); });


Card? cardResult = ViewModelHolder.GetViewModel().SingleCardResult;

MainTitleTextBox.Text += VariousUtils.ToTitleCase(cardResult.firstName);

await Task.Run(async () =>
}


private async Task LoadData()
{
try
{
await CoreApplication.MainView.Dispatcher.RunAsync(
CoreDispatcherPriority.Normal,
async () => { ValutazioniViewModel.IsLoadingValutazioni = true; }
);

Card? cardResult = ViewModelHolder.GetViewModel().SingleCardResult;


Grades2Result grades2Result = await _apiWrapper.GetGrades(
cardResult.usrId.ToString()
);
Expand All @@ -68,19 +88,6 @@ protected override async void OnNavigatedTo(NavigationEventArgs e)
var periods = resultPeriods.Periods;
var subjects = resultSubjects.Subjects;

/*
var groupedData = from g in grades
join p in periods on g.periodPos equals p.periodPos
join s in subjects on g.subjectId equals s.id
group g by new {p.periodDesc, s.description}
into g
select new
{
Period = g.Key.periodDesc,
Subject = g.Key.description,
Grades = g.ToList()
};
*/

// Select unique Periods from Grade list
_periodList = grades
Expand All @@ -97,30 +104,36 @@ select new
}).ToList();


//run on UI thread
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
//add to ComboPeriodi every period of resultPeriods
foreach (var period in _periodList)
{
SegmentedVoti.Items.Add(VariousUtils.UppercaseFirst(period.Period.periodDesc));
}
SegmentedVoti.SelectedIndex = 0;
ProgressRingVoti.Visibility = Visibility.Collapsed;
});
});
//update UI on UI thread
await CoreApplication.MainView.Dispatcher.RunAsync(
CoreDispatcherPriority.Normal,
async () => { UpdateUi(); }
);
}
finally
{
await CoreApplication.MainView.Dispatcher.RunAsync(
CoreDispatcherPriority.Normal,
async () => { ValutazioniViewModel.IsLoadingValutazioni = false; }
);
}
}


private void SegmentedVoti_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
private void UpdateUi()
{
var periodIndex = SegmentedVoti.SelectedIndex;

if (periodIndex == 0)
if (periodIndex == -1)
{
foreach (var period in _periodList)
{
SegmentedVoti.Items.Add(VariousUtils.UppercaseFirst(period.Period.periodDesc));
}

SegmentedVoti.SelectedIndex = 0;

SegmentedVoti.IsEnabled = true;
} else if (periodIndex == 0)
{
//create a list of SubjectAdapter from periodGrades by merging periods together and count subjects as one distinct subject
var mergetdPeriodsSubjects = _periodList
Expand Down Expand Up @@ -150,9 +163,12 @@ private void SegmentedVoti_OnSelectionChanged(object sender, SelectionChangedEve

MainListView.ItemsSource = subjectAdapters;
}
}


//MainListView.ItemsSource = subjectAdapters;
private void SegmentedVoti_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
UpdateUi();
}
}
}

0 comments on commit bb83fa3

Please sign in to comment.