[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/layouts/vlayout/modules/Vtiger/resources/ -> Popup.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  jQuery.Class("Vtiger_Popup_Js",{
  10  
  11      getInstance: function(){
  12          var module = app.getModuleName();
  13          var className = jQuery('#popUpClassName').val();
  14          if(typeof className != 'undefined'){
  15              var moduleClassName = className;
  16          }else{
  17              var moduleClassName = module+"_Popup_Js";
  18          }
  19          var fallbackClassName = Vtiger_Popup_Js;
  20          if(typeof window[moduleClassName] != 'undefined'){
  21              var instance = new window[moduleClassName]();
  22          }else{
  23              var instance = new fallbackClassName();
  24          }
  25          return instance;
  26      }
  27  
  28  },{
  29  
  30      //holds the event name that child window need to trigger
  31      eventName : '',
  32      popupPageContentsContainer : false,
  33      sourceModule : false,
  34      sourceRecord : false,
  35      sourceField : false,
  36      multiSelect : false,
  37      relatedParentModule : false,
  38      relatedParentRecord : false,
  39  
  40      /**
  41       * Function to get source module
  42       */
  43      getSourceModule : function(){
  44          if(this.sourceModule == false){
  45              this.sourceModule = jQuery('#parentModule').val();
  46          }
  47          return this.sourceModule;
  48      },
  49  
  50      /**
  51       * Function to get source record
  52       */
  53      getSourceRecord : function(){
  54          if(this.sourceRecord == false){
  55              this.sourceRecord = jQuery('#sourceRecord').val();
  56          }
  57          return this.sourceRecord;
  58      },
  59  
  60      /**
  61       * Function to get source field
  62       */
  63      getSourceField : function(){
  64          if(this.sourceField == false){
  65              this.sourceField = jQuery('#sourceField').val();
  66          }
  67          return this.sourceField;
  68      },
  69  
  70      /**
  71       * Function to get related parent module
  72       */
  73      getRelatedParentModule : function(){
  74          if(this.relatedParentModule == false){
  75              this.relatedParentModule = jQuery('#relatedParentModule').val();
  76          }
  77          return this.relatedParentModule;
  78      },
  79      /**
  80       * Function to get related parent id
  81       */
  82      getRelatedParentRecord : function(){
  83          if(this.relatedParentRecord == false){
  84              this.relatedParentRecord = jQuery('#relatedParentId').val();
  85          }
  86          return this.relatedParentRecord;
  87      },
  88  
  89      /**
  90       * Function to get Search key
  91       */
  92      getSearchKey : function(){
  93          return jQuery('#searchableColumnsList').val();
  94      },
  95  
  96      /**
  97       * Function to get Search value
  98       */
  99      getSearchValue : function(){
 100          return jQuery('#searchvalue').val();
 101      },
 102  
 103      /**
 104       * Function to get Order by
 105       */
 106      getOrderBy : function(){
 107          return jQuery('#orderBy').val();
 108      },
 109  
 110      /**
 111       * Function to get Sort Order
 112       */
 113      getSortOrder : function(){
 114              return jQuery("#sortOrder").val();
 115      },
 116  
 117      /**
 118       * Function to get Page Number
 119       */
 120      getPageNumber : function(){
 121          return jQuery('#pageNumber').val();
 122      },
 123  
 124      getPopupPageContainer : function(){
 125          if(this.popupPageContentsContainer == false) {
 126              this.popupPageContentsContainer = jQuery('#popupPageContainer');
 127          }
 128          return this.popupPageContentsContainer;
 129  
 130      },
 131  
 132      show : function(urlOrParams, cb, windowName, eventName, onLoadCb){
 133          if(typeof urlOrParams == 'undefined'){
 134              urlOrParams = {};
 135          }
 136          if (typeof urlOrParams == 'object' && (typeof urlOrParams['view'] == "undefined")) {
 137              urlOrParams['view'] = 'Popup';
 138          }
 139  
 140          // Target eventName to be trigger post data selection.
 141          if(typeof eventName == 'undefined') {
 142              eventName = 'postSelection'+ Math.floor(Math.random() * 10000);
 143          }
 144          if(typeof windowName == 'undefined' ){
 145              windowName = 'test';
 146          }
 147          if (typeof urlOrParams == 'object') {
 148              urlOrParams['triggerEventName'] = eventName;
 149          } else {
 150              urlOrParams += '&triggerEventName=' + eventName;
 151          }
 152  
 153          var urlString = (typeof urlOrParams == 'string')? urlOrParams : jQuery.param(urlOrParams);
 154          var url = 'index.php?'+urlString;
 155          var popupWinRef =  window.open(url, windowName ,'width=900,height=650,resizable=0,scrollbars=1');
 156          if (typeof this.destroy == 'function') {
 157              // To remove form elements that have created earlier
 158              this.destroy();
 159          }
 160          jQuery.initWindowMsg();
 161  
 162          if(typeof cb != 'undefined') {
 163              this.retrieveSelectedRecords(cb, eventName);
 164          }
 165  
 166           if(typeof onLoadCb == 'function') {
 167              jQuery.windowMsg('Vtiger.OnPopupWindowLoad.Event', function(data){
 168                  onLoadCb(data);
 169              })
 170          }
 171  
 172          // http://stackoverflow.com/questions/13953321/how-can-i-call-a-window-child-function-in-javascript
 173          // This could be useful for the caller to invoke child window methods post load.
 174          return popupWinRef;
 175      },
 176  
 177      retrieveSelectedRecords : function(cb, eventName) {
 178          if(typeof eventName == 'undefined') {
 179              eventName = 'postSelection';
 180          }
 181  
 182          jQuery.windowMsg(eventName, function(data) {
 183              cb(data);
 184          });
 185      },
 186  
 187      /**
 188       * Function which removes the elements that are added by the plugin
 189       *
 190       */
 191      destroy : function(){
 192          jQuery('form[name="windowComm"]').remove();
 193      },
 194  
 195      done : function(result, eventToTrigger, window) {
 196  
 197          if(typeof eventToTrigger == 'undefined' || eventToTrigger.length <=0 ) {
 198              eventToTrigger = 'postSelection'
 199          }
 200  
 201          if(typeof window == 'undefined'){
 202              window = self;
 203          }
 204          window.close();
 205          var data = JSON.stringify(result);
 206          // Because if we have two dollars like this "$$" it's not working because it'll be like escape char(Email Templates)
 207          data = data.replace(/\$\$/g,"$ $");
 208  
 209          jQuery.triggerParentEvent(eventToTrigger, data);
 210  
 211      },
 212  
 213      getView : function(){
 214          var view = jQuery('#view').val();
 215          if(view == '') {
 216              view = 'PopupAjax';
 217          } else {
 218              view = view+'Ajax';
 219          }
 220          return view;
 221      },
 222  
 223      setEventName : function(eventName) {
 224          this.eventName = eventName;
 225      },
 226  
 227      getEventName : function() {
 228          return this.eventName;
 229      },
 230  
 231      isMultiSelectMode : function() {
 232          if(this.multiSelect == false){
 233              this.multiSelect = jQuery('#multi_select');
 234          }
 235          var value = this.multiSelect.val();
 236          if(value) {
 237              return value;
 238          }
 239          return false;
 240      },
 241  
 242      getListViewEntries: function(e){
 243          var thisInstance = this;
 244          var row  = jQuery(e.currentTarget);
 245          var dataUrl = row.data('url');
 246          if(typeof dataUrl != 'undefined'){
 247              dataUrl = dataUrl+'&currency_id='+jQuery('#currencyId').val();
 248              AppConnector.request(dataUrl).then(
 249              function(data){
 250                  for(var id in data){
 251                      if(typeof data[id] == "object"){
 252                      var recordData = data[id];
 253                      }
 254                  }
 255                  thisInstance.done(recordData, thisInstance.getEventName());
 256                  e.preventDefault();
 257              },
 258              function(error,err){
 259  
 260              }
 261              );
 262          } else {
 263              var id = row.data('id');
 264              var recordName = row.data('name');
 265              var recordInfo = row.data('info');
 266              var response ={};
 267              response[id] = {'name' : recordName,'info' : recordInfo} ;
 268              thisInstance.done(response, thisInstance.getEventName());
 269              e.preventDefault();
 270          }
 271  
 272      },
 273  
 274      registerSelectButton : function(){
 275          var popupPageContentsContainer = this.getPopupPageContainer();
 276          var thisInstance = this;
 277          popupPageContentsContainer.on('click','button.select', function(e){
 278              var tableEntriesElement = popupPageContentsContainer.find('table');
 279              var selectedRecordDetails = {};
 280              var recordIds = new Array();
 281              var dataUrl;
 282              jQuery('input.entryCheckBox', tableEntriesElement).each(function(index, checkBoxElement){
 283                  var checkBoxJqueryObject = jQuery(checkBoxElement)
 284                  if(! checkBoxJqueryObject.is(":checked")){
 285                      return true;
 286                  }
 287                  var row = checkBoxJqueryObject.closest('tr');
 288                  var id = row.data('id');
 289                  recordIds.push(id);
 290                  var name = row.data('name');
 291                  dataUrl = row.data('url');
 292                  selectedRecordDetails[id] = {'name' : name};
 293              });
 294              var jsonRecorIds = JSON.stringify(recordIds);
 295              if(Object.keys(selectedRecordDetails).length <= 0) {
 296                  alert(app.vtranslate('JS_PLEASE_SELECT_ONE_RECORD'));
 297              }else{
 298                  if(typeof dataUrl != 'undefined'){
 299                      dataUrl = dataUrl+'&idlist='+jsonRecorIds+'&currency_id='+jQuery('#currencyId').val();
 300                      AppConnector.request(dataUrl).then(
 301                      function(data){
 302                          for(var id in data){
 303                              if(typeof data[id] == "object"){
 304                              var recordData = data[id];
 305                              }
 306                          }
 307                          var recordDataLength = Object.keys(recordData).length;
 308                          if(recordDataLength == 1){
 309                              recordData = recordData[0];
 310                          }
 311                          thisInstance.done(recordData, thisInstance.getEventName());
 312                          e.preventDefault();
 313                      },
 314                      function(error,err){
 315  
 316                      }
 317                  );
 318                  }else{
 319                      thisInstance.done(selectedRecordDetails, thisInstance.getEventName());
 320                  }
 321              }
 322          });
 323      },
 324  
 325      selectAllHandler : function(e){
 326          var currentElement = jQuery(e.currentTarget);
 327          var isMainCheckBoxChecked = currentElement.is(':checked');
 328          var tableElement = currentElement.closest('table');
 329          if(isMainCheckBoxChecked) {
 330              jQuery('input.entryCheckBox', tableElement).attr('checked','checked').closest('tr').addClass('highlightBackgroundColor');
 331          }else {
 332              jQuery('input.entryCheckBox', tableElement).removeAttr('checked').closest('tr').removeClass('highlightBackgroundColor');
 333          }
 334      },
 335  
 336      registerEventForSelectAllInCurrentPage : function(){
 337          var thisInstance = this;
 338          var popupPageContentsContainer = this.getPopupPageContainer();
 339          popupPageContentsContainer.on('change','input.selectAllInCurrentPage',function(e){
 340              thisInstance.selectAllHandler(e);
 341          });
 342      },
 343  
 344      checkBoxChangeHandler : function(e){
 345          var elem = jQuery(e.currentTarget);
 346          var parentElem = elem.closest('tr');
 347          if(elem.is(':checked')){
 348              parentElem.addClass('highlightBackgroundColor');
 349  
 350          }else{
 351              parentElem.removeClass('highlightBackgroundColor');
 352          }
 353      },
 354  
 355      /**
 356       * Function to register event for entry checkbox change
 357       */
 358      registerEventForCheckboxChange : function(){
 359          var thisInstance = this;
 360          var popupPageContentsContainer = this.getPopupPageContainer();
 361          popupPageContentsContainer.on('click','input.entryCheckBox',function(e){
 362              e.stopPropagation();
 363              thisInstance.checkBoxChangeHandler(e);
 364          });
 365      },
 366      /**
 367       * Function to get complete params
 368       */
 369      getCompleteParams : function(){
 370          var params = {};
 371          params['view'] = this.getView();
 372          params['src_module'] = this.getSourceModule();
 373          params['src_record'] = this.getSourceRecord();
 374          params['src_field'] = this.getSourceField();
 375          params['search_key'] =  this.getSearchKey();
 376          params['search_value'] =  this.getSearchValue();
 377          params['orderby'] =  this.getOrderBy();
 378          params['sortorder'] =  this.getSortOrder();
 379          params['page'] = this.getPageNumber();
 380          params['related_parent_module'] = this.getRelatedParentModule();
 381          params['related_parent_id'] = this.getRelatedParentRecord();
 382          params['module'] = app.getModuleName();
 383  
 384          if(this.isMultiSelectMode()) {
 385              params['multi_select'] = true;
 386          }
 387          return params;
 388      },
 389  
 390      /**
 391       * Function to get Page Records
 392       */
 393      getPageRecords : function(params){
 394          var thisInstance = this;
 395          var aDeferred = jQuery.Deferred();
 396          var progressIndicatorElement = jQuery.progressIndicator({
 397              'position' : 'html',
 398              'blockInfo' : {
 399                  'enabled' : true
 400              }
 401          });
 402          Vtiger_BaseList_Js.getPageRecords(params).then(
 403                  function(data){
 404                      jQuery('#popupContents').html(data);
 405                      Vtiger_Helper_Js.showHorizontalTopScrollBar();
 406                      progressIndicatorElement.progressIndicator({
 407                          'mode' : 'hide'
 408                      })
 409                      thisInstance.calculatePages().then(function(data){
 410                          aDeferred.resolve(data);
 411                      });
 412                  },
 413  
 414                  function(textStatus, errorThrown){
 415                      aDeferred.reject(textStatus, errorThrown);
 416                  }
 417              );
 418          return aDeferred.promise();
 419      },
 420      
 421          /**
 422       * Function to calculate number of pages
 423       */
 424      calculatePages : function() {
 425          var aDeferred = jQuery.Deferred();
 426          var element = jQuery('#totalPageCount');
 427          var totalPageNumber = element.text();
 428          if(totalPageNumber == ""){
 429              var totalRecordCount = jQuery('#totalCount').val();
 430              if(totalRecordCount != '') {
 431                  var recordPerPage = jQuery('#noOfEntries').val();
 432                  if(recordPerPage == '0') recordPerPage = 1;
 433                  pageCount = Math.ceil(totalRecordCount/recordPerPage);
 434                  if(pageCount == 0){
 435                      pageCount = 1;
 436                  }
 437                  element.text(pageCount);
 438                  aDeferred.resolve();
 439                  return aDeferred.promise();
 440              }
 441              this.getPageCount().then(function(data){
 442                  var pageCount = data['result']['page'];
 443                  if(pageCount == 0){
 444                      pageCount = 1;
 445                  }
 446                  element.text(pageCount);
 447                  aDeferred.resolve();
 448              });
 449          } else{
 450              aDeferred.resolve();
 451          }
 452          return aDeferred.promise();
 453      },
 454      
 455      /**
 456       * Function to handle search event
 457       */
 458      searchHandler : function(){
 459          var aDeferred = jQuery.Deferred();
 460          var completeParams = this.getCompleteParams();
 461          completeParams['page'] = 1;
 462          return this.getPageRecords(completeParams).then(
 463              function(data){
 464                  aDeferred.resolve(data);
 465              },
 466  
 467              function(textStatus, errorThrown){
 468                  aDeferred.reject(textStatus, errorThrown);
 469          });
 470          return aDeferred.promise();
 471      },
 472  
 473      /**
 474       * Function to register event for Search
 475       */
 476      registerEventForSearch : function(){
 477          var thisInstance = this;
 478          jQuery('#popupSearchButton').on('click',function(e){
 479              jQuery('#totalPageCount').text("");
 480              thisInstance.searchHandler().then(function(data){
 481                  jQuery('#pageNumber').val(1);
 482                  jQuery('#pageToJump').val(1);
 483                  thisInstance.updatePagination();
 484              });
 485          });
 486      },
 487      /**
 488       * Function to register event for Searching on click of enter
 489       */
 490      registerEventForEnter : function(){
 491          var thisInstance = this;
 492          jQuery('#searchvalue').keyup(function (e) {
 493              if (e.keyCode == 13) {
 494              jQuery('#popupSearchButton').trigger('click');
 495              }
 496          });
 497      },
 498  
 499      /**
 500       * Function to handle Sort
 501       */
 502      sortHandler : function(headerElement){
 503          var aDeferred = jQuery.Deferred();
 504          //Listprice column should not be sorted so checking for class noSorting
 505          if(headerElement.hasClass('noSorting')){
 506              return;
 507          }
 508          var fieldName = headerElement.data('columnname');
 509          var sortOrderVal = headerElement.data('nextsortorderval');
 510          var sortingParams = {
 511              "orderby" : fieldName,
 512              "sortorder" : sortOrderVal
 513          }
 514          var completeParams = this.getCompleteParams();
 515          jQuery.extend(completeParams,sortingParams);
 516          return this.getPageRecords(completeParams).then(
 517              function(data){
 518                  aDeferred.resolve(data);
 519              },
 520  
 521              function(textStatus, errorThrown){
 522                  aDeferred.reject(textStatus, errorThrown);
 523              }
 524          );
 525          return aDeferred.promise();
 526      },
 527  
 528      /**
 529       * Function to register Event for Sorting
 530       */
 531      registerEventForSort : function(){
 532          var thisInstance = this;
 533          var popupPageContentsContainer = this.getPopupPageContainer();
 534          popupPageContentsContainer.on('click','.listViewHeaderValues',function(e){
 535              var element = jQuery(e.currentTarget);
 536              thisInstance.sortHandler(element).then(function(data){
 537                  thisInstance.updatePagination();
 538              });
 539          });
 540      },
 541  
 542      /**
 543       * Function to handle next page navigation
 544       */
 545  
 546      nextPageHandler : function(){
 547          var aDeferred = jQuery.Deferred();
 548          var pageLimit = jQuery('#pageLimit').val();
 549          var noOfEntries = jQuery('#noOfEntries').val();
 550          if(noOfEntries == pageLimit){
 551              var pageNumber = jQuery('#pageNumber').val();
 552              var nextPageNumber = parseInt(pageNumber) + 1;
 553              var pagingParams = {
 554                      "page": nextPageNumber
 555                  }
 556              var completeParams = this.getCompleteParams();
 557              jQuery.extend(completeParams,pagingParams);
 558              this.getPageRecords(completeParams).then(
 559                  function(data){
 560                      jQuery('#pageNumber').val(nextPageNumber);
 561                      jQuery('#pageToJump').val(nextPageNumber);
 562                      aDeferred.resolve(data);
 563                  },
 564  
 565                  function(textStatus, errorThrown){
 566                      aDeferred.reject(textStatus, errorThrown);
 567                  }
 568              );
 569          }
 570          return aDeferred.promise();
 571      },
 572  
 573      /**
 574       * Function to handle Previous page navigation
 575       */
 576      previousPageHandler : function(){
 577          var aDeferred = jQuery.Deferred();
 578          var pageNumber = jQuery('#pageNumber').val();
 579          var previousPageNumber = parseInt(pageNumber) - 1;
 580          if(pageNumber > 1){
 581              var pagingParams = {
 582                  "page": previousPageNumber
 583              }
 584              var completeParams = this.getCompleteParams();
 585              jQuery.extend(completeParams,pagingParams);
 586              this.getPageRecords(completeParams).then(
 587                  function(data){
 588                      jQuery('#pageNumber').val(previousPageNumber);
 589                      jQuery('#pageToJump').val(previousPageNumber);
 590                      aDeferred.resolve(data);
 591                  },
 592  
 593                  function(textStatus, errorThrown){
 594                      aDeferred.reject(textStatus, errorThrown);
 595                  }
 596              );
 597          }
 598          return aDeferred.promise();
 599      },
 600  
 601      /**
 602       * Function to register event for Paging
 603       */
 604      registerEventForPagination : function(){
 605          var thisInstance = this;
 606          jQuery('#listViewNextPageButton').on('click',function(){
 607              thisInstance.nextPageHandler().then(function(data){
 608                  thisInstance.updatePagination();
 609              });
 610          });
 611          jQuery('#listViewPreviousPageButton').on('click',function(){
 612              thisInstance.previousPageHandler().then(function(data){
 613                  thisInstance.updatePagination();
 614              });
 615          });
 616          jQuery('#listViewPageJump').on('click',function(e){
 617              jQuery('#pageToJump').validationEngine('hideAll');
 618              var element = jQuery('#totalPageCount');
 619              var totalPageNumber = element.text();
 620              if(totalPageNumber == ""){
 621                  var totalRecordElement = jQuery('#totalCount');
 622                  var totalRecordCount = totalRecordElement.val();
 623                  if(totalRecordCount != '') {
 624                      var recordPerPage = jQuery('#pageLimit').val();
 625                      if(recordPerPage == '0') recordPerPage = 1;
 626                      pageCount = Math.ceil(totalRecordCount/recordPerPage);
 627                      if(pageCount == 0){
 628                          pageCount = 1;
 629                      }
 630                      element.text(pageCount);
 631                      return;
 632                  }
 633                  element.progressIndicator({});
 634                  thisInstance.getPageCount().then(function(data){
 635                      var pageCount = data['result']['page'];
 636                      element.text(pageCount);
 637                      totalRecordElement.val(data['result']['numberOfRecords']);
 638                      element.progressIndicator({'mode': 'hide'});
 639              });
 640          }
 641          })
 642  
 643          jQuery('#listViewPageJumpDropDown').on('click','li',function(e){
 644              e.stopImmediatePropagation();
 645          }).on('keypress','#pageToJump',function(e){
 646              if(e.which == 13){
 647                  e.stopImmediatePropagation();
 648                  var element = jQuery(e.currentTarget);
 649                  var response = Vtiger_WholeNumberGreaterThanZero_Validator_Js.invokeValidation(element);
 650                  if(typeof response != "undefined"){
 651                      element.validationEngine('showPrompt',response,'',"topLeft",true);
 652                  } else {
 653                      element.validationEngine('hideAll');
 654                      var currentPageElement = jQuery('#pageNumber');
 655                      var currentPageNumber = currentPageElement.val();
 656                      var newPageNumber = parseInt(element.val());
 657                      var totalPages = parseInt(jQuery('#totalPageCount').text());
 658                      if(newPageNumber > totalPages){
 659                          var error = app.vtranslate('JS_PAGE_NOT_EXIST');
 660                          element.validationEngine('showPrompt',error,'',"topLeft",true);
 661                          return;
 662                      }
 663                      if(newPageNumber == currentPageNumber){
 664                          var message = app.vtranslate('JS_YOU_ARE_IN_PAGE_NUMBER')+" "+newPageNumber;
 665                          var params = {
 666                              text: message,
 667                              type: 'info'
 668                          };
 669                          Vtiger_Helper_Js.showMessage(params);
 670                          return;
 671                      }
 672                      var pagingParams = {
 673                          "page": newPageNumber
 674                      }
 675                      var completeParams = thisInstance.getCompleteParams();
 676                      jQuery.extend(completeParams,pagingParams);
 677                      thisInstance.getPageRecords(completeParams).then(
 678                          function(data){
 679                              currentPageElement.val(newPageNumber);
 680                              thisInstance.updatePagination();
 681                              element.closest('.btn-group ').removeClass('open');
 682                          },
 683                          function(textStatus, errorThrown){
 684                          }
 685                      );
 686                  }
 687                  return false;
 688          }
 689          });
 690      },
 691  
 692      registerEventForListViewEntries : function(){
 693          var thisInstance = this;
 694          var popupPageContentsContainer = this.getPopupPageContainer();
 695          popupPageContentsContainer.on('click','.listViewEntries',function(e){
 696              thisInstance.getListViewEntries(e);
 697          });
 698      },
 699  
 700      triggerDisplayTypeEvent : function() {
 701          var widthType = app.cacheGet('widthType', 'narrowWidthType');
 702          if(widthType) {
 703              var elements = jQuery('.listViewEntriesTable').find('td,th');
 704              elements.addClass(widthType);
 705          }
 706      },
 707          /**
 708       * Function to get page count and total number of records in list
 709       */
 710      getPageCount : function(){
 711          var aDeferred = jQuery.Deferred();
 712          var pageJumpParams = {
 713              'mode' : "getPageCount"
 714          }
 715          var completeParams = this.getCompleteParams();
 716          jQuery.extend(completeParams,pageJumpParams);
 717          AppConnector.request(completeParams).then(
 718              function(data) {
 719                  var response;
 720                  if(typeof data != "object"){
 721                      response = JSON.parse(data);
 722                  } else{
 723                      response = data;
 724                  }
 725                  aDeferred.resolve(response);
 726              },
 727              function(error,err){
 728  
 729              }
 730          );
 731          return aDeferred.promise();
 732      },
 733      
 734      /**
 735       * Function to show total records count in listview on hover
 736       * of pageNumber text
 737       */
 738      registerEventForTotalRecordsCount : function(){
 739          var thisInstance = this;
 740          jQuery('.totalNumberOfRecords').on('click',function(e){
 741              var element = jQuery(e.currentTarget);
 742              element.addClass('hide');
 743              element.parent().find('.pageNumbersText').progressIndicator({});
 744              var totalRecordsElement = jQuery('#totalCount');
 745              var totalNumberOfRecords = totalRecordsElement.val();
 746              if(totalNumberOfRecords == '') {
 747                  thisInstance.getPageCount().then(function(data){
 748                      totalNumberOfRecords = data['result']['numberOfRecords'];
 749                      var numberOfPages = data['result']['page'];
 750                      totalRecordsElement.val(totalNumberOfRecords);
 751                      jQuery('#totalPageCount').text(numberOfPages);
 752                      thisInstance.showPagingInfo();
 753                  });
 754              }else{
 755                  thisInstance.showPagingInfo();
 756              }
 757              element.parent().find('.pageNumbersText').progressIndicator({'mode':'hide'});
 758          })
 759      },
 760      
 761      showPagingInfo : function(){
 762          var totalNumberOfRecords = jQuery('#totalCount').val();
 763          var pageNumberElement = jQuery('.pageNumbersText');
 764          var pageRange = pageNumberElement.text();
 765          var newPagingInfo = pageRange+" "+app.vtranslate('of')+" "+totalNumberOfRecords;
 766          var listViewEntriesCount = parseInt(jQuery('#noOfEntries').val());
 767          if(listViewEntriesCount != 0){
 768              jQuery('.pageNumbersText').html(newPagingInfo);
 769          } else {
 770              jQuery('.pageNumbersText').html("");
 771          }
 772      },
 773      
 774      /**
 775       * Function to update Pagining status
 776       */
 777      updatePagination : function(){
 778          var previousPageExist = jQuery('#previousPageExist').val();
 779          var nextPageExist = jQuery('#nextPageExist').val();
 780          var previousPageButton = jQuery('#listViewPreviousPageButton');
 781          var nextPageButton = jQuery('#listViewNextPageButton');
 782          var listViewEntriesCount = jQuery('#noOfEntries').val();
 783          var pageStartRange = jQuery('#pageStartRange').val();
 784          var pageEndRange = jQuery('#pageEndRange').val();
 785          var pageJumpButton = jQuery('#listViewPageJump');
 786          var pages = jQuery('#totalPageCount').text();
 787          var totalNumberOfRecords = jQuery('.totalNumberOfRecords');
 788          var pageNumbersTextElem = jQuery('.pageNumbersText');
 789  
 790          if(pages == 1){
 791              pageJumpButton.attr('disabled',"disabled");
 792          }
 793          if(pages > 1){
 794              pageJumpButton.removeAttr('disabled');
 795          }
 796  
 797          if(previousPageExist != ""){
 798              previousPageButton.removeAttr('disabled');
 799          } else if(previousPageExist == "") {
 800              previousPageButton.attr("disabled","disabled");
 801          }
 802  
 803          if((nextPageExist != "") && (pages >1)){
 804              nextPageButton.removeAttr('disabled');
 805          } else if((nextPageExist == "") || (pages == 1)) {
 806              nextPageButton.attr("disabled","disabled");
 807          }
 808          if(listViewEntriesCount != 0){
 809              var pageNumberText = pageStartRange+" "+app.vtranslate('to')+" "+pageEndRange;
 810              pageNumbersTextElem.html(pageNumberText);
 811              totalNumberOfRecords.removeClass('hide');
 812          } else {
 813              pageNumbersTextElem.html("<span>&nbsp;</span>");
 814              if(!totalNumberOfRecords.hasClass('hide')){
 815                  totalNumberOfRecords.addClass('hide');
 816              }
 817          }
 818  
 819      },
 820  
 821      registerEvents: function(){
 822          var pageNumber = jQuery('#pageNumber').val();
 823          if(pageNumber == 1){
 824              jQuery('#listViewPreviousPageButton').attr("disabled", "disabled");
 825          }
 826          this.registerEventForSelectAllInCurrentPage();
 827          this.registerSelectButton();
 828          this.registerEventForCheckboxChange();
 829          this.registerEventForSearch();
 830          this.registerEventForEnter();
 831          this.registerEventForSort();
 832          this.registerEventForListViewEntries();
 833          //this.triggerDisplayTypeEvent();
 834          var popupPageContainer = jQuery('#popupPageContainer');
 835          if(popupPageContainer.length > 0){
 836              this.registerEventForTotalRecordsCount();
 837              this.registerEventForPagination();
 838          }
 839      }
 840  });
 841  jQuery(document).ready(function() {
 842      var popupInstance = Vtiger_Popup_Js.getInstance();
 843      var triggerEventName = jQuery('.triggerEventName').val();
 844      var documentHeight = (jQuery(document).height())+'px';
 845      jQuery('#popupPageContainer').css('height',documentHeight);
 846      popupInstance.setEventName(triggerEventName);
 847      popupInstance.registerEvents();
 848      Vtiger_Helper_Js.showHorizontalTopScrollBar();
 849  });


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