Completed
Last Updated: 03 Dec 2014 11:57 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: Scheduler/Reminder
Type: Bug Report
1
To reproduce:

1. Open Demo application >> Scheduler >> Printing example.

2. Change to Weekly style and return back to Daily style.

3. Modify a random appointment's end time to be half an hour, e.g. 10:30.

4. Change  the rule scale to 5 minute and press PrintPreview button.

You will notice that the rendered appointment in the PrintPreview dialog fills the entire hour interval, instead of half of it.

public Form1()
{
    InitializeComponent();
    this.radScheduler1.PrintStyle = new CustomSchedulerDailyPrintStyle();
}

public class CustomSchedulerDailyPrintStyle :SchedulerDailyPrintStyle
{
    protected override void DrawAppointments(DateTime currentDate, IResource resource, Rectangle appArea, Graphics graphics)
    {
        int rowCount = Math.Max(1, (int)Math.Ceiling((TimeEndRange - TimeSpan.FromHours(TimeStartRange.Hours)).TotalHours));
        float rowHeight = (float)appArea.Height / rowCount;

        List<IEvent> appointments = this.GetAppointments(currentDate, false, resource);

        appointments.Sort(CompareAppointments);
        bool setColumn = true;
        Dictionary<IEvent, int> columns = new Dictionary<IEvent, int>();
        Dictionary<IEvent, int> maxColumns = new Dictionary<IEvent, int>();
        int currentColumn = 0;

        while (setColumn)
        {
            setColumn = false;
            DateTime currentTime = DateTime.MinValue;

            foreach (IEvent app in appointments)
            {
                if (!columns.ContainsKey(app) && DateFloor(app.Start) >= currentTime)
                {
                    setColumn = true;
                    columns.Add(app, currentColumn);
                    currentTime = DateCeiling(app.End);
                }
            }

            currentColumn++;
        }

        DateTime maxEndDate = DateTime.MinValue;
        int lastIndex = 0;
        int maxColumn = 0;

        for (int i = 0; i <= appointments.Count; i++)
        {
            if (i == appointments.Count || DateFloor(appointments[i].Start) >= maxEndDate)
            {
                for (int j = lastIndex; j < i; j++)
                {
                    maxColumns.Add(appointments[j], maxColumn);
                }

                maxColumn = 0;
                lastIndex = i;
            }

            if (i == appointments.Count)
            {
                break;
            }

            maxColumn = Math.Max(maxColumn, columns[appointments[i]]);
            if (maxEndDate < DateCeiling(appointments[i].End))
            {
                maxEndDate = DateCeiling(appointments[i].End);
            }
        }

        foreach (IEvent app in appointments)
        {
            AppointmentPrintElement printedAppointment = new AppointmentPrintElement(app, this.Scheduler);
            printedAppointment.ShowHours = false;
            printedAppointment.DrawBorder = printedAppointment.DrawFill = true;

            float appY = appArea.Y + Math.Max(0, (float)(((DateFloor(printedAppointment.Start) - currentDate.Add(this.TimeStartRange)).TotalHours) * rowHeight));
            float appBottom = appArea.Y + Math.Min(appArea.Height, (float)(((DateCeiling(printedAppointment.End) - currentDate.Add(this.TimeStartRange)).TotalHours) * rowHeight));
            float appHeight = appBottom - appY - app.End.Minute;
            float appWidth = (appArea.Width - HoursColumnWidth) / (maxColumns[app] + 1);
            float appX = appArea.X + HoursColumnWidth + columns[app] * appWidth;

            RectangleF appRect = new RectangleF(appX, appY, appWidth, appHeight);
            appRect.Inflate(-2f, -2f);
            this.DrawAppointment(printedAppointment, graphics, appRect);
        }
    }
}

