Calendar rendering implementation.

This commit is contained in:
Burak Kaan Köse
2026-03-23 14:56:36 +01:00
parent 8586d0ef54
commit 1adba271e2
32 changed files with 11146 additions and 846 deletions
@@ -13,7 +13,8 @@ public record CalendarSettings(DayOfWeek FirstDayOfWeek,
TimeSpan WorkingHourEnd,
double HourHeight,
DayHeaderDisplayType DayHeaderDisplayType,
CultureInfo CultureInfo)
CultureInfo CultureInfo,
string TimedDayHeaderDateFormat = "ddd dd")
{
public int WorkWeekDayCount
{
@@ -65,4 +66,35 @@ public record CalendarSettings(DayOfWeek FirstDayOfWeek,
var dateTime = DateTime.Today.Add(timeSpan);
return dateTime.ToString(format, CultureInfo.InvariantCulture);
}
public string GetTimedDayHeaderText(DateOnly date)
{
var format = string.IsNullOrWhiteSpace(TimedDayHeaderDateFormat) ? "ddd dd" : TimedDayHeaderDateFormat;
try
{
return date.ToDateTime(TimeOnly.MinValue).ToString(format, CultureInfo);
}
catch (FormatException)
{
return date.ToDateTime(TimeOnly.MinValue).ToString("ddd dd", CultureInfo);
}
}
public string GetTimedHourLabelText(int hour)
{
if (hour < 0 || hour > 24)
{
throw new ArgumentOutOfRangeException(nameof(hour));
}
if (DayHeaderDisplayType == DayHeaderDisplayType.TwentyFourHour)
{
return hour.ToString(CultureInfo);
}
var displayHour = hour % 24;
var dateTime = DateTime.Today.AddHours(displayHour);
return dateTime.ToString("h tt", CultureInfo);
}
}