Handling of multi-day events, new rendering etc.

This commit is contained in:
Burak Kaan Köse
2025-01-04 11:39:32 +01:00
parent 48ba4cdf42
commit a7674d436d
33 changed files with 842 additions and 382 deletions

View File

@@ -18,7 +18,7 @@ namespace Wino.Core.Domain.Models.Calendar
RepresentingDate = representingDate;
Period = new TimeRange(representingDate, representingDate.AddDays(1));
CalendarRenderOptions = calendarRenderOptions;
EventsCollection = new CalendarEventCollection(Period);
EventsCollection = new CalendarEventCollection(Period, calendarRenderOptions.CalendarSettings);
}
public DateTime RepresentingDate { get; }

View File

@@ -11,7 +11,8 @@ namespace Wino.Core.Domain.Models.Calendar
TimeSpan WorkingHourEnd,
double HourHeight,
DayHeaderDisplayType DayHeaderDisplayType,
CultureInfo CultureInfo)
CultureInfo CultureInfo,
bool GhostRenderAllDayItems)
{
public TimeSpan? GetTimeSpan(string selectedTime)
{

View File

@@ -1,9 +1,7 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using System.Linq;
using Itenso.TimePeriod;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Interfaces;
namespace Wino.Core.Domain.Models.Calendar
{
@@ -13,8 +11,6 @@ namespace Wino.Core.Domain.Models.Calendar
/// </summary>
public class DayRangeRenderModel
{
public event EventHandler<CalendarDayModel> CalendarDayEventCollectionUpdated;
public ITimePeriod Period { get; }
public List<CalendarDayModel> CalendarDays { get; } = [];
public List<DayHeaderRenderModel> DayHeaders { get; } = [];
@@ -29,8 +25,6 @@ namespace Wino.Core.Domain.Models.Calendar
var representingDate = calendarRenderOptions.DateRange.StartDate.AddDays(i);
var calendarDayModel = new CalendarDayModel(representingDate, calendarRenderOptions);
RegisterCalendarDayEvents(calendarDayModel);
CalendarDays.Add(calendarDayModel);
}
@@ -53,29 +47,11 @@ namespace Wino.Core.Domain.Models.Calendar
}
}
private void RegisterCalendarDayEvents(CalendarDayModel calendarDayModel)
{
calendarDayModel.EventsCollection.CalendarItemAdded += CalendarItemAdded;
calendarDayModel.EventsCollection.CalendarItemRemoved += CalendarItemRemoved;
}
// TODO: These handlers have incorrect senders. They should be the CalendarDayModel.
private void CalendarItemRemoved(object sender, ICalendarItem e)
=> CalendarDayEventCollectionUpdated?.Invoke(this, sender as CalendarDayModel);
private void CalendarItemAdded(object sender, ICalendarItem e)
=> CalendarDayEventCollectionUpdated?.Invoke(this, sender as CalendarDayModel);
/// <summary>
/// Unregisters all calendar item change listeners to draw the UI for calendar events.
/// </summary>
public void UnregisterAll()
{
foreach (var day in CalendarDays)
{
day.EventsCollection.CalendarItemRemoved -= CalendarItemRemoved;
day.EventsCollection.CalendarItemAdded -= CalendarItemAdded;
}
}
//public void AddEvent(ICalendarItem calendarEventModel)
//{
// var calendarDayModel = CalendarDays.FirstOrDefault(x => x.Period.HasInside(calendarEventModel.Period.Start));
// calendarDayModel?.EventsCollection.AddCalendarItem(calendarEventModel);
//}
}
}