Combination of Slot and ResourceType is not working

6 posts, 1 answers
  1. Björn
    Björn avatar
    23 posts
    Member since:
    Mar 2011

    Posted 08 Feb 2012 Link to this post

    For planning courses where I have to assign teachers, I will use the RadSchedulerView,
    where the calendar from the course and teachers are visible. The calendar of the teachers must be read only!
    So I tried to integrate readonly slot for the teachers resources.

    Implementation
    I've defined a ResourceType 'Calendar' with the Resources 'Course', 'Teacher1' and 'Teacher2'. Added different appointments:
    • 'Course1' => for resource 'Course', 'Teacher1' (the teacher is booked for the course)
    • 'Course2' => for resource 'Course'
    • 'Private Appoinment' => for resource 'Teacher2' (so during that time, he cannot be booked for the course)

    All this is grouped in the RadSchedulerView with DataGroupDescription, ResourceGroupDescription ResourceType="Calendar". That looks very good.
    Now I want to make the Resources for 'Teacher1' and 'Teacher2' as readonly. So I defined a readonly slot as proposed in the telerik demos.
    But with no success.

    To find the problem,I stripped down the code to find the cause - but with no success.
    Finally I started with the sample code from Style a read-only slot :
    - And added following code in the ctor of the MyViewModel after defining the slot:
    ResourcesTypes = new ObservableCollection<ResourceType>();
    var resourceTypeCalendar = new ResourceType("Calendar");
    ResourcesTypes.Add(resourceTypeCalendar);
     
    // calendar for course appointments
    var resourceCourse = new Resource("Course");
    resourceTypeCalendar.Resources.Add(resourceCourse);
     
    // calendar for course appointments
    var resourceTeacher1 = new Resource("Teacher1");
    resourceTypeCalendar.Resources.Add(resourceTeacher1);
     
    // calendar for course appointments
    var resourceTeacher2 = new Resource("Teacher1");
    resourceTypeCalendar.Resources.Add(resourceTeacher2);
     
    var today = DateTime.Today;
    var appointment = new Appointment();
    appointment.UniqueId = Guid.NewGuid().ToString();
    appointment.Subject = "Course1";
    appointment.Start = today.AddHours(9);
    appointment.End = appointment.Start.AddHours(2);
    // appointment from course & teacher2
    appointment.Resources.Add(resourceCourse);
    appointment.Resources.Add(resourceTeacher1);
    Appointments.Add(appointment);
     
    appointment = new Appointment();
    appointment.UniqueId = Guid.NewGuid().ToString();
    appointment.Subject = "Course2";
    appointment.Start = today.AddDays(2).AddHours(8);
    appointment.End = appointment.Start.AddHours(4);
    // appointment from course
    appointment.Resources.Add(resourceCourse);
    Appointments.Add(appointment);
     
    appointment = new Appointment();
    appointment.UniqueId = Guid.NewGuid().ToString();
    appointment.Subject = "Private Appoinment";
    appointment.Start = today.AddDays(2).AddHours(7);
    appointment.End = appointment.Start.AddHours(8);
    // appointment from teacher2
    appointment.Resources.Add(resourceTeacher2);
    Appointments.Add(appointment);

    - defined the property: public ObservableCollection<ResourceType> ResourceTypes { set; get; }
    - and added in the MainPage.xaml following:
    <telerik:RadScheduleView
                AppointmentsSource="{Binding Appointments}"
                ResourceTypesSource="{Binding ResourcesTypes}"
                SpecialSlotsSource="{Binding SpecialSlots}" SpecialSlotStyleSelector="{StaticResource SpecialSlotStyleSelector}">
        <telerik:RadScheduleView.ViewDefinitions>
            <telerik:WeekViewDefinition />
        </telerik:RadScheduleView.ViewDefinitions>
        <telerik:RadScheduleView.GroupDescriptionsSource>
            <telerik:GroupDescriptionCollection>
                <telerik:DateGroupDescription />
                <telerik:ResourceGroupDescription ResourceType="Calendar" />
            </telerik:GroupDescriptionCollection>
        </telerik:RadScheduleView.GroupDescriptionsSource>
    </telerik:RadScheduleView>

    When I run that, it will show the three resources grouped, but the defined slot is not showing!
    If I remove the line 'ResourceTypesSource="{Binding ResourcesTypes}"', it will show the slot but no more the three resources!

    What's wrong?
    How can I define a readonly slot for the resource 'Teacher1' and 'Teacher2'?
    Idea: assign the teacher resources to the readOnlyslot (readOnlyslot.Resources.Add(resourceTeacher1); ).
    Can you post a sample for that?

    Regards
    Björn.


    
    
  2. Konstantina
    Admin
    Konstantina avatar
    2332 posts

    Posted 15 Feb 2012 Link to this post

    Hello Björn,

    Since you already have stripped your project, could you please send it to us in order to run it here locally and debug it. In that way we will be able to provide you with solution in a timely manner.

    Looking forward to your reply.

    Regards,
    Konstantina
    the Telerik team
    Sharpen your .NET Ninja skills! Attend Q1 webinar week and get a chance to win a license! Book your seat now >>
  3. DevCraft banner
  4. Björn
    Björn avatar
    23 posts
    Member since:
    Mar 2011

    Posted 15 Feb 2012 Link to this post

    Hello Konstantina

    You find my project in my dropbox. When you run it, it will show the special slots as the sample.
    I've marked my changes with 'ADDED CODE by bbee' in MyViewModel.cs and MainPage.xaml.

    When you change the part in MainPage.xaml: add the ResourceTypesSource="{Binding ResourcesTypes}".
    It should display all three resource columns in combination with the special slots.

    If you solve the problem, can you send me a sample project with my requirement:
    - define readonly slot for the resource 'Teacher1' and 'Teacher2'
    See for that also the attached screen.

    Thanks
    Björn.
  5. Konstantina
    Admin
    Konstantina avatar
    2332 posts

    Posted 17 Feb 2012 Link to this post

    Hello Björn,

    There are a few important things that you have missed:
    - there should be defined Copy() and CopyFrom() methods for the Slots
    - a resource should be assign to the Slots and also the IsReadOnly property set to True, if you want do disable the editing on these slots
    - the RecurrenceRulePattern in this case should be made weekly, since there are the WeekDays which repeat.
    Attached I am sending you the sample project with these corrections made. I have commented out the other slots  in order to isolate the problem, but since one type is already defined correctly, you will be able to apply it to the others.

    Hope this helps.

    All the best,
    Konstantina
    the Telerik team
    Sharpen your .NET Ninja skills! Attend Q1 webinar week and get a chance to win a license! Book your seat now >>
  6. Björn
    Björn avatar
    23 posts
    Member since:
    Mar 2011

    Posted 24 Feb 2012 Link to this post

    Hi Konstantina

    It's still not clear.
    Can you send me a runnable sample where you define a Readonly-Slot which is assigned to the resources 'Teacher1' & 'Teacher2' but not resource 'Course'.
    No other slots are required.

    Thanks
    Björn.
  7. Answer
    Yana
    Admin
    Yana avatar
    4554 posts

    Posted 28 Feb 2012 Link to this post

    Hi Björn,

    I've modified the project to make the use of the SpecialSlots more clear. 

    Please note that in your case you're assigning one appointment "Course 1" to "Course" and "Teacher1" resources, so it is placed in a readonly and regular slots at the same time - that's why you will be able to edit it.

    Hope this helps.


    Kind regards,
    Yana
    the Telerik team
    Sharpen your .NET Ninja skills! Attend Q1 webinar week and get a chance to win a license! Book your seat now >>
Back to Top
DevCraft banner