Articles in this section
Category / Section

How to open detailed window in single cell and appointment click?

1 min read

This knowledge base article explains the way to open detailed window in single cell and appointment click.

 

Step 1: Create a default schedule by referring the instructions given in the following UG link.

https://help.syncfusion.com/js/schedule/getting-started

Also define the cellClick, appointmentClick and appointmentWindowOpen events as shown below.

 

$("#Schedule1").ejSchedule({
    width: "100%",
    height: "525px",
    currentDate: new Date(2017, 5, 5),
    appointmentSettings: {
        dataSource: dManager,
        id: "Id",
        subject: "Subject",
        startTime: "StartTime",
        endTime: "EndTime",
        description: "Description",
        allDay: "AllDay",
        recurrence: "Recurrence",
        recurrenceRule: "RecurrenceRule"
    },
    cellClick: "appWindow",
    appointmentClick: "OnAppointmentClick",
    appointmentWindowOpen: "onAppointmentWindowOpen"
});

 

Step 2: Within the cellClick scheduler event, clicked cell details can be retrieved. Disable the quick window by setting args.cancel to true and pass that information to _appointmentWindow function to open the detailed window.

 

function appWindow(args) {
    var obj = $("#Schedule1").data("ejSchedule");
    args.cancel = true;
    obj._appointmentWindow(args.target);
}

 

Step 3: Within the appointmentClick scheduler event, clicked appointments details can be retrieved which can be used to open the edit window.

 

function OnAppointmentClick(args) {
    args.cancel = true;
    if (!args.appointment.Recurrence)
        this._showAppointmentDetails(args.appointment.Guid, true);
    else {
        if (ej.isNullOrUndefined(this._recurEditWindow)) this._renderRecurEditWindow();
        this._parentId = args.appointment.ParentId;
        this._recurEditWindow.ejDialog("open");
        this._recurEditWindow.focus();
        this._deleteBeforeOpen();
    }
}

 

Step 4: Within the appointmentWindowOpen scheduler event, we should manually rename the title of the detailed window based on the cell and appointment click as shown below.

Default window

function onAppointmentWindowOpen(args) {
    if (!ej.isNullOrUndefined(args.appointment))
        $("#Schedule1AppointmentAddEditWindow_title").find('.e-title').html("Edit Appointment");
    else
        $("#Schedule1AppointmentAddEditWindow_title").find('.e-title').html("Create Appointment");
}

 

Custom window

function onAppointmentWindowOpen(args) {
    args.cancel = true;
    var quickobj = $("#Schedule1AppointmentQuickWindow").data("ejDialog");
    quickobj.close();
    $("#StartTime").ejDateTimePicker({ value: args.startTime });
    $("#EndTime").ejDateTimePicker({ value: args.endTime });
    if (!ej.isNullOrUndefined(args.target)) {
        if ($(args.target.currentTarget).hasClass("e-alldaycells"))
            $("#allday").prop("checked", true);
        else
            args.model.currentView == "month" ? $("#allday").prop("checked", true) : $("#allday").prop("checked", false);
        $("#StartTime,#EndTime").ejDateTimePicker({ enabled: ($(args.target.currentTarget).hasClass("e-alldaycells") || $(args.target.currentTarget).hasClass("e-monthcells") || args.model.currentView == "month") ? false : true });
    }
    if (!ej.isNullOrUndefined(args.appointment)) {
        $("#customId").val(args.appointment.Id);
        $("#subject").val(args.appointment.Subject);
        $("#customdescription").val(args.appointment.Description);
        $("#StartTime").ejDateTimePicker({ value: new Date(args.appointment.StartTime) });
        $("#EndTime").ejDateTimePicker({ value: new Date(args.appointment.EndTime) });
        $("#allday").prop("checked", args.appointment.AllDay);
        $("#recurrence").prop("checked", args.appointment.Recurrence);
        if (args.appointment.Recurrence) {
            $("#rType").val(args.appointment.RecurrenceRule.split(";")[0].split("=")[1].toLowerCase());
            $("tr.recurrence").css("display", "table-row");
        }
        $("#customWindow_title").find('.e-title').html("Edit Appointment");
        $("#customWindow").ejDialog("open");
    }
    else {
        $("#customWindow_title").find('.e-title').html("Create Appointment");
        $("#customWindow").ejDialog("open");
    }
}

 

Step 5: Run the sample and detailed window will be opened on single cell and appointment click.

 

Default window: https://jsplayground.syncfusion.com/lb2zjwlk

Custom window: https://jsplayground.syncfusion.com/lxobktuo

 

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (0)
Please sign in to leave a comment
Access denied
Access denied