Scheduler

Description

The Scheduler shows appointments in five views: Day (one or more days), Week, Month, Agenda and a Timeline with one lane per resource. A toolbar moves between ranges and views.

Appointments can be selected (Ctrl+click adds to the selection), dragged to another time, day or resource (Ctrl copies, Alt snaps to the minute), resized by their top or bottom edge, created by dragging across empty time or double-clicking a slot, and dropped in from elsewhere on the page with Scheduler.MakeDraggable.

The scheduler never changes the appointments it is given. Each gesture raises a request carrying the proposed change (OnMove, OnResize, OnCreate, OnDelete, …); the application updates its own list and passes it back with Appointments(...). A request nobody handles changes nothing on screen.

Usage

Create the scheduler with Scheduler(), give it resources and appointments, and apply the requests it raises to your own list. Give it a height: the body scrolls inside the box it is given.

Resource timeline

The Timeline view draws one lane per resource. ReadOnly() keeps selection, edit requests, tooltips and the context-menu event, and turns off every gesture that would change data. Views(...) limits what the view switcher offers.

Views and options

| Method | Effect | | --- | --- | | View(SchedulerView) | Day, Week (default), Month, Agenda or Timeline | | Views(params SchedulerView[]) | the views the toolbar offers, in order | | GoTo(DateTime), Previous(), Next(), GoToToday() | move the range | | Now(DateTime) | override the clock used for the today highlight, the now line and the Today button | | FirstDayOfWeek(DayOfWeek) | first day of the Week, Month and Timeline views (default Sunday) | | VisibleDays(n), AgendaDays(n), TimelineDays(n) | range length of the Day (1), Agenda (7) and Timeline (7) views | | VisibleHours(start, end), WorkHours(start, end), NoWorkHours() | hours drawn and the shaded working hours | | SlotMinutes(n) | grid lines and drag snap step (default 30) | | HourHeight(px), TimelineHourWidth(px), ColumnMinWidth(px) | scale of the time grid and the timeline | | Grouping(SchedulerGrouping) | ByResource (default), ByDate or None: how Day and Week split columns by resource | | ReadOnly(), SingleClickCreates(), TwelveHourClock(), HideToolbar() | behaviour | | AppointmentTemplate(...), AppointmentTooltip(...), NoTooltips() | what an appointment shows | | Labels(new SchedulerLabels { … }) | translations of the text the scheduler draws |

Requests and events

| Method | Raised when | | --- | --- | | OnMove(Action<SchedulerMoveRequest>) | an appointment is dragged to a new time or resource; IsCopy when Ctrl was held | | OnResize(Action<SchedulerResizeRequest>) | an edge is dragged | | OnCreate(Action<SchedulerSlot>) | empty time is dragged across, or a slot is double-clicked (a whole day in the all-day row and Month) | | OnSlotClick(Action<SchedulerSlot>) | an empty slot is clicked | | OnEdit(Action<SchedulerAppointment>) | an appointment is double-clicked, or Enter is pressed on it | | OnContextMenu(Action<SchedulerAppointment, MouseEvent>) | an appointment is right-clicked | | OnDelete(Action<IReadOnlyList<SchedulerAppointment>>) | Delete or Backspace is pressed with a selection | | OnExternalDrop(Action<SchedulerDropRequest>) | something made with Scheduler.MakeDraggable is dropped on a slot | | OnSelectionChanged(...), OnNavigate(...) | the selection, view or date changes |

Locked appointments (IsLocked) cannot be selected, moved, resized, deleted or edited; right-click still raises OnContextMenu. The scheduler does not expand recurrence rules: IsRecurring only draws a mark, so pass each occurrence as its own appointment.

API reference

class

Scheduler

public sealed class Scheduler : ComponentBase<Scheduler, HTMLElement>

A calendar of appointments: Day, Week, Month, Agenda and a multi-resource Timeline view, with a toolbar to move between ranges and views. Appointments can be selected, dragged to another time or resource, resized by their edges, created by dragging across empty time or double-clicking a slot, and dropped in from outside. The scheduler never changes the appointments it is given. Every gesture is reported as a request carrying the proposed change (OnMove, OnResize, OnCreate, OnDelete, …); the application decides, updates its own data and hands the new list back through Appointments. An unhandled request changes nothing on screen. A burst of configuration calls on a scheduler already on the page costs one rebuild, on the next frame. The scroll position of each view survives a rebuild, so live updates do not jump the grid back to the morning.

