[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/layouts/vlayout/modules/Vtiger/resources/ -> FindDuplicates.js (source)

   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  });


Generated: Fri Nov 28 20:08:37 2014 Cross-referenced by PHPXref 0.7.1