Migliorato calendario

This commit is contained in:
2025-06-11 16:38:36 +02:00
parent d8f2588e0e
commit 79fb383961
2 changed files with 52 additions and 45 deletions

View File

@@ -101,16 +101,6 @@
}
</div>
<MudMenu PopoverClass="custom_popover" Class="custom-mudfab" AnchorOrigin="Origin.TopLeft" TransformOrigin="Origin.BottomRight">
<ActivatorContent>
<MudFab Color="Color.Primary" Size="Size.Small" StartIcon="@Icons.Material.Filled.Add"/>
</ActivatorContent>
<ChildContent>
<MudMenuItem>Nuovo contatto</MudMenuItem>
<MudMenuItem OnClick="OpenActivityForm">Nuova attività</MudMenuItem>
</ChildContent>
</MudMenu>
@code {
// Stato UI
@@ -167,21 +157,27 @@
[JSInvokable]
public async Task OnSwipeLeft()
{
CambiaPeriodo(1);
await LoadMonthData();
await CambiaPeriodo(1);
StateHasChanged();
if (Expanded)
{
await LoadMonthData();
}
}
[JSInvokable]
public async Task OnSwipeRight()
{
CambiaPeriodo(-1);
await LoadMonthData();
await CambiaPeriodo(-1);
StateHasChanged();
if (Expanded)
{
await LoadMonthData();
}
}
// Cambio periodo mese/settimana
private void CambiaPeriodo(int direzione)
private async Task CambiaPeriodo(int direzione)
{
if (Expanded)
{
@@ -205,13 +201,13 @@
else
{
// Cambio settimana: aggiorno anche il giorno selezionato
SelectedDate = SelectedDate.AddDays(7 * direzione);
await SelezionaData(SelectedDate.AddDays(7 * direzione));
_internalMonth = new DateTime(SelectedDate.Year, SelectedDate.Month, 1);
}
}
// Cambio modalità
private async Task ToggleExpanded()
private void ToggleExpanded()
{
if (Expanded)
{
@@ -228,7 +224,6 @@
SliderAnimation = "";
StateHasChanged();
await LoadMonthData();
}
// Caricamento attività al cambio mese
@@ -245,21 +240,24 @@
(x.EffectiveDate >= start && x.EffectiveDate <= end));
MonthActivities = activities.OrderBy(x => x.EffectiveDate ?? x.EstimatedDate).ToList();
// Filtro per il giorno selezionato (solo se il giorno selezionato è visibile nel mese corrente)
if (SelectedDate.Month == CurrentMonth.Month && SelectedDate.Year == CurrentMonth.Year)
FilteredActivities = GetEventsForDay(SelectedDate);
else
FilteredActivities = [];
IsLoading = false;
StateHasChanged();
}
// Selezione giorno in settimana
private void SelezionaData(DateTime day)
private async Task SelezionaData(DateTime day)
{
SelectedDate = day;
_internalMonth = new DateTime(day.Year, day.Month, 1); // Sync il mese visualizzato solo se cambio settimana!
StateHasChanged();
var cacheInternalMonth = _internalMonth;
_internalMonth = new DateTime(day.Year, day.Month, 1);
if (cacheInternalMonth != _internalMonth)
{
await LoadMonthData();
}
FilteredActivities = GetEventsForDay(day);
StateHasChanged();
}
@@ -276,7 +274,6 @@
_internalMonth = new DateTime(day.Year, day.Month, 1); // Sync il mese visualizzato
SliderAnimation = "";
StateHasChanged();
await LoadMonthData(); // Aggiorna anche la lista attività (se hai cambiato mese)
}
// Utility
@@ -296,7 +293,4 @@
dotNetHelper?.Dispose();
}
private void OpenActivityForm() =>
NavigationManager.NavigateTo("/activity");
}