Namespace
Tesserae
Inheritance
ComponentBase<Scheduler, HTMLElement> → Scheduler

Constructors

NameDescription
SchedulerInitializes a new instance of the Scheduler class.
Constructor
Scheduler
public Scheduler()

Initializes a new instance of the Scheduler class.

Properties

NameDescription
CurrentAppointmentsThe appointments currently shown.
CurrentViewThe view currently shown.
CurrentDateThe date the current range is built around.
SelectedAppointmentsThe selected appointments, in the order they were selected.
Property
Scheduler.CurrentAppointments
public IReadOnlyList<SchedulerAppointment> CurrentAppointments

The appointments currently shown.

Property
Scheduler.CurrentView
public SchedulerView CurrentView

The view currently shown.

Property
Scheduler.CurrentDate
public DateTime CurrentDate

The date the current range is built around.

Property
Scheduler.SelectedAppointments
public IReadOnlyList<SchedulerAppointment> SelectedAppointments

The selected appointments, in the order they were selected.

Methods

NameDescription
AppointmentsReplaces the appointments. Hand in the whole list after every change: the scheduler draws what it is given and keeps the selection by Id.
ResourcesSets the resources the Day and Week views split their columns by (see Grouping) and the Timeline draws one lane each for. Appointments that name none of them gather in an "Unassigned" column.
ViewSwitches to view.
ViewsSets which views the toolbar offers, in order. Defaults to all five.
GoToMoves the range to the one holding date.
PreviousMoves to the previous range, as the toolbar's left arrow does.
NextMoves to the next range, as the toolbar's right arrow does.
GoToTodayMoves to the range holding today.
NowOverrides what the scheduler treats as now: where the Today button goes, which day is highlighted and where the now line is drawn. Defaults to the clock, read on every rebuild.
FirstDayOfWeekSets the day a week starts on, for the Week, Month and Timeline views. Defaults to Sunday.
VisibleDaysSets how many consecutive days the Day view shows. Defaults to 1.
AgendaDaysSets how many days the Agenda lists, from the current date. Defaults to 7.
TimelineDaysSets how many days the Timeline covers. Seven (the default) starts on the first day of the week; any other count starts on the current date.
VisibleHoursLimits the hours the time grid and the Timeline draw, from startHour up to endHour (0 to 24). Appointments outside are clipped to the edge. Defaults to the whole day.
WorkHoursSets the working hours, shaded lighter in the time grid and the Timeline. Defaults to 08:00 to 17:00.
NoWorkHoursTurns the working-hours shading off.
SlotMinutesSets the length of a slot, in minutes: the time grid's minor lines and the step every drag snaps to (hold Alt while dragging to snap to the minute). Defaults to 30.
HourHeightSets the height of one hour in the Day and Week views, in pixels. Defaults to 48.
TimelineHourWidthSets the width of one hour in the Timeline, in pixels. Defaults to 24.
ColumnMinWidthSets the narrowest a Day or Week column gets, in pixels. Below it the grid scrolls sideways. Defaults to 90.
MonthMaxAppointmentsSets how many appointments a Month cell lists before it shows "+N more". Defaults to 3.
GroupingSets how the Day and Week views split their columns by resource. Defaults to ByResource.
TwelveHourClockWrites times as 9:30 AM instead of 09:30.
ReadOnlyStops every gesture that would change data: move, resize, create, external drop and Delete. Selection, edit requests, the context menu and tooltips keep working.
SingleClickCreatesMakes a single click on an empty slot request a new appointment, instead of a double-click.
HideToolbarHides the toolbar, for an application that drives View and GoTo itself.
CommandsAdds components to the right of the toolbar, before the view switcher.
LabelsReplaces the text the scheduler draws on its own, for translation.
AppointmentTemplateReplaces what is drawn inside each appointment's block, chip, bar and agenda row. The block keeps its colour, selection outline and resize edges.
AppointmentTooltipReplaces the tooltip shown over an appointment. Return null for none.
NoTooltipsTurns the appointment tooltips off.
OnMoveRaised when an appointment is dragged to a new time or resource. Nothing has changed yet.
OnResizeRaised when an appointment's start or end edge is dragged. Nothing has changed yet.
OnCreateRaised when the user asks for a new appointment: by dragging across empty time, by double-clicking an empty slot (a one-hour slot in the time grid and Timeline, the whole day in the all-day row and Month cells), or with a single click when SingleClickCreates is on.
OnSlotClickRaised on every click on an empty slot, before any create.
OnEditRaised when an appointment is double-clicked, or Enter is pressed on it. Locked appointments raise nothing.
OnContextMenuRaised on a right-click on an appointment, with the pointer event to anchor a menu at (for example ContextMenu().ShowAt(...)). Setting a handler stops the browser's own menu there.
OnSelectionChangedRaised whenever the selection changes.
OnDeleteRaised when Delete or Backspace is pressed with appointments selected (locked ones are left out).
OnExternalDropRaised when something made draggable with MakeDraggable is dropped on a slot.
OnNavigateRaised when the toolbar changes the view or the date.
SelectReplaces the selection.
ClearSelectionClears the selection.
DeleteSelectedRaises OnDelete for the selected appointments, as the Delete key does.
MakeDraggable<T>Makes component a drag source the scheduler accepts: dropping it on a time slot, a Timeline lane or a Month cell raises OnExternalDrop with payload and a slot of duration. A ghost of that length follows the pointer over the scheduler.
RenderRenders the component's root HTML element.
Method
Scheduler.Appointments
Overload
Appointments(IEnumerable<SchedulerAppointment>)Replaces the appointments. Hand in the whole list after every change: the scheduler draws what it is given and keeps the selection by Id.
Appointments(SchedulerAppointment[])Replaces the appointments.
Appointments(IEnumerable<SchedulerAppointment>)
public Scheduler Appointments(IEnumerable<SchedulerAppointment> appointments)

