849 lines
24 KiB
JavaScript
849 lines
24 KiB
JavaScript
/*+***********************************************************************************
|
|
* 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.
|
|
*************************************************************************************/
|
|
jQuery.Class("Vtiger_Popup_Js",{
|
|
|
|
getInstance: function(){
|
|
var module = app.getModuleName();
|
|
var className = jQuery('#popUpClassName').val();
|
|
if(typeof className != 'undefined'){
|
|
var moduleClassName = className;
|
|
}else{
|
|
var moduleClassName = module+"_Popup_Js";
|
|
}
|
|
var fallbackClassName = Vtiger_Popup_Js;
|
|
if(typeof window[moduleClassName] != 'undefined'){
|
|
var instance = new window[moduleClassName]();
|
|
}else{
|
|
var instance = new fallbackClassName();
|
|
}
|
|
return instance;
|
|
}
|
|
|
|
},{
|
|
|
|
//holds the event name that child window need to trigger
|
|
eventName : '',
|
|
popupPageContentsContainer : false,
|
|
sourceModule : false,
|
|
sourceRecord : false,
|
|
sourceField : false,
|
|
multiSelect : false,
|
|
relatedParentModule : false,
|
|
relatedParentRecord : false,
|
|
|
|
/**
|
|
* Function to get source module
|
|
*/
|
|
getSourceModule : function(){
|
|
if(this.sourceModule == false){
|
|
this.sourceModule = jQuery('#parentModule').val();
|
|
}
|
|
return this.sourceModule;
|
|
},
|
|
|
|
/**
|
|
* Function to get source record
|
|
*/
|
|
getSourceRecord : function(){
|
|
if(this.sourceRecord == false){
|
|
this.sourceRecord = jQuery('#sourceRecord').val();
|
|
}
|
|
return this.sourceRecord;
|
|
},
|
|
|
|
/**
|
|
* Function to get source field
|
|
*/
|
|
getSourceField : function(){
|
|
if(this.sourceField == false){
|
|
this.sourceField = jQuery('#sourceField').val();
|
|
}
|
|
return this.sourceField;
|
|
},
|
|
|
|
/**
|
|
* Function to get related parent module
|
|
*/
|
|
getRelatedParentModule : function(){
|
|
if(this.relatedParentModule == false){
|
|
this.relatedParentModule = jQuery('#relatedParentModule').val();
|
|
}
|
|
return this.relatedParentModule;
|
|
},
|
|
/**
|
|
* Function to get related parent id
|
|
*/
|
|
getRelatedParentRecord : function(){
|
|
if(this.relatedParentRecord == false){
|
|
this.relatedParentRecord = jQuery('#relatedParentId').val();
|
|
}
|
|
return this.relatedParentRecord;
|
|
},
|
|
|
|
/**
|
|
* Function to get Search key
|
|
*/
|
|
getSearchKey : function(){
|
|
return jQuery('#searchableColumnsList').val();
|
|
},
|
|
|
|
/**
|
|
* Function to get Search value
|
|
*/
|
|
getSearchValue : function(){
|
|
return jQuery('#searchvalue').val();
|
|
},
|
|
|
|
/**
|
|
* Function to get Order by
|
|
*/
|
|
getOrderBy : function(){
|
|
return jQuery('#orderBy').val();
|
|
},
|
|
|
|
/**
|
|
* Function to get Sort Order
|
|
*/
|
|
getSortOrder : function(){
|
|
return jQuery("#sortOrder").val();
|
|
},
|
|
|
|
/**
|
|
* Function to get Page Number
|
|
*/
|
|
getPageNumber : function(){
|
|
return jQuery('#pageNumber').val();
|
|
},
|
|
|
|
getPopupPageContainer : function(){
|
|
if(this.popupPageContentsContainer == false) {
|
|
this.popupPageContentsContainer = jQuery('#popupPageContainer');
|
|
}
|
|
return this.popupPageContentsContainer;
|
|
|
|
},
|
|
|
|
show : function(urlOrParams, cb, windowName, eventName, onLoadCb){
|
|
if(typeof urlOrParams == 'undefined'){
|
|
urlOrParams = {};
|
|
}
|
|
if (typeof urlOrParams == 'object' && (typeof urlOrParams['view'] == "undefined")) {
|
|
urlOrParams['view'] = 'Popup';
|
|
}
|
|
|
|
// Target eventName to be trigger post data selection.
|
|
if(typeof eventName == 'undefined') {
|
|
eventName = 'postSelection'+ Math.floor(Math.random() * 10000);
|
|
}
|
|
if(typeof windowName == 'undefined' ){
|
|
windowName = 'test';
|
|
}
|
|
if (typeof urlOrParams == 'object') {
|
|
urlOrParams['triggerEventName'] = eventName;
|
|
} else {
|
|
urlOrParams += '&triggerEventName=' + eventName;
|
|
}
|
|
|
|
var urlString = (typeof urlOrParams == 'string')? urlOrParams : jQuery.param(urlOrParams);
|
|
var url = 'index.php?'+urlString;
|
|
var popupWinRef = window.open(url, windowName ,'width=900,height=650,resizable=0,scrollbars=1');
|
|
if (typeof this.destroy == 'function') {
|
|
// To remove form elements that have created earlier
|
|
this.destroy();
|
|
}
|
|
jQuery.initWindowMsg();
|
|
|
|
if(typeof cb != 'undefined') {
|
|
this.retrieveSelectedRecords(cb, eventName);
|
|
}
|
|
|
|
if(typeof onLoadCb == 'function') {
|
|
jQuery.windowMsg('Vtiger.OnPopupWindowLoad.Event', function(data){
|
|
onLoadCb(data);
|
|
})
|
|
}
|
|
|
|
// http://stackoverflow.com/questions/13953321/how-can-i-call-a-window-child-function-in-javascript
|
|
// This could be useful for the caller to invoke child window methods post load.
|
|
return popupWinRef;
|
|
},
|
|
|
|
retrieveSelectedRecords : function(cb, eventName) {
|
|
if(typeof eventName == 'undefined') {
|
|
eventName = 'postSelection';
|
|
}
|
|
|
|
jQuery.windowMsg(eventName, function(data) {
|
|
cb(data);
|
|
});
|
|
},
|
|
|
|
/**
|
|
* Function which removes the elements that are added by the plugin
|
|
*
|
|
*/
|
|
destroy : function(){
|
|
jQuery('form[name="windowComm"]').remove();
|
|
},
|
|
|
|
done : function(result, eventToTrigger, window) {
|
|
|
|
if(typeof eventToTrigger == 'undefined' || eventToTrigger.length <=0 ) {
|
|
eventToTrigger = 'postSelection'
|
|
}
|
|
|
|
if(typeof window == 'undefined'){
|
|
window = self;
|
|
}
|
|
window.close();
|
|
var data = JSON.stringify(result);
|
|
// Because if we have two dollars like this "$$" it's not working because it'll be like escape char(Email Templates)
|
|
data = data.replace(/\$\$/g,"$ $");
|
|
|
|
jQuery.triggerParentEvent(eventToTrigger, data);
|
|
|
|
},
|
|
|
|
getView : function(){
|
|
var view = jQuery('#view').val();
|
|
if(view == '') {
|
|
view = 'PopupAjax';
|
|
} else {
|
|
view = view+'Ajax';
|
|
}
|
|
return view;
|
|
},
|
|
|
|
setEventName : function(eventName) {
|
|
this.eventName = eventName;
|
|
},
|
|
|
|
getEventName : function() {
|
|
return this.eventName;
|
|
},
|
|
|
|
isMultiSelectMode : function() {
|
|
if(this.multiSelect == false){
|
|
this.multiSelect = jQuery('#multi_select');
|
|
}
|
|
var value = this.multiSelect.val();
|
|
if(value) {
|
|
return value;
|
|
}
|
|
return false;
|
|
},
|
|
|
|
getListViewEntries: function(e){
|
|
var thisInstance = this;
|
|
var row = jQuery(e.currentTarget);
|
|
var dataUrl = row.data('url');
|
|
if(typeof dataUrl != 'undefined'){
|
|
dataUrl = dataUrl+'¤cy_id='+jQuery('#currencyId').val();
|
|
AppConnector.request(dataUrl).then(
|
|
function(data){
|
|
for(var id in data){
|
|
if(typeof data[id] == "object"){
|
|
var recordData = data[id];
|
|
}
|
|
}
|
|
thisInstance.done(recordData, thisInstance.getEventName());
|
|
e.preventDefault();
|
|
},
|
|
function(error,err){
|
|
|
|
}
|
|
);
|
|
} else {
|
|
var id = row.data('id');
|
|
var recordName = row.data('name');
|
|
var recordInfo = row.data('info');
|
|
var response ={};
|
|
response[id] = {'name' : recordName,'info' : recordInfo} ;
|
|
thisInstance.done(response, thisInstance.getEventName());
|
|
e.preventDefault();
|
|
}
|
|
|
|
},
|
|
|
|
registerSelectButton : function(){
|
|
var popupPageContentsContainer = this.getPopupPageContainer();
|
|
var thisInstance = this;
|
|
popupPageContentsContainer.on('click','button.select', function(e){
|
|
var tableEntriesElement = popupPageContentsContainer.find('table');
|
|
var selectedRecordDetails = {};
|
|
var recordIds = new Array();
|
|
var dataUrl;
|
|
jQuery('input.entryCheckBox', tableEntriesElement).each(function(index, checkBoxElement){
|
|
var checkBoxJqueryObject = jQuery(checkBoxElement)
|
|
if(! checkBoxJqueryObject.is(":checked")){
|
|
return true;
|
|
}
|
|
var row = checkBoxJqueryObject.closest('tr');
|
|
var id = row.data('id');
|
|
recordIds.push(id);
|
|
var name = row.data('name');
|
|
dataUrl = row.data('url');
|
|
selectedRecordDetails[id] = {'name' : name};
|
|
});
|
|
var jsonRecorIds = JSON.stringify(recordIds);
|
|
if(Object.keys(selectedRecordDetails).length <= 0) {
|
|
alert(app.vtranslate('JS_PLEASE_SELECT_ONE_RECORD'));
|
|
}else{
|
|
if(typeof dataUrl != 'undefined'){
|
|
dataUrl = dataUrl+'&idlist='+jsonRecorIds+'¤cy_id='+jQuery('#currencyId').val();
|
|
AppConnector.request(dataUrl).then(
|
|
function(data){
|
|
for(var id in data){
|
|
if(typeof data[id] == "object"){
|
|
var recordData = data[id];
|
|
}
|
|
}
|
|
var recordDataLength = Object.keys(recordData).length;
|
|
if(recordDataLength == 1){
|
|
recordData = recordData[0];
|
|
}
|
|
thisInstance.done(recordData, thisInstance.getEventName());
|
|
e.preventDefault();
|
|
},
|
|
function(error,err){
|
|
|
|
}
|
|
);
|
|
}else{
|
|
thisInstance.done(selectedRecordDetails, thisInstance.getEventName());
|
|
}
|
|
}
|
|
});
|
|
},
|
|
|
|
selectAllHandler : function(e){
|
|
var currentElement = jQuery(e.currentTarget);
|
|
var isMainCheckBoxChecked = currentElement.is(':checked');
|
|
var tableElement = currentElement.closest('table');
|
|
if(isMainCheckBoxChecked) {
|
|
jQuery('input.entryCheckBox', tableElement).attr('checked','checked').closest('tr').addClass('highlightBackgroundColor');
|
|
}else {
|
|
jQuery('input.entryCheckBox', tableElement).removeAttr('checked').closest('tr').removeClass('highlightBackgroundColor');
|
|
}
|
|
},
|
|
|
|
registerEventForSelectAllInCurrentPage : function(){
|
|
var thisInstance = this;
|
|
var popupPageContentsContainer = this.getPopupPageContainer();
|
|
popupPageContentsContainer.on('change','input.selectAllInCurrentPage',function(e){
|
|
thisInstance.selectAllHandler(e);
|
|
});
|
|
},
|
|
|
|
checkBoxChangeHandler : function(e){
|
|
var elem = jQuery(e.currentTarget);
|
|
var parentElem = elem.closest('tr');
|
|
if(elem.is(':checked')){
|
|
parentElem.addClass('highlightBackgroundColor');
|
|
|
|
}else{
|
|
parentElem.removeClass('highlightBackgroundColor');
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Function to register event for entry checkbox change
|
|
*/
|
|
registerEventForCheckboxChange : function(){
|
|
var thisInstance = this;
|
|
var popupPageContentsContainer = this.getPopupPageContainer();
|
|
popupPageContentsContainer.on('click','input.entryCheckBox',function(e){
|
|
e.stopPropagation();
|
|
thisInstance.checkBoxChangeHandler(e);
|
|
});
|
|
},
|
|
/**
|
|
* Function to get complete params
|
|
*/
|
|
getCompleteParams : function(){
|
|
var params = {};
|
|
params['view'] = this.getView();
|
|
params['src_module'] = this.getSourceModule();
|
|
params['src_record'] = this.getSourceRecord();
|
|
params['src_field'] = this.getSourceField();
|
|
params['search_key'] = this.getSearchKey();
|
|
params['search_value'] = this.getSearchValue();
|
|
params['orderby'] = this.getOrderBy();
|
|
params['sortorder'] = this.getSortOrder();
|
|
params['page'] = this.getPageNumber();
|
|
params['related_parent_module'] = this.getRelatedParentModule();
|
|
params['related_parent_id'] = this.getRelatedParentRecord();
|
|
params['module'] = app.getModuleName();
|
|
|
|
if(this.isMultiSelectMode()) {
|
|
params['multi_select'] = true;
|
|
}
|
|
return params;
|
|
},
|
|
|
|
/**
|
|
* Function to get Page Records
|
|
*/
|
|
getPageRecords : function(params){
|
|
var thisInstance = this;
|
|
var aDeferred = jQuery.Deferred();
|
|
var progressIndicatorElement = jQuery.progressIndicator({
|
|
'position' : 'html',
|
|
'blockInfo' : {
|
|
'enabled' : true
|
|
}
|
|
});
|
|
Vtiger_BaseList_Js.getPageRecords(params).then(
|
|
function(data){
|
|
jQuery('#popupContents').html(data);
|
|
Vtiger_Helper_Js.showHorizontalTopScrollBar();
|
|
progressIndicatorElement.progressIndicator({
|
|
'mode' : 'hide'
|
|
})
|
|
thisInstance.calculatePages().then(function(data){
|
|
aDeferred.resolve(data);
|
|
});
|
|
},
|
|
|
|
function(textStatus, errorThrown){
|
|
aDeferred.reject(textStatus, errorThrown);
|
|
}
|
|
);
|
|
return aDeferred.promise();
|
|
},
|
|
|
|
/**
|
|
* Function to calculate number of pages
|
|
*/
|
|
calculatePages : function() {
|
|
var aDeferred = jQuery.Deferred();
|
|
var element = jQuery('#totalPageCount');
|
|
var totalPageNumber = element.text();
|
|
if(totalPageNumber == ""){
|
|
var totalRecordCount = jQuery('#totalCount').val();
|
|
if(totalRecordCount != '') {
|
|
var recordPerPage = jQuery('#noOfEntries').val();
|
|
if(recordPerPage == '0') recordPerPage = 1;
|
|
pageCount = Math.ceil(totalRecordCount/recordPerPage);
|
|
if(pageCount == 0){
|
|
pageCount = 1;
|
|
}
|
|
element.text(pageCount);
|
|
aDeferred.resolve();
|
|
return aDeferred.promise();
|
|
}
|
|
this.getPageCount().then(function(data){
|
|
var pageCount = data['result']['page'];
|
|
if(pageCount == 0){
|
|
pageCount = 1;
|
|
}
|
|
element.text(pageCount);
|
|
aDeferred.resolve();
|
|
});
|
|
} else{
|
|
aDeferred.resolve();
|
|
}
|
|
return aDeferred.promise();
|
|
},
|
|
|
|
/**
|
|
* Function to handle search event
|
|
*/
|
|
searchHandler : function(){
|
|
var aDeferred = jQuery.Deferred();
|
|
var completeParams = this.getCompleteParams();
|
|
completeParams['page'] = 1;
|
|
return this.getPageRecords(completeParams).then(
|
|
function(data){
|
|
aDeferred.resolve(data);
|
|
},
|
|
|
|
function(textStatus, errorThrown){
|
|
aDeferred.reject(textStatus, errorThrown);
|
|
});
|
|
return aDeferred.promise();
|
|
},
|
|
|
|
/**
|
|
* Function to register event for Search
|
|
*/
|
|
registerEventForSearch : function(){
|
|
var thisInstance = this;
|
|
jQuery('#popupSearchButton').on('click',function(e){
|
|
jQuery('#totalPageCount').text("");
|
|
thisInstance.searchHandler().then(function(data){
|
|
jQuery('#pageNumber').val(1);
|
|
jQuery('#pageToJump').val(1);
|
|
thisInstance.updatePagination();
|
|
});
|
|
});
|
|
},
|
|
/**
|
|
* Function to register event for Searching on click of enter
|
|
*/
|
|
registerEventForEnter : function(){
|
|
var thisInstance = this;
|
|
jQuery('#searchvalue').keyup(function (e) {
|
|
if (e.keyCode == 13) {
|
|
jQuery('#popupSearchButton').trigger('click');
|
|
}
|
|
});
|
|
},
|
|
|
|
/**
|
|
* Function to handle Sort
|
|
*/
|
|
sortHandler : function(headerElement){
|
|
var aDeferred = jQuery.Deferred();
|
|
//Listprice column should not be sorted so checking for class noSorting
|
|
if(headerElement.hasClass('noSorting')){
|
|
return;
|
|
}
|
|
var fieldName = headerElement.data('columnname');
|
|
var sortOrderVal = headerElement.data('nextsortorderval');
|
|
var sortingParams = {
|
|
"orderby" : fieldName,
|
|
"sortorder" : sortOrderVal
|
|
}
|
|
var completeParams = this.getCompleteParams();
|
|
jQuery.extend(completeParams,sortingParams);
|
|
return this.getPageRecords(completeParams).then(
|
|
function(data){
|
|
aDeferred.resolve(data);
|
|
},
|
|
|
|
function(textStatus, errorThrown){
|
|
aDeferred.reject(textStatus, errorThrown);
|
|
}
|
|
);
|
|
return aDeferred.promise();
|
|
},
|
|
|
|
/**
|
|
* Function to register Event for Sorting
|
|
*/
|
|
registerEventForSort : function(){
|
|
var thisInstance = this;
|
|
var popupPageContentsContainer = this.getPopupPageContainer();
|
|
popupPageContentsContainer.on('click','.listViewHeaderValues',function(e){
|
|
var element = jQuery(e.currentTarget);
|
|
thisInstance.sortHandler(element).then(function(data){
|
|
thisInstance.updatePagination();
|
|
});
|
|
});
|
|
},
|
|
|
|
/**
|
|
* Function to handle next page navigation
|
|
*/
|
|
|
|
nextPageHandler : function(){
|
|
var aDeferred = jQuery.Deferred();
|
|
var pageLimit = jQuery('#pageLimit').val();
|
|
var noOfEntries = jQuery('#noOfEntries').val();
|
|
if(noOfEntries == pageLimit){
|
|
var pageNumber = jQuery('#pageNumber').val();
|
|
var nextPageNumber = parseInt(pageNumber) + 1;
|
|
var pagingParams = {
|
|
"page": nextPageNumber
|
|
}
|
|
var completeParams = this.getCompleteParams();
|
|
jQuery.extend(completeParams,pagingParams);
|
|
this.getPageRecords(completeParams).then(
|
|
function(data){
|
|
jQuery('#pageNumber').val(nextPageNumber);
|
|
jQuery('#pageToJump').val(nextPageNumber);
|
|
aDeferred.resolve(data);
|
|
},
|
|
|
|
function(textStatus, errorThrown){
|
|
aDeferred.reject(textStatus, errorThrown);
|
|
}
|
|
);
|
|
}
|
|
return aDeferred.promise();
|
|
},
|
|
|
|
/**
|
|
* Function to handle Previous page navigation
|
|
*/
|
|
previousPageHandler : function(){
|
|
var aDeferred = jQuery.Deferred();
|
|
var pageNumber = jQuery('#pageNumber').val();
|
|
var previousPageNumber = parseInt(pageNumber) - 1;
|
|
if(pageNumber > 1){
|
|
var pagingParams = {
|
|
"page": previousPageNumber
|
|
}
|
|
var completeParams = this.getCompleteParams();
|
|
jQuery.extend(completeParams,pagingParams);
|
|
this.getPageRecords(completeParams).then(
|
|
function(data){
|
|
jQuery('#pageNumber').val(previousPageNumber);
|
|
jQuery('#pageToJump').val(previousPageNumber);
|
|
aDeferred.resolve(data);
|
|
},
|
|
|
|
function(textStatus, errorThrown){
|
|
aDeferred.reject(textStatus, errorThrown);
|
|
}
|
|
);
|
|
}
|
|
return aDeferred.promise();
|
|
},
|
|
|
|
/**
|
|
* Function to register event for Paging
|
|
*/
|
|
registerEventForPagination : function(){
|
|
var thisInstance = this;
|
|
jQuery('#listViewNextPageButton').on('click',function(){
|
|
thisInstance.nextPageHandler().then(function(data){
|
|
thisInstance.updatePagination();
|
|
});
|
|
});
|
|
jQuery('#listViewPreviousPageButton').on('click',function(){
|
|
thisInstance.previousPageHandler().then(function(data){
|
|
thisInstance.updatePagination();
|
|
});
|
|
});
|
|
jQuery('#listViewPageJump').on('click',function(e){
|
|
jQuery('#pageToJump').validationEngine('hideAll');
|
|
var element = jQuery('#totalPageCount');
|
|
var totalPageNumber = element.text();
|
|
if(totalPageNumber == ""){
|
|
var totalRecordElement = jQuery('#totalCount');
|
|
var totalRecordCount = totalRecordElement.val();
|
|
if(totalRecordCount != '') {
|
|
var recordPerPage = jQuery('#pageLimit').val();
|
|
if(recordPerPage == '0') recordPerPage = 1;
|
|
pageCount = Math.ceil(totalRecordCount/recordPerPage);
|
|
if(pageCount == 0){
|
|
pageCount = 1;
|
|
}
|
|
element.text(pageCount);
|
|
return;
|
|
}
|
|
element.progressIndicator({});
|
|
thisInstance.getPageCount().then(function(data){
|
|
var pageCount = data['result']['page'];
|
|
element.text(pageCount);
|
|
totalRecordElement.val(data['result']['numberOfRecords']);
|
|
element.progressIndicator({'mode': 'hide'});
|
|
});
|
|
}
|
|
})
|
|
|
|
jQuery('#listViewPageJumpDropDown').on('click','li',function(e){
|
|
e.stopImmediatePropagation();
|
|
}).on('keypress','#pageToJump',function(e){
|
|
if(e.which == 13){
|
|
e.stopImmediatePropagation();
|
|
var element = jQuery(e.currentTarget);
|
|
var response = Vtiger_WholeNumberGreaterThanZero_Validator_Js.invokeValidation(element);
|
|
if(typeof response != "undefined"){
|
|
element.validationEngine('showPrompt',response,'',"topLeft",true);
|
|
} else {
|
|
element.validationEngine('hideAll');
|
|
var currentPageElement = jQuery('#pageNumber');
|
|
var currentPageNumber = currentPageElement.val();
|
|
var newPageNumber = parseInt(element.val());
|
|
var totalPages = parseInt(jQuery('#totalPageCount').text());
|
|
if(newPageNumber > totalPages){
|
|
var error = app.vtranslate('JS_PAGE_NOT_EXIST');
|
|
element.validationEngine('showPrompt',error,'',"topLeft",true);
|
|
return;
|
|
}
|
|
if(newPageNumber == currentPageNumber){
|
|
var message = app.vtranslate('JS_YOU_ARE_IN_PAGE_NUMBER')+" "+newPageNumber;
|
|
var params = {
|
|
text: message,
|
|
type: 'info'
|
|
};
|
|
Vtiger_Helper_Js.showMessage(params);
|
|
return;
|
|
}
|
|
var pagingParams = {
|
|
"page": newPageNumber
|
|
}
|
|
var completeParams = thisInstance.getCompleteParams();
|
|
jQuery.extend(completeParams,pagingParams);
|
|
thisInstance.getPageRecords(completeParams).then(
|
|
function(data){
|
|
currentPageElement.val(newPageNumber);
|
|
thisInstance.updatePagination();
|
|
element.closest('.btn-group ').removeClass('open');
|
|
},
|
|
function(textStatus, errorThrown){
|
|
}
|
|
);
|
|
}
|
|
return false;
|
|
}
|
|
});
|
|
},
|
|
|
|
registerEventForListViewEntries : function(){
|
|
var thisInstance = this;
|
|
var popupPageContentsContainer = this.getPopupPageContainer();
|
|
popupPageContentsContainer.on('click','.listViewEntries',function(e){
|
|
thisInstance.getListViewEntries(e);
|
|
});
|
|
},
|
|
|
|
triggerDisplayTypeEvent : function() {
|
|
var widthType = app.cacheGet('widthType', 'narrowWidthType');
|
|
if(widthType) {
|
|
var elements = jQuery('.listViewEntriesTable').find('td,th');
|
|
elements.addClass(widthType);
|
|
}
|
|
},
|
|
/**
|
|
* Function to get page count and total number of records in list
|
|
*/
|
|
getPageCount : function(){
|
|
var aDeferred = jQuery.Deferred();
|
|
var pageJumpParams = {
|
|
'mode' : "getPageCount"
|
|
}
|
|
var completeParams = this.getCompleteParams();
|
|
jQuery.extend(completeParams,pageJumpParams);
|
|
AppConnector.request(completeParams).then(
|
|
function(data) {
|
|
var response;
|
|
if(typeof data != "object"){
|
|
response = JSON.parse(data);
|
|
} else{
|
|
response = data;
|
|
}
|
|
aDeferred.resolve(response);
|
|
},
|
|
function(error,err){
|
|
|
|
}
|
|
);
|
|
return aDeferred.promise();
|
|
},
|
|
|
|
/**
|
|
* Function to show total records count in listview on hover
|
|
* of pageNumber text
|
|
*/
|
|
registerEventForTotalRecordsCount : function(){
|
|
var thisInstance = this;
|
|
jQuery('.totalNumberOfRecords').on('click',function(e){
|
|
var element = jQuery(e.currentTarget);
|
|
element.addClass('hide');
|
|
element.parent().find('.pageNumbersText').progressIndicator({});
|
|
var totalRecordsElement = jQuery('#totalCount');
|
|
var totalNumberOfRecords = totalRecordsElement.val();
|
|
if(totalNumberOfRecords == '') {
|
|
thisInstance.getPageCount().then(function(data){
|
|
totalNumberOfRecords = data['result']['numberOfRecords'];
|
|
var numberOfPages = data['result']['page'];
|
|
totalRecordsElement.val(totalNumberOfRecords);
|
|
jQuery('#totalPageCount').text(numberOfPages);
|
|
thisInstance.showPagingInfo();
|
|
});
|
|
}else{
|
|
thisInstance.showPagingInfo();
|
|
}
|
|
element.parent().find('.pageNumbersText').progressIndicator({'mode':'hide'});
|
|
})
|
|
},
|
|
|
|
showPagingInfo : function(){
|
|
var totalNumberOfRecords = jQuery('#totalCount').val();
|
|
var pageNumberElement = jQuery('.pageNumbersText');
|
|
var pageRange = pageNumberElement.text();
|
|
var newPagingInfo = pageRange+" "+app.vtranslate('of')+" "+totalNumberOfRecords;
|
|
var listViewEntriesCount = parseInt(jQuery('#noOfEntries').val());
|
|
if(listViewEntriesCount != 0){
|
|
jQuery('.pageNumbersText').html(newPagingInfo);
|
|
} else {
|
|
jQuery('.pageNumbersText').html("");
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Function to update Pagining status
|
|
*/
|
|
updatePagination : function(){
|
|
var previousPageExist = jQuery('#previousPageExist').val();
|
|
var nextPageExist = jQuery('#nextPageExist').val();
|
|
var previousPageButton = jQuery('#listViewPreviousPageButton');
|
|
var nextPageButton = jQuery('#listViewNextPageButton');
|
|
var listViewEntriesCount = jQuery('#noOfEntries').val();
|
|
var pageStartRange = jQuery('#pageStartRange').val();
|
|
var pageEndRange = jQuery('#pageEndRange').val();
|
|
var pageJumpButton = jQuery('#listViewPageJump');
|
|
var pages = jQuery('#totalPageCount').text();
|
|
var totalNumberOfRecords = jQuery('.totalNumberOfRecords');
|
|
var pageNumbersTextElem = jQuery('.pageNumbersText');
|
|
|
|
if(pages == 1){
|
|
pageJumpButton.attr('disabled',"disabled");
|
|
}
|
|
if(pages > 1){
|
|
pageJumpButton.removeAttr('disabled');
|
|
}
|
|
|
|
if(previousPageExist != ""){
|
|
previousPageButton.removeAttr('disabled');
|
|
} else if(previousPageExist == "") {
|
|
previousPageButton.attr("disabled","disabled");
|
|
}
|
|
|
|
if((nextPageExist != "") && (pages >1)){
|
|
nextPageButton.removeAttr('disabled');
|
|
} else if((nextPageExist == "") || (pages == 1)) {
|
|
nextPageButton.attr("disabled","disabled");
|
|
}
|
|
if(listViewEntriesCount != 0){
|
|
var pageNumberText = pageStartRange+" "+app.vtranslate('to')+" "+pageEndRange;
|
|
pageNumbersTextElem.html(pageNumberText);
|
|
totalNumberOfRecords.removeClass('hide');
|
|
} else {
|
|
pageNumbersTextElem.html("<span> </span>");
|
|
if(!totalNumberOfRecords.hasClass('hide')){
|
|
totalNumberOfRecords.addClass('hide');
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
registerEvents: function(){
|
|
var pageNumber = jQuery('#pageNumber').val();
|
|
if(pageNumber == 1){
|
|
jQuery('#listViewPreviousPageButton').attr("disabled", "disabled");
|
|
}
|
|
this.registerEventForSelectAllInCurrentPage();
|
|
this.registerSelectButton();
|
|
this.registerEventForCheckboxChange();
|
|
this.registerEventForSearch();
|
|
this.registerEventForEnter();
|
|
this.registerEventForSort();
|
|
this.registerEventForListViewEntries();
|
|
//this.triggerDisplayTypeEvent();
|
|
var popupPageContainer = jQuery('#popupPageContainer');
|
|
if(popupPageContainer.length > 0){
|
|
this.registerEventForTotalRecordsCount();
|
|
this.registerEventForPagination();
|
|
}
|
|
}
|
|
});
|
|
jQuery(document).ready(function() {
|
|
var popupInstance = Vtiger_Popup_Js.getInstance();
|
|
var triggerEventName = jQuery('.triggerEventName').val();
|
|
var documentHeight = (jQuery(document).height())+'px';
|
|
jQuery('#popupPageContainer').css('height',documentHeight);
|
|
popupInstance.setEventName(triggerEventName);
|
|
popupInstance.registerEvents();
|
|
Vtiger_Helper_Js.showHorizontalTopScrollBar();
|
|
}); |