Completed
Last Updated: 04 Jul 2014 10:15 by ADMIN
ADMIN
Created by: Georgi I. Georgiev
Comments: 0
Category: Scheduler/Reminder
Type: Bug Report
0
To reproduce:
Add a RadScheduler and a database with appointments. Set the recurrence rule to the following:
FREQ=WEEKLY;UNTIL=20140102;BYDAY=TH;WKST=SU

A first chance exception will be thrown and the appointments will not show correctly.

Workaround:
Before setting the recurrence rule make sure that the UNTIL keyword's value is in the following format: 20140102T235959Z or more specifically - yyyyMMdd\\THHmmss\\Z
Completed
Last Updated: 04 Jul 2014 09:53 by ADMIN
ADMIN
Created by: Georgi I. Georgiev
Comments: 0
Category: Scheduler/Reminder
Type: Bug Report
0
To reproduce:
Add a RadScheduler with a database with appointments. In the recurrence rule of the appointments add the keyword FREQ with value MONTHLY- FREQ=MONTHLY;UNTIL=20140102T235959Z;BYDAY=TH;WKST=SU

You will notice that despite that the frequency of the recurrence is weekly.
Completed
Last Updated: 01 Jul 2014 10:01 by ADMIN
To reproduce:
 Sub New()
     InitializeComponent()

     Dim colors() As Color = {Color.LightBlue, Color.LightGreen, Color.LightYellow, Color.Red, Color.Orange}

     Dim names() As String = {"Alan Smith", "Anne Dodsworth", "Boyan Mastoni", "Richard Duncan", "Maria Shnaider"}

     For i As Integer = 0 To names.Length - 1
         Dim resource As New Telerik.WinControls.UI.Resource()
         resource.Id = New EventId(i)
         resource.Name = names(i)
         resource.Color = colors(i)
         Me.RadScheduler1.Resources.Add(resource)
     Next i
     Me.RadScheduler1.GroupType = GroupType.Resource
     Me.RadScheduler1.ActiveView.ResourcesPerView = 2

     Dim rand As New Random

     For index = 1 To 20
         Dim appointment As New Appointment(Date.Now.AddHours(index), TimeSpan.FromMinutes(30), "Summary", "Description")
         appointment.StatusId = RadScheduler1.Statuses(rand.Next(0, RadScheduler1.Statuses.Count)).Id
         appointment.BackgroundId = RadScheduler1.Backgrounds(rand.Next(0, RadScheduler1.Backgrounds.Count)).Id
         appointment.ResourceId = RadScheduler1.Resources(rand.Next(0, RadScheduler1.Resources.Count)).Id
         Me.RadScheduler1.Appointments.Add(appointment)
     Next
     RadSchedulerLocalizationProvider.CurrentProvider = New CustomSchedulerLocalizationProviderInglese()
 End Sub

 Public Class CustomSchedulerLocalizationProviderInglese
     Inherits RadSchedulerLocalizationProvider
     Public Overrides Function GetLocalizedString(id As String) As String
         
         Return MyBase.GetLocalizedString(id)

     End Function
 End Class
Completed
Last Updated: 17 Jun 2014 11:09 by ADMIN
The width of a resource does not always match the column(s) underneath it, resulting in the resources shifting to the left in relation to the column(s) below. It appears to be about 1 pixel  difference per resource which becomes more noticeable with multiple resources .If you resize the form the resources will come close to matching the column(s) before jumping back to the full difference again. This issue can be demonstrated in the Scheduler->Grouping demo
Completed
Last Updated: 17 Jun 2014 11:08 by ADMIN
Currently, the Sunday item appears before the Monday item. For some cultures the Sunday item should appear after the Saturday item.
Completed
Last Updated: 17 Jun 2014 10:43 by ADMIN
Add the possibility to set vertical spacing between appointments in RadScheduler.
Completed
Last Updated: 17 Jun 2014 10:42 by ADMIN
Completed
Last Updated: 17 Jun 2014 10:07 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: Scheduler/Reminder
Type: Bug Report
1
Description:
When the appointment is moved (dragged and dropped) from one resource to another resource in Timeline view only, the AppointmentDropped event is not fired. This results in NullReferenceException in Windows 8.