Replaces the appointments. Hand in the whole list after every change: the scheduler draws what it is given and keeps the selection by Id.

Parameters

appointments IEnumerable<SchedulerAppointment>
Appointments(SchedulerAppointment[])
public Scheduler Appointments(params SchedulerAppointment[] appointments)

Replaces the appointments.

Parameters

appointments SchedulerAppointment[]
Method
Scheduler.Resources
Overload
Resources(IEnumerable<SchedulerResource>)Sets the resources the Day and Week views split their columns by (see Grouping) and the Timeline draws one lane each for. Appointments that name none of them gather in an "Unassigned" column.
Resources(SchedulerResource[])Sets the resources.
Resources(IEnumerable<SchedulerResource>)
public Scheduler Resources(IEnumerable<SchedulerResource> resources)

Sets the resources the Day and Week views split their columns by (see Grouping) and the Timeline draws one lane each for. Appointments that name none of them gather in an "Unassigned" column.

Parameters

resources IEnumerable<SchedulerResource>
Resources(SchedulerResource[])
public Scheduler Resources(params SchedulerResource[] resources)

Sets the resources.

Parameters

resources SchedulerResource[]
Method
Scheduler.View
public Scheduler View(SchedulerView view)

Switches to view.

Method
Scheduler.Views
public Scheduler Views(params SchedulerView[] views)

Sets which views the toolbar offers, in order. Defaults to all five.

Method
Scheduler.GoTo
public Scheduler GoTo(DateTime date)

Moves the range to the one holding date.

Method
Scheduler.Previous
public Scheduler Previous()

Moves to the previous range, as the toolbar's left arrow does.

Method
Scheduler.Next
public Scheduler Next()

Moves to the next range, as the toolbar's right arrow does.

Method
Scheduler.GoToToday
public Scheduler GoToToday()

Moves to the range holding today.

Method
Scheduler.Now
public Scheduler Now(DateTime now)

Overrides what the scheduler treats as now: where the Today button goes, which day is highlighted and where the now line is drawn. Defaults to the clock, read on every rebuild.