private void radButton1_Click(object sender, EventArgs e)
{
    this.radScheduler1.PrintPreview();
}
Completed
Last Updated: 26 Nov 2014 14:18 by ADMIN
Add Reminder property to the AppointmentMappingInfo class.
Completed
Last Updated: 12 Nov 2014 14:00 by ADMIN
ADMIN
Created by: Nikolay
Comments: 0
Category: Scheduler/Reminder
Type: Bug Report
0
An AppointmentChanged event should be added to RadScheduler that can be handled in VB.NET by the 'Handles' approach.

Resolution: 
The AppointmentChanged event is added which is the Appointments.CollectionChanged event with ItemChanged action.
Completed
Last Updated: 16 Oct 2014 17:06 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: Scheduler/Reminder
Type: Bug Report
1
If your current time is 9:30 AM and you have an appointment in 11:00 AM with reminder 6 hours, the alarm popup should be displayed at 5:00 AM. When you run the application and show the scheduler, the reminder pop up appears immediately. This behavior is expected. However, if you snooze the event with 1 hour, it is expected that the reminder for this appointment will not popup the next hour. However, the RadScheduler makes the following calculation: reminder start time - reminder value + snooze time = 11:00 - 6 + 1 = 6:00. Hence, the reminder popup shows immediately as the current time is 9:30h.
Completed
Last Updated: 16 Oct 2014 16:08 by ADMIN
To reproduce:

Add appointments to TimelineView so that they create a vertical scrollbar. Scroll to bottom and click at the last appointment, you will see that the scrollbar will return back to the start and will hide for a moment

Workaround:

Use the following custom scheduler:

public class Myscheduler : RadScheduler
{
    public override string ThemeClassName
    {
        get
        {
            return typeof(RadScheduler).FullName;
        }
        set
        {
            base.ThemeClassName = value;
        }
    }

    protected override RadSchedulerElement CreateRadSchedulerElement()
    {
        return new MySchedulerElement(this, this.ActiveView);
    }

}

class MySchedulerElement : RadSchedulerElement
{
    public MySchedulerElement(RadScheduler scheduler, SchedulerView view)
        : base(scheduler, view)
    { }

    protected override SchedulerViewElement CreateViewElement()
    {
        if (this.Scheduler.ActiveViewType == SchedulerViewType.Timeline && this.Scheduler.GroupType == GroupType.None)
        {
            return new MyTimelineViewElement(this.Scheduler, this.View);
        }

        return base.CreateViewElement();
    }
}

class MyTimelineViewElement : SchedulerTimelineViewElement
{
    public MyTimelineViewElement(RadScheduler scheduler, SchedulerView view)
        : base(scheduler, view)
    {
    }

    protected override void UpdateVeticalScroll(float presenterHeight, float appointmentsMaxHeight)
    {
        base.UpdateVeticalScroll(presenterHeight, appointmentsMaxHeight + this.VScrollBar.Value);
    }
}
Completed
Last Updated: 16 Oct 2014 15:05 by ADMIN
Please refer to the attached file.
Completed
Last Updated: 15 Oct 2014 15:04 by ADMIN
Completed
Last Updated: 09 Oct 2014 10:28 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: Scheduler/Reminder
Type: Bug Report
0
To reproduce :
1. Add a RadScheduler and a RadToggleButton.
2. Use the following code snippet:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Me.RadScheduler1.ActiveViewType = Telerik.WinControls.UI.SchedulerViewType.Timeline

    Dim colors As Color() = New Color() {Color.LightBlue, Color.LightGreen, Color.LightYellow, Color.Red, Color.Orange, Color.Pink, _
        Color.Purple, Color.Peru, Color.PowderBlue}

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

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

    Me.RadScheduler1.ActiveView.ResourcesPerView = 2

    Dim timelineView As SchedulerTimelineView = Me.RadScheduler1.GetTimelineView()
    Dim scale As Timescales = Timescales.Hours
    timelineView.ShowTimescale(scale)
    timelineView.StartDate = DateTime.Now.Date.AddHours(5)
    timelineView.RangeStartDate = DateTime.Now.Date.AddHours(5)
    timelineView.RangeEndDate = DateTime.Now.Date.AddHours(15)
    timelineView.CurrentScale.DisplayedCellsCount = 10
End Sub

Private Sub RadToggleButton1_ToggleStateChanged(sender As Object, args As StateChangedEventArgs) Handles RadToggleButton1.ToggleStateChanged
    If args.ToggleState = Telerik.WinControls.Enumerations.ToggleState.On Then
        Me.RadScheduler1.GroupType = GroupType.Resource
    Else
        Me.RadScheduler1.GroupType = GroupType.None
    End If
End Sub

Initially, the timeline view start from the correct hour (5 AM). However, the horizontal scroll bar allows you to navigate in right direction as the  RangeEndDate is currently visible in the view. When you click the toggle button, the scheduler is grouped by resources and the timeline start is reset.
Completed
Last Updated: 01 Oct 2014 13:14 by Mark
Add support for parsing hourly recurrence rules from a database. 
Completed
Last Updated: 01 Oct 2014 13:12 by ADMIN
The AppointmentResizeEnd event fires in cases where there was no resize done (for example when selecting appointments)

To workaround:

public Form1()
{
    InitializeComponent();
    this.radScheduler1.SchedulerElement.ResizeBehavior = new MyResizeBehavior(this.radScheduler1);
}
 
class MyResizeBehavior : AppointmentResizingBehavior
{
    public MyResizeBehavior(RadScheduler scheduler)
        :base(scheduler) { }
 
    public override bool EndResize(IEvent appointment)
    {
        if (!this.IsResizing)
        {
            return false;
        }
        return base.EndResize(appointment);
    }
}
Completed
Last Updated: 01 Oct 2014 13:03 by ADMIN
RadScheduler the ruler is not displayed correctly with the office2010 themes.
Completed
Last Updated: 01 Oct 2014 13:03 by ADMIN
To reproduce:
public Form1()
{
    InitializeComponent(); 
    for (int i = 0; i < 10; i++)
    {
        Appointment appointment = new Appointment(DateTime.Now.AddHours(i),
            TimeSpan.FromMinutes(30), "Summary", "Description");
        appointment.StatusId = 2;
        appointment.BackgroundId = 6;
        this.radScheduler1.Appointments.Add(appointment);
    }

    this.radScheduler1.ActiveViewType = SchedulerViewType.Day;
    SchedulerDayView dayView = this.radScheduler1.GetDayView();
    dayView.RangeFactor = ScaleRange.FiveMinutes;
    dayView.RulerStartScale = DateTime.Now.Hour - 1;
    this.radScheduler1.EnableExactTimeRendering = true;
}
Completed
Last Updated: 25 Sep 2014 08:59 by ADMIN
 The tooltip is displayed in in wrong position when it contains several lines.
Completed
Last Updated: 03 Sep 2014 06:57 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: Scheduler/Reminder
Type: Bug Report
0
To reproduce:

