Mit dem IDayAtAGlanceWidget können Sie das Widget “Tag auf einem Blick” um weitere Datentypen erweitern.

Die Datentabelle sollte mindestens ein Datumsfeld haben, um es anzeigen zu können.

Zu definieren in dem Interface sind:

Eigenschaften

Guid Ihres Adapters. Als Guid nehmen Sie am Besten die DataSource Guid:

public Guid Guid => EnumDataSourceExtension.[YOURDATATABLE].ValueGuid;

Namen Ihres Adapters. Als Name nehmen Sie am besten die übersetzte DataSource:

public string Name => EnumDataSourceExtension.[YOURDATATABLE].Text;

Methoden

 IQueryable<DayAtAGlanceWidgetDataModel> GetDataQuery(DayAtAGlanceFilterModel filter).

Diese Methode wird benötigt um die Datensätze in der Liste anzuzeigen. Mit dem Filtermodel erhalten Sie das Startdatum, das Enddatum und das aktuelle Benutzerprofil. Als Rückgabewert muss die Methode
ein IQueryable von DayAtAGlanceWidgetDataModels haben:

IQueryable<DayAtAGlanceWidgetDataModel> IDayAtAGlanceWidget.GetDataQuery(DayAtAGlanceFilterModel filter)
{
    Session session = Api.ORM.GetDefaultSession();

    return Api.ORM.GetQueryWithReadPermissions<[YOURDATATABLE]>(session)
        .Where(ff => !ff.IsInRecycleBin)
        .Where(ff => ff.Date < filter.EndDate.AddDays(1) && ff.Date >= filter.StartDate)
        .Where(ff => filter.ProfileGuids.Any(gg => gg == ff.RelatedResponsible.Oid))
        .Select(ff => new DayAtAGlanceWidgetDataModel()
        {
            Oid = ff.Oid,
            EntityTitle = ff.EntityTitle,
            AllDay = ff.Date.Value < ff.Date.Value, // SQL Server can't handle constant values
            Start = ff.Date,
            RealStart = ff.Date,
            RealEnd = ff.Date,
            RelatedOwner = ff.RelatedResponsible.Oid,
            OpenBehavior = EnumGridOpenActionCreateRecordTypes.TabGuid,
            MainInformation = new ListControlDataText(
            new ListControlDataContent(Name + ": " + ff.EntityTitle))
        });
}
 void GetDatesToHighlight(int month, int year, List<HighlightDateModel> highlightDates)

Diese Methode kümmert sich um die Highlights und Tooltips im Kalendar, wenn dieser Tag einen Datensatz
enthält. Dazu muss die Liste mit den HighlightDateModel entsprechend befüllt werden:

void IDayAtAGlanceWidget.GetDatesToHighlight(int month, int year, List<HighlightDateModel> highlightDates, List<Guid> profileGuids)
{
    Session session = Api.ORM.GetDefaultSession();

    DateTime filterStart = new DateTime(year, month, 1);
    DateTime filterEnd = filterStart.AddMonths(1);

    IEnumerable<IGrouping<DateTime, DayAtAGlanceWidgetDataModel>> groupedAppointments = Api.ORM.GetQueryWithReadPermissions<[YOURDATATABLE]>(session)
        .Where(ff => !ff.IsInRecycleBin)
        .Where(ff => ff.Date < filterEnd && ff.Date >= filterStart)
        .Where(ff => filter.ProfileGuids.Any(gg => gg == ff.RelatedResponsible.Oid))
        .Select(ff => new DayAtAGlanceWidgetDataModel()
        {
            Oid = ff.Oid,
            EntityTitle = ff.EntityTitle,
            AllDay = ff.Date.Value < ff.Date.Value, // SQL Server can't handle constant values
            Start = ff.Date,
            RealStart = ff.Date,
            RealEnd = ff.Date,
            RelatedOwner = ff.RelatedResponsible.Oid,
            OpenBehavior = EnumGridOpenActionCreateRecordTypes.TabGuid,
            Tooltip = [YOURDATATABLE].Text + " " + ff.Date.ToShortTimeString() + " (" + Api.Enum.GetEnumValue<EnumFollowUpStatus>(ff.Status.ToGuid()).Text + ") <br/>" + ff.EntityTitle
        })
        .AsEnumerable()
        .GroupBy(ff => ff.Start.Date).ToList();

    foreach (IGrouping<DateTime, DayAtAGlanceWidgetDataModel> dayGroup in groupedAppointments)
    {
        foreach (DayAtAGlanceWidgetDataModel day in dayGroup.OrderByDescending(ff => ff.AllDay).ThenBy(ff => ff.Start).ThenByDescending(ff => ff.EntityTitle))
        {
            HighlightDateModel model = highlightDates.FirstOrDefault(b => b.DayToHighlight == dayGroup.Key.Day);

            if (model == null)
            {
                model = new HighlightDateModel() { DayToHighlight = dayGroup.Key.Day, DayAtAGlanceWidgetDataModels = new List<DayAtAGlanceWidgetDataModel>() { day } };
                highlightDates.Add(model);
            }
            else
                model.DayAtAGlanceWidgetDataModels.Add(day);
        }
    }
}