To reproduce:
- add RadScheduler in Timeline view and use the following code:

List<Appointment> appointmentlist = new List<Appointment>();

public Form1()
{
InitializeComponent();

this.radScheduler1.Resources.Add(new Resource { Id = new EventId("1"), Name = "Jack", Visible = true });
this.radScheduler1.Resources.Add(new Resource { Id = new EventId("2"), Name = "John", Visible = true });
this.radScheduler1.Resources.Add(new Resource { Id = new EventId("3"), Name = "John", Visible = true });

this.radScheduler1.GroupType = GroupType.Resource;
this.radScheduler1.GetDayView().DayCount = 1;

Random rand = new Random();
for (int i = 0; i < 20; i++)
{
Appointment appointment = new Appointment(DateTime.Now, TimeSpan.FromMinutes(30), "Summary", "Description");
appointment.StatusId = rand.Next(1, radScheduler1.Statuses.Count);
appointment.BackgroundId = rand.Next(1, radScheduler1.Backgrounds.Count);
appointment.ResourceId = radScheduler1.Resources[rand.Next(0, radScheduler1.Resources.Count)].Id;
appointmentlist.Add(appointment);
}

this.radScheduler1.Appointments.BeginUpdate();
this.radScheduler1.Appointments.AddRange(this.appointmentlist.ToArray());
this.radScheduler1.Appointments.EndUpdate();
this.radScheduler1.AppointmentDropped += radScheduler1_AppointmentDropped;
}

private void radScheduler1_AppointmentDropped(object sender, AppointmentMovedEventArgs e)
{
MessageBox.Show("Dropped");
}

Workaround: use custom DragDropBehavior as follows:
this.radScheduler1.SchedulerElement.DragDropBehavior = new CustomDragDrop(this.radScheduler1.SchedulerElement);