Method
Scheduler.FirstDayOfWeek
public Scheduler FirstDayOfWeek(DayOfWeek day)

Sets the day a week starts on, for the Week, Month and Timeline views. Defaults to Sunday.

Method
Scheduler.VisibleDays
public Scheduler VisibleDays(int days)

Sets how many consecutive days the Day view shows. Defaults to 1.

Method
Scheduler.AgendaDays
public Scheduler AgendaDays(int days)

Sets how many days the Agenda lists, from the current date. Defaults to 7.

Method
Scheduler.TimelineDays
public Scheduler TimelineDays(int days)

Sets how many days the Timeline covers. Seven (the default) starts on the first day of the week; any other count starts on the current date.

Method
Scheduler.VisibleHours
public Scheduler VisibleHours(int startHour, int endHour)

Limits the hours the time grid and the Timeline draw, from startHour up to endHour (0 to 24). Appointments outside are clipped to the edge. Defaults to the whole day.

Method
Scheduler.WorkHours
public Scheduler WorkHours(TimeSpan start, TimeSpan end)

Sets the working hours, shaded lighter in the time grid and the Timeline. Defaults to 08:00 to 17:00.

Method
Scheduler.NoWorkHours
public Scheduler NoWorkHours()

Turns the working-hours shading off.

Method
Scheduler.SlotMinutes
public Scheduler SlotMinutes(int minutes)

Sets the length of a slot, in minutes: the time grid's minor lines and the step every drag snaps to (hold Alt while dragging to snap to the minute). Defaults to 30.

Method
Scheduler.HourHeight
public Scheduler HourHeight(double pixels)

Sets the height of one hour in the Day and Week views, in pixels. Defaults to 48.

Method
Scheduler.TimelineHourWidth
public Scheduler TimelineHourWidth(double pixels)

Sets the width of one hour in the Timeline, in pixels. Defaults to 24.

Method
Scheduler.ColumnMinWidth
public Scheduler ColumnMinWidth(double pixels)

Sets the narrowest a Day or Week column gets, in pixels. Below it the grid scrolls sideways. Defaults to 90.

Method
Scheduler.MonthMaxAppointments
public Scheduler MonthMaxAppointments(int count)

Sets how many appointments a Month cell lists before it shows "+N more". Defaults to 3.

Method
Scheduler.Grouping
public Scheduler Grouping(SchedulerGrouping grouping)

Sets how the Day and Week views split their columns by resource. Defaults to ByResource.

Method
Scheduler.TwelveHourClock
public Scheduler TwelveHourClock(bool value = true)

Writes times as 9:30 AM instead of 09:30.

Method
Scheduler.ReadOnly
public Scheduler ReadOnly(bool value = true)

Stops every gesture that would change data: move, resize, create, external drop and Delete. Selection, edit requests, the context menu and tooltips keep working.

Method
Scheduler.SingleClickCreates
public Scheduler SingleClickCreates(bool value = true)

Makes a single click on an empty slot request a new appointment, instead of a double-click.

Method
Scheduler.HideToolbar
public Scheduler HideToolbar(bool hide = true)

Hides the toolbar, for an application that drives View and GoTo itself.

Method
Scheduler.Commands
public Scheduler Commands(params IComponent[] commands)

Adds components to the right of the toolbar, before the view switcher.

Method
Scheduler.Labels
public Scheduler Labels(SchedulerLabels labels)

Replaces the text the scheduler draws on its own, for translation.

Method
Scheduler.AppointmentTemplate
public Scheduler AppointmentTemplate(Func<SchedulerAppointment, IComponent> template)

Replaces what is drawn inside each appointment's block, chip, bar and agenda row. The block keeps its colour, selection outline and resize edges.

Method
Scheduler.AppointmentTooltip
public Scheduler AppointmentTooltip(Func<SchedulerAppointment, IComponent> tooltip)

Replaces the tooltip shown over an appointment. Return null for none.

Method
Scheduler.NoTooltips
public Scheduler NoTooltips()

Turns the appointment tooltips off.

Method
Scheduler.OnMove
public Scheduler OnMove(Action<SchedulerMoveRequest> onMove)

