How to "activate" recurrenceeditor in add form?

4 posts, 0 answers
  1. Andrew
    Andrew avatar
    21 posts
    Member since:
    Dec 2015

    Posted 25 Feb Link to this post

    So I have the recurrence editor in my edit form, and it works as its included with the code: 

    <div class="k-edit-label"><label for="recurrenceRule">Repeat</label></div>
     
                <div data-container-for="recurrenceRule" class="k-edit-field">
                  <div data-bind="value:recurrenceRule" name="recurrenceRule" data-role="recurrenceeditor"></div>
                </div>

    And activated with the script:

    editable: {
                template: $("#editorx").html()
            }

     

    Is this possible in a custom add form? I have found no reference in the documentation on how to created kendo type templates for the add forms, only edit.

     

    Thanks in advance.

  2. Vladimir Iliev
    Admin
    Vladimir Iliev avatar
    2172 posts

    Posted 29 Feb Link to this post

    Hi Andrew,

    From the provided information it's not clear for us what exactly you are trying to achieve - could you please elaborate more on this? Also if possible please provide the full Scheduler configuration in order to get better overview of the current setup that you have. 

    Regards,
    Vladimir Iliev
    Telerik
     
    Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
     
  3. Kendo UI is VS 2017 Ready
  4. Andrew
    Andrew avatar
    21 posts
    Member since:
    Dec 2015

    Posted 15 Mar in reply to Vladimir Iliev Link to this post

    My goal is simple: construct an add event form that uses the Scheduler's recurrence editor.

    Here is my configuration:

    $("#scheduler").kendoScheduler({
            date: new Date(),
            startTime: new Date(),
            height: 750,
            eventTemplate: $("#event-template").html(), //kendo.template(eventTemplateString), //$("#event-template").html(),
            editable: {
                template: $("#editorx").html()
            },
            add: scheduler_add,
            //editable: false,
            dataBound: function(e) {
                if (!dangLoad) {
                    dangLoad = true;//wut? ok Brenden. DANGLOAD
     
                    hideEvent();
                }
                //console.log(e);
                var scheduler = this;
                var view = scheduler.view();
     
                view.table.find("td[role=gridcell]").each(function() {
     
                    var element = $(this);
                    var slot = scheduler.slotByElement(element);
                    if (slot.startDate < new Date) {
                        element.addClass("greyCell");
                    }
     
                });
                $("#scheduler").kendoTooltip({
                    filter: ".k-event",
                    position: "top",
                    width: 250,
                    content: kendo.template($('#templatezz').html())
                        //content: "Tooltip content"
                });
            },
            change: function(e) {
     
                console.log("Changing.");
     
                if (user.role == "read-only") {
                    console.log("You can not execute this action from a read-only account");
                    e.preventDefault();
                    return 1;
                }
     
                console.log('change');
                if (e.event.result == 'Manual') {} else {
                    alert("cannot change " + e.event.case_name + " as it was created in Access");
                    e.preventDefault();
                }
                //e.preventDefault();
                //console.log("Editing", e.event.title);
            },
            edit: function(e) {
     
                this.one("save", function () {
                    console.log("saving: \n");
                    console.log(e);
                    e.preventDefault();
                });
     
                if (user.role == "read-only") {
                    alert("You can not perform this action from a read-only account");
                    e.preventDefault();
                    showReadOnlyModal(e.event);
                    return 1;
                }
     
                console.log(meds);
                console.log(e.event.created_by);
     
                if (user.role == "mediator") {
                    editRights = _.contains(meds, e.event.created_by);
                } else {
                    editRights = !_.contains(meds, e.event.created_by); //Admins edit everything not created by a mediator.
                }
     
                console.log("edit rights: " + editRights);
     
                if (e.event.created_by == "SOL Converter") {
                    console.log("Created by SOL Converter");
                    editRights = false;
                }
     
                if (!editRights) {
                     
                    //alert("You do not have the right to edit this entry.");
                    showReadOnlyModal(e.event);
                    e.preventDefault();
                    return 1;
                }
     
                console.log("editing");
     
                var addr, body, subject; //For automated emails.
                    addr = "";
                console.log(e.event.mediatorIds);
                e.event.last_updated = Date();
                e.event.last_updated_by = Cookies.get("name");
                 
                if (e.event.result == 'Manual') {
                    console.log(e.event);
                    var getInfoPromise = getWhoCreatedModified(e.event._id);
                    console.log(e.event._id);
                    getInfoPromise.then(onGetWhoCreatedModifiedComplete, onErrorFunction);
     
                } else {
                    showPartyInfoModal(e.event.parties, e.event.description, e.event.caseNumber, e.event);
                    e.preventDefault();
                }
            },
            remove: function(e) {
                if (user.role == "mediator") {
                    editRights = _.contains(meds, e.event.created_by);
                } else {
                    editRights = !_.contains(meds, e.event.created_by); //Admins edit everything not created by a mediator.
                }
     
                console.log("edit rights: " + editRights);
     
                if (user.role == "read-only") {
                    console.log("You can not execute this action from a read-only account");
                    e.preventDefault();
                    return 1;
                }
     
                if (e.event.result == 'Manual') {
                    console.log("hey you try and remove");
                    console.log(e);
     
                    var meetingToDelete = e.event._id;
                    var deleteEntryPromise = deleteEntry(meetingToDelete);
                    deleteEntryPromise.then(onDeleteEntryComplete, onErrorFunction);
     
                } else {
                    alert("cannot remove " + e.event.case_name + " as it was created in Access");
                    e.preventDefault();
                }
                //e.preventDefault();
                //console.log("Editing", e.event.title);
            },
            //editable: editRights,
            views: [{
                        type: "day"
                    }, {
                        type: "workWeek"
                    }, {
                        type: "month",
                        selected: true,
                        eventHeight: 35
                    }, {
                        type: "agenda"
                    }
                /*, {
                                    type: "timeline"
                                }, {
                                    type: "timelineWorkWeek"
                                }, {
                                    type: "timelineMonth"
                                }*/
            ],
            timezone: "Etc/UTC",
            dataSource: {
                //data: scheduleDataz,
                transport: {
                    read: {
                        //url: "getData.pl?ACTION=GETMEETINGS", //node rewrite
                        url: "/meetings",
                        dataType: "JSON" // "jsonp" is required for cross-domain requests; use "json" for same-domain requests
                    },
                    update: {
                        url: "/meeting", //node rewrite
                        dataType: "JSON",
                        type: "POST",
                        contentType: "application/json; charset=utf-8"
                    },
                    //last_updated, last_updated_by
                    destroy: {
                        url: "/deleteMeeting",
                        dataType: "JSON",
                        type: "POST",
                        contentType: "application/json; charset=utf-8"
                    },
                    parameterMap: function (data, op) {
                        return JSON.stringify(data);
                    }
                },
                requestEnd: function(e) {
                    //check the "response" argument to skip the local operations
                    if (e.type === "read" && e.response) {
                        console.log("Current request is 'read'.");
                        console.log(e.response);
                    }
                  },
                schema: {
                    parse: function (res) {
                        var meetings = [];
                        for (var i = 0; i < res.length; i++) {
                            var meet = res[i];
                            meet.start_time = new Date(meet.start_time);
                            meet.end_time = new Date(meet.end_time);
                            meetings.push(meet);
                        }
                        return meetings;
                    },
                    data: function (data) {
                        console.log(data);
                        if (data.length == 0) {
                            return [];
                        }
                        return data;
                    },
                    model: {
                        id: "MeetingID",
                        fields: {
                            MeetingID: {
                                from: "meeting_id"
                            },
                            title: {
                                from: "case_name",
                                defaultValue: "No title",
                                validation: {
                                    required: true
                                }
                            },
                            start: {
                                type: "date",
                                from: "start_time"
                            },
                            end: {
                                type: "date",
                                from: "end_time"
                            },
                            description: {
                                from: "case_desc"
                            },
                            caseManager: {
                                from: "case_manager",
                                nullable: true
                            },
                            mediatorIds: {
                                from: "mediator_LawyerIDs"
                            },
                            result: {
                                from: "meeting_result",
                                nullable: true
                            },
                            caseNumber: {
                                from: "case_number",
                                nullable: true
                            },
                            case_location: {
                                from: "location",
                                nullable: true
                            },
                            parties: {
                                from: "parties",
                                nullable: true
                            },
                            numParties: {
                                from: "number_of_parties",
                                nullable: true
                            },
                            created_by: {
                                from: "created_by",
                                nullable: true
                            },
                            creation_timestamp: {
                                from: "creation_timestamp",
                                nullable: true
                            },
     
                            //Recurrence specific fields
                            recurrenceId: {
                                from: "RecurrenceId"
                            },
                            recurrenceRule: {
                                from: "RecurrenceRule"
                            },
                            recurrenceException: {
                                from: "RecurrenceException"
                            }                       
                        }
                    }
                }
            },
            resources: [{
                field: "result",
                title: "Meeting Result",
                dataSource: [{
                    text: "_",
                    value: "Manual",
                    color: "#661155"
                }, {
                    text: "Canceled",
                    value: "Canceled",
                    color: "#CCCCCC"
                }, {
                    text: "Settled",
                    value: "Settled"
                }, {
                    text: "Not settled",
                    value: "Not settled"
                }, {
                    text: "Settled Without Mediation",
                    value: "Settled w/o Mediation"
                }]
            }, {
                field: "mediatorIds", // The field of the scheduler event which contains the resource identifier
                title: "Mediator", // The label displayed in the scheduler edit form for this resource
                dataSource: mediatorResources,
                multiple: true
            }]
        });

  5. Vladimir Iliev
    Admin
    Vladimir Iliev avatar
    2172 posts

    Posted 17 Mar Link to this post

    Hello Andrew,

    It' still not clear for me what is the desired behavior that you need, however if you need to have different edit and create templates than you can include all editors in current edit template and hide parts of it using the "edit" event of the Scheduler:


    Regards,
    Vladimir Iliev
    Telerik
     
    Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
     
Back to Top
Kendo UI is VS 2017 Ready