/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License * The Original Code is: vtiger CRM Open Source * The Initial Developer of the Original Code is vtiger. * Portions created by vtiger are Copyright (C) vtiger. * All Rights Reserved. *************************************************************************************/ Vtiger_Index_Js("Vtiger_TaskManagement_Js",{},{ overlayContainer : false, getOverlayContainer : function(){ if(this.overlayContainer === false){ this.overlayContainer = jQuery('#taskManagementContainer'); } return this.overlayContainer; }, getModuleName : function(){ return "Calendar"; }, getColors : function(){ return jQuery('input[name="colors"]').val(); }, saveFieldValue : function(recordId, fieldNameValueMap){ var aDeferred = jQuery.Deferred(); var data = {}; if(typeof fieldNameValueMap != 'undefined'){ data = fieldNameValueMap; } data['record'] = recordId; data['module'] = this.getModuleName(); data['calendarModule'] = this.getModuleName(); data['action'] = 'SaveAjax'; app.request.post({data:data}).then( function(err, reponseData){ if(err === null){ app.helper.showSuccessNotification({"message":''}); aDeferred.resolve(reponseData); } else { app.helper.showErrorNotification({"message":err}); } } ); return aDeferred.promise(); }, registerStatusCheckboxEvent : function(){ var thisInstance = this; var overlay = this.getOverlayContainer(); overlay.on('click','.statusCheckbox',function(e){ var element = overlay.find(e.currentTarget); var task = element.closest('.task'); var taskSubjectEle = task.find('.taskSubject'); var recordId = task.data('recordid'); var fieldNameValueMap = {}; if (element.is(':checked')) { element.disable(); fieldNameValueMap['value'] = 'Completed'; fieldNameValueMap['field'] = 'taskstatus'; app.helper.showProgress(); thisInstance.saveFieldValue(recordId,fieldNameValueMap).then(function(){ app.helper.hideProgress(); taskSubjectEle.addClass("textStrike"); thisInstance.clearExistingCustomScroll(); thisInstance.loadContents(); }); } }); }, getAllContents : function(params){ var aDeferred = jQuery.Deferred(); this.filterRecords(params, "getAllContents").then(function(data){ aDeferred.resolve(data); }); return aDeferred.promise(); }, getContentsOfPriority : function(params){ var aDeferred = jQuery.Deferred(); this.filterRecords(params, "getContentsOfPriority").then(function(data){ aDeferred.resolve(data); }); return aDeferred.promise(); }, filterRecords : function(params,mode){ var aDeferred = jQuery.Deferred(); var filters = this.getAllFilterParams(); var dataParams = { 'module' : this.getModuleName(), 'filters': filters, 'view' : 'TaskManagement', 'mode' : mode } var dataParams = jQuery.extend(dataParams,params); var colors = this.getColors(); if(typeof colors != "undefined"){ dataParams["colors"] = colors; } app.request.get({"data":dataParams}).then(function(err,data){ if(err === null){ aDeferred.resolve(data); } }); return aDeferred.promise(); }, clearExistingCustomScroll : function(){ var blocksList = jQuery(".contentsBlock"); blocksList.each(function(index,blockElement){ var blockElement = jQuery(blockElement); var scrollableElement = blockElement.find('.scrollable'); scrollableElement.mCustomScrollbar('destroy'); }); }, registerDateFilters : function(){ var thisInstance = this; var overlay = this.getOverlayContainer(); overlay.on("click",".dateFilters button",function(e){ var currentTarget = jQuery(e.currentTarget); if(!currentTarget.hasClass('rangeDisplay')){ jQuery('#taskManagementContainer .dateFilters button').removeClass('active'); currentTarget.addClass('active'); thisInstance.clearExistingCustomScroll(); thisInstance.loadContents(); app.helper.hideProgress(); } }); overlay.on('datepicker-change', 'button[data-calendar-type="range"]', function(e){ var element = jQuery(e.currentTarget); jQuery('#taskManagementContainer .dateFilters button').removeClass('active'); element.addClass('active'); var parentContainer = element.closest('.dateFilters'); parentContainer.find('.selectedRange').html("("+element.val()+")").closest('button').removeClass('hide'); thisInstance.clearExistingCustomScroll(); thisInstance.loadContents(); }); overlay.on('click', '.clearRange', function(e){ var container = jQuery('.dateFilters'); container.find('[data-filtermode="all"]').trigger('click'); container.find('.rangeDisplay').addClass('hide'); }); }, registerTaskManagementSearch : function(){ var thisInstance = this; var overlay = this.getOverlayContainer(); overlay.find('#taskManagementOtherFilters').find('.search').on('click',function(e){ thisInstance.clearExistingCustomScroll(); thisInstance.loadContents(); }); }, registerQuickEditTaskEvent : function(){ var thisInstance = this; var overlay = this.getOverlayContainer(); jQuery('#taskManagementContainer').on('click', ".quickTask",function(e){ e.stopImmediatePropagation(); var target = jQuery(e.currentTarget); var quickCreateNode = jQuery('#quickCreateModules').find('[data-name="Calendar"]'); if(quickCreateNode.length <= 0) { app.helper.showErrorMessage(app.vtranslate('JS_NO_CREATE_OR_NOT_QUICK_CREATE_ENABLED')); } var priority = target.closest(".content").data("priority"); app.event.one("post.QuickCreateForm.show",function(event,form){ var basicInfo = target.closest(".task").data('basicinfo'); var recordId = target.closest(".task").data('recordid'); form.find('.modal-header h4').html(app.vtranslate('JS_CREATE_TASK')); if(typeof basicInfo != "undefined"){ // we should set field values when we edit any record form.append(""); thisInstance.fillPopoverFieldValues(form,basicInfo); } else { var taskSubject = jQuery(".taskSubject."+priority).val(); if(taskSubject.length > 0){ form.find('input[name="subject"]').val(taskSubject); } var taskStatus = form.find('select[name="taskstatus"]'); taskStatus.val('Not Started'); vtUtils.showSelect2ElementView(taskStatus); } var taskPriority = form.find('select[name="taskpriority"]'); if(taskPriority.length > 0){ taskPriority.val(priority); vtUtils.showSelect2ElementView(taskPriority); } form.append(""); }); var QuickCreateParams = {}; QuickCreateParams['noCache'] = false; quickCreateNode.trigger('click', QuickCreateParams); }); }, registerPostQuickCreateSaveEvent : function() { var thisInstance = this; app.event.on('post.QuickCreateForm.save',function(event,data){ if(typeof data == 'object'){ priority = data['taskpriority']['value']; } var contentsBlock = jQuery("#taskManagementContainer").find(".contentsBlock ."+priority.toLowerCase()+""); thisInstance.clearExistingCustomScroll(); thisInstance.loadContent(priority.toLowerCase()); }); }, fillPopoverFieldValues : function(form,data){ var formName = form.attr('name'); for (var key in data) { var value = data[key]; if((key == 'parent_id') || (key == 'contact_id')){ var fieldElement = jQuery('form[name="'+formName+'"]').find('[name="'+key+'_display"]'); }else{ var fieldElement = jQuery('form[name="'+formName+'"]').find('[name="'+key+'"]'); } if(fieldElement.length > 0){ var elementType = fieldElement.data("fieldtype"); if(elementType == "picklist" || elementType == "owner"){ fieldElement.select2("val", value); } else if(elementType == "multipicklist"){ // for multipicklist name in field element will be key[] fieldElement = jQuery('form[name="'+formName+'"]').find('[name="'+key+'[]"]'); if(value != null){ value = value.split(" |##| "); } fieldElement.select2("val", value); }else if(elementType == "checkbox"){ if(value == 1){ fieldElement.attr("checked",true); fieldElement.prop("checked",true); } else { fieldElement.attr("checked",false); fieldElement.prop("checked",false); } } else if(elementType == "reference"){ var parent = fieldElement.closest('.input-group'); if((value != null) && (value["id"] != null)){ parent.find(".sourceField").attr("value",value["id"]); fieldElement.val(value["display_value"]); fieldElement.attr("disabled","disabled"); parent.find('.clearReferenceSelection').removeClass('hide'); parent.find('input[name="popupReferenceModule"]').val(value["module"]); var referenceModuleList = parent.find(".referenceModulesList"); if(referenceModuleList.length > 0){ referenceModuleList.select2("val",value["module"]); } }else { parent.find('.clearReferenceSelection').trigger('click'); } }else { fieldElement.val(value); } } } }, /** * Function to get parameters for related module popup * @param {type} container * @returns {TaskManagementAnonym$1.getPopUpParams.params|TaskManagementAnonym$1.getPopUpParams@call;_super} */ getPopUpParams : function(container) { var params = this._super(container); var sourceFieldElement = jQuery('input[class="sourceField"]',container); if(sourceFieldElement.attr('name') == 'contact_id') { var form = container.closest('form'); var parentIdElement = form.find('[name="parent_id"]'); var closestContainer = parentIdElement.closest('.referencefield-wrapper'); var referenceModule = closestContainer.find('[name="popupReferenceModule"]'); if(parentIdElement.length > 0 && parentIdElement.val().length > 0 && referenceModule.length >0) { params['related_parent_id'] = parentIdElement.val(); params['related_parent_module'] = referenceModule.val(); } } return params; }, saveNewTask : function(fieldValues){ var aDeferred = jQuery.Deferred(); var params = { 'module' : this.getModuleName(), 'action' : 'TaskManagement', 'mode' : 'addTask', 'calendarModule':this.getModuleName() } var postParams = jQuery.extend(params,fieldValues); app.request.post({"data":postParams}).then(function(err,data){ if(err === null){ aDeferred.resolve(data); } }); return aDeferred.promise(); }, registerSubjectFieldEnterEvent : function(){ var thisInstance = this; var overlay = this.getOverlayContainer(); overlay.on("keypress",".taskSubject",function(e){ var currentTarget = jQuery(e.currentTarget); var keycode = (e.keyCode ? e.keyCode : e.which); if(keycode == '13'){ jQuery(this).blur(); var subject = currentTarget.val(); var priority = currentTarget.closest('.content').data("priority"); if(subject.trim() == ""){ app.helper.showErrorNotification({'message': app.vtranslate('JS_SUBJECT_VALUE_CANT_BE_EMPTY')}) return false; } var form = jQuery(".editTaskContent").find("#editTask").clone().removeClass('hide'); vtUtils.applyFieldElementsView(form); var formValues = form.serializeArray(); var count = formValues.length; var fieldNameValueMap = {}; for(var i=0 ; i 0){ taskStatus.find('[value="Not Started"]').attr('selected', "selected"); taskStatus.find('[value="In Progress"]').attr('selected', "selected"); taskStatus.find('[value="Pending Input"]').attr('selected', "selected"); taskStatus.find('[value="Planned"]').attr('selected', "selected"); vtUtils.showSelect2ElementView(taskStatus); this.loadContents(); } }, registerQuickPreviewForTask : function(){ var self = this; var container = this.getOverlayContainer(); container.on('click', '.quickPreview', function(e){ e.preventDefault(); var element = jQuery(e.currentTarget); var recordId = element.data('id'); var href = element.attr("href"); var module = self.getModuleName(); if(typeof href != 'undefined'){ var data = app.convertUrlToDataParams(href); module = data.module; } var vtigerInstance = Vtiger_Index_Js.getInstance(); vtigerInstance.showQuickPreviewForId(recordId, module); }); }, registerEvents : function(){ var thisInstance = this; // this.loadContents(); this.registerMoreButtonClickEvent(); this.registerStatusCheckboxEvent(); this.registerDateFilters(); this.registerTaskManagementSearch(); this.registerEditedTaskCancelEvent(); this.registerSubjectFieldEnterEvent(); this.registerParentModuleChangeEvent(); this.registerTaskDropEvent(); this.registerDeleteTaskEvent(); this.registerQuickEditTaskEvent(); this.registerPostQuickCreateSaveEvent(); this.initializeTaskStatus(); this.registerQuickPreviewForTask(); vtUtils.registerEventForDateFields(jQuery('#taskManagementContainer')); app.event.on("post.filter.load",function(e){ var params = { setHeight: '400px', autoHideScrollbar: false }; app.helper.showVerticalScroll(jQuery('.scrollable'),params); thisInstance.registerTaskDragEvent(); app.helper.hideProgress(); }); } });