[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 /*+********************************************************************************** 2 * The contents of this file are subject to the vtiger CRM Public License Version 1.0 3 * ("License"); You may not use this file except in compliance with the License 4 * The Original Code is: vtiger CRM Open Source 5 * The Initial Developer of the Original Code is vtiger. 6 * Portions created by vtiger are Copyright (C) vtiger. 7 * All Rights Reserved. 8 ************************************************************************************/ 9 Vtiger_List_Js('Vtiger_FindDuplicates_Js',{ 10 11 massDeleteRecords : function(url) { 12 var listInstance = new Vtiger_FindDuplicates_Js(); 13 Vtiger_List_Js.massDeleteRecords(url,listInstance); 14 } 15 },{ 16 17 popupWindowInstance : false, 18 19 /** 20 * Function that is triggered after deleting records 21 */ 22 postMassDeleteRecords : function() { 23 var aDeferred = jQuery.Deferred(); 24 var thisInstance = this; 25 var fields = jQuery('#duplicateSearchFields').val(); 26 var moduleName = app.getModuleName(); 27 var pageNumber = jQuery('#pageNumber').val(); 28 var ignoreEmpty = jQuery('#ignoreEmpty').val(); 29 var url = 'module='+moduleName+'&view=FindDuplicates&fields='+fields+'&ignoreEmpty='+ignoreEmpty; 30 AppConnector.requestPjax(url+'&page='+pageNumber).then( 31 function(data){ 32 jQuery('#listViewContents').html(data); 33 jQuery('#recordsCount').val(''); 34 jQuery('#totalPageCount').text(''); 35 var selectedIds = new Array(); 36 thisInstance.writeSelectedIds(selectedIds); 37 thisInstance.calculatePages().then(function(){ 38 thisInstance.updatePagination(); 39 }); 40 thisInstance.registerMergeRecordEvent(thisInstance.mergeRecordPopupCallback); 41 aDeferred.resolve(); 42 } 43 ); 44 return aDeferred.promise(); 45 }, 46 47 /** 48 * Function registers events for navigation in duplicate search view 49 */ 50 registerPageNavigationEvents : function() { 51 var thisInstance = this; 52 var fields = jQuery('#duplicateSearchFields').val(); 53 var moduleName = app.getModuleName(); 54 var ignoreEmpty = jQuery('#ignoreEmpty').val(); 55 var url = 'module='+moduleName+'&view=FindDuplicates&fields='+fields+'&ignoreEmpty='+ignoreEmpty; 56 57 jQuery('#listViewNextPageButton').on('click',function() { 58 var pageLimit = jQuery('#pageLimit').val(); 59 var noOfEntries = jQuery('#noOfEntries').val(); 60 if(noOfEntries >= pageLimit) { 61 var pageNumber = jQuery('#pageNumber').val(); 62 var nextPageNumber = parseInt(parseFloat(pageNumber)) + 1; 63 AppConnector.requestPjax(url+'&page='+nextPageNumber).then(function(data) { 64 jQuery('#listViewContents').html(data); 65 jQuery('#pageNumber').val(nextPageNumber); 66 jQuery('#pageToJump').val(nextPageNumber); 67 thisInstance.calculatePages().then(function(){ 68 thisInstance.updatePagination(); 69 }); 70 thisInstance.registerMergeRecordEvent(thisInstance.mergeRecordPopupCallback); 71 }); 72 } 73 }); 74 75 jQuery('#listViewPreviousPageButton').on('click',function() { 76 var pageNumber = jQuery('#pageNumber').val(); 77 if(pageNumber > 1) { 78 var previousPageNumber = parseInt(parseFloat(pageNumber)) - 1; 79 jQuery('#pageNumber').val(previousPageNumber); 80 jQuery('#pageToJump').val(previousPageNumber); 81 AppConnector.requestPjax(url+'&page='+previousPageNumber).then( 82 function(data){ 83 jQuery('#listViewContents').html(data); 84 thisInstance.calculatePages().then(function(){ 85 thisInstance.updatePagination(); 86 }); 87 thisInstance.registerMergeRecordEvent(thisInstance.mergeRecordPopupCallback); 88 } 89 ); 90 } 91 }); 92 93 jQuery('#listViewPageJump').on('click', function(e) { 94 jQuery('#pageToJump').validationEngine('hideAll'); 95 var element = jQuery('#totalPageCount'); 96 var totalPageNumber = element.text(); 97 if(totalPageNumber == "") { 98 var totalRecordCount = jQuery('#totalCount').val(); 99 if(totalRecordCount != 'undefined') { 100 var recordPerPage = jQuery('#noOfEntries').val(); 101 if(recordPerPage == '0') recordPerPage = 1; 102 var totalPages = Math.ceil(totalRecordCount/recordPerPage); 103 if(totalPages == 0){ 104 totalPages = 1; 105 } 106 element.text(totalPages); 107 return; 108 } 109 element.progressIndicator({}); 110 thisInstance.getPageCount().then(function(data){ 111 var pageCount = data['result']['page']; 112 if(pageCount == 0){ 113 pageCount = 1; 114 } 115 element.text(pageCount); 116 element.progressIndicator({'mode': 'hide'}); 117 }); 118 } 119 }); 120 121 jQuery('#listViewPageJumpDropDown').on('click','li',function(e) { 122 e.stopImmediatePropagation(); 123 }).on('keypress','#pageToJump',function(e) { 124 if(e.which == 13) { 125 e.stopImmediatePropagation(); 126 var element = jQuery(e.currentTarget); 127 var response = Vtiger_WholeNumberGreaterThanZero_Validator_Js.invokeValidation(element); 128 if(typeof response != "undefined"){ 129 element.validationEngine('showPrompt',response,'',"topLeft",true); 130 } else { 131 element.validationEngine('hideAll'); 132 var currentPageElement = jQuery('#pageNumber'); 133 var currentPageNumber = currentPageElement.val(); 134 var newPageNumber = parseInt(jQuery(e.currentTarget).val()); 135 var totalPages = parseInt(jQuery('#totalPageCount').text()); 136 if(newPageNumber > totalPages){ 137 var error = app.vtranslate('JS_PAGE_NOT_EXIST'); 138 element.validationEngine('showPrompt',error,'',"topLeft",true); 139 return; 140 } 141 if(newPageNumber == currentPageNumber){ 142 var message = app.vtranslate('JS_YOU_ARE_IN_PAGE_NUMBER')+" "+newPageNumber; 143 var params = { 144 text: message, 145 type: 'info' 146 }; 147 Vtiger_Helper_Js.showMessage(params); 148 return; 149 } 150 currentPageElement.val(newPageNumber); 151 152 AppConnector.requestPjax(url+'&page='+newPageNumber).then( 153 function(data){ 154 jQuery('#listViewContents').html(data); 155 thisInstance.updatePagination(); 156 element.closest('.btn-group').removeClass('open'); 157 thisInstance.registerMergeRecordEvent(thisInstance.mergeRecordPopupCallback); 158 } 159 ); 160 } 161 return false; 162 } 163 }); 164 }, 165 166 /** 167 * Function registers event for merge button 168 */ 169 registerMergeRecordEvent : function(cb) { 170 var thisInstance = this; 171 jQuery('input[name="merge"]').on('click', function(e) { 172 var element = jQuery(e.currentTarget); 173 var groupName = element.data('group'); 174 var mergeRecordsCheckBoxes = jQuery('input[name="mergeRecord"]:checked'); 175 if(mergeRecordsCheckBoxes.length < 2) { 176 Vtiger_Helper_Js.showMessage({text: app.vtranslate('JS_SELECT_ATLEAST_TWO_RECORD_FOR_MERGING')}); 177 return false; 178 } else { 179 var count = 0; 180 var records = []; 181 var stop = false; 182 mergeRecordsCheckBoxes.each(function(key, obj) { 183 var ele = jQuery(obj); 184 if(ele.data('group') != groupName) { 185 Vtiger_Helper_Js.showMessage({text: app.vtranslate('JS_SELECT_RECORDS_TO_MERGE_FROM_SAME_GROUP')}); 186 stop = true; 187 return false; 188 } 189 records.push(ele.data('id')); 190 count++; 191 }); 192 if(stop) return false; 193 if(count > 3) { 194 Vtiger_Helper_Js.showMessage({text: app.vtranslate('JS_ALLOWED_TO_SELECT_MAX_OF_THREE_RECORDS')}); 195 return false; 196 } 197 var popupInstance = Vtiger_Popup_Js.getInstance(); 198 var url = 'module='+app.getModuleName()+'&view=MergeRecord&records='+records; 199 thisInstance.popupWindowInstance = popupInstance.show(url, '', '', '', function(params){ 200 thisInstance.mergeRecordPopupCallback(); 201 }); 202 } 203 }); 204 }, 205 206 /** 207 * Callback function after the merge popup appears 208 */ 209 mergeRecordPopupCallback : function() { 210 var thisInstance = this; 211 var win = thisInstance.popupWindowInstance; 212 var form = win.document.forms['massMerge']; 213 jQuery(form.primaryRecord).on('change', function(event) { 214 var id = jQuery(event.currentTarget).val(); 215 jQuery(form).find('[data-id='+id+']').attr('checked', true); 216 }); 217 218 jQuery(form).on('submit', function(e){ 219 e.preventDefault(); 220 var params = jQuery(form).serialize(); 221 AppConnector.request(params).then(function(data){ 222 win.close(); 223 thisInstance.postMassDeleteRecords(); 224 }); 225 }); 226 }, 227 228 /** 229 * Function registers various events for duplicate search 230 */ 231 registerEvents : function() { 232 var thisInstance = this; 233 thisInstance.registerMergeRecordEvent(thisInstance.mergeRecordPopupCallback); 234 thisInstance.registerMainCheckBoxClickEvent(); 235 thisInstance.registerPageNavigationEvents(); 236 thisInstance.registerCheckBoxClickEvent(); 237 thisInstance.registerSelectAllClickEvent(); 238 thisInstance.registerDeselectAllClickEvent(); 239 thisInstance.registerEventForTotalRecordsCount(); 240 }, 241 242 /** 243 * Function returns current view name for the module 244 */ 245 getCurrentCvId : function(){ 246 return jQuery('#viewName').val(); 247 }, 248 249 /** 250 * Function gets the record count 251 */ 252 getRecordsCount : function(){ 253 var aDeferred = jQuery.Deferred(); 254 var recordCountVal = jQuery("#recordsCount").val(); 255 if(recordCountVal != ''){ 256 aDeferred.resolve(recordCountVal); 257 } else { 258 var count = ''; 259 var module = app.getModuleName(); 260 var parent = app.getParentModuleName(); 261 var fields = jQuery('#duplicateSearchFields').val(); 262 var ignoreEmpty = jQuery('#ignoreEmpty').val(); 263 var postData = { 264 "module": module, "parent": parent, 265 "view": "FindDuplicatesAjax", "mode": "getRecordsCount", 266 "fields": fields, "ignoreEmpty":ignoreEmpty 267 } 268 AppConnector.request(postData).then( 269 function(data) { 270 var response = JSON.parse(data); 271 jQuery("#recordsCount").val(response['result']['count']); 272 count = response['result']['count']; 273 aDeferred.resolve(count); 274 }, 275 function(error,err){ 276 } 277 ); 278 } 279 return aDeferred.promise(); 280 } 281 });
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |