@page "/Calendar"
@attribute [Authorize]
@using Template.Shared.Components.Layout
@using Template.Shared.Components.SingleElements.Calendar
Giorno
Settimana
Mese
ChangeDate(-1)" Color="Color.Surface"/>
@if (FilterByDay)
{
@($"{DateFilter:M}")
}
else if (FilterByWeek)
{
@($"{(DateRangeFilter.Start!.Value.Month == DateRangeFilter.End!.Value.Month ? DateRangeFilter.Start!.Value.Day : DateRangeFilter.Start!.Value.ToString("M"))} - {DateRangeFilter.End!.Value:M}")
}
else if (FilterByMonth)
{
@($"{DateFilter:Y}")
}
ChangeDate(1)" Color="Color.Surface"/>
@if (DateFilter != DateTime.Today)
{
Oggi
}
@if (FilterByDay)
{
}
else if (FilterByWeek)
{
}
else if (FilterByMonth)
{
}
Nuovo contatto
Nuova attivitą
@code {
private bool FilterByDay { get; set; } = true;
private bool FilterByWeek { get; set; }
private bool FilterByMonth { get; set; }
private DateTime? DateFilter { get; set; } = DateTime.Today;
private DateRange DateRangeFilter { get; set; } = new();
private DateTime DateTimeForMonthView { get; set; }
private bool _isVisible;
protected override void OnInitialized()
{
CalcDateRange();
}
public void OpenCalendar()
{
_isVisible = true;
StateHasChanged();
}
private void SelectDay()
{
ResetFilterCalendar();
FilterByDay = !FilterByDay;
StateHasChanged();
}
private void SelectWeek()
{
ResetFilterCalendar();
FilterByWeek = !FilterByWeek;
CalcDateRange();
StateHasChanged();
}
private void SelectMonth()
{
ResetFilterCalendar();
FilterByMonth = !FilterByMonth;
DateTimeForMonthView = new DateTime(DateFilter!.Value.Year, DateFilter!.Value.Month, 1);
StateHasChanged();
}
private void ResetFilterCalendar(bool forceSelectDay = false)
{
FilterByDay = false;
FilterByWeek = false;
FilterByMonth = false;
}
private void ChangeDate(int value)
{
var date = DateFilter!.Value;
if (FilterByDay)
{
DateFilter = date.AddDays(value);
}
else if (FilterByWeek)
{
DateFilter = DateRangeFilter.Start!.Value.AddDays(value > 0 ? 7 : -7);
}
else if (FilterByMonth)
{
var year = date.Year;
var month = value > 0 ? date.Month + 1 : date.Month - 1;
switch (month)
{
case > 12:
year++;
month = 1;
break;
case < 1:
year--;
month = 12;
break;
}
DateFilter = new DateTime(year, month, 1);
DateTimeForMonthView = DateFilter.Value;
}
CalcDateRange();
StateHasChanged();
}
private void CalcDateRange()
{
var giornoSettimana = DateFilter!.Value.DayOfWeek;
var diffInizio = (7 + (giornoSettimana - DayOfWeek.Monday)) % 7;
DateRangeFilter.Start = DateFilter!.Value.AddDays(-diffInizio).Date;
DateRangeFilter.End = DateRangeFilter.Start.Value.AddDays(6);
}
private async Task CloseDatePicker()
{
DateTimeForMonthView = new DateTime(DateFilter!.Value.Year, DateFilter!.Value.Month, 1);
CalcDateRange();
await Task.Delay(150);
_isVisible = false;
StateHasChanged();
}
}