public class CustomDragDrop : AppointmentDraggingBehavior
{
public CustomDragDrop(SchedulerVisualElement activeOwner) : base(activeOwner)
{
}

public override void Drop()
{
DateTime start = this.ActiveFeedback.Scheduler.SystemTimeZone.OffsetTime(this.ActiveFeedback.Appointment.Start, this.ActiveFeedback.View.DefaultTimeZone);
DateTime end = this.ActiveFeedback.Scheduler.SystemTimeZone.OffsetTime(this.ActiveFeedback.Appointment.End, this.ActiveFeedback.View.DefaultTimeZone);

IEvent ev = this.ActiveFeedback.AssociatedAppointment;
bool changeResourceId = (this.Scheduler.GroupType == GroupType.Resource) &&
(this.ActiveFeedback.Appointment.ResourceId != this.ActiveFeedback.AssociatedAppointment.ResourceId ||
this.ActiveFeedback.Appointment.ResourceIds.Count != this.ActiveFeedback.AssociatedAppointment.ResourceIds.Count);

AppointmentMovingEventArgs cancelArgs = (this.Scheduler.GroupType != GroupType.Resource) ? new AppointmentMovingEventArgs(start, ev) :
new AppointmentMovingEventArgs(start, ev, this.ActiveFeedback.Appointment.ResourceId);

this.OnAppointmentDropping(cancelArgs);

this.ActiveOwner.Scheduler.GetType().GetMethod("OnAppointmentDropping", BindingFlags.NonPublic |
BindingFlags.Instance).Invoke(this.ActiveOwner.Scheduler, new object[] { cancelArgs });

if (cancelArgs.Cancel)
{
this.Stop(false);
return;
}

this.ActiveFeedback.Scheduler.Appointments.BeginUpdate();

if (this.ActiveOwner as DayViewAllDayHeader != null && this.ActiveFeedback.Appointment.Duration < new TimeSpan(1, 0, 0, 0))
{
start = this.ActiveFeedback.Appointment.Start.Date;
end = DateHelper.GetEndOfDay(this.ActiveFeedback.Appointment.End);

start = this.ActiveFeedback.Scheduler.SystemTimeZone.OffsetTime(start, this.ActiveFeedback.View.DefaultTimeZone);
end = this.ActiveFeedback.Scheduler.SystemTimeZone.OffsetTime(end, this.ActiveFeedback.View.DefaultTimeZone);
}

this.ActiveFeedback.AssociatedAppointment.Start = start;
this.ActiveFeedback.AssociatedAppointment.End = end;

if (changeResourceId)
{
this.ActiveFeedback.AssociatedAppointment.ResourceId = this.ActiveFeedback.Appointment.ResourceId;
}

RadScheduler scheduler = this.ActiveOwner.Scheduler;
if (scheduler.DataSource != null)
{
scheduler.DataSource.GetEventProvider().Update(this.ActiveFeedback.AssociatedAppointment, "Start");
scheduler.DataSource.GetEventProvider().Update(this.ActiveFeedback.AssociatedAppointment, "End");
scheduler.DataSource.GetEventProvider().Update(this.ActiveFeedback.AssociatedAppointment, "Duration");
if (changeResourceId)
{
scheduler.DataSource.GetEventProvider().Update(this.ActiveFeedback.AssociatedAppointment, "ResourceId");
scheduler.DataSource.GetEventProvider().Update(this.ActiveFeedback.AssociatedAppointment, "ResourceIds");
}
}

while (!this.ActiveFeedback.Scheduler.Appointments.IsUpdated)
this.ActiveFeedback.Scheduler.Appointments.EndUpdate(true);

AppointmentMovedEventArgs args = (this.Scheduler.GroupType != GroupType.Resource) ? new AppointmentMovedEventArgs(start, ev) :
new AppointmentMovedEventArgs(start, ev, this.ActiveFeedback.Appointment.ResourceId);

this.HideFeedbacks();
SchedulerUIHelper.SelectAppointment(this.Scheduler, ev, true, false);

this.OnAppointmentDropped(args);
this.ActiveOwner.Scheduler.GetType().GetMethod("OnAppointmentDropped", BindingFlags.NonPublic |
BindingFlags.Instance).Invoke(this.ActiveOwner.Scheduler, new object[] { args });
}
}
Completed
Last Updated: 17 Jun 2014 10:07 by ADMIN
To reproduce:
- add RadScheduler with several appointments and use the folllowing code:
SchedulerDayView dayView = this.radScheduler1.GetDayView();
dayView.RangeFactor = ScaleRange.QuarterHour;
dayView.RulerStartScale = 7;
dayView.RulerEndScale = 18;

Ensure that you have appointments with start before 7 AM and appointments with start after 18 PM. All appointments with start before 7 AM are displayed at the top of the view, but all appointments with start after 18 PM are not displayed.

Workaround:
public Form1()
{
    InitializeComponent();

    for (int i = 0; i < 20; i++)
    {
        Appointment appointment = new Appointment(DateTime.Now.AddHours(12 + i), TimeSpan.FromMinutes(30), "Summary", "Description");
        appointment.StatusId = 2;
        appointment.BackgroundId = 6;
        this.radScheduler1.Appointments.Add(appointment);
    }

    SchedulerDayView dayView = this.radScheduler1.GetDayView();
    dayView.RangeFactor = ScaleRange.QuarterHour;
    dayView.RulerStartScale = 7;
    dayView.RulerEndScale = 18;

    this.radScheduler1.AppointmentElementFactory = new CustomAppointmentElementFactory();
}

public class CustomAppointmentElementFactory : IAppointmentElementFactory
{
    AppointmentElement IAppointmentElementFactory.CreateAppointmentElement(RadScheduler scheduler, SchedulerView view, IEvent appointment)
    {
        return new CustomAppointmentElement(scheduler, view, appointment);
    }
}

public class CustomAppointmentElement : AppointmentElement
{
    public CustomAppointmentElement(RadScheduler scheduler, SchedulerView view, IEvent appointment) : base(scheduler, view, appointment)
    {
    }