Raised when an appointment is dragged to a new time or resource. Nothing has changed yet.

Method
Scheduler.OnResize
public Scheduler OnResize(Action<SchedulerResizeRequest> onResize)

Raised when an appointment's start or end edge is dragged. Nothing has changed yet.

Method
Scheduler.OnCreate
public Scheduler OnCreate(Action<SchedulerSlot> onCreate)

Raised when the user asks for a new appointment: by dragging across empty time, by double-clicking an empty slot (a one-hour slot in the time grid and Timeline, the whole day in the all-day row and Month cells), or with a single click when SingleClickCreates is on.

Method
Scheduler.OnSlotClick
public Scheduler OnSlotClick(Action<SchedulerSlot> onSlotClick)

Raised on every click on an empty slot, before any create.

Method
Scheduler.OnEdit
public Scheduler OnEdit(Action<SchedulerAppointment> onEdit)

Raised when an appointment is double-clicked, or Enter is pressed on it. Locked appointments raise nothing.

Method
Scheduler.OnContextMenu
public Scheduler OnContextMenu(Action<SchedulerAppointment, MouseEvent> onContextMenu)

Raised on a right-click on an appointment, with the pointer event to anchor a menu at (for example ContextMenu().ShowAt(...)). Setting a handler stops the browser's own menu there.

Method
Scheduler.OnSelectionChanged
public Scheduler OnSelectionChanged(Action<IReadOnlyList<SchedulerAppointment>> onSelectionChanged)

Raised whenever the selection changes.

Method
Scheduler.OnDelete
public Scheduler OnDelete(Action<IReadOnlyList<SchedulerAppointment>> onDelete)

Raised when Delete or Backspace is pressed with appointments selected (locked ones are left out).

Method
Scheduler.OnExternalDrop
public Scheduler OnExternalDrop(Action<SchedulerDropRequest> onExternalDrop)

Raised when something made draggable with MakeDraggable is dropped on a slot.

Method
Scheduler.OnNavigate
public Scheduler OnNavigate(Action<SchedulerView, DateTime> onNavigate)

Raised when the toolbar changes the view or the date.

Method
Scheduler.Select
public Scheduler Select(params SchedulerAppointment[] appointments)

Replaces the selection.

Method
Scheduler.ClearSelection
public Scheduler ClearSelection()

Clears the selection.

Method
Scheduler.DeleteSelected
public Scheduler DeleteSelected()

Raises OnDelete for the selected appointments, as the Delete key does.

Method
Scheduler.MakeDraggable<T>
public static T MakeDraggable<T>(T component, object payload, string title, TimeSpan duration) where T : IComponent

Makes component a drag source the scheduler accepts: dropping it on a time slot, a Timeline lane or a Month cell raises OnExternalDrop with payload and a slot of duration. A ghost of that length follows the pointer over the scheduler.

Method
Scheduler.Render
public override HTMLElement Render()

Renders the component's root HTML element.

class

SchedulerPointerExtensions

internal static class SchedulerPointerExtensions
Namespace
Tesserae
enum

SchedulerView

public enum SchedulerView

The layouts a Scheduler can draw its appointments in.

Namespace
Tesserae

Values

NameDescription
DayA time grid of one or more consecutive days (see VisibleDays).
WeekA time grid of the seven days of the week the date falls in.
MonthThe month the date falls in, as a grid of day cells with one chip per appointment.
AgendaA list of the appointments of the coming days, grouped by date.
TimelineOne horizontal lane per resource over a week, time running left to right.
Value
SchedulerView.Day
Day

A time grid of one or more consecutive days (see VisibleDays).

Value
SchedulerView.Week
Week

A time grid of the seven days of the week the date falls in.

Value
SchedulerView.Month
Month

The month the date falls in, as a grid of day cells with one chip per appointment.

Value
SchedulerView.Agenda
Agenda

A list of the appointments of the coming days, grouped by date.

Value
SchedulerView.Timeline
Timeline

One horizontal lane per resource over a week, time running left to right.

enum

SchedulerGrouping

public enum SchedulerGrouping

How a Scheduler's Day and Week views split their columns by resource.