public Form1()
{
    InitializeComponent();

    this.radScheduler1.GetDayView().RangeFactor = Telerik.WinControls.UI.ScaleRange.HalfHour;

    this.radScheduler1.Appointments.Add(new Appointment(new DateTime(2014, 7, 21, 11, 0, 0, 0),
                                                        new DateTime(2014, 7, 21, 12, 0, 0, 0)));

    this.radScheduler1.Appointments.Add(new Appointment(new DateTime(2014, 7, 21, 15, 30, 45, 137 ),
                                                        new DateTime(2014, 7, 21, 15, 30, 58, 600 )));

    this.radScheduler1.Appointments.Add(new Appointment(new DateTime(2014, 7, 21, 10, 0, 0, 0 ),
                                                        new DateTime(2014, 7, 21, 11, 0, 0, 0 )));

    this.radScheduler1.Appointments.Add(new Appointment(new DateTime(2014, 7, 21, 15, 30, 19, 633 ),
                                                        new DateTime(2014, 7, 21, 15, 30, 31, 253 )));

    this.radScheduler1.Appointments.Add(new Appointment(new DateTime(2014, 7, 21, 15, 29, 20, 337 ),
                                                        new DateTime(2014, 7, 21, 15, 29, 52, 767 )));

    this.radScheduler1.Appointments.Add(new Appointment(new DateTime(2014, 7, 21, 13, 0, 0, 0 ),
                                                        new DateTime(2014, 7, 21, 14, 0, 0, 0 )));

    this.radScheduler1.Appointments.Add(new Appointment(new DateTime(2014, 7, 21, 15, 0, 0, 0 ),
                                                        new DateTime(2014, 7, 21, 16, 0, 0, 0 )));

    this.radScheduler1.Appointments.Add(new Appointment(new DateTime(2014, 7, 21, 15, 28, 15, 500 ),
                                                        new DateTime(2014, 7, 21, 15, 28, 37, 310 )));

    this.radScheduler1.Appointments.Add(new Appointment(new DateTime(2014, 7, 21, 14, 0, 0, 0 ),
                                                        new DateTime(2014, 7, 21, 15, 0, 0, 0 )));

    this.radScheduler1.Appointments.Add(new Appointment(new DateTime(2014, 7, 21, 15, 27, 19, 123 ),
                                                        new DateTime(2014, 7, 21, 15, 27, 57, 357 )));
}
Completed
Last Updated: 31 Jul 2014 10:37 by ADMIN
To reproduce:
 - Add a recurrence appointment with a reminder to a blank RadScheduler.
 - Delete single occurrence and wait for the reminder form to show.
 - You will notice that the deleted occurrence still exist in the form's grid.
Completed
Last Updated: 21 Jul 2014 08:35 by ADMIN
Check out the Weekly calendar style in Outlook

Resolution: 
In Q2 2014 we introduced new feature: WeeklyCalendarPrintStyle. More information you can find in our help: http://www.telerik.com/help/winforms/scheduler-print-support-schedulerprintstyle.html, section WeeklyCalendarStyle
Completed
Last Updated: 21 Jul 2014 08:35 by ADMIN
The request is covered here - http://feedback.telerik.com/Project/154/Feedback/Details/107090-fix-radscheduler-monthly-print-style-does-not-take-into-consideration-the-week

Resolution: 
In Q2 2014 we introduced new feature: WeeklyCalendarPrintStyle. More information you can find in our help: http://www.telerik.com/help/winforms/scheduler-print-support-schedulerprintstyle.html, section WeeklyCalendarStyle
Completed
Last Updated: 09 Jul 2014 13:58 by ADMIN
To reproduce scroll to the working hours in the ActiveViewChanged event:
void radScheduler1_ActiveViewChanged(object sender, Telerik.WinControls.UI.SchedulerViewChangedEventArgs e)
{
    if (e.OldView.ViewType == SchedulerViewType.Month && (e.NewView.ViewType == SchedulerViewType.Day || e.NewView.ViewType == SchedulerViewType.Week))
    {
        SchedulerDayViewBase dayView = radScheduler1.ActiveView as SchedulerDayViewBase;
        dayView.AutoScrollToWorkTime = true;
    }
}

Workaround:
public class MyScheduler : RadScheduler
{
    public override string ThemeClassName
    {
        get
        {
            return typeof(RadScheduler).FullName;
        }
    }

    protected override void SetValuesToViewElement(SchedulerVisualElement viewElement, ViewData viewData)
    {
        if (viewElement is SchedulerDayViewElement)
        {
            return;
        }

        base.SetValuesToViewElement(viewElement, viewData);
    }
}
Completed
Last Updated: 04 Jul 2014 10:31 by ADMIN
To reproduce:
- Open an appointment with the open item button from the alarm form.
- Change the appointment start time and close it. 
- The "Due in' column in the grid is not properly updated.