; WSP = window.WSP || {};
(function (WSP, $) {
WSP.WspSharedUser = [];
WSP.wspLoadScheduler = function () {
this.frame;
this.windowNo;
this.height;
var SchedWindowNo = null;
var $mscheduler = null;
var $divscalendar = null;
var $scalendar = null;
var $divSharedContact = null;
var $rdoMyCal = null;
var $rdoSharedCal = null;
var $imgMyCal = null;
var $imgSharedCal = null;
var isShredDeleted = false;
var selectedUser = '';
var $CustomSchedTemplate = null;
var $btnLoadScheduler = null;
var $btnAddcontact = null;
var $btnDeletecontact = null;
var $root = $("<div>");
var $busyDiv = null;
var self = this;
var autoLoadSharedUser = false;
var sharedData = null;
var sharedContact = null;
var isShared = false;
var arrUsr = [], arrAptUsr = [], arrAptCat = [];
var lusrid = null;
var lusrname = null;
var s_startDate = "";
var sUserID = [];
var sUserName = [];
//Load Scheduler
this.LoadScheduler = function () {
SchedWindowNo = self.windowNo;
$root.height(self.height);
$root.css("overflow-x", "auto");
// debugger;
$(($root.parent()).parent().children()[1]).show();
var divaptbusy = $("<div id='divAptBusy' class='wsp-busy-indicater'></div>");
$("body").append(divaptbusy);
//$busyDiv = ($root.parent()).parent().children()[1];
// $busyDiv.show();
$.ajax({
url: VIS.Application.contextUrl + "WSP/Scheduler/ReadJsonSchedData",
dataType: "json",
success: function (result) {
for (var s in result.lstCategories) {
arrAptCat.push({ text: result.lstCategories[s].CatName, value: result.lstCategories[s].ID });
}
for (var s in result.lstUsrInfo) {
arrAptUsr.push({ text: result.lstUsrInfo[s].Name, value: result.lstUsrInfo[s].ID });
}
Loadshed();
}
});
//Load scheduler
function Loadshed() {
$root.load(VIS.Application.contextUrl + 'WSP/Scheduler/Scheduler?windowNo=' + SchedWindowNo, function () {
// $busyDiv.hide();
$(".wsp-home-scheduler").height(self.height);
$(".wsp-home-left").height(self.height);
$(".wsp-home-right").height(self.height);
$(".wsp-scheduler").height(self.height);
$(".wsp-home-left-calendar").height(self.height / 2);
$(".wsp-home-left-btm").height(self.height / 2);
//$divscalendar.height((self.height / 2) - 5);
//$scalendar.height((self.height / 2) - 5);
//$(".home-left-calendar").height(self.height / 2 - 1);
lusrid = VIS.context.getAD_User_ID();
lusrname = VIS.context.getContext("##AD_User_Name");
arrUsr = [{ text: lusrname, value: lusrid }];
$mscheduler = $("#mscheduler_" + SchedWindowNo);
$divscalendar = $("#divcalendar_" + SchedWindowNo);
$scalendar = $("#scalendar_" + SchedWindowNo);
$rdoMyCal = $("#mycalendar_" + SchedWindowNo);
$rdoSharedCal = $("#sharedcalendar_" + SchedWindowNo);
$imgMyCal = $("#imgMyCal_" + SchedWindowNo);
$imgSharedCal = $("#imgSharedCal_" + SchedWindowNo);
$CustomSchedTemplate = $("#CustomSchedTemplate_" + SchedWindowNo);
$divSharedContact = $("#scontct_" + SchedWindowNo);
$btnLoadScheduler = $("#btnLoadScheduler_" + SchedWindowNo);
$btnAddcontact = $("#btnAddcontact_" + SchedWindowNo);
$btnDeletecontact = $("#btnDeletecontact_" + SchedWindowNo);
//By default disable Button
$divSharedContact.find("input[type='checkbox']").attr("disabled", true);
$btnLoadScheduler.attr("disabled", true);
if (autoLoadSharedUser == true) {
$divSharedContact.height("57%")
$btnLoadScheduler.hide();
}
else {
$btnLoadScheduler.show();
}
if (VIS.context.getContext("##WSP_Start_Date") != "") {
s_startDate = VIS.context.getContext("##WSP_Start_Date");
VIS.context.setContext("##WSP_Start_Date", "")
}
else {
s_startDate = new Date();
}
//Remove Busy indicater
divaptbusy.remove();
//######### start to initilize shceduler in div #########################//
$mscheduler.kendoScheduler({
//date: new Date("2014/6/10"),
// max: new Date("2014/7/10"),
date: s_startDate,
// startTime: new Date("2014/6/10 11:00 AM"),
// endTime: new Date("2014/6/10 12:00 AM"),
startTime: new Date(new Date().setHours(0, 0, 0, 0)),
selectable: true,
allDaySlot: true,
showWorkHours: true,
workDayStart: new Date(new Date().setHours(9, 0, 0, 0)),
workDayEnd: new Date(new Date().setHours(19, 0, 0, 0)),
views: [
{ type: "day", name: "day", selected: true },
"week",
"month",
"agenda"
],
messages: {
views: {
day: VIS.Msg.getMsg("Day")
},
views: {
week: VIS.Msg.getMsg("Week")
},
views: {
month: VIS.Msg.getMsg("Month")
},
views: {
agenda: VIS.Msg.getMsg("Agenda")
},
editor: {
editorTitle: VIS.Msg.getMsg("Appointments")
}
},
group: {
resources: ["userID"],
orientation: "vertical"
},
resources: [
{
field: "statusID",
title: "Status",
dataSource: [
{ text: "Free", value: 1, color: "#E4E4E4" },
{ text: "Busy", value: 3, color: "#48ADDB" },
{ text: "Busy", value: 4, color: "#93e1b3" }
]
},
{
field: "contacts",
name: "contacts",
multiple: true,
dataSource: arrAptUsr
},
{
field: "userID",
name: "userID",
//multiple: true,
dataSource: arrUsr
}
],
editable: {
//set the template
template: kendo.template($CustomSchedTemplate.html()),
create: true,
update: true,
},
change: function (e) {
var calendar = $scalendar.data("kendoCalendar");
if (e.sender.calendar.value() != null && e.sender.calendar.value() != "" && e.sender.calendar.value() !== undefined) {
calendar.value(e.sender.calendar.value());
}
else {
var start = (e.start.getMonth() + 1) + "/" + e.start.getDate() + "/" + e.start.getFullYear();
calendar.value(e.sender.calendar.value());
}
},
edit: function (e) {
//To Accept the appointments
if (e.event.start.getHours() == 0) {
$("#isAllDay_" + SchedWindowNo).attr("checked", true);
}
if (e.event.statusID == 1 && e.event.ID > 0) {
$("#divIsAccept_" + SchedWindowNo).show();
$("#title_" + SchedWindowNo).attr("disabled", true);
$("#location_" + SchedWindowNo).attr("disabled", true);
var ddlCategories = $("#categories_" + SchedWindowNo).data("kendoDropDownList");
ddlCategories.enable(false);
var startDateTimePicker = $("#startDateTime_" + SchedWindowNo).data("kendoDateTimePicker");
startDateTimePicker.enable(false);
$("#isAllDay_" + SchedWindowNo).attr("disabled", true);
var endDateTimePicker = $("#endDatetime_" + SchedWindowNo).data("kendoDateTimePicker");
endDateTimePicker.enable(false);
//var ddlRecurrenceRule = $("#recurrenceRule_" + SchedWindowNo);
//ddlRecurrenceRule.find('input, span, ul,li, select').attr('disabled', 'disabled');
var ddlNotRecurrenceRule = $("#NotRecurrenceRule_" + SchedWindowNo);
ddlNotRecurrenceRule.show();
//e.container.find("[for=recurrenceRule]").parent().hide();
//e.container.find("[data-container-for=recurrenceRule]").hide();
$("#isPrivate_" + SchedWindowNo).attr("disabled", true);
$("#description_" + SchedWindowNo).attr("disabled", true);
var $txtTaskAutocomplete = $("#txtSchedContacts_" + SchedWindowNo);
$txtTaskAutocomplete.attr("readonly", true);
$txtTaskAutocomplete.css("background-color", "#fff");
var span = $("<span>").text(VIS.Msg.getMsg("Me")),
a = $("<a data-index='" + lusrid + "' id='spanRemove" + lusrid + "'>").addClass("remove").attr({ href: "javascript:", title: "Remove " + VIS.Msg.getMsg("Me") }).text("x").appendTo(span);
//add friend to friend div
span.insertBefore($txtTaskAutocomplete);
//var contactMultiSelect_ = $("#selectContact_" + SchedWindowNo).data("kendoMultiSelect");
//contactMultiSelect_.enable(false);
}
//To see Accepted Appointemnts
else if (e.event.statusID == 4 && e.event.ID > 0) {
$("#divIsAccept_" + SchedWindowNo).hide();
$("#title_" + SchedWindowNo).attr("disabled", true);
$("#location_" + SchedWindowNo).attr("disabled", true);
var ddlCategories = $("#categories_" + SchedWindowNo).data("kendoDropDownList");
ddlCategories.enable(false);
var startDateTimePicker = $("#startDateTime_" + SchedWindowNo).data("kendoDateTimePicker");
startDateTimePicker.enable(false);
$("#isAllDay_" + SchedWindowNo).attr("disabled", true);
var endDateTimePicker = $("#endDatetime_" + SchedWindowNo).data("kendoDateTimePicker");
endDateTimePicker.enable(false);
var ddlRecurrenceRule = $("#recurrenceRule_" + SchedWindowNo);
ddlRecurrenceRule.find('span').off("clcik");
var ddlNotRecurrenceRule = $("#NotRecurrenceRule_" + SchedWindowNo);
$(".wsp-Recurrence-disable").show();
//e.container.find("[for=recurrenceRule]").parent().hide();
//e.container.find("[data-container-for=recurrenceRule]").hide();
$("#isPrivate_" + SchedWindowNo).attr("disabled", true);
$("#description_" + SchedWindowNo).attr("disabled", true);
var $txtTaskAutocomplete = $("#txtSchedContacts_" + SchedWindowNo);
$txtTaskAutocomplete.attr("readonly", true);
$txtTaskAutocomplete.css("background-color", "#fff");
var span = $("<span>").text(VIS.Msg.getMsg("Me")),
a = $("<a data-index='" + lusrid + "' id='spanRemove" + lusrid + "'>").addClass("remove").attr({ href: "javascript:", title: "Remove " + VIS.Msg.getMsg("Me") }).text("x").appendTo(span);
//add friend to friend div
span.insertBefore($txtTaskAutocomplete);
WSP.WspSharedUser = [];
}
else {
$("#divIsAccept_" + SchedWindowNo).hide();
WSP.WspSharedUser = [];
var $txtTaskAutocomplete = $("#txtSchedContacts_" + SchedWindowNo);
var txtContacts_ = $("#txtContacts_" + SchedWindowNo)
//ddlContacts_.enable(false);
var d_contact = [];
if (e.event.contactsInfo != null) {
d_contact = e.event.contactsInfo;
}
if (d_contact.length > 0) {
for (var c = 0; c < d_contact.length; c++) {
var span = $("<span>").text(d_contact[c].Name),
a = $("<a data-index='" + d_contact[c].ID + "' id='spanRemove" + d_contact[c].ID + "'>").addClass("remove").attr({ href: "javascript:", title: "Remove " + d_contact[c].Name }).text("x").appendTo(span);
//add friend to friend div
span.insertBefore($txtTaskAutocomplete);
WSP.WspSharedUser.push({ ID: d_contact[c].ID, Name: d_contact[c].Name });
}
// ddlContacts_.dataSource = WSP.WspSharedUser;
var $divSharedContacts = $txtTaskAutocomplete.parent();
}
}
$("#title_" + SchedWindowNo).focus();
},
//dataBinding: function (e) {
// debugger;
//},
//dataBound: function (e) {
// debugger;
//},
//add: function (e) {
// debugger;
//},
//cancel: function (e) {
//},
resizeStart: function (e) {
if (e.event.statusID == 1 || e.event.statusID == 4) {
e.preventDefault();
}
},
resize: function (e) {
if (e.event.statusID == 1 || e.event.statusID == 4) {
e.preventDefault();
}
},
resizeEnd: function (e) {
if (e.event.statusID == 1 || e.event.statusID == 4) {
e.preventDefault();
}
},
moveStart: function (e) {
if (e.event.statusID == 1 || e.event.statusID == 4) {
e.preventDefault();
}
},
move: function (e) {
if (e.event.statusID == 1 || e.event.statusID == 4) {
e.preventDefault();
}
},
moveEnd: function (e) {
if (e.event.statusID == 1 || e.event.statusID == 4) {
e.preventDefault();
}
},
//add: function (e) {
// if (!checkAvailability(e.event.start, e.event.end, e.event)) {
// e.preventDefault();
// }
//},
save: function (e) {
e.event.contacts = [];
e.event.contactsInfo = [];
if (WSP.WspSharedUser.length > 0) {
for (var s in WSP.WspSharedUser) {
e.event.contacts.push(WSP.WspSharedUser[s].ID);
e.event.contactsInfo.push({ ID: WSP.WspSharedUser[s].ID, Name: WSP.WspSharedUser[s].Name });
}
}
// var mscheduler_ = $mscheduler.data("kendoScheduler");
// mscheduler_.dataSource.transport.update(e);
},
dataSource: {
batch: true,
//autoSync: true,
transport: {
read: function (e) {
//ajax getting JSON data from server
var arrData = [];
$.ajax({
url: VIS.Application.contextUrl + "WSP/Scheduler/ReadJson_Appointments",
dataType: "json",
data: { isShared: isShared, sharedContact: sharedContact, autoLoadSharedUser: autoLoadSharedUser },
success: function (result) {
data = JSON.parse(result);
if (isShared == false) {
for (var s in data) {
arrData.push({
AppointmentID: data[s].AppointmentID,
Title: data[s].Title,
UserName: data[s].UserName,
UserID: data[s].UserID,
CreatedBy: data[s].CreatedBy,
Start: new Date(data[s].Start),
End: new Date(data[s].End),
StartTimezone: data[s].StartTimezone,
EndTimezone: data[s].EndTimezone,
Description: data[s].Description,
RecurrenceID: data[s].RecurrenceID,
RecurrenceRule: data[s].RecurrenceRule,
RecurrenceException: data[s].RecurrenceException,
Location: data[s].Location,
IsPrivate: data[s].IsPrivate,
IsAllDay: data[s].IsAllDay,
IsAccept: data[s].IsAccept,
StatusID: data[s].StatusID,
Categories: data[s].Categories,
Contacts: data[s].Contacts,
ContactsText: data[s].ContactsText,
ContactsID: data[s].ContactsID,
ContactsInfo: data[s].ContactsInfo
});
}
}
else {
if (autoLoadSharedUser == true) {
sharedData = data;
arrData = [];
}
else {
for (var s in data) {
arrData.push({
AppointmentID: data[s].AppointmentID,
Title: data[s].Title,
CreatedBy: data[s].CreatedBy,
UserID: data[s].UserID,
UserName: data[s].UserName,
Start: new Date(data[s].Start),
End: new Date(data[s].End),
StartTimezone: data[s].StartTimezone,
EndTimezone: data[s].EndTimezone,
Description: data[s].Description,
RecurrenceID: data[s].RecurrenceID,
RecurrenceRule: data[s].RecurrenceRule,
RecurrenceException: data[s].RecurrenceException,
Location: data[s].Location,
IsPrivate: data[s].IsPrivate,
IsAccept: data[s].IsAccept,
IsAllDay: data[s].IsAllDay,
StatusID: data[s].StatusID,
Categories: data[s].Categories,
Contacts: data[s].Contacts,
ContactsText: data[s].ContactsText,
ContactsID: data[s].ContactsID,
ContactsInfo: data[s].ContactsInfo
});
}
}
}
e.success(arrData);
}
});
},
create: function (e) {
$.ajax({
url: VIS.Application.contextUrl + "WSP/Scheduler/CreateJson_Appointments",
type: "POST",
datatype: "JSON",
contentType: "application/json; charset=utf-8",
async: true,
data: JSON.stringify({ models: e.data.models }),
success: function (result) {
var AID = JSON.parse(result);
e.data.models[0].AppointmentID = AID;
e.data.models[0].ContactsInfo = WSP.WspSharedUser;
e.data.models[0].UserID = parseInt(lusrid);
e.data.models[0].CreatedBy = 3;
e.success(e.data.models);
WSP.WspSharedUser = null;
WSP.WspSharedUser = [];
}
});
//e.data.models[0].AppointmentID = Math.ceil(Math.random() * 100000);
},
update: function (e) {
$.ajax({
url: VIS.Application.contextUrl + "WSP/Scheduler/UpdateJson_Appointments",
type: "POST",
datatype: "JSON",
contentType: "application/json; charset=utf-8",
async: true,
data: JSON.stringify({ models: e.data.models }),
success: function (result) {
var AID = JSON.parse(result);
e.data.models[0].AppointmentID = AID;
e.data.models[0].ContactsInfo = WSP.WspSharedUser;
e.data.models[0].UserID = parseInt(lusrid);
// e.data.models[0].CreatedBy = 3;
e.success(e.data.models);
WSP.WspSharedUser = null;
WSP.WspSharedUser = [];
}
});
//e.data.models[0].AppointmentID = Math.ceil(Math.random() * 100000);
},
destroy: function (e) {
$.ajax({
url: VIS.Application.contextUrl + "WSP/Scheduler/DeleteJson_Appointments",
type: "POST",
datatype: "JSON",
contentType: "application/json; charset=utf-8",
async: true,
data: JSON.stringify({ models: e.data.models }),
success: function (result) {
WSP.WspSharedUser = null;
WSP.WspSharedUser = [];
//e.data.models[0].AppointmentID = result;
e.success(e.data.models);
}
});
//e.data.models[0].AppointmentID = Math.ceil(Math.random() * 100000);
},
parameterMap: function (options, operation) {
if (operation !== "read" && options.models) {
return { models: kendo.stringify(options.models) };
}
}
},
schema: {
model: {
id: "ID",
fields: {
ID: { from: "AppointmentID", type: "number" },
title: { from: "Title", validation: { required: true } },
start: { from: "Start", type: "date" },
end: { from: "End", type: "date" },
userName: { from: "UserName" },
userID: { from: "UserID" },
createdBy: { from: "CreatedBy" },
startTimezone: { from: "StartTimezone" },
endTimezone: { from: "EndTimezone" },
description: { from: "Description" },
recurrenceId: { from: "RecurrenceID" },
recurrenceRule: { from: "RecurrenceRule" },
recurrenceException: { from: "RecurrenceException" },
isAllDay: { from: "IsAllDay", type: "boolean" },
isAccept: { from: "IsAccept", type: "boolean" },
isPrivate: { from: "IsPrivate", type: "boolean" },
location: { from: "Location" },
categories: { from: "Categories" },
statusID: { from: "StatusID" },
contacts: { from: "Contacts" },
contactsID: { from: "ContactsID" },
contactsText: { from: "ContactsText" },
contactsInfo: { from: "ContactsInfo" }
}
}
}
}
});
$('html').css("overflow-x", "scroll");
//To initilize scheduler
var myscheduler = $mscheduler.data("kendoScheduler");
/* to start bind single click event for my scheduler when new appointments will be created*/
myscheduler.wrapper.on("click", "td.k-state-selected", function (e) {
if (myscheduler.options.editable != false) {
var slot = myscheduler.slotByElement(e.currentTarget);
myscheduler.addEvent({
start: slot.startDate,
end: slot.endDate
});
//$("#contacts").kendoMultiSelect().data("kendoMultiSelect").source = "";
//$("#contacts").kendoMultiSelect().data("kendoMultiSelect").source = arrAptUsr;
}
});
/* to end bind single click event for my scheduler when new appointments will be created*/
/* to start bind single click event for my scheduler in edit mode*/
myscheduler.wrapper.on("div.k-event k-event-inverse k-state-selected").click(function (e) {
if (myscheduler.options.editable != false) {
if (e.target.className == "k-event-template") {
var uid = $(e.target.parentNode.parentNode).data("uid");
var event = myscheduler.occurrenceByUid(uid);
myscheduler.editEvent(event);
//if (event.isPrivate != true) {
// myscheduler.editEvent(event);
// }
// else {
//if (event.createdBy == lusrid) {
// myscheduler.editEvent(event);
//}
//else {
// return;
//}
// }
}
else if (e.target.className === "k-event-template k-event-time") {
var uid = $(e.target.parentNode.parentNode).data("uid");
var event = myscheduler.occurrenceByUid(uid);
myscheduler.editEvent(event);
//if (event.isPrivate != true) {
// myscheduler.editEvent(event);
// }
// else {
//if (event.createdBy == lusrid) {
// myscheduler.editEvent(event);
//}
//else {
// return;
//}
// }
}
else if (e.target.className === "k-event k-event-inverse k-state-selected") {
var uid = $(e.target).data("uid");
var event = myscheduler.occurrenceByUid(uid);
myscheduler.editEvent(event);
//if (event.isPrivate != true) {
// myscheduler.editEvent(event);
// }
// else {
//if (event.createdBy == lusrid) {
// myscheduler.editEvent(event);
//}
//else {
// return;
//}
// }
}
}
});
/* to end bind single click event for my scheduler in edit mode*/
/* to start filter aapointments by date using calenar in myscheduler*/
$scalendar.kendoCalendar({
value: new Date(),
change: function () {
myscheduler.date(this.value());
}
});
/* to end filter aapointments by date using calenar in myscheduler*/
//Add Contacts for shared Calendar
$btnAddcontact.on("click", function (evnt) {
if (isShared == true) {
isShredDeleted = false;//Test
var susr = VIS.context.getAD_User_ID()
for (var s in arrAptUsr) {
susr += "," + arrAptUsr[s].value;
}
var sqlwhere = " AD_User.AD_User_ID IN (Select Distinct AD_User_ID from C_Bpartner JOIN AD_User on C_BPartner.C_BPartner_ID=AD_User.C_BPartner_ID "
+ "Where c_bpartner.isemployee='Y') AND AD_User.AD_User_ID NOT IN (" + susr + ")";
var info = new VIS.infoGeneral(true, VIS.Env.getWindowNo(), "", "AD_User", "AD_User_ID", true, sqlwhere, null);
info.onClose = function () {
var s_Suser = info.getSelectedValues();
for (var s in s_Suser) {
selectedUser += s_Suser[s] + ",";
}
selectedUser = selectedUser.substr(0, selectedUser.length - 1);
if (selectedUser != "") {
$.ajax({
url: VIS.Application.contextUrl + "WSP/Scheduler/AddDeleteGetJson_sharedUser",
type: "POST",
datatype: "JSON",
contentType: "application/json; charset=utf-8",
async: true,
data: JSON.stringify({ selectedUser: selectedUser, isShredDeleted: isShredDeleted }),
success: function (data) {
arrAptUsr = [];
var result = JSON.parse(data);
for (var s in result) {
arrAptUsr.push({ text: result[s].Name, value: result[s].ID });
}
selectedUser = "";
BindSharedContacts();
}
});
}
};
info.show();
}
else {
return;
}
});
//Delete Contacts for shared Calendar
$btnDeletecontact.on("click", function (evnt) {
if (isShared == true) {
isShredDeleted = true;
var selectedUser = $("input[name=chkSContcts]:checked").map(function () { return this.value; }).get().join(",");
if (selectedUser != "") {
$.ajax({
url: VIS.Application.contextUrl + "WSP/Scheduler/AddDeleteGetJson_sharedUser",
type: "POST",
datatype: "JSON",
contentType: "application/json; charset=utf-8",
async: true,
data: JSON.stringify({ selectedUser: selectedUser, isShredDeleted: isShredDeleted }),
success: function (data) {
arrAptUsr = [];
var result = JSON.parse(data);
for (var s in result) {
arrAptUsr.push({ text: result[s].Name, value: result[s].ID });
}
BindSharedContacts();
}
});
}
}
else {
return;
}
});
//bind click event of my calendar radio button
$rdoMyCal.on("click", function (evnt) {
isShared = false;
sharedData = null;
sharedContact = null;
$('input[name=chkSContcts]').attr('checked', false);
$divSharedContact.find("input[type='checkbox']").attr("disabled", true);
$btnLoadScheduler.attr("disabled", true);
$divscalendar.addClass("div-home-left-calendar1");
$divscalendar.removeClass("wsp-div-home-left-calendar");
$btnLoadScheduler.css('background-color', 'none');
$btnAddcontact.css("background-color", "none");
$btnDeletecontact.css("background-color", "none");
$btnLoadScheduler.css('background-color', '#A7D8FE');
$btnAddcontact.css("background-color", "#A7D8FE");
$btnDeletecontact.css("background-color", "#A7D8FE");
$btnLoadScheduler.attr("disabled", true);
arrUsr = [];
arrUsr = [{ text: lusrname, value: lusrid }];
//myscheduler editable true
myscheduler.options.editable = true;
//referesh resource of data and scheduler of data for shared
myscheduler.resources[1].dataSource.data("");
myscheduler.resources[1].dataSource.data(arrAptUsr);
myscheduler.resources[2].dataSource.data("");
myscheduler.resources[2].dataSource.data(arrUsr);
myscheduler.dataSource.read();
myscheduler.view(myscheduler.view().name);
});
//bind click event of shared calendar radio button
$rdoSharedCal.on("click", function (evnt) {
isShared = true;
$divSharedContact.find("input[type='checkbox']").attr("disabled", false);
$divscalendar.removeClass("div-home-left-calendar1");
$divscalendar.addClass("wsp-div-home-left-calendar");
//VIS.Application.contextUrl
$btnLoadScheduler.css('background-color', 'none');
$btnAddcontact.css("background-color", "none");
$btnDeletecontact.css("background-color", "none");
$btnLoadScheduler.css('background-color', '#1aa0ed');
$btnAddcontact.css('background-color', '#1aa0ed');
$btnDeletecontact.css('background-color', '#1aa0ed');
$btnLoadScheduler.attr("disabled", false);
//Bind Shared Contact
BindSharedContacts();
//myscheduler editable false
myscheduler.options.editable = false;
//referesh resource of data and scheduler of data for shared
myscheduler.dataSource.read();
myscheduler.view(myscheduler.view().name);
});
//fielter the shared user data on check box when autoShared user True
$("#scontct_" + SchedWindowNo + " :checkbox").change(function (e) {
if (autoLoadSharedUser == true) {
//var checked = $.map($("#scontct_" + SchedWindowNo + ":checked"), function (checkbox) {
// return parseInt($(checkbox).val());
//});
console.log("In chk" + sharedData);
var chekdCntct = $("input[name=chkSContcts]:checked").map(function () { return this.value; }).get();
var myscheduler = $mscheduler.data("kendoScheduler");
myscheduler.dataSource.data("");
var arrVals = [];
for (var s in sharedData) {
//var arrdata = sharedData[s];
for (var j in chekdCntct) {
if (sharedData[s].UserID == chekdCntct[j]) {
arrVals.push(sharedData[s]);
myscheduler.dataSource.add({
ID: sharedData[s].AppointmentID,
userID: sharedData[s].UserID,
title: sharedData[s].Title,
start: new Date(sharedData[s].Start),
end: new Date(sharedData[s].End),
description: sharedData[s].Description
});
}
}
}
//for (var i = 0; typeof (sharedData[i].UserID) != 'undefined'; vals.push(sharedData[i++].getAttribute('value')));
//var myscheduler = $mscheduler.data("kendoScheduler");
//myscheduler.dataSource.filter({
// operator: function (task) {
// return $.inArray(task.userID, chekdCntct) >= 0;
// }
//});
//sharedContact = $("input[name=chkSContcts]:checked").map(function () { return this.value; }).get().join(",");
//var myscheduler = $mscheduler.data("kendoScheduler");
////referesh data for shared
//myscheduler.dataSource.read();
//myscheduler.view(myscheduler.view().name);
}
else {
return;
}
});
//fielter the shared user data on check box when autoShared user false
$btnLoadScheduler.on("click", function (evnt) {
if (isShared == true) {
sharedContact = $("input[name=chkSContcts]:checked").map(function () { return this.value; }).get().join(",");
var arrContact = $("input[name=chkSContcts]:checked").map(function () { return this.value; }).get();
// if (arrContact.length > 0) {
arrUsr = [];
for (var s in arrAptUsr) {
for (var j in arrContact) {
if (arrAptUsr[s].value == arrContact[j]) {
arrUsr.push(arrAptUsr[s]);
}
}
}
if (arrUsr.length > 0) {
myscheduler.resources[1].dataSource.data("");
myscheduler.resources[1].dataSource.data(arrAptUsr);
myscheduler.resources[2].dataSource.data("");
myscheduler.resources[2].dataSource.data(arrUsr);
myscheduler.dataSource.read();
myscheduler.view(myscheduler.view().name);
}
//}
//else {
//}
} else {
return;
}
});
//referesh scheduler data for my calender
$imgMyCal.on("click", function (evnt) {
if (isShared == false) {
$(".wsp-left-viewtype-left").animate({ "opacity": "0.5" });
myscheduler.dataSource.read();
myscheduler.view(myscheduler.view().name);
$(".wsp-left-viewtype-left").animate({ "opacity": "1" });
}
else {
return;
}
//debugger;
//var s_sched = $CustomSchedTemplate.html();
//var contacts_ = $("#contacts").kendoMultiSelect().data("kendoMultiSelect");
});
//referesh scheduler data for shared calender
$imgSharedCal.on("click", function (e) {
if (isShared == true) {
$(".wsp-left-viewtype-right").animate({ "opacity": "0.5" });
//Bind Shared Contact
// BindSharedContacts();
myscheduler.dataSource.read();
myscheduler.view(myscheduler.view().name);
//$mscheduler.data("kendoGrid").dataSource.read();
// $mschedulerdata("kendoScheduler").refresh();
$(".wsp-left-viewtype-right").animate({ "opacity": "1" });
}
else {
return;
}
});
/* ############## end to initilize shceduler in div ##################### */
/*######### Start Bind Shared contact ############ */
function BindSharedContacts() {
if (arrAptUsr.length > 0) {
var str = "";
$divSharedContact.html("");
for (var s in arrAptUsr) {
str += "<div class='wsp-home-left-contacts-inner'>"
+ "<input id='scntct_" + arrAptUsr[s].value + SchedWindowNo + "' type='checkbox' name='chkSContcts' value=" + arrAptUsr[s].value + ">"
+ "<label style='font-weight:100;' for='scntct_" + arrAptUsr[s].value + SchedWindowNo + "'>" + arrAptUsr[s].text + "</label>"
+ "</div>"
}
$divSharedContact.html(str);
}
else {
$divSharedContact.html("No Contacts for Share");
}
}
//BindSharedContacts();
/*######### End Bind Shared contact ############ */
});
}
}
//Get Root frame
this.getRoot = function () {
return $root;
};
//dispose variable
this.disposeComponent = function () {
SchedWindowNo = null;
// $mscheduler.empty();
// $mscheduler = null;
$divscalendar.empty();
$divscalendar = null;
$scalendar.empty();
$scalendar = null;
$divSharedContact.empty();
$divSharedContact = null;
$rdoMyCal.off("click");
$rdoMyCal = null;
$rdoSharedCal.off("click");
$rdoSharedCal = null;
$imgMyCal.off("click");
$imgMyCal = null;
$imgSharedCal.off("click");
$imgSharedCal = null;
isShredDeleted = null;
selectedUser = null;
$btnLoadScheduler.off("click");
$btnLoadScheduler = null;
$btnAddcontact.off("click");
$btnAddcontact = null;
$btnDeletecontact.off("click");
$btnDeletecontact = null;
$root.empty();
$root = null;
self = null;
autoLoadSharedUser = null;
sharedData = null;
sharedContact = null;
isShared = null;
arrUsr = null, arrAptUsr = null, arrAptCat = null;
lusrid = null;
lusrname = null;
s_startDate = null;
}
}
//Must Implement with same parameter
WSP.wspLoadScheduler.prototype.init = function (windowNo, frame) {
//Assign to this Varable
this.frame = frame;
this.windowNo = windowNo;
this.frame.getContentGrid().append(this.getRoot());
this.height = this.frame.getContentGrid().height();
//to load scheduler
this.LoadScheduler();
};
//Must implement dispose
WSP.wspLoadScheduler.prototype.dispose = function () {
/*CleanUp Code */
//dispose this component
this.disposeComponent();
//call frame dispose function
if (this.frame)
this.frame.dispose();
this.frame = null;
};
})(WSP, jQuery);
(function (WSP, $) {
WSP.WspSharedUser = [];
WSP.wspLoadScheduler = function () {
this.frame;
this.windowNo;
this.height;
var SchedWindowNo = null;
var $mscheduler = null;
var $divscalendar = null;
var $scalendar = null;
var $divSharedContact = null;
var $rdoMyCal = null;
var $rdoSharedCal = null;
var $imgMyCal = null;
var $imgSharedCal = null;
var isShredDeleted = false;
var selectedUser = '';
var $CustomSchedTemplate = null;
var $btnLoadScheduler = null;
var $btnAddcontact = null;
var $btnDeletecontact = null;
var $root = $("<div>");
var $busyDiv = null;
var self = this;
var autoLoadSharedUser = false;
var sharedData = null;
var sharedContact = null;
var isShared = false;
var arrUsr = [], arrAptUsr = [], arrAptCat = [];
var lusrid = null;
var lusrname = null;
var s_startDate = "";
var sUserID = [];
var sUserName = [];
//Load Scheduler
this.LoadScheduler = function () {
SchedWindowNo = self.windowNo;
$root.height(self.height);
$root.css("overflow-x", "auto");
// debugger;
$(($root.parent()).parent().children()[1]).show();
var divaptbusy = $("<div id='divAptBusy' class='wsp-busy-indicater'></div>");
$("body").append(divaptbusy);
//$busyDiv = ($root.parent()).parent().children()[1];
// $busyDiv.show();
$.ajax({
url: VIS.Application.contextUrl + "WSP/Scheduler/ReadJsonSchedData",
dataType: "json",
success: function (result) {
for (var s in result.lstCategories) {
arrAptCat.push({ text: result.lstCategories[s].CatName, value: result.lstCategories[s].ID });
}
for (var s in result.lstUsrInfo) {
arrAptUsr.push({ text: result.lstUsrInfo[s].Name, value: result.lstUsrInfo[s].ID });
}
Loadshed();
}
});
//Load scheduler
function Loadshed() {
$root.load(VIS.Application.contextUrl + 'WSP/Scheduler/Scheduler?windowNo=' + SchedWindowNo, function () {
// $busyDiv.hide();
$(".wsp-home-scheduler").height(self.height);
$(".wsp-home-left").height(self.height);
$(".wsp-home-right").height(self.height);
$(".wsp-scheduler").height(self.height);
$(".wsp-home-left-calendar").height(self.height / 2);
$(".wsp-home-left-btm").height(self.height / 2);
//$divscalendar.height((self.height / 2) - 5);
//$scalendar.height((self.height / 2) - 5);
//$(".home-left-calendar").height(self.height / 2 - 1);
lusrid = VIS.context.getAD_User_ID();
lusrname = VIS.context.getContext("##AD_User_Name");
arrUsr = [{ text: lusrname, value: lusrid }];
$mscheduler = $("#mscheduler_" + SchedWindowNo);
$divscalendar = $("#divcalendar_" + SchedWindowNo);
$scalendar = $("#scalendar_" + SchedWindowNo);
$rdoMyCal = $("#mycalendar_" + SchedWindowNo);
$rdoSharedCal = $("#sharedcalendar_" + SchedWindowNo);
$imgMyCal = $("#imgMyCal_" + SchedWindowNo);
$imgSharedCal = $("#imgSharedCal_" + SchedWindowNo);
$CustomSchedTemplate = $("#CustomSchedTemplate_" + SchedWindowNo);
$divSharedContact = $("#scontct_" + SchedWindowNo);
$btnLoadScheduler = $("#btnLoadScheduler_" + SchedWindowNo);
$btnAddcontact = $("#btnAddcontact_" + SchedWindowNo);
$btnDeletecontact = $("#btnDeletecontact_" + SchedWindowNo);
//By default disable Button
$divSharedContact.find("input[type='checkbox']").attr("disabled", true);
$btnLoadScheduler.attr("disabled", true);
if (autoLoadSharedUser == true) {
$divSharedContact.height("57%")
$btnLoadScheduler.hide();
}
else {
$btnLoadScheduler.show();
}
if (VIS.context.getContext("##WSP_Start_Date") != "") {
s_startDate = VIS.context.getContext("##WSP_Start_Date");
VIS.context.setContext("##WSP_Start_Date", "")
}
else {
s_startDate = new Date();
}
//Remove Busy indicater
divaptbusy.remove();
//######### start to initilize shceduler in div #########################//
$mscheduler.kendoScheduler({
//date: new Date("2014/6/10"),
// max: new Date("2014/7/10"),
date: s_startDate,
// startTime: new Date("2014/6/10 11:00 AM"),
// endTime: new Date("2014/6/10 12:00 AM"),
startTime: new Date(new Date().setHours(0, 0, 0, 0)),
selectable: true,
allDaySlot: true,
showWorkHours: true,
workDayStart: new Date(new Date().setHours(9, 0, 0, 0)),
workDayEnd: new Date(new Date().setHours(19, 0, 0, 0)),
views: [
{ type: "day", name: "day", selected: true },
"week",
"month",
"agenda"
],
messages: {
views: {
day: VIS.Msg.getMsg("Day")
},
views: {
week: VIS.Msg.getMsg("Week")
},
views: {
month: VIS.Msg.getMsg("Month")
},
views: {
agenda: VIS.Msg.getMsg("Agenda")
},
editor: {
editorTitle: VIS.Msg.getMsg("Appointments")
}
},
group: {
resources: ["userID"],
orientation: "vertical"
},
resources: [
{
field: "statusID",
title: "Status",
dataSource: [
{ text: "Free", value: 1, color: "#E4E4E4" },
{ text: "Busy", value: 3, color: "#48ADDB" },
{ text: "Busy", value: 4, color: "#93e1b3" }
]
},
{
field: "contacts",
name: "contacts",
multiple: true,
dataSource: arrAptUsr
},
{
field: "userID",
name: "userID",
//multiple: true,
dataSource: arrUsr
}
],
editable: {
//set the template
template: kendo.template($CustomSchedTemplate.html()),
create: true,
update: true,
},
change: function (e) {
var calendar = $scalendar.data("kendoCalendar");
if (e.sender.calendar.value() != null && e.sender.calendar.value() != "" && e.sender.calendar.value() !== undefined) {
calendar.value(e.sender.calendar.value());
}
else {
var start = (e.start.getMonth() + 1) + "/" + e.start.getDate() + "/" + e.start.getFullYear();
calendar.value(e.sender.calendar.value());
}
},
edit: function (e) {
//To Accept the appointments
if (e.event.start.getHours() == 0) {
$("#isAllDay_" + SchedWindowNo).attr("checked", true);
}
if (e.event.statusID == 1 && e.event.ID > 0) {
$("#divIsAccept_" + SchedWindowNo).show();
$("#title_" + SchedWindowNo).attr("disabled", true);
$("#location_" + SchedWindowNo).attr("disabled", true);
var ddlCategories = $("#categories_" + SchedWindowNo).data("kendoDropDownList");
ddlCategories.enable(false);
var startDateTimePicker = $("#startDateTime_" + SchedWindowNo).data("kendoDateTimePicker");
startDateTimePicker.enable(false);
$("#isAllDay_" + SchedWindowNo).attr("disabled", true);
var endDateTimePicker = $("#endDatetime_" + SchedWindowNo).data("kendoDateTimePicker");
endDateTimePicker.enable(false);
//var ddlRecurrenceRule = $("#recurrenceRule_" + SchedWindowNo);
//ddlRecurrenceRule.find('input, span, ul,li, select').attr('disabled', 'disabled');
var ddlNotRecurrenceRule = $("#NotRecurrenceRule_" + SchedWindowNo);
ddlNotRecurrenceRule.show();
//e.container.find("[for=recurrenceRule]").parent().hide();
//e.container.find("[data-container-for=recurrenceRule]").hide();
$("#isPrivate_" + SchedWindowNo).attr("disabled", true);
$("#description_" + SchedWindowNo).attr("disabled", true);
var $txtTaskAutocomplete = $("#txtSchedContacts_" + SchedWindowNo);
$txtTaskAutocomplete.attr("readonly", true);
$txtTaskAutocomplete.css("background-color", "#fff");
var span = $("<span>").text(VIS.Msg.getMsg("Me")),
a = $("<a data-index='" + lusrid + "' id='spanRemove" + lusrid + "'>").addClass("remove").attr({ href: "javascript:", title: "Remove " + VIS.Msg.getMsg("Me") }).text("x").appendTo(span);
//add friend to friend div
span.insertBefore($txtTaskAutocomplete);
//var contactMultiSelect_ = $("#selectContact_" + SchedWindowNo).data("kendoMultiSelect");
//contactMultiSelect_.enable(false);
}
//To see Accepted Appointemnts
else if (e.event.statusID == 4 && e.event.ID > 0) {
$("#divIsAccept_" + SchedWindowNo).hide();
$("#title_" + SchedWindowNo).attr("disabled", true);
$("#location_" + SchedWindowNo).attr("disabled", true);
var ddlCategories = $("#categories_" + SchedWindowNo).data("kendoDropDownList");
ddlCategories.enable(false);
var startDateTimePicker = $("#startDateTime_" + SchedWindowNo).data("kendoDateTimePicker");
startDateTimePicker.enable(false);
$("#isAllDay_" + SchedWindowNo).attr("disabled", true);
var endDateTimePicker = $("#endDatetime_" + SchedWindowNo).data("kendoDateTimePicker");
endDateTimePicker.enable(false);
var ddlRecurrenceRule = $("#recurrenceRule_" + SchedWindowNo);
ddlRecurrenceRule.find('span').off("clcik");
var ddlNotRecurrenceRule = $("#NotRecurrenceRule_" + SchedWindowNo);
$(".wsp-Recurrence-disable").show();
//e.container.find("[for=recurrenceRule]").parent().hide();
//e.container.find("[data-container-for=recurrenceRule]").hide();
$("#isPrivate_" + SchedWindowNo).attr("disabled", true);
$("#description_" + SchedWindowNo).attr("disabled", true);
var $txtTaskAutocomplete = $("#txtSchedContacts_" + SchedWindowNo);
$txtTaskAutocomplete.attr("readonly", true);
$txtTaskAutocomplete.css("background-color", "#fff");
var span = $("<span>").text(VIS.Msg.getMsg("Me")),
a = $("<a data-index='" + lusrid + "' id='spanRemove" + lusrid + "'>").addClass("remove").attr({ href: "javascript:", title: "Remove " + VIS.Msg.getMsg("Me") }).text("x").appendTo(span);
//add friend to friend div
span.insertBefore($txtTaskAutocomplete);
WSP.WspSharedUser = [];
}
else {
$("#divIsAccept_" + SchedWindowNo).hide();
WSP.WspSharedUser = [];
var $txtTaskAutocomplete = $("#txtSchedContacts_" + SchedWindowNo);
var txtContacts_ = $("#txtContacts_" + SchedWindowNo)
//ddlContacts_.enable(false);
var d_contact = [];
if (e.event.contactsInfo != null) {
d_contact = e.event.contactsInfo;
}
if (d_contact.length > 0) {
for (var c = 0; c < d_contact.length; c++) {
var span = $("<span>").text(d_contact[c].Name),
a = $("<a data-index='" + d_contact[c].ID + "' id='spanRemove" + d_contact[c].ID + "'>").addClass("remove").attr({ href: "javascript:", title: "Remove " + d_contact[c].Name }).text("x").appendTo(span);
//add friend to friend div
span.insertBefore($txtTaskAutocomplete);
WSP.WspSharedUser.push({ ID: d_contact[c].ID, Name: d_contact[c].Name });
}
// ddlContacts_.dataSource = WSP.WspSharedUser;
var $divSharedContacts = $txtTaskAutocomplete.parent();
}
}
$("#title_" + SchedWindowNo).focus();
},
//dataBinding: function (e) {
// debugger;
//},
//dataBound: function (e) {
// debugger;
//},
//add: function (e) {
// debugger;
//},
//cancel: function (e) {
//},
resizeStart: function (e) {
if (e.event.statusID == 1 || e.event.statusID == 4) {
e.preventDefault();
}
},
resize: function (e) {
if (e.event.statusID == 1 || e.event.statusID == 4) {
e.preventDefault();
}
},
resizeEnd: function (e) {
if (e.event.statusID == 1 || e.event.statusID == 4) {
e.preventDefault();
}
},
moveStart: function (e) {
if (e.event.statusID == 1 || e.event.statusID == 4) {
e.preventDefault();
}
},
move: function (e) {
if (e.event.statusID == 1 || e.event.statusID == 4) {
e.preventDefault();
}
},
moveEnd: function (e) {
if (e.event.statusID == 1 || e.event.statusID == 4) {
e.preventDefault();
}
},
//add: function (e) {
// if (!checkAvailability(e.event.start, e.event.end, e.event)) {
// e.preventDefault();
// }
//},
save: function (e) {
e.event.contacts = [];
e.event.contactsInfo = [];
if (WSP.WspSharedUser.length > 0) {
for (var s in WSP.WspSharedUser) {
e.event.contacts.push(WSP.WspSharedUser[s].ID);
e.event.contactsInfo.push({ ID: WSP.WspSharedUser[s].ID, Name: WSP.WspSharedUser[s].Name });
}
}
// var mscheduler_ = $mscheduler.data("kendoScheduler");
// mscheduler_.dataSource.transport.update(e);
},
dataSource: {
batch: true,
//autoSync: true,
transport: {
read: function (e) {
//ajax getting JSON data from server
var arrData = [];
$.ajax({
url: VIS.Application.contextUrl + "WSP/Scheduler/ReadJson_Appointments",
dataType: "json",
data: { isShared: isShared, sharedContact: sharedContact, autoLoadSharedUser: autoLoadSharedUser },
success: function (result) {
data = JSON.parse(result);
if (isShared == false) {
for (var s in data) {
arrData.push({
AppointmentID: data[s].AppointmentID,
Title: data[s].Title,
UserName: data[s].UserName,
UserID: data[s].UserID,
CreatedBy: data[s].CreatedBy,
Start: new Date(data[s].Start),
End: new Date(data[s].End),
StartTimezone: data[s].StartTimezone,
EndTimezone: data[s].EndTimezone,
Description: data[s].Description,
RecurrenceID: data[s].RecurrenceID,
RecurrenceRule: data[s].RecurrenceRule,
RecurrenceException: data[s].RecurrenceException,
Location: data[s].Location,
IsPrivate: data[s].IsPrivate,
IsAllDay: data[s].IsAllDay,
IsAccept: data[s].IsAccept,
StatusID: data[s].StatusID,
Categories: data[s].Categories,
Contacts: data[s].Contacts,
ContactsText: data[s].ContactsText,
ContactsID: data[s].ContactsID,
ContactsInfo: data[s].ContactsInfo
});
}
}
else {
if (autoLoadSharedUser == true) {
sharedData = data;
arrData = [];
}
else {
for (var s in data) {
arrData.push({
AppointmentID: data[s].AppointmentID,
Title: data[s].Title,
CreatedBy: data[s].CreatedBy,
UserID: data[s].UserID,
UserName: data[s].UserName,
Start: new Date(data[s].Start),
End: new Date(data[s].End),
StartTimezone: data[s].StartTimezone,
EndTimezone: data[s].EndTimezone,
Description: data[s].Description,
RecurrenceID: data[s].RecurrenceID,
RecurrenceRule: data[s].RecurrenceRule,
RecurrenceException: data[s].RecurrenceException,
Location: data[s].Location,
IsPrivate: data[s].IsPrivate,
IsAccept: data[s].IsAccept,
IsAllDay: data[s].IsAllDay,
StatusID: data[s].StatusID,
Categories: data[s].Categories,
Contacts: data[s].Contacts,
ContactsText: data[s].ContactsText,
ContactsID: data[s].ContactsID,
ContactsInfo: data[s].ContactsInfo
});
}
}
}
e.success(arrData);
}
});
},
create: function (e) {
$.ajax({
url: VIS.Application.contextUrl + "WSP/Scheduler/CreateJson_Appointments",
type: "POST",
datatype: "JSON",
contentType: "application/json; charset=utf-8",
async: true,
data: JSON.stringify({ models: e.data.models }),
success: function (result) {
var AID = JSON.parse(result);
e.data.models[0].AppointmentID = AID;
e.data.models[0].ContactsInfo = WSP.WspSharedUser;
e.data.models[0].UserID = parseInt(lusrid);
e.data.models[0].CreatedBy = 3;
e.success(e.data.models);
WSP.WspSharedUser = null;
WSP.WspSharedUser = [];
}
});
//e.data.models[0].AppointmentID = Math.ceil(Math.random() * 100000);
},
update: function (e) {
$.ajax({
url: VIS.Application.contextUrl + "WSP/Scheduler/UpdateJson_Appointments",
type: "POST",
datatype: "JSON",
contentType: "application/json; charset=utf-8",
async: true,
data: JSON.stringify({ models: e.data.models }),
success: function (result) {
var AID = JSON.parse(result);
e.data.models[0].AppointmentID = AID;
e.data.models[0].ContactsInfo = WSP.WspSharedUser;
e.data.models[0].UserID = parseInt(lusrid);
// e.data.models[0].CreatedBy = 3;
e.success(e.data.models);
WSP.WspSharedUser = null;
WSP.WspSharedUser = [];
}
});
//e.data.models[0].AppointmentID = Math.ceil(Math.random() * 100000);
},
destroy: function (e) {
$.ajax({
url: VIS.Application.contextUrl + "WSP/Scheduler/DeleteJson_Appointments",
type: "POST",
datatype: "JSON",
contentType: "application/json; charset=utf-8",
async: true,
data: JSON.stringify({ models: e.data.models }),
success: function (result) {
WSP.WspSharedUser = null;
WSP.WspSharedUser = [];
//e.data.models[0].AppointmentID = result;
e.success(e.data.models);
}
});
//e.data.models[0].AppointmentID = Math.ceil(Math.random() * 100000);
},
parameterMap: function (options, operation) {
if (operation !== "read" && options.models) {
return { models: kendo.stringify(options.models) };
}
}
},
schema: {
model: {
id: "ID",
fields: {
ID: { from: "AppointmentID", type: "number" },
title: { from: "Title", validation: { required: true } },
start: { from: "Start", type: "date" },
end: { from: "End", type: "date" },
userName: { from: "UserName" },
userID: { from: "UserID" },
createdBy: { from: "CreatedBy" },
startTimezone: { from: "StartTimezone" },
endTimezone: { from: "EndTimezone" },
description: { from: "Description" },
recurrenceId: { from: "RecurrenceID" },
recurrenceRule: { from: "RecurrenceRule" },
recurrenceException: { from: "RecurrenceException" },
isAllDay: { from: "IsAllDay", type: "boolean" },
isAccept: { from: "IsAccept", type: "boolean" },
isPrivate: { from: "IsPrivate", type: "boolean" },
location: { from: "Location" },
categories: { from: "Categories" },
statusID: { from: "StatusID" },
contacts: { from: "Contacts" },
contactsID: { from: "ContactsID" },
contactsText: { from: "ContactsText" },
contactsInfo: { from: "ContactsInfo" }
}
}
}
}
});
$('html').css("overflow-x", "scroll");
//To initilize scheduler
var myscheduler = $mscheduler.data("kendoScheduler");
/* to start bind single click event for my scheduler when new appointments will be created*/
myscheduler.wrapper.on("click", "td.k-state-selected", function (e) {
if (myscheduler.options.editable != false) {
var slot = myscheduler.slotByElement(e.currentTarget);
myscheduler.addEvent({
start: slot.startDate,
end: slot.endDate
});
//$("#contacts").kendoMultiSelect().data("kendoMultiSelect").source = "";
//$("#contacts").kendoMultiSelect().data("kendoMultiSelect").source = arrAptUsr;
}
});
/* to end bind single click event for my scheduler when new appointments will be created*/
/* to start bind single click event for my scheduler in edit mode*/
myscheduler.wrapper.on("div.k-event k-event-inverse k-state-selected").click(function (e) {
if (myscheduler.options.editable != false) {
if (e.target.className == "k-event-template") {
var uid = $(e.target.parentNode.parentNode).data("uid");
var event = myscheduler.occurrenceByUid(uid);
myscheduler.editEvent(event);
//if (event.isPrivate != true) {
// myscheduler.editEvent(event);
// }
// else {
//if (event.createdBy == lusrid) {
// myscheduler.editEvent(event);
//}
//else {
// return;
//}
// }
}
else if (e.target.className === "k-event-template k-event-time") {
var uid = $(e.target.parentNode.parentNode).data("uid");
var event = myscheduler.occurrenceByUid(uid);
myscheduler.editEvent(event);
//if (event.isPrivate != true) {
// myscheduler.editEvent(event);
// }
// else {
//if (event.createdBy == lusrid) {
// myscheduler.editEvent(event);
//}
//else {
// return;
//}
// }
}
else if (e.target.className === "k-event k-event-inverse k-state-selected") {
var uid = $(e.target).data("uid");
var event = myscheduler.occurrenceByUid(uid);
myscheduler.editEvent(event);
//if (event.isPrivate != true) {
// myscheduler.editEvent(event);
// }
// else {
//if (event.createdBy == lusrid) {
// myscheduler.editEvent(event);
//}
//else {
// return;
//}
// }
}
}
});
/* to end bind single click event for my scheduler in edit mode*/
/* to start filter aapointments by date using calenar in myscheduler*/
$scalendar.kendoCalendar({
value: new Date(),
change: function () {
myscheduler.date(this.value());
}
});
/* to end filter aapointments by date using calenar in myscheduler*/
//Add Contacts for shared Calendar
$btnAddcontact.on("click", function (evnt) {
if (isShared == true) {
isShredDeleted = false;//Test
var susr = VIS.context.getAD_User_ID()
for (var s in arrAptUsr) {
susr += "," + arrAptUsr[s].value;
}
var sqlwhere = " AD_User.AD_User_ID IN (Select Distinct AD_User_ID from C_Bpartner JOIN AD_User on C_BPartner.C_BPartner_ID=AD_User.C_BPartner_ID "
+ "Where c_bpartner.isemployee='Y') AND AD_User.AD_User_ID NOT IN (" + susr + ")";
var info = new VIS.infoGeneral(true, VIS.Env.getWindowNo(), "", "AD_User", "AD_User_ID", true, sqlwhere, null);
info.onClose = function () {
var s_Suser = info.getSelectedValues();
for (var s in s_Suser) {
selectedUser += s_Suser[s] + ",";
}
selectedUser = selectedUser.substr(0, selectedUser.length - 1);
if (selectedUser != "") {
$.ajax({
url: VIS.Application.contextUrl + "WSP/Scheduler/AddDeleteGetJson_sharedUser",
type: "POST",
datatype: "JSON",
contentType: "application/json; charset=utf-8",
async: true,
data: JSON.stringify({ selectedUser: selectedUser, isShredDeleted: isShredDeleted }),
success: function (data) {
arrAptUsr = [];
var result = JSON.parse(data);
for (var s in result) {
arrAptUsr.push({ text: result[s].Name, value: result[s].ID });
}
selectedUser = "";
BindSharedContacts();
}
});
}
};
info.show();
}
else {
return;
}
});
//Delete Contacts for shared Calendar
$btnDeletecontact.on("click", function (evnt) {
if (isShared == true) {
isShredDeleted = true;
var selectedUser = $("input[name=chkSContcts]:checked").map(function () { return this.value; }).get().join(",");
if (selectedUser != "") {
$.ajax({
url: VIS.Application.contextUrl + "WSP/Scheduler/AddDeleteGetJson_sharedUser",
type: "POST",
datatype: "JSON",
contentType: "application/json; charset=utf-8",
async: true,
data: JSON.stringify({ selectedUser: selectedUser, isShredDeleted: isShredDeleted }),
success: function (data) {
arrAptUsr = [];
var result = JSON.parse(data);
for (var s in result) {
arrAptUsr.push({ text: result[s].Name, value: result[s].ID });
}
BindSharedContacts();
}
});
}
}
else {
return;
}
});
//bind click event of my calendar radio button
$rdoMyCal.on("click", function (evnt) {
isShared = false;
sharedData = null;
sharedContact = null;
$('input[name=chkSContcts]').attr('checked', false);
$divSharedContact.find("input[type='checkbox']").attr("disabled", true);
$btnLoadScheduler.attr("disabled", true);
$divscalendar.addClass("div-home-left-calendar1");
$divscalendar.removeClass("wsp-div-home-left-calendar");
$btnLoadScheduler.css('background-color', 'none');
$btnAddcontact.css("background-color", "none");
$btnDeletecontact.css("background-color", "none");
$btnLoadScheduler.css('background-color', '#A7D8FE');
$btnAddcontact.css("background-color", "#A7D8FE");
$btnDeletecontact.css("background-color", "#A7D8FE");
$btnLoadScheduler.attr("disabled", true);
arrUsr = [];
arrUsr = [{ text: lusrname, value: lusrid }];
//myscheduler editable true
myscheduler.options.editable = true;
//referesh resource of data and scheduler of data for shared
myscheduler.resources[1].dataSource.data("");
myscheduler.resources[1].dataSource.data(arrAptUsr);
myscheduler.resources[2].dataSource.data("");
myscheduler.resources[2].dataSource.data(arrUsr);
myscheduler.dataSource.read();
myscheduler.view(myscheduler.view().name);
});
//bind click event of shared calendar radio button
$rdoSharedCal.on("click", function (evnt) {
isShared = true;
$divSharedContact.find("input[type='checkbox']").attr("disabled", false);
$divscalendar.removeClass("div-home-left-calendar1");
$divscalendar.addClass("wsp-div-home-left-calendar");
//VIS.Application.contextUrl
$btnLoadScheduler.css('background-color', 'none');
$btnAddcontact.css("background-color", "none");
$btnDeletecontact.css("background-color", "none");
$btnLoadScheduler.css('background-color', '#1aa0ed');
$btnAddcontact.css('background-color', '#1aa0ed');
$btnDeletecontact.css('background-color', '#1aa0ed');
$btnLoadScheduler.attr("disabled", false);
//Bind Shared Contact
BindSharedContacts();
//myscheduler editable false
myscheduler.options.editable = false;
//referesh resource of data and scheduler of data for shared
myscheduler.dataSource.read();
myscheduler.view(myscheduler.view().name);
});
//fielter the shared user data on check box when autoShared user True
$("#scontct_" + SchedWindowNo + " :checkbox").change(function (e) {
if (autoLoadSharedUser == true) {
//var checked = $.map($("#scontct_" + SchedWindowNo + ":checked"), function (checkbox) {
// return parseInt($(checkbox).val());
//});
console.log("In chk" + sharedData);
var chekdCntct = $("input[name=chkSContcts]:checked").map(function () { return this.value; }).get();
var myscheduler = $mscheduler.data("kendoScheduler");
myscheduler.dataSource.data("");
var arrVals = [];
for (var s in sharedData) {
//var arrdata = sharedData[s];
for (var j in chekdCntct) {
if (sharedData[s].UserID == chekdCntct[j]) {
arrVals.push(sharedData[s]);
myscheduler.dataSource.add({
ID: sharedData[s].AppointmentID,
userID: sharedData[s].UserID,
title: sharedData[s].Title,
start: new Date(sharedData[s].Start),
end: new Date(sharedData[s].End),
description: sharedData[s].Description
});
}
}
}
//for (var i = 0; typeof (sharedData[i].UserID) != 'undefined'; vals.push(sharedData[i++].getAttribute('value')));
//var myscheduler = $mscheduler.data("kendoScheduler");
//myscheduler.dataSource.filter({
// operator: function (task) {
// return $.inArray(task.userID, chekdCntct) >= 0;
// }
//});
//sharedContact = $("input[name=chkSContcts]:checked").map(function () { return this.value; }).get().join(",");
//var myscheduler = $mscheduler.data("kendoScheduler");
////referesh data for shared
//myscheduler.dataSource.read();
//myscheduler.view(myscheduler.view().name);
}
else {
return;
}
});
//fielter the shared user data on check box when autoShared user false
$btnLoadScheduler.on("click", function (evnt) {
if (isShared == true) {
sharedContact = $("input[name=chkSContcts]:checked").map(function () { return this.value; }).get().join(",");
var arrContact = $("input[name=chkSContcts]:checked").map(function () { return this.value; }).get();
// if (arrContact.length > 0) {
arrUsr = [];
for (var s in arrAptUsr) {
for (var j in arrContact) {
if (arrAptUsr[s].value == arrContact[j]) {
arrUsr.push(arrAptUsr[s]);
}
}
}
if (arrUsr.length > 0) {
myscheduler.resources[1].dataSource.data("");
myscheduler.resources[1].dataSource.data(arrAptUsr);
myscheduler.resources[2].dataSource.data("");
myscheduler.resources[2].dataSource.data(arrUsr);
myscheduler.dataSource.read();
myscheduler.view(myscheduler.view().name);
}
//}
//else {
//}
} else {
return;
}
});
//referesh scheduler data for my calender
$imgMyCal.on("click", function (evnt) {
if (isShared == false) {
$(".wsp-left-viewtype-left").animate({ "opacity": "0.5" });
myscheduler.dataSource.read();
myscheduler.view(myscheduler.view().name);
$(".wsp-left-viewtype-left").animate({ "opacity": "1" });
}
else {
return;
}
//debugger;
//var s_sched = $CustomSchedTemplate.html();
//var contacts_ = $("#contacts").kendoMultiSelect().data("kendoMultiSelect");
});
//referesh scheduler data for shared calender
$imgSharedCal.on("click", function (e) {
if (isShared == true) {
$(".wsp-left-viewtype-right").animate({ "opacity": "0.5" });
//Bind Shared Contact
// BindSharedContacts();
myscheduler.dataSource.read();
myscheduler.view(myscheduler.view().name);
//$mscheduler.data("kendoGrid").dataSource.read();
// $mschedulerdata("kendoScheduler").refresh();
$(".wsp-left-viewtype-right").animate({ "opacity": "1" });
}
else {
return;
}
});
/* ############## end to initilize shceduler in div ##################### */
/*######### Start Bind Shared contact ############ */
function BindSharedContacts() {
if (arrAptUsr.length > 0) {
var str = "";
$divSharedContact.html("");
for (var s in arrAptUsr) {
str += "<div class='wsp-home-left-contacts-inner'>"
+ "<input id='scntct_" + arrAptUsr[s].value + SchedWindowNo + "' type='checkbox' name='chkSContcts' value=" + arrAptUsr[s].value + ">"
+ "<label style='font-weight:100;' for='scntct_" + arrAptUsr[s].value + SchedWindowNo + "'>" + arrAptUsr[s].text + "</label>"
+ "</div>"
}
$divSharedContact.html(str);
}
else {
$divSharedContact.html("No Contacts for Share");
}
}
//BindSharedContacts();
/*######### End Bind Shared contact ############ */
});
}
}
//Get Root frame
this.getRoot = function () {
return $root;
};
//dispose variable
this.disposeComponent = function () {
SchedWindowNo = null;
// $mscheduler.empty();
// $mscheduler = null;
$divscalendar.empty();
$divscalendar = null;
$scalendar.empty();
$scalendar = null;
$divSharedContact.empty();
$divSharedContact = null;
$rdoMyCal.off("click");
$rdoMyCal = null;
$rdoSharedCal.off("click");
$rdoSharedCal = null;
$imgMyCal.off("click");
$imgMyCal = null;
$imgSharedCal.off("click");
$imgSharedCal = null;
isShredDeleted = null;
selectedUser = null;
$btnLoadScheduler.off("click");
$btnLoadScheduler = null;
$btnAddcontact.off("click");
$btnAddcontact = null;
$btnDeletecontact.off("click");
$btnDeletecontact = null;
$root.empty();
$root = null;
self = null;
autoLoadSharedUser = null;
sharedData = null;
sharedContact = null;
isShared = null;
arrUsr = null, arrAptUsr = null, arrAptCat = null;
lusrid = null;
lusrname = null;
s_startDate = null;
}
}
//Must Implement with same parameter
WSP.wspLoadScheduler.prototype.init = function (windowNo, frame) {
//Assign to this Varable
this.frame = frame;
this.windowNo = windowNo;
this.frame.getContentGrid().append(this.getRoot());
this.height = this.frame.getContentGrid().height();
//to load scheduler
this.LoadScheduler();
};
//Must implement dispose
WSP.wspLoadScheduler.prototype.dispose = function () {
/*CleanUp Code */
//dispose this component
this.disposeComponent();
//call frame dispose function
if (this.frame)
this.frame.dispose();
this.frame = null;
};
})(WSP, jQuery);
No comments:
Post a Comment