Namespace
Tesserae

Values

NameDescription
NoneOne column per day, every resource's appointments sharing it.
ByResourceOne group per resource, each with a column per day.
ByDateOne group per day, each with a column per resource.
Value
SchedulerGrouping.None
None

One column per day, every resource's appointments sharing it.

Value
SchedulerGrouping.ByResource
ByResource

One group per resource, each with a column per day.

Value
SchedulerGrouping.ByDate
ByDate

One group per day, each with a column per resource.

class

SchedulerAppointment

public sealed class SchedulerAppointment

One appointment shown by a Scheduler. A plain data object: map your own records onto it and keep the original in Tag. The scheduler never changes one; it reports what the user asked for and waits for the application to hand in the updated list.

Namespace
Tesserae

Properties

NameDescription
IdThe appointment's identity, compared with Equals. Selection is kept by it across updates.
TitleThe text on the appointment's block.
DescriptionA longer text, shown in the default tooltip and the agenda.
StartWhere the appointment begins, as wall-clock time.
EndWhere the appointment ends, as wall-clock time. Must not be before Start.
IsAllDayDraws the appointment in the all-day row instead of the time grid. An all-day appointment covers every day from Start's date up to, and not including, End — or Start's day alone when End is on the same date.
ResourceIdsThe resources the appointment belongs to. One block is drawn per resource column or lane.
ColorA CSS colour for the block. Defaults to the first resource's colour, then the theme's primary colour.
IsLockedShows a lock mark and refuses every edit: no move, resize, delete or edit request.
IsRecurringShows a recurrence mark. The scheduler does not expand occurrences: hand each one in.
TagAny value the application wants to keep with the appointment. Never read by the scheduler.
DurationThe time between Start and End.
Property
SchedulerAppointment.Id
public object Id { get; set; }

The appointment's identity, compared with Equals. Selection is kept by it across updates.

Property
SchedulerAppointment.Title
public string Title { get; set; }

The text on the appointment's block.

Property
SchedulerAppointment.Description
public string Description { get; set; }

A longer text, shown in the default tooltip and the agenda.

Property
SchedulerAppointment.Start
public DateTime Start { get; set; }

Where the appointment begins, as wall-clock time.

Property
SchedulerAppointment.End
public DateTime End { get; set; }

Where the appointment ends, as wall-clock time. Must not be before Start.

Property
SchedulerAppointment.IsAllDay
public bool IsAllDay { get; set; }

Draws the appointment in the all-day row instead of the time grid. An all-day appointment covers every day from Start's date up to, and not including, End — or Start's day alone when End is on the same date.

Property
SchedulerAppointment.ResourceIds
public List<object> ResourceIds { get; set; }

The resources the appointment belongs to. One block is drawn per resource column or lane.

Property
SchedulerAppointment.Color
public string Color { get; set; }

A CSS colour for the block. Defaults to the first resource's colour, then the theme's primary colour.

Property
SchedulerAppointment.IsLocked
public bool IsLocked { get; set; }

Shows a lock mark and refuses every edit: no move, resize, delete or edit request.

Property
SchedulerAppointment.IsRecurring
public bool IsRecurring { get; set; }

Shows a recurrence mark. The scheduler does not expand occurrences: hand each one in.

Property
SchedulerAppointment.Tag
public object Tag { get; set; }

Any value the application wants to keep with the appointment. Never read by the scheduler.

Property
SchedulerAppointment.Duration
public TimeSpan Duration

The time between Start and End.

Methods

NameDescription
CloneReturns a copy of the appointment, with its own resource list.
Method
SchedulerAppointment.Clone
public SchedulerAppointment Clone()

Returns a copy of the appointment, with its own resource list.

class

SchedulerResource

public sealed class SchedulerResource

A person, room or machine a Scheduler splits its columns and lanes by.

Namespace
Tesserae

Constructors

NameDescription
SchedulerResourceInitializes a new instance of the SchedulerResource class.
Constructor
SchedulerResource
Overload
SchedulerResource()Initializes a new instance of the SchedulerResource class.
SchedulerResource(object, string, string)Initializes a new instance of the SchedulerResource class.
SchedulerResource()
public SchedulerResource()

