pit-scheduler
Version:
A complet scheduler build with jQuery and Boostrap
147 lines • 79.6 kB
JavaScript
var i18n={allowed:["en"],en:{day:"Day",days:"Days",months:"Months",list:"List",tasks:"Tasks",task:"Task",hour:"Hour",hours:"Hours",users:"Users",unlisted:"Unlisted",settings:"Settings",hideEmptyLine:"Hide lines with no task",description:"Description",assignedUsers:"assigned users",assignedUser:"assigned user",from:"From",to:"to",notSpecified:"Not specified",disableLabelsMovement:"Disable labels mouvement",today:"Today",thisWeek:"This week",thisMonth:"This month",thisYear:"This year",personalized:"Personalized",
selectAll:"Select all",always:"always",total:"Total",usersWhose:"user(s) with",cycleWhose:"cycle(s) with",inSelectedPeriod:"in the selected period",all:"All",search:"Search",addNewTask:"Create a new task",addNewUser:"Create a new user",editUser:"Edit the user",name:"Name",required:"Required",color:"Color",cancel:"Cancel",create:"Create",createAndAssign:"Create and assign",idAlreadyTaken:"This ID is already taken",remove:"Remove",assign:"Assign",edit:"Edit",confirm:"Confirm",assignTaskTitle:"Assign users",
assignUserTitle:"Assign to a task",allInputRequired:"All fields are required",requiredField:"That field is required",userIsAlreadyAssigned:"is already assigned to this task for this period",selectUsersToAssign:"Select the users to assign",selectTasksToAssign:"Select the tasks to assign",editTask:"Edit a task",group:"Group",groups:"Groups",selectGroup:"Select an existing group",createNewGroup:"Create a new group",or:"or",seeAll:"See all",allocations:"allocations",allocation:"allocation",tag:"Tag",
tags:"Tags",tagColor:"Tag color",filters:"Filters",deleteAll:"Delete all",addFilter:"Create filter",contains:"Contains",notContains:"Does not contains",added:"Added",active:"Active",inactive:"Inactive",notif:{taskCreated:"The task has been successfully created",userCreated:"The user has been successfully created",taskRemoved:"The task has been successfully removed",userRemoved:"The user has been successfully removed",usersAssigned:"users has been assigned to the task",userAssigned:"user has been assigned to the task",
userUnassigned:"has correctly been unassigned",noUser:"<b>Warning : </b>No user has been set",noTask:"<b>Warning : </b>No task has been set",taskNotExist:"is assigned to an inexistent task",taskInformationsUpdated:"The task has been edited",userHasNoTask:"is not assigned to any task",userEdited:"The user has been successfully edited",userAssignedTo:"has been assigned to",userTaskModified:"The task will now end the",filterAdded:"The filter has been added",filterEdited:"The filter has been edited",
filterRemoved:"The filter has been removed",allFiltersRemoved:"All fiters has been removed"}}};
(function(c){c.fn.pitScheduler=function(n){var E=c(this);n=n||{};var a=c.extend({date:{current:moment(),selected:n.defaultDate&&moment(n.defaultDate).isValid()?moment(n.defaultDate):moment()},locale:n.locale&&-1!=i18n.allowed.indexOf(n.locale)?n.locale:i18n.allowed[0],currentDisplay:n.defaultDisplay&&-1!="days;months;list".indexOf(n.defaultDisplay)?n.defaultDisplay:"months",projectState:"production",tasks:n.tasks||[],users:n.users||[],defaultColor:n.defaultColor||"#00BCD4",notificationDuration:n.notificationDuration||
4E3,hideEmptyLines:n.hideEmptyLines||!0,undo:[],resize:{},filters:[]},n);moment.locale(a.locale);a.i18n=-1==i18n.allowed.indexOf(a.locale)?i18n.en:i18n[a.locale];var h={log:function(b){"debug"==a.projectState&&console.log(b)},warn:function(b){"development"==a.projectState&&console.warn(b)},info:function(b){"development"==a.projectState&&console.info(b)}},m=function(b){h.info("CALL FUNCTION: updateDisplay: viewMode:"+b);var d=c(".pts-scheduler-container").scrollTop();h.info("CALL FUNCTION: updateDisplayReset");
B();c(".pts-main-content").empty();c(".pts-column-title-container > div").empty();c(".pts-line-title-container").empty();c(".pts-line-title-container").append(c("<div></div>"));c(".pts-corner-mask").empty();c(".pts-btn-next").removeAttr("disabled");c(".pts-btn-previous").removeAttr("disabled");c(".pts-header-date-display").css("display","block");c(".pts-column-title-container").css("overflow","hidden");switch(b){case "days":N("day");a.currentDisplay="days";T();I();c(".pts-line-title-container div").scrollTop(d);
break;case "months":N("month");a.currentDisplay="months";T();I();c(".pts-line-title-container div").scrollTop(d);break;case "list":N("list"),a.currentDisplay="list",c(".pts-btn-next").attr("disabled","disabled"),c(".pts-btn-previous").attr("disabled","disabled"),c(".pts-header-date-display").css("display","none"),c(".pts-column-title-container").css("overflow","visible"),c("#header-datetimepicker").data("DateTimePicker").disable(),aa(),G("today")}},I=function(){h.log("CALL FUNCTION: updateHeaderDates");
c("#header-datetimepicker").data("DateTimePicker").enable();c(".pts-header-date-display").empty();switch(a.currentDisplay){case "days":c(".pts-header-date-display").append(moment(a.date.selected).locale(a.locale).format("LL"));break;case "months":c(".pts-header-date-display").append(moment(a.date.selected).locale(a.locale).format("MMMM YYYY"));break;case "list":c(".pts-header-date-display").append(moment(a.date.selected).locale(a.locale).format("LL"))}},T=function(){h.info("CALL FUNCTION: initMainContent");
h.info("CALL FUNCTION: generateBaseView");c(".pts-main-container").length||E.append('<div class="pts-main-container row">\n<div id="pts-spinner-container">\n<ul class="pts-spinner"><li></li><li></li><li></li><li></li></ul></div>\n<div id="pts-toolbox-container" data-toggle="closed"></div>\n<div class="pts-corner-mask"></div>\n<div class="pts-column-title-container">\n<div></div></div>\n<div class="pts-line-title-container"><div>\n</div></div>\n<div class="pts-scheduler-container">\n<div class="pts-main-content">\n</div></div></div>');
C();O();D();F();J()},N=function(a){c(".pts-header-right-container button").removeClass("pts-active");c(".pts-header-right-container .pts-btn-"+a+"-view").addClass("pts-active")},P=function(){h.info("CALL FUNCTION: getUsersTasksInTasks");if(!a.tasks||0==a.tasks.length)return u("danger",a.i18n.notif.noTask);a.tasks.forEach(function(a){H(a)})},H=function(b){h.log("CALL FUNCTION: generateTaskInTask: task: "+b.name);b.users={};if(!a.users)return u("danger",a.i18n.notif.noUser);b.color||(b.color=a.defaultColor?
a.defaultColor:"#00bdd6");a.users.forEach(function(a,c){a.index=c;a.tasks&&a.tasks.forEach(function(a,d){a.id===b.id&&(b.users[c]||(b.users[c]=[]),b.users[c].push(d))})});return b},O=function(){h.info("CALL FUNCTION: initGroup");!c(".pts-line-group-container").length&&a.users&&(a.defaultGroupName=a.defaultGroupName?a.defaultGroupName:a.i18n.unlisted,a.groups=[a.defaultGroupName],a.users.forEach(function(b,c){void 0===b.group||""===b.group?b.group=a.defaultGroupName:-1==a.groups.indexOf(b.group)&&
a.groups.push(b.group)}),a.groups.unlisted=0,a.groups.added=[],a.groups.forEach(function(b,c){var d=ba(b);if(0<d.length){var e=!1;d.forEach(function(b){a.users[b]&&1==a.users[b].isShowed&&(e=!0)});e&&ca(b,c)}}))},K=function(){h.info("CALL FUNCTION: initUsers");a.users&&a.users.forEach(function(a,c){a.isShowed=U(a);a.lineHeight=V(a);a.index=c})},L=function(a){var b=a instanceof Array?[]:{},c;for(c in a)"clone"!=c&&(b[c]=a[c]&&"object"==typeof a[c]?L(a[c]):a[c]);return b},w=function(){return 1==a.disableUndo?
null:{tasks:L(a.tasks),users:L(a.users),groups:L(a.groups)}},J=function(){h.log("CALL FUNCTION: updateDatePicker");c("#header-datetimepicker").datetimepicker().data("DateTimePicker").locale(a.locale).defaultDate(a.date.selected).date(a.date.selected).viewDate(a.date.selected).enabledHours(!1).format("months"===a.currentDisplay?"MM/YYYY":"L").viewMode("months"===a.currentDisplay?"months":"days")},W=function(){h.info("CALL FUNCTION: goForward");B();a.date.selected="months"==a.currentDisplay?moment(a.date.selected).add(1,
"months"):moment(a.date.selected).add(1,"day");C();D();F();I();J()},X=function(){h.info("CALL FUNCTION: goBackward");B();a.date.selected="months"==a.currentDisplay?moment(a.date.selected).add(-1,"months"):moment(a.date.selected).add(-1,"day");C();D();F();I();J()},M=function(){var b=c("#pts-spinner-container");return{show:function(){a.hideSpinner||b.css("display","block")},hide:function(){a.hideSpinner||b.css("display","none")}}},z=function(a,c){h.log("CALL FUNCTION: isDateInDate");return moment(c.start_date)<=
moment(a.start_date)&&moment(c.end_date)>=moment(a.end_date)||moment(c.start_date)>=moment(a.start_date)&&moment(c.start_date)<=moment(a.end_date)||moment(c.end_date)<=moment(a.end_date)&&moment(c.end_date)>=moment(a.start_date)?!0:!1},x=function(b){h.log("CALL FUNCTION: getTaskById: taskId: "+b);if(a.tasks){var c;a.tasks.forEach(function(a){a.id===b&&(c=a)});return c}},da=function(b){h.log("CALL FUNCTION: userHasTask: user: "+b.name);var c=!1,f={start_date:"days"==a.currentDisplay?moment(a.date.selected).startOf("day"):
moment(a.date.selected).startOf("month"),end_date:"days"==a.currentDisplay?moment(a.date.selected).endOf("day"):moment(a.date.selected).endOf("month")};b.tasks.forEach(function(a){1==z(f,a)&&(c=!0)});return c},V=function(b){h.log("CALL FUNCTION: getUserLineHeight: user: "+b.name);var c=[],f=b.isShowed,e={start_date:"days"==a.currentDisplay?moment(a.date.selected).startOf("day"):moment(a.date.selected).startOf("month"),end_date:"days"==a.currentDisplay?moment(a.date.selected).endOf("day"):moment(a.date.selected).endOf("month")};
b.tasks.forEach(function(b){var d=x(b.id);0==A("task",d.name)&&0==A("tag",d.tag)&&(a.hideEmptyLines&&0>c.indexOf(b.id)&&1==z(e,b)?c.push(b.id):!a.hideEmptyLines&&0>c.indexOf(b.id)&&1==f&&c.push(b.id))});return 40*c.length},U=function(b){h.log("CALL FUNCTION: userLineIsShowed: user: "+b.name);if(A("group",b.group)||A("user",b.name))return!1;var c=0,f={start_date:"days"==a.currentDisplay?moment(a.date.selected).startOf("day"):moment(a.date.selected).startOf("month"),end_date:"days"==a.currentDisplay?
moment(a.date.selected).endOf("day"):moment(a.date.selected).endOf("month")};if(!b.tasks)return u("warning","<b>"+b.name+"</b> "+a.i18n.notif.userHasNoTask);b.tasks.forEach(function(a){var b=x(a.id);z(f,a)&&0==A("task",b.name)&&0==A("tag",b.tag)&&c++});return 0<c||!1===a.hideEmptyLines},Q=function(){h.log("CALL FUNCTION: setTaskLabelPosition");if(!a.disableLabelsMovement){var b=c(".pts-line-marker:has(> .pts-line-marker-label)"),d=parseInt(c(".pts-line-title-container").offset().left+c(".pts-line-title-container").width());
c.each(b,function(){var a=c(this).children("p"),b=parseInt(c(this).offset().left)+parseInt(c(this).width())-parseInt(a.width());parseInt(c(this).offset().left)<d&&b>d+20?a.css("left",c(".pts-scheduler-container").scrollLeft()-parseInt(c(this).css("left"))+10):a.css("left","10px")})}},ba=function(b){h.log("CALL FUNCTION: getUsersInGroup: groupName"+b);var c=[];a.users.forEach(function(a){a.group==b&&c.push(a.index)});return c},p=function(b,d,f){h.info("CALL FUNCTION: openToolbox: taskId: "+b+": userIndex: "+
d+": viewType: "+f);var e=c("#pts-toolbox-container");e.empty();e.scrollTop();switch(f){case "task":f=x(b);var k=c(".pts-line-marker");ea(f,a.users[d]);c.each(k,function(){c(this).css("background-color",x(c(this).attr("data-task")).color);c(this).attr("data-task")!==b&&c(this).css("background-color","#8e8e8e")});c(".pts-main-group-column").css("background-color","#eee");e.attr("data-toggle","opened");break;case "user":d=a.users[d];fa(d);e.attr("data-toggle","opened");break;case "createTask":ga();
e.attr("data-toggle","opened");break;case "assignTask":ha(b);e.attr("data-toggle","opened");break;case "editTask":ia(b);e.attr("data-toggle","opened");break;case "createUser":ja();e.attr("data-toggle","opened");break;case "editUser":d=a.users[d];ka(d);e.attr("data-toggle","opened");break;case "assignUser":d=a.users[d];la(d);e.attr("data-toggle","opened");break;case "seeAll":ma();e.attr("data-toggle","opened");break;case "filters":na();e.attr("data-toggle","opened");break;default:return}e.animate({width:"460px"},
300);y()},B=function(){h.info("CALL FUNCTION: closeToolbox");var b=c("#pts-toolbox-container"),d=c(".pts-line-marker");"closed"!==b.attr("data-toggle")&&(c.each(d,function(){var b=x(c(this).attr("data-task"));c(this).css("background-color",b?b.color:a.defaultColor)}),c(".pts-main-group-column").css("background-color","#fff"),b.animate({width:"0%"},300),b.attr("data-toggle","closed"),b.empty(),y())},oa=function(a,c,f){h.log("CALL FUNCTION: hideTaskSuperposition: originIndex: "+a+":task: "+c.name+": user: "+
f.name);f.tasks.forEach(function(b,d){b.id===c.id&&d!==a&&moment(c.start_date).format("YYMMDD")==moment(b.end_date).format("YYMMDD")&&(12>=moment(c.start_date).format("H")&&12>=moment(b.end_date).format("H")&&0<moment(b.end_date).format("H")||12<moment(c.start_date).format("H")&&12<moment(b.end_date).format("H"))&&(c.superposed="border-left: 2px dotted #000")});return c},y=function(){h.log("CALL FUNCTION: getContrastedColor");c(".pts-check-color").each(function(){var a=c(this).css("background-color").match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
a&&4==a.length&&(.6<(.299*a[1]+.587*a[2]+.114*a[3])/255?(c(this).children().css("color","#000"),c(this).css("color","#000"),c(this).css("border-color","#000")):(c(this).children().css("color","#fff"),c(this).css("color","#fff"),c(this).css("border-color","#fff")))})},G=function(b){h.log("CALL FUNCTION: switchListRange: range: "+b);c(".pts-list-tasks-container").empty();switch(b){case "all":a.list.start_date=moment();a.list.end_date=moment();b='<h4 style="margin:0 0 15px 15px"><b>'+a.i18n.all+" :</b></h4>";
c(".pts-list-tasks-container").append(b);break;case "today":a.list.start_date=moment().startOf("day");a.list.end_date=moment().endOf("day");b='<h4 style="margin:0 0 15px 15px"><b>'+a.i18n.from+"</b> "+a.list.start_date.locale(a.locale).format("lll")+" <b>"+a.i18n.to+"</b> "+a.list.end_date.locale(a.locale).format("lll")+" :</h4>";c(".pts-list-tasks-container").append(b);break;case "week":a.list.start_date=moment().startOf("week");a.list.end_date=moment().endOf("week");b='<h4 style="margin:0 0 15px 15px"><b>'+
a.i18n.from+"</b> "+a.list.start_date.locale(a.locale).format("lll")+" <b>"+a.i18n.to+"</b> "+a.list.end_date.locale(a.locale).format("lll")+" :</h4>";c(".pts-list-tasks-container").append(b);break;case "month":a.list.start_date=moment().startOf("month");a.list.end_date=moment().endOf("month");b='<h4 style="margin:0 0 15px 15px"><b>'+a.i18n.from+"</b> "+a.list.start_date.locale(a.locale).format("lll")+" <b>"+a.i18n.to+"</b> "+a.list.end_date.locale(a.locale).format("lll")+" :</h4>";c(".pts-list-tasks-container").append(b);
break;case "year":a.list.start_date=moment().startOf("year");a.list.end_date=moment().endOf("year");b='<h4 style="margin:0 0 15px 15px"><b>'+a.i18n.from+"</b> "+a.list.start_date.locale(a.locale).format("lll")+" <b>"+a.i18n.to+"</b> "+a.list.end_date.locale(a.locale).format("lll")+" :</h4>";c(".pts-list-tasks-container").append(b);break;case "personalized":b='<h4 style="margin:0 0 15px 15px"><b>'+a.i18n.from+"</b> "+a.list.start_date.locale(a.locale).format("lll")+" <b>"+a.i18n.to+"</b> "+a.list.end_date.locale(a.locale).format("lll")+
" :</h4>",c(".pts-list-tasks-container").append(b)}a.tasks.forEach(function(a){c(".pts-list-task-enabler-input[data-task="+a.id+"]").is(":checked")&&pa(a)})},qa=function(b,c,f,e,k,l){h.info("CALL FUNCTION: createNewTask");var d=w();b={id:0<c.length?c:S(),name:b,description:0<f.length?f:"",color:0<e.length?e:a.defaultColor,tag:k.name,tagColor:k.color};b=H(b);a.tasks.push(b);m(a.currentDisplay);u("success",a.i18n.notif.taskCreated+" : <b>"+b.name+"</b>",d,a.onTaskCreation);if(1==l)return p(b.id,null,
"assignTask")},S=function(){h.log("CALL FUNCTION: generateRandomId");var a=function(){return(65536*(1+Math.random())|0).toString(16).substring(1)};return a()+a()+"-"+a()+"-"+a()+"-"+a()+"-"+a()+a()+a()},ra=function(b){h.info("CALL FUNCTION: removeTask");var d=w();c.each(a.tasks,function(c,d){d&&d.id===b&&delete a.tasks[c]});c.each(a.users,function(d,e){e&&c.each(e.tasks,function(c,e){e&&e.id===b&&delete a.users[d].tasks[c]})});m(a.currentDisplay);u("success",a.i18n.notif.taskRemoved,d,a.onTaskRemoval)},
sa=function(b,d,f,e){h.info("CALL FUNCTION: assignUsersToTask");var k=w(),l={start_date:f,end_date:e};c("#pts-assign-task-err").empty();b&&d&&f&&e&&(b.forEach(function(b){b=a.users[b];var g=!1;b.tasks.forEach(function(a){a.id===d.id&&(z(a,l)||z(l,a))&&(g=!0)});if(g)return c("#pts-assign-task-err").append("<b>"+b.name+"</b> "+a.i18n.userIsAlreadyAssigned+"<br>");b.tasks.push({id:d.id,start_date:moment(f).format("YYYY-MM-DD HH:mm"),end_date:moment(e).format("YYYY-MM-DD HH:mm")});H(d);if(0==c(".pts-toolbox-user[data-user="+
b.index+"]").length){var k='<hr><div class="pts-toolbox-user animated fadeIn" data-user="'+b.index+'"><h4 class=" text-semibold heading-divided">'+b.name+'</h4><table><tbody class="pts-toolbox-user-list" data-head="'+b.index+'"></tbody></table></div>';c("#pts-toolbox-container > .panel-body").append(k)}k=['<tr class="animated fadeIn"><td>','<i class="glyphicon glyphicon-trash pts-task-assign-delete-user" data-user="'+b.index+'" data-task="'+d.id+'" data-task-index="'+(b.tasks.length-1)+'"></i>',"<b>"+
a.i18n.from+"</b> "+moment(f).locale(a.locale).format("llll")," <b>"+a.i18n.to+"</b> "+moment(e).locale(a.locale).format("llll")+"</td></tr>"].join("\n");c(".pts-toolbox-user-list[data-head="+b.index+"]").append(k);c("#pts-toolbox-container").scrollTop(c("#pts-toolbox-container")[0].scrollHeight)}),u("success","<b>"+b.length+"</b> "+(1<b.length?a.i18n.notif.usersAssigned:a.i18n.notif.userAssigned)+" <b>"+d.name+"</b>",k,a.onTaskAssignation))},ta=function(b,d,f,e){h.info("CALL FUNCTION: assignTasksToUser");
var k=w();if(b&&d&&f&&e){c("#pts-assign-user-err").empty();var l={start_date:f,end_date:e};d.forEach(function(d){var g=x(d),k=!1;b.tasks.forEach(function(a){a.id===g.id&&(z(a,l)||z(l,a))&&(k=!0)});if(k)return c("#pts-assign-user-err").append("<b>"+b.name+"</b> "+a.i18n.userIsAlreadyAssigned+"<br>");b.tasks.push({id:g.id,start_date:moment(f).format("YYYY-MM-DD HH:mm"),end_date:moment(e).format("YYYY-MM-DD HH:mm")});H(g);0==c(".pts-toolbox-task-header[data-task="+g.id+"]").length&&(d=['<p class="animated fadeIn pts-check-color progress-bar-striped pts-toolbox-task-header" style="background-color:'+
g.color+';margin-top:10px" data-task="'+g.id+'" data-user="'+b.index+'"><b>',g.name+'</b></p><table style="position: relative;left:30px;"><tbody class="pts-user-sorted-task" data-task="'+g.id+'" class="pts-toolbox-user-list" data-head="'+b.index+'">',"</tbody></table>"].join("\n"),c(".pts-toolbox-user-list").append(d));d='<tr><td><i class="animated fadeIn glyphicon glyphicon-trash pts-task-assign-delete-user" data-user="'+b.index+'" data-task="'+g.id+'" data-task-index="'+g.index+'"></i><b>'+a.i18n.from+
"</b> "+moment(f).locale(a.locale).format("lll")+" <b>"+a.i18n.to+"</b> "+moment(e).locale(a.locale).format("lll")+"</td></tr>";c(".pts-user-sorted-task[data-task="+g.id+"]").append(d);c("#pts-toolbox-container").scrollTop(c("#pts-toolbox-container")[0].scrollHeight)});u("success","<b>"+b.name+"</b> "+a.i18n.notif.userAssignedTo+" <b>"+d.length+"</b> "+(1<d.length?a.i18n.tasks:a.i18n.task),k,a.onTaskAssignation)}},Y=function(b,c,f,e){h.info("CALL FUNCTION: deleteTaskFromUser");e=e||w();b.tasks[f]&&
(delete b.tasks[f],H(c),K(),O(),u("success","<b>"+b.name+"</b> "+a.i18n.notif.userUnassigned,e,a.onUserTaskDeletion))},ua=function(b){var c=w();delete a.users[b.index];m(a.currentDisplay);P();u("success",a.i18n.notif.userRemoved,c,a.onUserRemoval)},va=function(){clearInterval(a.resize.timeout);a.users[a.resize.user].tasks.forEach(function(b,c){if(b.id==a.resize.task&&moment(b.end_date).format("YYYYMMDD")==moment(a.resize.end_date).format("YYYYMMDD")){var d=w(),e=a.resize.count,k="months"==a.currentDisplay?
12>=moment(b.end_date).format("H")&&0<parseInt(moment(b.end_date).format("Hmm"))?!0:!1:30>=moment(b.end_date).format("mm")&&0<parseInt(moment(b.end_date).format("mm"))?!0:!1;b.end_date=moment(b.end_date).add(e*("months"==a.currentDisplay?1440:60),"minute");k&&0!==e%1||!k&&0==e%1?"0000"!=moment(b.end_date).format("HHmm")?b.end_date="months"==a.currentDisplay?moment(b.end_date).endOf("day"):moment(b.end_date):b.end_date="months"==a.currentDisplay?moment(b.end_date).add(-1,"minute"):moment(b.end_date):
b.end_date="months"==a.currentDisplay?moment(b.end_date).hours(12).minutes(0):moment(b.end_date).minutes(30);b.end_date=moment(b.end_date).format("YYYY-MM-DD HH:mm");parseInt(moment(b.start_date).format("YYYYMMDDHHmm"))>=parseInt(moment(b.end_date).format("YYYYMMDDHHmm"))?Y(a.users[a.resize.user],b,c,d):u("success",a.i18n.notif.userTaskModified+": <b>"+moment(b.end_date).locale(a.locale).format("LLLL")+"</b>",d,a.onUserEdition);m(a.currentDisplay)}});a.resize={}},wa=function(b){var d=a.resize.element;
c(".pts-task-tooltip").remove();var f=!1;c(".pts-line-marker[data-task="+a.resize.task+"][data-user="+a.resize.user+"]").each(function(){if(c(this).offset().left!==d.offset().left){var a=parseInt(d.offset().left),b=parseInt(a+d.width()),e=parseInt(c(this).offset().left);e<=b&&a<e&&(f=!0)}});var e=a.resize.origin>b.pageX?60:-60,k=a.resize.element,l=parseInt(k.css("width"));if(b.pageX>a.resize.origin+60&&!f){var h=a.resize.count+.5+" "+("months"==a.currentDisplay?a.i18n.day:a.i18n.hour)+(1<a.resize.count+
.5||-1>a.resize.count-.5?"s":"");d.before('<div class="pts-task-tooltip" style="left:'+(d.width()+d.position().left)+"px;top:"+(d.position().top-30)+'px"><div>'+(0<a.resize.count+.5?"+":"")+h+"</div></div>");a.resize.count+=.5;k.css("width",l-e+"px");a.resize.origin=b.pageX}else b.pageX<a.resize.origin-60&&(h=a.resize.count-.5+" "+("months"==a.currentDisplay?a.i18n.day:a.i18n.hour)+(1<a.resize.count-.5||-1>a.resize.count-.5?"s":""),d.before('<div class="pts-task-tooltip" style="left:'+(d.width()+
d.position().left-120)+"px;top:"+(d.position().top-30)+'px""><div>'+(0<a.resize.count-.5?"+":"")+h+"</div></div>"),a.resize.count-=.5,k.css("width",l-e+"px"),a.resize.origin=b.pageX)},xa=function(b,d,f){var e=!1,k={start_date:moment(c("#pts-list-datetimepicker-start").data("DateTimePicker").date()),end_date:moment(c("#pts-list-datetimepicker-end").data("DateTimePicker").date())};if(d&&(b.tasks.forEach(function(l,g){f!=g&&l.id==d.id&&(z(k,l)||z(l,k))&&(e=!0,c(".pts-edit-assignation-err").html(b.name+
" "+a.i18n.userIsAlreadyAssigned))}),0==e)){var l=w();a.users[b.index].tasks[f].start_date=k.start_date;a.users[b.index].tasks[f].end_date=k.end_date;m(a.currentDisplay);u("success",a.i18n.notif.userEdited,l,a.onUserEdition)}},ya=function(b){var c=!1;a.filters.forEach(function(a,d){a.id==b.id&&(c=d)});!1===c?(a.filters.push(b),u("success",a.i18n.notif.filterAdded)):(a.filters[c]=b,u("success",a.i18n.notif.filterEdited))},za=function(b){var d=null;a.filters.forEach(function(a,c){a.id==b&&(d=c)});null!==
d&&(a.filters.splice(d,1),u("success",a.i18n.notif.filterRemoved),c(".pts-filter-container[data-filter="+b+"]").remove())},A=function(b,c){var d=!1;a.filters.forEach(function(a){if(a.target==b)if(void 0===c)"in"==a.type&&(d=!0);else if("out"==a.type&&-1!=c.indexOf(a.value)||"in"==a.type&&c&&-1==c.indexOf(a.value))d=!0});return d},C=function(){h.info("CALL FUNCTION: generateTableLines");K();c(".pts-column-title-container > div").empty();c(".pts-main-content").empty();c(".pts-corner-mask").empty();
if("days"==a.currentDisplay)for(var b=0,d=0;25>d;d++)c(".pts-column-title-container > div").append('<div class="pts-column-element">'+(24>d?"<p>"+d+":00</p>":"")+"</div>"),24>d&&c(".pts-main-content").append('<div class="pts-main-group-column" style="left:'+b+'px"><div></div></div>'),b+=120;else if("months"==a.currentDisplay)for(var f=moment(a.date.selected).add(-1*(moment(a.date.selected).format("D")-1),"day"),b=0,e=parseInt(moment(a.date.selected).daysInMonth())+1,d=1;d<=e;d++)c(".pts-column-title-container > div").append('<div class="pts-column-element" data-date="'+
moment(f).format("YYYY-MM-DD")+'">'+(d<e?"<p>"+f.locale(a.locale).format("ddd")+" "+d+"</p>":"")+"</div>"),d<e&&c(".pts-main-content").append('<div class="pts-main-group-column" style="left:'+b+'px"><div></div></div>'),b+=120,f.add(1,"day");b=['<div style="display:inline-flex"><div class="dropdown" style="top:2px"><button id="addDropdown" class="btn btn-sm pts-btn-add-elem dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\n<i class="glyphicon glyphicon-plus"></i></button>\n<ul class="dropdown-menu" aria-labelledby="addDropdown">',
'<li><a href="#" class="pts-add-new-task">'+a.i18n.addNewTask+"</a></li>",'<li><a href="#" class="pts-add-new-user">'+a.i18n.addNewUser+"</a></li>",'</ul></div><div class="dropdown">','<button class="btn '+(0<a.filters.length?"btn-success":"btn-default")+' pts-open-filters-menu dropdown-toggle" type="button">','<i class="glyphicon glyphicon-filter"></i></button>\n<button class="btn btn-default dropdown-toggle" type="button" id="settingsDropdown" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\n<i class="glyphicon glyphicon-cog"></i> <span class="caret"></span></button>\n<ul class="dropdown-menu" aria-labelledby="settingsDropdown">',
'<li><label class="checkbox-inline"><input id="hide-user-btn" type="checkbox" value="" '+(a.hideEmptyLines?"checked":"")+">"+a.i18n.hideEmptyLine+"</label></li>",'<li><label class="checkbox-inline"><input id="disable-labels-mov" type="checkbox" value="" '+(a.disableLabelsMovement?"checked":"")+">"+a.i18n.disableLabelsMovement+"</label></li>","</div></div>"].join("\n");c(".pts-corner-mask").append(b)},ca=function(b,d){h.log("CALL FUNCTION: generateGroupTab: group: "+b);a.groups.added.push({name:b,
id:"user-group-"+a.groups.added.length});d=a.groups.added.length-1;var f=['<div id="user-group-'+d+'" class="pts-line-group-container">','<div class="pts-group-header">','<i class="glyphicon glyphicon-remove pull-left close-group-panel" data-group="'+d+'" data-toggle="opened"></i>',"<span>"+b+"</span></div>",'<div class="pts-group-content"></div></div>'].join("\n");c(".pts-line-title-container > div").append(f)},D=function(){h.log("CALL FUNCTION: generateGroupMainContent");a.groups&&(a.groups.added.forEach(function(b,
d){var f=['<div id="group-container-'+d+'" class="pts-main-group-container">','<div class="pts-main-group-header"></div></div>'].join("\n");c(".pts-main-content").append(f);a.users.forEach(function(a,f){var e=a.lineHeight;a.group===b.name&&1==a.isShowed&&0<e&&c("#group-container-"+d).append('<div id="content-user-'+f+'" class="pts-main-group-user" style="height:'+e+'px"></div>')});"closed"===c(".close-group-panel[data-group="+d+"]").attr("data-toggle")&&c("#group-container-"+d).children(".pts-main-group-user").css("display",
"none")}),"days"==a.currentDisplay?(c(".pts-main-group-header").css("width","2880px"),c(".pts-main-group-user").css("width","2880px")):(c(".pts-main-group-header").css("width",120*moment(a.date.selected).daysInMonth()+"px"),c(".pts-main-group-user").css("width",120*moment(a.date.selected).daysInMonth()+"px")),a.users.forEach(function(a,c){Aa(a,c)}))},F=function(){h.info("CALL FUNCTION: generateUsersList");if(!a.users||0>=a.users.length)return u("warning",a.i18n.notif.noUser);c(".pts-group-content").empty();
a.users.forEach(function(b){var c="";a.groups.added.forEach(function(a){if(a.name==b.group||b.id&&a.users&&0<=a.users.indexOf(b.id))c=a.id});if(!c)var f=a.groups.added[a.groups.unlisted],c=f?f.id:"";Ba(b,c)})},Ba=function(a,d){h.log("CALL FUNCTION: generateUserLine: user: "+a.name);if(!a.tasks)return h.warn("Warning: user "+a.name+" is assigned to any task");if(a.isShowed&&!(0>=a.lineHeight)&&d){var b='<div class="pts-group-user pts-show-user" style="height:'+a.lineHeight+'px" data-user="'+a.index+
'"><p>'+a.name+"</p></div>";c("#"+d+" > .pts-group-content").append(b)}},Aa=function(b,d){h.info("CALL FUNCTION: generateTaskLines: user: "+b.name);if(!da(b))return h.log("No task for this user in that period");b.index=d;var f=5;b.tasks&&b.tasks.forEach(function(d,k){var e=c.extend(x(d.id),d);if(void 0===e||void 0==x(d.id))return u("warning","<b>"+b.name+"</b> "+a.i18n.notif.taskNotExist);if(0==A("task",e.name)&&0==A("tag",e.tag)){e.index=k;e.superposed="";if(void 0===e)return h.warn("CALL FUNCTION: Warning: Task "+
d.id+" has not be found in tasks array for user "+b.name);if(e.start_date>e.end_date)return h.warn("CALL FUNCTION: Warning: end_date must be later than start_date for user "+b.name+"in task "+d.id);if("months"===a.currentDisplay){if(e=oa(k,e,b),e.end_date&&moment(a.date.selected).format("YYYYMM")>=moment(e.start_date).format("YYYYMM")&&moment(a.date.selected).format("YYYYMM")<=moment(e.end_date).format("YYYYMM")){var R=f,g=e,r=f;h.info("CALL FUNCTION: generateTaskLineMonth: user: "+b.name+":task: "+
g.name);var q=b.index,m=c("div[data-task="+g.id+"][data-user="+q+"] > .pts-line-marker"),n=g.tag?' <span class="label label-default pts-check-color" style="background-color:'+g.tagColor+'">'+g.tag+"</span>":"",p=a.resizeTask?'<i class="pts-task-resizer glyphicon glyphicon-option-vertical" data-task="'+g.id+'" data-user="'+q+'" data-end="'+g.end_date+'"></i>':"";0<m.length&&(r=m.css("top"));c("#content-user-"+q).append('<div class="pts-line-marker-group-'+g.index+'" data-task="'+g.id+'" data-user="'+
q+'"></div>');if(moment(a.date.selected).format("YYYYMM")==moment(g.start_date).format("YYYYMM")){var t=12<=moment(g.start_date).format("H")?60:0,v=120*(moment(g.start_date).format("D")-1)+t-6,w=!1;moment(g.end_date).format("YYYYMM")>moment(a.date.selected).format("YYYYMM")?t=120*(parseInt(moment(a.date.selected).daysInMonth())-parseInt(moment(g.start_date).format("D")))+(0==t?120:60):(t=120*(moment(g.end_date).format("D")-moment(g.start_date).format("D"))+(0==t?120:60)-(12>=moment(g.end_date).format("H")?
0==moment(g.end_date).format("H")?120:60:0),w=!0);r=parseInt(r);v=parseInt(v);v=['<div class="pts-check-color progress-bar-striped pts-line-marker '+(w?"complete":"start")+'" style="top:'+r+"px;left:"+v+"px;background-color:"+g.color+";width:"+t+"px;"+g.superposed+'" data-task="'+g.id+'" data-user="'+q+'">','<p class="pts-line-marker-label text-no-select" data-toggle="tooltip" title="'+g.name+" - "+(g.tag||"")+'">'+g.name+n+"</p>",p+"</div>"].join("\n");c("#content-user-"+q+" > .pts-line-marker-group-"+
g.index).append(v)}moment(a.date.selected).format("YYYYMM")==moment(g.end_date).format("YYYYMM")&&moment(g.start_date).format("YYYYMM")<moment(a.date.selected).format("YYYYMM")&&(t=12>=moment(g.end_date).format("H")?60:0,t=120*moment(g.end_date).format("D")-t-(0==moment(g.end_date).format("H")?60:0),r=parseInt(r),v=['<div class="pts-check-color progress-bar-striped pts-line-marker end" style="top:'+r+"px;left:0px;background-color:"+g.color+";width:"+t+'px" data-task="'+g.id+'" data-user="'+q+'">',
'<p class="pts-line-marker-label text-no-select" data-toggle="tooltip" title="'+g.name+'">'+g.name+n+"</p>",p+"</div>"].join("\n"),c("#content-user-"+q+" > .pts-line-marker-group-"+g.index).append(v));moment(a.date.selected).format("YYYYMM")!=moment(g.end_date).format("YYYYMM")&&moment(a.date.selected).format("YYYYMM")!=moment(g.start_date).format("YYYYMM")&&(r=parseInt(r),v='<div class="pts-check-color progress-bar-striped pts-line-marker middle" style="top:'+r+"px;left:0px;background-color:"+g.color+
';" data-task="'+g.id+'" data-user="'+q+'"><p class="pts-line-marker-label text-no-select" data-toggle="tooltip" title="'+g.name+'">'+g.name+n+"</p></div>",c("#content-user-"+q+" > .pts-line-marker-group-"+g.index).append(v));Q();y();f=R+(0<m.length?0:40)}}else"days"===a.currentDisplay&&e.end_date&&moment(a.date.selected).format("YYYYMMDD")>=moment(e.start_date).format("YYYYMMDD")&&moment(a.date.selected).format("YYYYMMDD")<=moment(e.end_date).format("YYYYMMDD")&&(R=f,g=e,r=f,h.info("CALL FUNCTION: generateTaskLineDay: user: "+
b.name+": task: "+g.name),q=b.index,m=c("div[data-task="+g.id+"][data-user="+q+"] > .pts-line-marker"),n=g.tag?' <span class="label label-default pts-check-color" style="background-color:'+g.tagColor+'">'+g.tag+"</span>":"",p=a.resizeTask?'<i class="pts-task-resizer glyphicon glyphicon-option-vertical" data-task="'+g.id+'" data-user="'+q+'" data-end="'+g.end_date+'"></i>':"",0<m.length&&(r=m.css("top")),c("#content-user-"+q).append('<div class="pts-line-marker-group-'+g.index+'" data-task="'+g.id+
'" data-user="'+q+'"></div>'),moment(a.date.selected).format("YYYYMMDD")==moment(g.start_date).format("YYYYMMDD")&&(t=30<=moment(g.start_date).format("mm")?60:0,v=120*moment(g.start_date).format("H")+t-6,w=!1,moment(g.end_date).format("YYYYMMDD")>moment(a.date.selected).format("YYYYMMDD")?t=120*(24-parseInt(moment(g.start_date).format("H"))-1)+(0==t?120:60):(t=120*(moment(g.end_date).format("H")-moment(g.start_date).format("H"))+(0==t?120:60)-(30>moment(g.end_date).format("mm")?120:60),w=!0),r=parseInt(r),
v=parseInt(v),v='<div class="pts-check-color progress-bar-striped pts-line-marker '+(w?"complete":"start")+'" style="top:'+r+"px;left:"+v+"px;background-color:"+g.color+";width:"+t+'px" data-task="'+g.id+'" data-user="'+q+'"><p class="pts-line-marker-label text-no-select" data-toggle="tooltip" title="'+g.name+'">'+g.name+n+"</p>"+p+"</div>",c("#content-user-"+q+" > .pts-line-marker-group-"+g.index).append(v)),moment(a.date.selected).format("YYYYMMDD")==moment(g.end_date).format("YYYYMMDD")&&moment(g.start_date).format("YYMMDD")<
moment(a.date.selected).format("YYMMDD")&&(t=30>moment(g.end_date).format("mm")?120:60,t=120*moment(g.end_date).format("H")-t+120,r=parseInt(r),v='<div class="pts-check-color progress-bar-striped pts-line-marker end" style="top:'+r+"px;left:0px;background-color:"+g.color+";width:"+t+'px" data-task="'+g.id+'" data-user="'+q+'"><p class="pts-line-marker-label text-no-select" data-toggle="tooltip" title="'+g.name+'">'+g.name+n+"</p>"+p+"</div>",c("#content-user-"+q+" > .pts-line-marker-group-"+g.index).append(v)),
moment(a.date.selected).format("YYYYMMDD")!=moment(g.end_date).format("YYYYMMDD")&&moment(a.date.selected).format("YYYYMMDD")!=moment(g.start_date).format("YYYYMMDD")&&(r=parseInt(r),v='<div class="pts-check-color progress-bar-striped pts-line-marker middle" style="top:'+r+"px;left:0px;background-color:"+g.color+';" data-task="'+g.id+'" data-user="'+q+'"><p class="pts-line-marker-label text-no-select" data-toggle="tooltip" title="'+g.name+'">'+g.name+n+"</p></div>",c("#content-user-"+q+" > .pts-line-marker-group-"+
g.index).append(v)),Q(),y(),f=R+(0<m.length?0:40));delete e.superposed;delete e.index;delete e.start_date;delete e.end_date}})},ea=function(b){h.info("CALL FUNCTION: generateToolboxContentTask: task: "+b.name);var d=['<div class="panel-body">','<h4 class="pts-check-color text-semibold pts-toolbox-title progress-bar-striped pts-close-toolbox" style="background-color:'+b.color+'">'+b.name,'<button class="btn btn-xs pts-button-see-all">'+a.i18n.seeAll+"</button>",'<i class="glyphicon glyphicon-remove pull-right"></i></h4>'+
(b.tag?'<span class="label label-default pts-check-color" style="background-color:'+b.tagColor+'">'+b.tag+"</span><br>":""),"<p><b>"+a.i18n.description+" : </b><br>"+(b.description?b.description:a.i18n.notSpecified)+"</p>",'<div class="btn-group">','<button type="button" class="pts-delete-task-btn btn btn-danger" data-task="'+b.id+'" data-confirm="false">'+a.i18n.remove+"</button>",'<button type="button" class="btn pts-assign-task-btn" style="background-color:#00BCD4;color:#fff" data-task="'+b.id+
'">'+a.i18n.assign+"</button>",'<button type="button" class="btn pts-edit-task-btn" style="background-color:#0097A7;color:#fff" data-task="'+b.id+'">'+a.i18n.edit+"</button></div><br>",'<br><div class="divider"></div></div>'].join("\n");c("#pts-toolbox-container").append(d);c.each(b.users,function(d){var e=a.users[d],f=['<div class="pts-toolbox-user"><h4 class=" text-semibold heading-divided pts-show-user" data-user="'+e.index+'">'+e.name+"</h4>",'<table><tbody class="pts-toolbox-user-list" data-head="'+
d+'"></tbody></table></div>'].join("\n");c("#pts-toolbox-container > .panel-body").append(f);e.tasks.forEach(function(f,k){if(f.id===b.id){var g=['<tr><td><i class="glyphicon glyphicon-trash pts-task-assign-delete-user" data-user="'+e.index+'" data-task="'+b.id+'" data-task-index="'+k+'"></i>','<i class="glyphicon glyphicon-pencil pts-user-edit-task" data-user="'+e.index+'" data-task="'+b.id+'" data-task-index="'+k+'"></i>',"<b>"+a.i18n.from+"</b> "+moment(f.start_date).locale(a.locale).format("llll"),
" <b>"+a.i18n.to+"</b> "+moment(f.end_date).locale(a.locale).format("llll")+"</td></tr>"].join("\n");c(".pts-toolbox-user-list[data-head="+d+"]").append(g)}})});y()},fa=function(b){h.info("CALL FUNCTION: generateToolboxContentUser: user: "+b.name);var d={};b.tasks.forEach(function(c,f){d[c.id]||(d[c.id]=[]);d[c.id].push('<i class="glyphicon glyphicon-trash pts-task-assign-delete-user" data-user="'+b.index+'" data-task="'+c.id+'" data-task-index="'+f+'"></i><i class="glyphicon glyphicon-pencil pts-user-edit-task" data-user="'+
b.index+'" data-task="'+c.id+'" data-task-index="'+f+'"></i><b>'+a.i18n.from+"</b> "+moment(c.start_date).locale(a.locale).format("lll")+" <b>"+a.i18n.to+"</b> "+moment(c.end_date).locale(a.locale).format("lll"))});var f=['<div class="panel-body">','<h4 class="text-semibold pts-toolbox-title pts-close-toolbox pts-check-color" style="background-color:'+a.defaultColor+'" data-update="true">',b.name+' - <small style="color:#fff">'+b.group+"</small>",'<button class="btn btn-xs pts-button-see-all">'+
a.i18n.seeAll+"</button>",'<i class="glyphicon glyphicon-remove pull-right"></i></h4>\n<div class="btn-group">','<button type="button" class="pts-delete-user-btn btn btn-danger" data-user="'+b.index+'" data-confirm="false">'+a.i18n.remove+"</button>",'<button type="button" class="btn pts-assign-user-btn" style="background-color:#00BCD4;color:#fff" data-user="'+b.index+'">'+a.i18n.assign+"</button>",'<button type="button" class="btn pts-edit-user-btn" style="background-color:#0097A7;color:#fff" data-user="'+
b.index+'">'+a.i18n.edit+"</button></div><br>",'<div class="pts-toolbox-user-list"></div></div>'].join("\n");c("#pts-toolbox-container").append(f);c.each(d,function(a,d){var e=x(a),e=['<p class="pts-check-color progress-bar-striped pts-toolbox-task-header" style="background-color:'+e.color+';margin-top:10px" data-task="'+a+'" data-user="'+b.index+'"><b>',e.name+'</b></p><table style="position: relative;left:30px;"><tbody class="pts-user-sorted-task" data-task="'+a+'" class="pts-toolbox-user-list" data-head="'+
b.index+'">',"</tbody></table>"].join("\n");c(".pts-toolbox-user-list").append(e);d.forEach(function(b){c(".pts-user-sorted-task[data-task="+a+"]").append("<tr><td>"+b+"</td></tr>")})});y()},ga=function(){h.info("CALL FUNCTION: generateToolboxContentCreateTask");var b=['<div class="panel-body">','<h4 class="text-semibold pts-toolbox-title pts-close-toolbox pts-check-color" style="background-color:'+a.defaultColor+'">'+a.i18n.addNewTask,'<i class="glyphicon glyphicon-remove pull-right"></i></h4>\n<fieldset>',
'<div class="form-group"><label>'+a.i18n.name+" <small>("+a.i18n.required+')</small> :</label><input id="pts-add-task-input-name" type="text" class="form-control" maxlength="50">','<div id="pts-add-task-err-name" style="color:red"></div></div>\n<div class="form-group"><label>Id :</label><input id="pts-add-task-input-id" type="text" class="form-control" maxlength="80"><div id="pts-add-task-err-id" style="color:red"></div></div>','<div class="form-group"><label>'+a.i18n.color+' :</label><input id="pts-add-task-input-color" type="color" class="form-control" value="'+
a.defaultColor+'"></div>','<div class="form-group"><label>'+a.i18n.description+' :</label><textarea id="pts-add-task-input-description" type="text" class="form-control" maxlength="255"></textarea></div>','<div class="form-group"><label>'+a.i18n.tag+' :</label><input id="pts-add-task-input-tag" type="text" class="form-control" maxlength="15"></div>','<div class="form-group"><label>'+a.i18n.tagColor+' :</label><input id="pts-add-task-input-tagColor" type="color" class="form-control" value="#777777"></div>',
'<div class="btn-group">','<button type="button" class="pts-close-toolbox btn btn-danger">'+a.i18n.cancel+"</button>",'<button type="button" class="btn pts-create-task-btn" style="background-color:#00BCD4;color:#fff" data-assign="true">'+a.i18n.createAndAssign+"</button>",'<button type="button" class="btn pts-create-task-btn" style="background-color:#0097A7;color:#fff" data-assign="false">'+a.i18n.create+"</button></div>","</fieldset>\n</div>"].join("\n");c("#pts-toolbox-container").append(b)},ia=
function(b){h.info("CALL FUNCTION: generateToolboxContentEditTask");if(b=x(b))b=['<div class="panel-body">','<h4 class="text-semibold pts-toolbox-title pts-close-toolbox pts-check-color progress-bar-striped" style="background-color:'+b.color+'">'+b.name,'<i class="glyphicon glyphicon-remove pull-right"></i></h4>','<h4><i class="glyphicon glyphicon-chevron-left pull-left pts-toolbox-back-btn" data-target="task" data-task="'+b.id+'"></i>'+a.i18n.editTask+"</h4>","<fieldset>",'<div class="form-group"><label>'+
a.i18n.name+" <small>("+a.i18n.required+")</small> :",'</label><input id="pts-edit-task-input-name" type="text" class="form-control" maxlength="50" value="'+b.name+'">','<div id="pts-edit-task-err-name" style="color:red"></div></div>','<div class="form-group"><label>Id :</label><input id="pts-edit-task-input-id" type="text" class="form-control" maxlength="80" value="'+b.id+'" disabled="disabled"></div>','<div class="form-group"><label>'+a.i18n.color+' :</label><input id="pts-edit-task-input-color" type="color" class="form-control" value="'+
b.color+'"></div>','<div class="form-group"><label>'+a.i18n.description+" :</label>",'<textarea id="pts-edit-task-input-description" type="text" class="form-control" maxlength="255">'+(b.description||"")+"</textarea></div>",'<div class="form-group"><label>'+a.i18n.tag+' :</label><input id="pts-edit-task-input-tag" type="text" class="form-control" maxlength="15" value="'+(b.tag||"")+'"></div>','<div class="form-group"><label>'+a.i18n.tagColor+' :</label><input id="pts-edit-task-input-tagColor" type="color" class="form-control" value="'+
(b.tagColor||"#777777")+'"></div>','<div class="btn-group">','<button type="button" class="pts-close-toolbox btn btn-danger">'+a.i18n.cancel+"</button>",'<button type="button" class="btn pts-edit-task-confirm-btn" style="background-color:#0097A7;color:#fff" data-task="'+b.id+'">'+a.i18n.edit+"</button></div>","</fieldset>\n</div>"].join("\n"),c("#pts-toolbox-container").append(b)},ha=function(b){h.info("CALL FUNCTION: generateToolboxContentAssignTask");var d=x(b);b=['<div class="panel-body">','<h4 class="pts-check-color text-semibold pts-toolbox-title progress-bar-striped pts-close-toolbox" style="background-color:'+
d.color+'" data-update="true">'+d.name,'<i class="glyphicon glyphicon-remove pull-right"></i></h4>','<h4><i class="glyphicon glyphicon-chevron-left pull-left pts-toolbox-back-btn" data-target="task" data-task="'+d.id+'"></i>'+a.i18n.assignTaskTitle+"</h4>",'<div class="form-group"><label for="sel42">'+a.i18n.selectUsersToAssign+" : </label>",'<select multiple="" class="form-control pts-task-assign-users-list" id="sel42"></select></div>',"<b>"+a.i18n.from+'</b><div class="input-group date pts-datetimepicker-start" id="pts-task-assign-datepicker-start">',
'<input type="text" class="form-control"/>\n<span class="input-group-addon">\n<span class="glyphicon glyphicon-calendar"></span>\n</span></div>',"<b>"+a.i18n.to+'</b><div class="input-group date pts-datetimepicker-end" id="pts-task-assign-datepicker-end">','<input type="text" class="form-control"/>\n<span class="input-group-addon">\n<span class="glyphicon glyphicon-calendar"></span>\n</span></div><div id="pts-assign-task-err" style="color:red"></div><br><div class="pull-right">','<button id="pts-task-assign-btn" class="btn pts-check-color" style="background-color:#00BCD4" data-task="'+
b+'">'+a.i18n.assign+"</button></div>","<br></div>"].join("\n");c("#pts-toolbox-container").append(b);c("#pts-task-assign-datepicker-start").datetimepicker().data("DateTimePicker").locale(a.locale).widgetPositioning({horizontal:"left",vertical:"bottom"}).keepOpen(!1);c("#pts-task-assign-datepicker-end").datetimepicker().data("DateTimePicker").locale(a.locale).widgetPositioning({horizontal:"left",vertical:"bottom"}).keepOpen(!1);a.users.forEach(function(a,b){c(".pts-task-assign-users-list").append('<option class="pts-task-assign-user-option" value="'+
b+'" data-user="'+a.name+'">'+a.name+"</option>")});c.each(d.users,function(b){var e=a.users[b];b=['<hr><div class="pts-toolbox-user" data-user="'+e.index+'">','<h4 class=" text-semibold heading-divided">'+e.name+"</h4>",'<table><tbody class="pts-toolbox-user-list" data-head="'+e.index+'"></tbody></table></div>'].join("\n");c("#pts-toolbox-container > .panel-body").append(b);e.tasks.forEach(function(b,f){if(b.id===d.id){var h=['<tr><td><i class="glyphicon glyphicon-trash pts-task-assign-delete-user" data-user="'+
e.index+'" data-task="'+b.id+'" data-task-index="'+f+'"></i>',"<b>"+a.i18n.from+"</b> "+moment(b.start_date).locale(a.locale).format("llll")," <b>"+a.i18n.to+"</b> "+moment(b.end_date).locale(a.locale).format("llll")+"</td></tr>"].join("\n");c(".pts-toolbox-user-list[data-head="+e.index+"]").append(h)}})});y()},ja=function(){h.info("CALL FUNCTION: generateToolboxContentCreateUser");var b=['<div class="panel-body">','<h4 class="text-semibold pts-toolbox-title pts-close-toolbox pts-check-color" style="background-color:'+
a.defaultColor+'">'+a.i18n.addNewUser,'<i class="glyphicon glyphicon-remove pull-right"></i></h4>\n<fieldset>','<div class="form-group"><label>'+a.i18n.name+" <small>("+a.i18n.required+")</small> :</label>",'<input id="pts-add-user-input-name" type="text" class="form-control" maxlength="40">\n<div id="pts-add-user-err-name" style="color:red"></div></div>','<div class="form-group"><label>'+a.i18n.group+" :</label>",'<input id="pts-add-user-input-group" type="text" class="form-control" maxlength="60" placeholder="'+
a.i18n.createNewGroup+'">',"<span>"+a.i18n.or+'</span><select id="pts-add-user-select-group" type="select" class="form-control" maxlength="60">',"<option disabled selected>"+a.i18n.selectGroup+"</option></select></div>",'<div class="btn-group">','<button type="button" class="pts-close-toolbox btn btn-danger">'+a.i18n.cancel+"</button>",'<button type="button" class="btn pts-create-user-btn" style="background-color:#00BCD4;color:#fff" data-assign="true">'+a.i18n.createAndAssign+"</button>",'<button type="button" class="btn pts-create-user-btn" style="background-color:#0097A7;color:#fff" data-assign="false">'+
a.i18n.create+"</button></div>","</fieldset>\n</div>"].join("\n");c("#pts-toolbox-container").append(b);a.groups.forEach(function(a){c("#pts-add-user-select-group").append('<option value="'+a+'">'+a+"</option>")})},ka=function(b){h.info("CALL FUNCTION: generateToolboxContentEditUser");b&&(b=['<div class="panel-body">','<h4 class="text-semibold pts-toolbox-title pts-close-toolbox pts-check-color" style="background-color:'+a.defaultColor+'">'+b.name+' - <small style="color:#fff">'+b.group+"</small>",
'<i class="glyphicon glyphicon-remove pull-right"></i></h4>','<h4><i class="glyphicon glyphicon-chevron-left pull-left pts-toolbox-back-btn" data-target="user" data-user="'+b.index+'"></i>'+a.i18n.editUser+"</h4><fieldset>",'<div class="form-group"><label>'+a.i18n.name+" <small>("+a.i18n.required+")</small> :</label>",'<input id="pts-edit-user-input-name" type="text" class="form-control" maxlength="40" value="'+b.name+'">','<div id="pts-edit-user-err-name" style="color:red"></div></div>','<div class="form-group"><label>'+
a.i18n.group+" :</label>",'<input id="pts-edit-user-input-group" type="text" class="form-control" maxlength="60" placeholder="'+a.i18n.createNewGroup+'" value="'+b.group+'">',"<span>"+a.i18n.or+'</span><select id="pts-edit-user-select-group" type="select" class="form-control" maxlength="60">',"<option disabled selected>"+a.i18n.selectGroup+"</option></select></div>",'<div class="btn-group">','<button type="button" class="pts-close-toolbox btn btn-danger">'+a.i18n.cancel+"</button>",'<button type="button" class="btn pts-edit-user-confirm-btn" style="background-color:#00BCD4;color:#fff" data-user="'+
b.index+'">'+a.i18n.edit+"</button>","</fieldset>\n</div>"].join("\n"),c("#pts-toolbox-container").append(b),a.groups.forEach(function(a){c("#pts-edit-user-select-group").append('<option value="'+a+'">'+a+"</option>")}))},la=function(b){h.info("CALL FUNCTION: generateToolboxContentAssignUser");var d=['<div class="panel-body">','<h4 class="pts-check-color text-semibold pts-toolbox-title pts-close-toolbox" style="background-color:'+a.defaultColor+'" data-update="true">',b.name+' - <small style="color:#fff">'+
b.group+"</small>",'<i class="glyphicon glyphicon-remove pull-right"></i></h4>','<h4><i class="glyphicon glyphicon-chevron-left pull-left pts-toolbox-back-btn" data-target="user" data-user="'+b.index+'"></i>'+a.i18n.assignUserTitle+"</h4>",'<div class="form-group"><label for="sel42">'+a.i18n.selectTasksToAssign+" : </label>",'<select multiple="" class="form-control pts-user-assign-tasks-list" id="sel42"></select></div>',"<b>"+a.i18n.from+'</b><div class="input-group date pts-datetimepicker-start" id="pts-user-assign-datepicker-start">',
'<input type="text" class="form-control"/>\n<span class="input-group-addon">\n<span class="glyphicon glyphicon-calendar"></span>\n</span></div>',"<b>"+a.i18n.to+'</b><div class="input-group date pts-datetimepicker-end" id="pts-user-assign-datepicker-end">','<input type="text" class="form-control"/>\n<span class="input-group-addon">\n<span class="glyphicon glyphicon-calendar"></span>\n</span></div><div id="pts-assign-user-err" style="color:red"></div><br><div class="pull-right">','<button id="pts-user-assign-btn" class="btn pts-check-color" style="background-color:#00BCD4" data-user="'+
b.index+'">'+a.i18n.assign+"</button></div>",'<br><br><div class="pts-toolbox-user-list"></div></div>'].join("\n");c("#pts-toolbox-container").append(d);c("#pts-user-assign-datepicker-start").datetimepicker().data("DateTimePicker").locale(a.locale).widgetPositioning({horizontal:"left",vertical:"bottom"}).keepOpen(!1);c("#pts-user-assign-datepicker-end").datetimepicker().data("DateTimePicker").locale(a.locale).widgetPositioning({horizontal:"left",vertical:"bottom"}).keepOpen(!1);a.tasks.forEach(function(a,
b){c(".pts-user-assign-tasks-list").append('<option class="pts-user-assign-task-option" value="'+a.id+'" data-task="'+a.id+'">'+a.name+"</option>")});var f={};b.tasks.forEach(function(c,d){f[c.id]||(f[c.id]=[]);f[c.id].push('<i class="glyphicon glyphicon-trash pts-task-assign-delete-user" data-user="'+b.index+'" data-task="'+c.id+'" data-task-index="'+d+'"></i><b>'+a.i18n.from+"</b> "+moment(c.start_date).locale(a.locale).format("lll")+" <b>"+a.i18n.to+"</b> "+moment(c.end_date).locale(a.locale).format("lll"))});
c.each(f,function(a,d){var e=x(a),e=['<p class="pts-check-color progress-bar-striped pts-toolbox-task-header" style="background-color:'+e.color+';margin-top:10px" data-task="'+a+'" data-user="'+b.index+'"><b>',e.name+'</b></p><table style="position: relative;left:30px;"><tbody class="pts-user-sorted-task" data-task="'+a+'" class="pts-toolbox-user-list" data-head="'+b.index+'">',"</tbody></table>"].join("\n");c(".pts-toolbox-user-list").append(e);d.forEach(function(b){c(".pts-user-sorted-task[data-task="+
a+"]").append("<tr><td>"+b+"</td></tr>")})});y()},ma=function(){h.info("CALL FUNCTION: generateToolboxContentSeeAll");var b=['<div class="panel-body">','<h4 class="text-semibold pts-toolbox-title pts-close-toolbox pts-check-color" style="background-color:'+a.defaultColor+'" data-update="true">'+a.i18n.seeAll,'<i class="glyphicon glyphicon-remove pull-right"></i></h4>',"<h4>"+a.i18n.users+" ("+a.users.length+')</h4><div class="pts-toolbox-user-list"></div>',"<h4>"+a.i18n.tasks+" ("+a.tasks.length+
')</h4><div class="pts-toolbox-task-list"></div></div>'].join("\n");c("#pts-toolbox-container").append(b);a.tasks.forEach(function(b){var d=Object.keys(b.users).length;b=['<p class="pts-check-color progress-bar-striped pts-toolbox-task-header" style="background-color:'+b.color+';margin-top:10px" data-task="'+b.id+'"><b>',b.name+"</b> - "+d+" "+(1<d?a.i18n.assignedUsers:a.i18n.assignedUser)+"</p>"].join("\n");c(".pts-toolbox-task-list").append(b)});a.users.forEach(function(b){b=['<p class="pts-check-color pts-toolbox-user-header" style="background-color:'+
a.defaultColor+';margin-top:10px" data-user="'+b.index+'"><b>',b.name+"</b> - "+b.tasks.length+" "+(1<b.tasks.length?a.i18n.allocations:a.i18n.allocation)+"</p>"].join("\n");c(".pts-toolbox-user-list").append(b)});y()},aa=function(){h.info("CALL FUNCTION: generateListBaseView");a.list||(a.list={});a.list.display="today";var b=['<button class="btn btn-sm pts-list-range-btn" data-value="all">'+a.i18n.all+"</button>",'<button class="btn btn-sm pts-list-range-btn selected" data-value="today">'+a.i18n.today+
"</button>",'<button class="btn btn-sm pts-list-range-btn" data-value="week">'+a.i18n.thisWeek+"</button>",'<button class="btn btn-sm pts-list-range-btn" data-value="month">'+a.i18n.thisMonth+"</button>",'<button class="btn btn-sm pts-list-range-btn" data-value="year">'+a.i18n.thisYear+"</button>",'<button class="btn btn-sm pts-list-range-btn" data-value="personalized">'+a.i18n.personalized+"</button>",'<div class="pts-list-personalized-inputs-container row"></div>'].join("\n"),d=['<div class="dropdown" style="top:2px"><button id="addDropdown" class="btn btn-sm pts-btn-add-elem dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\n<i class="glyphicon glyphicon-plus"></i></button>\n<ul class="dropdown-menu" aria-labelledby="addDropdown">',
'<li><a href="#" class="pts-add-new-task">'+a.i18n.addNewTask+"</a></li>",'<li><a href="#" class="pts-add-new-user">'+a.i18n.addNewUser+"</a></li></ul></div>"].join("\n");c(".pts-column-title-container > div").append(b);c(".pts-corner-mask").append(d);b=['<input class="pts-list-search-task" placeholder="'+a.i18n.search+'">','<label class="checkbox-inline text-no-select" style="margin-left:5px;"><input id="pts-list-task-select-all" type="checkbox" checked="checked">'+a.i18n.selectAll+"</label>"].join("\n");
c(".pts-line-title-container").append(b);a.tasks.forEach(function(a){a=['<div class="pts-list-row-task progress-bar-striped pts-check-color" style="background-color:'+a.color+'">','<label class="checkbox-inline"><input class="pts-list-task-enabler-input" type="checkbox" checked="checked" data-task="'+a.id+'">'+a.name+"</label></div>"].join("\n");c(".pts-line-title-container").append(a)});c(".pts-main-content").empty().append('<div class="pts-list-tasks-container row"></div>');y()},pa=function(b){h.log("CALL FUNCTION: generateListTaskContent");
var d=0,f=0,e=0,k=0,l=['<div class="col-lg-12 pts-list-task-container" data-task="'+b.id+'">','<div class="panel panel-primary" style="border-color:'+b.color+'">','<div class="panel-heading progress-bar-striped pts-check-color pts-list-task-header" style="background-color:'+b.color+";border-color:"+b.color+'"','data-task="'+b.id+'">','<h6 class="panel-title">'+b.name+(b.tag?' <span class="label label-default pts-check-color" style="background-color:'+b.tagColor+'">'+b.tag+"</span><br>":"")+"</h6>",
'<a class="heading-elements-toggle"><i class="icon-menu"></i></a></div>','<div class="panel-body">'+(b.description?b.description:"")+"</div>",'<div class="panel-body"><div class="table-responsive">','<table class="table table-bordered"><tbody class="pts-list-date-list" data-task="'+b.id+'"></tbody></table>','</div></div><div class="panel-footer pts-list-task-footer"></div></div></div>'].join("\n");c(".pts-list-tasks-container").append(l);c.each(b.users,function(h,g){d+=g.length;e++;var l=c(document.createElement("tr"));
l.append('<td class="pts-list-user-name" data-user="'+h+'">'+a.users[h].name+'</td><td class="pts-dt-list"></td>');var m=!1;g.forEach(function(b){if(z(a.list,a.users[h].tasks[b])||"all"===a.list.display)l.children(".pts-dt-list").append("- <b>"+a.i18n.from+"</b> "+moment(a.users[h].tasks[b].start_date).locale(a.locale).format("lll")+"<b> "+a.i18n.to+"</b> "+moment(a.users[h].tasks[b].end_date).locale(a.locale).format("lll")+"<br>"),0==m&&k++,m=!0,f++});m&&c(".pts-list-date-list[data-task="+b.id+"]").append(l)});
0!==k&&0!==f||c(".pts-list-task-container[data-task="+b.id+"]").remove();l=["<p><b>"+e+"</b> "+a.i18n.usersWhose+" <b>"+k+"</b> "+a.i18n.inSelectedPeriod+"</p>","<p><b>"+d+"</b> "+a.i18n.cycleWhose+" <b>"+f+"</b> "+a.i18n.inSelectedPeriod+"</p>"].join("\n");c(".pts-list-task-container[data-task="+b.id+"] .pts-list-task-footer").append(l);y()},na=function(){var b=['<div class="panel-body">','<h4 class="text-semibold pts-toolbox-title pts-close-toolbox pts-check-color" style="background-color:'+a.defaultColor+
'" data-update="true">'+a.i18n.filters,'<button class="btn btn-danger btn-xs pts-filters-delete-all">'+a.i18n.deleteAll+"</button>",'<i class="glyphicon glyphicon-remove pull-right"></i></h4>','<button class="btn pts-check-color pts-create-filter" style="background-color:'+a.defaultColor+';margin-bottom:20px">','<i class="glyphicon glyphicon-plus"></i> '+a.i18n.addFilter+"</button>",'<div class="pts-toolbox-filters-list"></div></div>'].join("\n");c("#pts-toolbox-container").append(b);a.filters.forEach(function(a){Z(a)})},
Z=function(b){var d=b?b.id:S();b=['<div class="pts-filter-container row" data-filter="'+d+'"><p>'+(b?'<b style="color:green"><i class="glyphicon glyphicon-ok"></i> '+a.i18n.active+"</b>":'<b style="color:red"><i class="glyphicon glyphicon-remove"></i> '+a.i18n.inactive+"</b>")+"</p>",'<div class="col-lg-12" style="margin-bottom: 10px"><select class="form-control pts-filter-target" data-filter="'+d+'">','<option value="task" '+(b&&"task"==b.target?'selected="selected"':"")+">"+a.i18n.tasks+"</option>",
'<option value="user" '+(b&&"user"==b.target?'selected="selected"':"")+">"+a.i18n.users+"</option>",'<option value="tag" '+(b&&"tag"==b.target?'selected="selected"':"")+">"+a.i18n.tags+"</option>",'</select></div><div class="col-lg-12">','<div class="input-group" data-filter="'+d+'"><div class="input-group-btn">','<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" style="position:relative;bottom:2px;">',(b&&"out"==b.type?
a.i18n.notContains:a.i18n.contains)+' <span class="caret"></span></button>','<ul class="dropdown-menu"><li><a class="pts-filter-switch" data-target="in" href="#">'+a.i18n.contains+"</a></li>",'<li><a class="pts-filter-switch" data-target="out" href="#">'+a.i18n.notContains+"</a></li></ul></div>",'<input type="text" class="form-control pts-filter-value" data-contains="'+(b&&"out"==b.type?"out":"in")+'" value="'+(b?b.value:"")+'"></div>','<div class="pts-filter-err" style="color:red"></div></div>\n<div class="btn-group">',
'<button type="button" class="pts-delete-filter-btn btn btn-danger" data-filter="'+d+'">'+a.i18n.remove+"</button>",'<button type="button" class="btn pts-submit-filter-btn pts-check-color" style="background-color:'+a.defaultColor+'" data-filter="'+d+'">',a.i18n.confirm+"</button></div></div>"].join("\n");c(".pts-toolbox-filters-list").prepend(b);y()},u=function(b,d,f,e){h.info("CALL FUNCTION: generateNotification");if(!a.disableNotifications){var k=S(),l="";f&&f.groups&&f.tasks&&f.users&&(l='<a href="#" data-notification="'+
k+'" class="pts-notif-undo-btn">'+a.i18n.cancel+"</a>",a.undo[k]=f);b=['<div class="animated fadeIn alert alert-'+b+' alert-dismissible" role="alert" data-id="'+k+'">','<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>',d+" </div>"].join("\n");c("#pts-notification-container").html(b);c(".alert[data-id="+k+"]").append(l);setTimeout(function(){c(".alert[data-id="+k+"]").remove();if(a.undo[k]&&(e&&"function"===typeof e&&e(a),
a.onChange&&"function"===typeof a.onChange))a.onChange(a);a.undo=[]},a.notificationDuration)}};P();(function(){h.info("CALL FUNCTION: generateHeader");var b=['<div id="pts-notification-container"></div>\n<div class="pts-header row">\n<div class="pts-header-left-container pull-left">\n<div class="form-group">\n<div class="input-group date hidden-xs" id="header-datetimepicker">\n<input type="text" class="form-control"/>\n<span class="input-group-addon">\n<span class="glyphicon glyphicon-calendar"></span>\n</span></div></div>\n<div class="pts-nav-buttons">\n<button class="btn pts-btn-previous"><i class="glyphicon glyphicon-chevron-left"></i></button>\n<button class="btn pts-btn-next"><i class="glyphicon glyphicon-chevron-right"></i></button>\n</div>\n<span class="pts-header-date-display">',
"months"===a.currentDisplay?moment(a.date.selected).locale(a.locale).format("MMMM YYYY"):moment(a.date.selected).locale(a.locale).format("LL"),'</span></div>\n<div class="pts-header-right-container pull-right">','<button class="btn btn-sm pts-btn-day-view '+("days"===a.currentDisplay?"pts-active":"")+'">'+a.i18n.days+"</button>",'<button class="btn btn-sm pts-btn-month-view '+("months"===a.currentDisplay?"pts-active":"")+'">'+a.i18n.months+"</button>",'<button class="btn btn-sm pts-btn-list-view" '+
("list"===a.currentDisplay?"pts-active":"")+">"+a.i18n.list+"</button></div></div>"].join("\n");E.append(b);J()})();m(a.currentDisplay);c(document).on("mouseup",function(){a.resize.count&&(c(".pts-task-tooltip").remove(),va())});c(document).on("mousemove",function(b){0<a.resize.timeout&&(b.pageX>a.resize.origin+60||b.pageX<a.resize.origin-60)&&wa(b)});c(window).bind("beforeunload",function(){if(0<c(".alert").length)return"Ongoing process, please wait a few seconds and retry"});c(".pts-btn-day-view").click(function(){m("days")});
c(".pts-btn-month-view").click(function(){m("months")});c(".pts-btn-list-view").click(function(){m("list")});c(".pts-btn-next").click(function(){M().show();setTimeout(function(){c(".pts-scheduler-container").scrollTop(0);W();M().hide()},0)});c(".pts-btn-previous").click(function(){M().show();setTimeout(function(){c(".pts-scheduler-container").scrollTop(0);X();M().hide()},0)});c("#header-datetimepicker").on("dp.change",function(b){b.date!==a.date.selected&&(a.date.selected=b.date,m(a.currentDisplay),
C(),D(),F())});c(".pts-scheduler-container").scroll(function(){c(".pts-line-title-container div").scrollTop(c(this).scrollTop());c(".pts-column-title-container ").scrollLeft(c(this).scrollLeft());Q()});E.on("click",".close-group-panel",function(){var a=c("#group-container-"+c(this).attr("data-group")),d=c("#user-group-"+c(this).attr("data-group"));"opened"===c(this).attr("data-toggle")?(a.children(".pts-main-group-user").css("display","none"),d.children(".pts-group-content").css("display","none"),
c(this).attr("data-toggle","closed"),c(this).addClass("closed-btn")):(a.children(".pts-main-group-user").css("display","block"),d.children(".pts-group-content").css("display","block"),c(this).attr("data-toggle","opened"),c(this).removeClass("closed-btn"))}).on("click",".pts-column-element[data-date]",function(){a.date.selected=moment(c(this).attr("data-date"));m("days");C();D()}).on("click",".pts-close-toolbox",function(){1==c(this).data("update")?m(a.currentDisplay):B()}).on("click"," .pts-show-user[data-user]",
function(){p(null,c(this).data("user"),"user")}).on("click",".pts-toolbox-task-header[data-task]",function(){p(c(this).data("task"),null,"task")}).on("click",".pts-toolbox-user-header[data-user]",function(){p(null,c(this).data("user"),"user")}).on("click","#pts-list-task-select-all",function(){c(".pts-list-task-enabler-input").prop("checked",c(this).context.checked);G(a.list.display)}).on("click",".pts-list-task-enabler-input",function(){var b=!0;c(".pts-list-task-enabler-input").each(function(){0==
c(this).prop("checked")&&(b=!1)});0==b?c("#pts-list-task-select-all").prop("checked",!1):c("#pts-list-task-select-all").prop("checked",!0);G(a.list.display)}).on("click",".pts-list-range-btn[data-value]",function(){var b=c(this).data("value");a.list.display=b;c(".pts-list-personalized-inputs-container").empty();c(".pts-list-range-btn").removeClass("selected");c(this).addClass("selected");"personalized"!==b?G(b):(h.log("CALL FUNCTION: generateRangePicker"),c(".pts-list-range-btn").css("display","none"),
b=['<div class="col-sm-5"><span>'+a.i18n.from+'</span><div class="input-group date pts-datetimepicker-start" id="pts-list-datetimepicker-start">','<input type="text" class="form-control"/>\n<span class="input-group-addon">\n<span class="glyphicon glyphicon-calendar"></span>\n</span></div></div>','<div class="col-sm-5"><span>'+a.i18n.to+'</span><div class="input-group date pts-datetimepicker-end" id="pts-list-datetimepicker-end">','<input type="text" class="form-control"/>\n<span class="input-group-addon">\n<span class="glyphicon glyphicon-calendar"></span>\n</span></div></div>\n<div class="col-sm-2"><button class="btn pts-list-range-submit btn-icon"><i class="glyphicon glyphicon-ok"></i></button>\n<button class="btn pts-list-range-dismiss btn-danger btn-icon"><i class="glyphicon glyphicon-remove"></i></button></div>'].join("\n"),
c(".pts-list-personalized-inputs-container").append(b),c("#pts-list-datetimepicker-start").datetimepicker().data("DateTimePicker").locale(a.locale),c("#pts-list-datetimepicker-end").datetimepicker().data("DateTimePicker").locale(a.locale))}).on("click",".pts-list-range-submit",function(){a.list.start_date=c("#pts-list-datetimepicker-start").data("DateTimePicker").date();a.list.end_date=c("#pts-list-datetimepicker-end").data("DateTimePicker").date();c(".pts-list-personalized-inputs-container").empty();
c(".pts-list-range-btn").css("display","block");if(!a.list.start_date||!a.list.end_date)return c(".pts-list-range-btn").removeClass("selected");G("personalized")}).on("click",".pts-list-range-dismiss",function(){c(".pts-list-personalized-inputs-container").empty();c(".pts-list-range-btn").css("display","block");c(".pts-list-range-btn").removeClass("selected")}).on("click",".pts-list-user-name[data-user]",function(){p(null,c(this).data("user"),"user")}).on("click",".pts-add-new-task",function(){p(null,
null,"createTask")}).on("click",".pts-add-new-user",function(){p(null,null,"createUser")}).on("click",".pts-create-task-btn",function(){var b=c("#pts-add-task-input-name").val(),d=c("#pts-add-task-input-id").val(),f=c("#pts-add-task-input-description").val(),e=c("#pts-add-task-input-color").val(),h={name:c("#pts-add-task-input-tag").val(),color:c("#pts-add-task-input-tagColor").val()};c("#pts-add-task-err-name").html("");c("#pts-add-task-err-id").html("");c.each(a.tasks,function(e,f){f.name==b&&(c("#pts-add-task-err-name").html(a.i18n.nameAlreadyTaken),
b="");f.id==d&&(c("#pts-add-task-err-id").html(a.i18n.idAlreadyTaken),b="")});1>b.length||(B(),qa(b,d,f,e,h,c(this).data("assign")))}).on("click",".pts-create-user-btn",function(){var b=c("#pts-add-user-input-name").val(),d=c("#pts-add-user-input-group").val();c("#pts-add-user-err-name").html("");if(1>b.length)return c("#pts-add-user-err-name").html(a.i18n.requiredField);B();var f=c(this).data("assign");h.info("CALL FUNCTION: createNewUser");var e=w();a.users.push({name:b,group:d?d:"",tasks:[]});
var d=a.users.length-1,k=a.users[d],l=a.users.length-1;k.isShowed=U(k);k.lineHeight=V(k);k.index=l;u("success",a.i18n.notif.userCreated+" : <b>"+b+"</b>",e,a.onUserCreation);1==f?p(null,d,"assignUser"):m(a.currentDisplay)}).on("click",".pts-delete-task-btn[data-task]",function(){var b=c(this);"false"==b.attr("data-confirm")?(b.text(a.i18n.confirm),b.attr("data-confirm",!0),setTimeout(function(){b.text(a.i18n.remove);b.attr("data-confirm",!1)},2E3)):ra(b.data("task"))}).on("click",".pts-assign-task-btn",
function(){p(c(this).data("task"),null,"assignTask")}).on("click","#pts-task-assign-btn[data-task]",function(){var b=c(".pts-datetimepicker-start").data("DateTimePicker").date(),d=c(".pts-datetimepicker-end").data("DateTimePicker").date(),f=c(".pts-task-assign-users-list").val(),e=x(c(this).data("task"));f&&b&&d?sa(f,e,b,d):c("#pts-assign-task-err").text(a.i18n.allInputRequired)}).on("click","#pts-user-assign-btn[data-user]",function(){var b=c(".pts-datetimepicker-start").data("DateTimePicker").date(),
d=c(".pts-datetimepicker-end").data("DateTimePicker").date(),f=c(".pts-user-assign-tasks-list").val(),e=a.users[c(this).data("user")];e&&f&&b&&d?ta(e,f,b,d):c("#pts-assign-user-err").text(a.i18n.allInputRequired)}).on("click",".pts-main-group-user, .pts-scheduler-container",function(b){b.target!==this||0>=c("#pts-toolbox-container[data-toggle=opened]").length||(1==c(".pts-close-toolbox").data("update")?m(a.currentDisplay):B())}).on("click",".pts-task-assign-delete-user[data-user][data-task][data-task-index]",
function(){var b=c(this).data("user"),d=x(c(this).data("task")),f=c(this).data("task-index");a.users[b].tasks[f].id==d.id&&(Y(a.users[b],d,f),c(this).parent("td").remove())}).on("click",".pts-edit-task-btn[data-task]",function(){p(c(this).data("task"),null,"editTask")}).on("click",".pts-edit-task-confirm-btn[data-task]",function(){var b=x(c(this).data("task")),d,f,e,k,l;d=c("#pts-edit-task-input-name").val();f=c("#pts-edit-task-input-color").val();e=c("#pts-edit-task-input-description").val();k=c("#pts-edit-task-input-tag").val();
l=c("#pts-edit-task-input-tagColor").val();h.info("CALL FUNCTION: editTask");var n=w();b.name=d||b.name;b.color=f||b.color;b.description=e||"";b.tag=k||"";b.tagColor=l||"";m(a.currentDisplay);u("success",a.i18n.notif.taskInformationsUpdated,n,a.onTaskEdition)}).on("click",".pts-toolbox-back-btn[data-target]",function(){p(c(this).data("task"),c(this).data("user"),c(this).data("target"))}).on("click",".pts-delete-user-btn[data-user]",function(){var b=c(this),d=a.users[b.data("user")];"false"==b.attr("data-confirm")?
(b.text(a.i18n.confirm),b.attr("data-confirm",!0),setTimeout(function(){b.text(a.i18n.remove);b.attr("data-confirm",!1)},2E3)):d&&ua(d)}).on("click",".pts-edit-user-btn[data-user]",function(){p(null,c(this).data("user"),"editUser")}).on("click",".pts-assign-user-btn[data-user]",function(){p(null,c(this).data("user"),"assignUser")}).on("click",".pts-edit-user-confirm-btn[data-user]",function(){var b,d;b=c("#pts-edit-user-input-name").val();d=c("#pts-edit-user-input-group").val();if(1>=b.length)return c("#pts-edit-user-err-name").html(a.i18n.requiredField);
var f=c(this).data("user");if(a.users[f]){var e=w();a.users[f].name=b;a.users[f].group=d?d:"";K();m(a.currentDisplay);u("success",a.i18n.notif.userEdited,e,a.onUserEdition)}}).on("click",".pts-button-see-all",function(a){a.stopPropagation();p(null,null,"seeAll")}).on("click",".pts-notif-undo-btn[data-notification]",function(b){b.stopPropagation();b=c(this).data("notification");var d=a.undo[b];d&&(a.tasks=d.tasks,a.users=d.users,a.groups=d.groups,P(),K(),O(),m(a.currentDisplay),c(".alert[data-id="+
b+"]").remove())}).on("click",".pts-user-edit-task[data-task][data-user]",function(b){c("td").css("display","table-cell");c(this).parent().css("display","none");c(".pts-edit-assignation-box").remove();var d=a.users[c(this).data("user")];if((b=d.tasks[c(this).data("task-index")])&&b.id===c(this).data("task")){var f=c(this),e=c(this).data("task-index"),d=['<div class="col-sm-10 row"><div class="col-sm-12" style="display:inline-flex"><label for="pts-list-datetimepicker-start" style="right:10px;position: relative;">'+
a.i18n.from+"</label>",'<div class="input-group date pts-datetimepicker-start" id="pts-list-datetimepicker-start" data-update="no" style="margin-bottom:6px">\n<input type="text" class="form-control"/>\n<span class="input-group-addon">\n<span class="glyphicon glyphicon-calendar"></span>\n</span></div></div>','<div class="col-sm-12" style="display:inline-flex"><label for="pts-list-datetimepicker-end" style="right:10px;position: relative;">'+a.i18n.to+"</label>",'<div class="input-group date pts-datetimepicker-end" id="pts-list-datetimepicker-end">\n<input type="text" class="form-control" />\n<span class="input-group-addon">\n<span class="glyphicon glyphicon-calendar"></span>\n</span></div></div><div class="pts-edit-assignation-err" style="color:red"></div></div>',
'<div class="col-sm-2"><button class="btn btn-success pts-edit-assignation-submit btn-icon" data-task="'+b.id+'" data-user="'+d.index+'" data-task-index="'+e+'">','<i class="glyphicon glyphicon-ok"></i></button>\n<button class="btn pts-edit-assignation-dismiss btn-danger btn-icon"><i class="glyphicon glyphicon-remove"></i></button></div>'].join("\n");f.parent().parent().after('<tr><td><div class="pts-edit-assignation-box row">'+d+"</div></td></tr>");c(".pts-datetimepicker-end").datetimepicker().data("DateTimePicker").locale(a.locale).widgetPositioning({horizontal:"right",
vertical:"bottom"}).date(moment(b.end_date)).viewDate(moment(b.end_date)).defaultDate(moment(b.end_date)).minDate(moment(b.start_date)).keepOpen(!1);c(".pts-datetimepicker-start").datetimepicker().data("DateTimePicker").locale(a.locale).widgetPositioning({horizontal:"left",vertical:"bottom"}).date(moment(b.start_date)).viewDate(moment(b.start_date)).defaultDate(moment(b.start_date)).keepOpen(!1)}}).on("click",".pts-edit-assignation-submit[data-task][data-user][data-task-index]",function(b){b=a.users[c(this).data("user")];
var d=b.tasks[c(this).data("task-index")],f=c(this).data("task-index");xa(b,d,f)}).on("click",".pts-edit-assignation-dismiss",function(a){c("td").css("display","table-cell");c(".pts-edit-assignation-box").remove()}).on("click",".pts-open-filters-menu",function(a){p(null,null,"filters")}).on("click",".pts-create-filter",function(a){Z()}).on("click",".pts-filter-switch[data-target]",function(b){b=c(this).data("target");var d=c(this).closest(".input-group-btn"),f=d.parent().children("input.pts-filter-value");
d.children("button.dropdown-toggle").html(("in"==b?a.i18n.contains:a.i18n.notContains)+' <span class="caret"></span>');f.data("contains",b)}).on("click",".pts-submit-filter-btn[data-filter]",function(){var b=c(".input-group[data-filter="+c(this).data("filter")+"]"),d={id:c(this).data("filter"),target:c(".pts-filter-target[data-filter="+c(this).data("filter")+"]").val(),value:b.children("input.pts-filter-value").val(),type:b.children("input.pts-filter-value").data("contains")};if(d.value)b.parent().children(".pts-filter-err").html(""),
c(".pts-filter-container[data-filter="+d.id+"]").children("p").html('<b style="color:green"><i class="glyphicon glyphicon-ok"></i> '+a.i18n.active+"</b>"),ya(d);else return b.parent().children(".pts-filter-err").html(a.i18n.allInputRequired)}).on("click",".pts-delete-filter-btn[data-filter]",function(){za(c(this).data("filter"))}).on("click",".pts-filters-delete-all",function(){a.filters=[];c(".pts-filter-container").remove();u("success",a.i18n.notif.allFiltersRemoved)}).on("change","#hide-user-btn",
function(){a.hideEmptyLines=c(this).is(":checked");C();D();F()}).on("change","#disable-labels-mov",function(){a.disableLabelsMovement=c(this).is(":checked");C();D();F()}).on("change","#pts-add-user-select-group",function(){c("#pts-add-user-input-group").val(c(this).val())}).on("change","#pts-edit-user-select-group",function(){c("#pts-edit-user-input-group").val(c(this).val())}).on("dp.change",".pts-datetimepicker-start",function(a){"no"!=c(this).data("update")&&c(".pts-datetimepicker-end").data("DateTimePicker").date(a.date).minDate(a.date)}).on("dp.change",
".pts-datetimepicker-start, .pts-datetimepicker-end",function(a){a=c(".pts-datetimepicker-start");var b=c(".pts-datetimepicker-end");a.data("DateTimePicker")&&b.data("DateTimePicker")&&(a.data("DateTimePicker").hide(),b.data("DateTimePicker").hide())}).on("mousedown",".pts-line-marker[data-task], .pts-list-task-header[data-task]",function(){p(c(this).attr("data-task"),null,"task")}).on("keyup",".pts-list-search-task",function(){var a=c(this).val().toLowerCase();c(".pts-list-row-task").each(function(){0<=
c(this).children("label").text().toLowerCase().indexOf(a)?c(this).css("display","block"):c(this).css("display","none")})}).on("mousedown",".pts-task-resizer[data-task][data-user][data-end]",function(b){b.stopPropagation();a.resize={origin:c(this).offset().left,element:c(this).parent(),count:0,task:c(this).data("task"),user:c(this).data("user"),end_date:c(this).data("end"),timeout:setInterval(function(){c(document).css("cursor","e-resize")},200)}});c.fn.pitScheduler["default"]=function(){return{options:function(b){switch(b){case "users":return a.users;
case "tasks":return a.tasks;default:return a}},show:function(){return E.show()},hide:function(){return E.hide()},date:function(b){b&&moment(b).isValid()&&(a.date.selected=b,m(a.currentDisplay));return a.date.selected},locale:function(b){-1!==a.i18n.allowed.indexOf(b)?a.locale=b:console.error("Error: the specified locale is not allowed for the current settings");return a.locale},viewMode:function(b){-1!=="days;months;list".indexOf(b)?(a.currentDisplay=b,m(a.currentDisplay)):console.error("Error: the specified view mode do not exist");
return a.currentDisplay},go:function(a){switch(a){case "backward":X();break;default:W()}}}};return E}})(jQuery);