    protected override void OnParentChanged(Telerik.WinControls.RadElement previousParent)
    {
        base.OnParentChanged(previousParent);

        if (this.Scheduler.ActiveViewType == SchedulerViewType.Day)
        {
            if (this.Start.Hour > this.Scheduler.GetDayView().RulerEndScale)
            {
                this.Start = this.Start.Date.AddHours(this.Scheduler.GetDayView().RulerEndScale).AddMinutes(-(int)this.Scheduler.GetDayView().RangeFactor);
            }
        }
    }
}
Completed
Last Updated: 13 Jun 2014 14:15 by ADMIN
1. In Day View, add an appointment for Thursday Jan 30
3. Click the Print Preview button
4. Click on the Print Settings dialog
5. Now change the Print style to Weekly.
Note that the DateRange now changes to Jan 27 - Feb 2. 
6. Now change the Print style to Monthly.
Note that the DateRange now changes to Jan 26 - Feb 2, whereas it should be Jan 26 to Feb 2, since the default week count is 4
Completed
Last Updated: 10 Jun 2014 18:51 by Hugo Furth
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 1
Category: Scheduler/Reminder
Type: Feature Request
1
EnableExactTimeRendering property should get or set a value indicating whether the appointment start and end time should be rendered exactly.
Completed
Last Updated: 10 Jun 2014 18:49 by ADMIN
To reproduce:
Add an appointment with the text "<html><size=9>Erin Swardz</br><color=Red>PO 2315</html>" the appointment looks formatted in the scheduler, however when in PrintPreview/Print the html code is printed in raw format

Workaround:
Strip all html in order to print pure text - 
void scheduler_AppointmentPrintElementFormatting(object sender, PrintAppointmentEventArgs e)
{
    string replaceBr = e.AppointmentElement.Text.Replace("</br>", " ");
    string result = Regex.Replace(replaceBr, @"<[^>]*>", string.Empty);
    e.AppointmentElement.Text = result;
}
Completed
Last Updated: 10 Jun 2014 18:48 by ADMIN
Completed
Last Updated: 10 Jun 2014 18:43 by ADMIN
Let's say that you have an appoiment that starts at 8:30 and ends at 8:30. RadScheduler will display it as it should, but it will not be considered by the printing functionality.
We should also have in mind the case where there are several appointments starting from 8:30 and ending at 8:30.
Completed
Last Updated: 10 Jun 2014 18:39 by ADMIN
Currently if there are several appointments with equal start date, their order in TimelineView for example cannot be defined via a custom sort comparer.
Completed
Last Updated: 10 Jun 2014 18:35 by ADMIN
Recurring event for last weekday of June does not appear in 2013.
Completed
Last Updated: 10 Jun 2014 18:34 by ADMIN
Improve property change notifications in day view grouped by resource.
Completed
Last Updated: 10 Jun 2014 18:34 by ADMIN
Add scroll bar to the all day area in the Day/Week/WorkWeek views
Completed
Last Updated: 09 Jun 2014 13:04 by ADMIN
ADMIN
Created by: Georgi I. Georgiev
Comments: 0
Category: Scheduler/Reminder
Type: Bug Report
2
To reproduce:
Create a SQL table as per this article - http://www.telerik.com/help/winforms/scheduler-data-binding-using-datasource-property.html . Add the following mappings using EntityFramework or OpenAccess - http://www.telerik.com/help/winforms/scheduler-data-binding-using-datasource-property.html. You will notice that the resources cannot be mapped.
Workaround:
Implement a One-to-Many relation by adding a ResourceId column in the database and removing the old table.

Resolution: Both EF and TDA mappings work. Due to the differences in the mechanisms of the two products there are some slight adjustments that need to be made. Below is how to set up the mappings with EF and in commented code for ORM.
SchedulerDataEntities1 entityContext = new SchedulerDataEntities1();
Completed
Last Updated: 09 Jun 2014 10:36 by ADMIN
ADMIN
Created by: Ivan Todorov
Comments: 0
Category: Scheduler/Reminder
Type: Feature Request
2
Similar to Outlook, the user should be able to set how long before the start of each appointment the reminder should notify him/her.