Initializes a new instance of the SchedulerResource class.

SchedulerResource(object, string, string)
public SchedulerResource(object id, string name, string color = null)

Initializes a new instance of the SchedulerResource class.

Parameters

id object
name string
color string

Properties

NameDescription
IdMatched against ResourceIds with Equals.
NameThe column or lane header.
ColorA CSS colour for the header chip and the resource's appointments.
Property
SchedulerResource.Id
public object Id { get; set; }

Matched against ResourceIds with Equals.

Property
SchedulerResource.Name
public string Name { get; set; }

The column or lane header.

Property
SchedulerResource.Color
public string Color { get; set; }

A CSS colour for the header chip and the resource's appointments.

class

SchedulerMoveRequest

public sealed class SchedulerMoveRequest

An appointment dragged to a new time and/or resource. Nothing has changed yet.

Namespace
Tesserae

Properties

NameDescription
AppointmentThe application's own appointment instance.
NewStartThe proposed start.
NewEndThe proposed end; the duration is kept.
FromResourceIdThe resource of the column or lane the drag started in, or null without resources.
ToResourceIdThe resource of the column or lane it was dropped in, or null without resources.
IsCopyCtrl (or Cmd) was held on release: the user asked for a copy rather than a move.
ChangesResourceWhether the drop lands on another resource.
Property
SchedulerMoveRequest.Appointment
public SchedulerAppointment Appointment { get; internal set; }

The application's own appointment instance.

Property
SchedulerMoveRequest.NewStart
public DateTime NewStart { get; internal set; }

The proposed start.

Property
SchedulerMoveRequest.NewEnd
public DateTime NewEnd { get; internal set; }

The proposed end; the duration is kept.

Property
SchedulerMoveRequest.FromResourceId
public object FromResourceId { get; internal set; }

The resource of the column or lane the drag started in, or null without resources.

Property
SchedulerMoveRequest.ToResourceId
public object ToResourceId { get; internal set; }

The resource of the column or lane it was dropped in, or null without resources.

Property
SchedulerMoveRequest.IsCopy
public bool IsCopy { get; internal set; }

Ctrl (or Cmd) was held on release: the user asked for a copy rather than a move.

Property
SchedulerMoveRequest.ChangesResource
public bool ChangesResource

Whether the drop lands on another resource.

class

SchedulerResizeRequest

public sealed class SchedulerResizeRequest

An appointment's start or end edge dragged. Nothing has changed yet.

Namespace
Tesserae

Properties

NameDescription
AppointmentThe application's own appointment instance.
NewStartThe proposed start.
NewEndThe proposed end.
Property
SchedulerResizeRequest.Appointment
public SchedulerAppointment Appointment { get; internal set; }

The application's own appointment instance.

Property
SchedulerResizeRequest.NewStart
public DateTime NewStart { get; internal set; }

The proposed start.

Property
SchedulerResizeRequest.NewEnd
public DateTime NewEnd { get; internal set; }

The proposed end.

class

SchedulerSlot

public sealed class SchedulerSlot

A stretch of time on the scheduler: what the user dragged across or double-clicked to create an appointment, or the empty slot they clicked.

Namespace
Tesserae

Properties

NameDescription
StartWhere the slot begins.
EndWhere the slot ends.
ResourceIdThe resource of the column or lane, or null.
IsAllDayWhether the slot is a whole day (the all-day row or a month cell): End is the next midnight.
EventThe pointer event behind it, for anchoring a popup.
Property
SchedulerSlot.Start
public DateTime Start { get; internal set; }

Where the slot begins.

Property
SchedulerSlot.End
public DateTime End { get; internal set; }

Where the slot ends.

Property
SchedulerSlot.ResourceId
public object ResourceId { get; internal set; }

The resource of the column or lane, or null.

Property
SchedulerSlot.IsAllDay
public bool IsAllDay { get; internal set; }

Whether the slot is a whole day (the all-day row or a month cell): End is the next midnight.

Property
SchedulerSlot.Event
public MouseEvent Event { get; internal set; }

The pointer event behind it, for anchoring a popup.

class

SchedulerDropRequest

public sealed class SchedulerDropRequest

Something dragged in from outside the scheduler and dropped on a slot (see MakeDraggable).

Namespace
Tesserae

Properties

NameDescription
PayloadThe payload handed to MakeDraggable.
TitleThe title handed to MakeDraggable.
StartWhere it was dropped.
EndStart plus the duration handed to MakeDraggable.
ResourceIdThe resource of the column or lane, or null.
IsAllDayWhether it landed on a whole day (a month cell).
Property
SchedulerDropRequest.Payload
public object Payload { get; internal set; }

The payload handed to MakeDraggable.

Property
SchedulerDropRequest.Title
public string Title { get; internal set; }

The title handed to MakeDraggable.

Property
SchedulerDropRequest.Start
public DateTime Start { get; internal set; }

Where it was dropped.

Property
SchedulerDropRequest.End
public DateTime End { get; internal set; }

Start plus the duration handed to MakeDraggable.

Property
SchedulerDropRequest.ResourceId
public object ResourceId { get; internal set; }

The resource of the column or lane, or null.

Property
SchedulerDropRequest.IsAllDay
public bool IsAllDay { get; internal set; }

Whether it landed on a whole day (a month cell).

class

SchedulerLabels

public sealed class SchedulerLabels

The text a Scheduler draws on its own, so an application can hand in its translations. Every property has an English default; set only the ones that need to change.

Namespace
Tesserae

Properties

NameDescription
TodayThe toolbar's button back to today.
PreviousThe toolbar's previous-range button.
NextThe toolbar's next-range button.
DayThe Day view's name.
WeekThe Week view's name.
MonthThe Month view's name.
AgendaThe Agenda view's name.
TimelineThe Timeline view's name.
AllDayThe caption of the all-day row, and the agenda's time for an all-day appointment.
MoreA month cell's overflow link; {0} is the number of appointments not shown.
NoAppointmentsThe agenda's text when there is nothing in its range.
UnassignedThe column or lane of appointments that name no resource.
ResourcesThe caption above the timeline's resource names.
MonthNamesThe month names, January first.
ShortMonthNamesThe short month names, January first.
DayNamesThe weekday names, Sunday first.
ShortDayNamesThe short weekday names, Sunday first.
Property
SchedulerLabels.Today
public string Today { get; set; }

The toolbar's button back to today.

Property
SchedulerLabels.Previous
public string Previous { get; set; }

The toolbar's previous-range button.

Property
SchedulerLabels.Next
public string Next { get; set; }

The toolbar's next-range button.

Property
SchedulerLabels.Day
public string Day { get; set; }

The Day view's name.

Property
SchedulerLabels.Week
public string Week { get; set; }

The Week view's name.

Property
SchedulerLabels.Month
public string Month { get; set; }

The Month view's name.

Property
SchedulerLabels.Agenda
public string Agenda { get; set; }

The Agenda view's name.

Property
SchedulerLabels.Timeline
public string Timeline { get; set; }

The Timeline view's name.

Property
SchedulerLabels.AllDay
public string AllDay { get; set; }

The caption of the all-day row, and the agenda's time for an all-day appointment.

Property
SchedulerLabels.More
public string More { get; set; }

A month cell's overflow link; {0} is the number of appointments not shown.

Property
SchedulerLabels.NoAppointments
public string NoAppointments { get; set; }

The agenda's text when there is nothing in its range.

Property
SchedulerLabels.Unassigned
public string Unassigned { get; set; }

The column or lane of appointments that name no resource.

Property
SchedulerLabels.Resources
public string Resources { get; set; }

The caption above the timeline's resource names.

Property
SchedulerLabels.MonthNames
public string[] MonthNames { get; set; }

The month names, January first.

Property
SchedulerLabels.ShortMonthNames
public string[] ShortMonthNames { get; set; }

The short month names, January first.

Property
SchedulerLabels.DayNames
public string[] DayNames { get; set; }

The weekday names, Sunday first.

Property
SchedulerLabels.ShortDayNames
public string[] ShortDayNames { get; set; }

The short weekday names, Sunday first.

See also