[ 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 10 var Vtiger_CustomView_Js = { 11 12 contentsCotainer : false, 13 columnListSelect2Element : false, 14 advanceFilterInstance : false, 15 16 //This will store the columns selection container 17 columnSelectElement : false, 18 19 //This will store the input hidden selectedColumnsList element 20 selectedColumnsList : false, 21 22 loadFilterView : function(url) { 23 var progressIndicatorElement = jQuery.progressIndicator(); 24 AppConnector.request(url).then( 25 function(data){ 26 app.hideModalWindow(); 27 var contents = jQuery(".contentsDiv").html(data); 28 progressIndicatorElement.progressIndicator({'mode' : 'hide'}); 29 Vtiger_CustomView_Js.registerEvents(); 30 Vtiger_CustomView_Js.advanceFilterInstance = Vtiger_AdvanceFilter_Js.getInstance(jQuery('.filterContainer',contents)); 31 }, 32 function(error,err){ 33 34 } 35 ); 36 }, 37 38 loadDateFilterValues : function(){ 39 var selectedDateFilter = jQuery('#standardDateFilter option:selected'); 40 var currentDate = selectedDateFilter.data('currentdate'); 41 var endDate = selectedDateFilter.data('enddate'); 42 jQuery("#standardFilterCurrentDate").val(currentDate); 43 jQuery("#standardFilterEndDate").val(endDate); 44 }, 45 46 /** 47 * Function to get the contents container 48 * @return : jQuery object of contents container 49 */ 50 getContentsContainer : function() { 51 if(Vtiger_CustomView_Js.contentsCotainer == false) { 52 Vtiger_CustomView_Js.contentsCotainer = jQuery('div.contentsDiv'); 53 } 54 return Vtiger_CustomView_Js.contentsCotainer; 55 }, 56 57 getColumnListSelect2Element : function() { 58 return Vtiger_CustomView_Js.columnListSelect2Element; 59 }, 60 61 /** 62 * Function to get the view columns selection element 63 * @return : jQuery object of view columns selection element 64 */ 65 getColumnSelectElement : function() { 66 if(Vtiger_CustomView_Js.columnSelectElement == false) { 67 Vtiger_CustomView_Js.columnSelectElement = jQuery('#viewColumnsSelect'); 68 } 69 return Vtiger_CustomView_Js.columnSelectElement; 70 }, 71 72 /** 73 * Function to get the selected columns list 74 * @return : jQuery object of selectedColumnsList 75 */ 76 getSelectedColumnsList : function() { 77 if(Vtiger_CustomView_Js.selectedColumnsList == false) { 78 Vtiger_CustomView_Js.selectedColumnsList = jQuery('#selectedColumnsList'); 79 } 80 return Vtiger_CustomView_Js.selectedColumnsList; 81 }, 82 83 /** 84 * Function to regiser the event to make the columns list sortable 85 */ 86 makeColumnListSortable : function() { 87 var select2Element = Vtiger_CustomView_Js.getColumnListSelect2Element(); 88 //TODO : peform the selection operation in context this might break if you have multi select element in advance filter 89 //The sorting is only available when Select2 is attached to a hidden input field. 90 var chozenChoiceElement = select2Element.find('ul.select2-choices'); 91 chozenChoiceElement.sortable({ 92 'containment': chozenChoiceElement, 93 start: function() { Vtiger_CustomView_Js.getSelectedColumnsList().select2("onSortStart"); }, 94 update: function() { Vtiger_CustomView_Js.getSelectedColumnsList().select2("onSortEnd"); } 95 }); 96 }, 97 98 /** 99 * Function which will get the selected columns with order preserved 100 * @return : array of selected values in order 101 */ 102 getSelectedColumns : function() { 103 var columnListSelectElement = Vtiger_CustomView_Js.getColumnSelectElement(); 104 var select2Element = Vtiger_CustomView_Js.getColumnListSelect2Element(); 105 106 var selectedValuesByOrder = new Array(); 107 var selectedOptions = columnListSelectElement.find('option:selected'); 108 109 var orderedSelect2Options = select2Element.find('li.select2-search-choice').find('div'); 110 orderedSelect2Options.each(function(index,element){ 111 var chosenOption = jQuery(element); 112 selectedOptions.each(function(optionIndex, domOption){ 113 var option = jQuery(domOption); 114 if(option.html() == chosenOption.html()) { 115 selectedValuesByOrder.push(option.val()); 116 return false; 117 } 118 }); 119 }); 120 return selectedValuesByOrder; 121 }, 122 123 /** 124 * Function which will arrange the chosen element choices in order 125 */ 126 arrangeSelectChoicesInOrder : function() { 127 var contentsContainer = Vtiger_CustomView_Js.getContentsContainer(); 128 var chosenElement = Vtiger_CustomView_Js.getColumnListSelect2Element(); 129 var choicesContainer = chosenElement.find('ul.select2-choices'); 130 var choicesList = choicesContainer.find('li.select2-search-choice'); 131 var coulmnListSelectElement = Vtiger_CustomView_Js.getColumnSelectElement(); 132 var selectedOptions = coulmnListSelectElement.find('option:selected'); 133 var selectedOrder = JSON.parse(jQuery('input[name="columnslist"]', contentsContainer).val()); 134 135 for(var index=selectedOrder.length ; index > 0 ; index--) { 136 var selectedValue = selectedOrder[index-1]; 137 var option = selectedOptions.filter('[value="'+selectedValue+'"]'); 138 choicesList.each(function(choiceListIndex,element){ 139 var liElement = jQuery(element); 140 if(liElement.find('div').html() == option.html()){ 141 choicesContainer.prepend(liElement); 142 return false; 143 } 144 }); 145 } 146 }, 147 148 saveFilter : function() { 149 var aDeferred = jQuery.Deferred(); 150 var formElement = jQuery("#CustomView"); 151 var formData = formElement.serializeFormData(); 152 153 var progressIndicatorInstance = jQuery.progressIndicator({ 154 'blockInfo' : { 155 'enabled' : true 156 } 157 }); 158 159 AppConnector.request(formData).then( 160 function(data){ 161 progressIndicatorInstance.progressIndicator({ 162 'mode' : 'hide' 163 }) 164 aDeferred.resolve(data); 165 }, 166 function(error){ 167 progressIndicatorInstance.progressIndicator({ 168 'mode' : 'hide' 169 }) 170 aDeferred.reject(error); 171 } 172 ) 173 return aDeferred.promise(); 174 }, 175 176 saveAndViewFilter : function(){ 177 Vtiger_CustomView_Js.saveFilter().then( 178 function(response){ 179 if (response.success) { 180 var url = response['result']['listviewurl']; 181 window.location.href=url; 182 } else { 183 var params = { 184 title: app.vtranslate('JS_DUPLICATE_RECORD'), 185 text: response.error['message'] 186 }; 187 Vtiger_Helper_Js.showPnotify(params); 188 } 189 }, 190 function(error) { 191 192 } 193 ); 194 }, 195 196 /** 197 * Function which will register the select2 elements for columns selection 198 */ 199 registerSelect2ElementForColumnsSelection : function() { 200 var selectElement = Vtiger_CustomView_Js.getColumnSelectElement(); 201 app.changeSelectElementView(selectElement, 'select2', {maximumSelectionSize: 12,dropdownCss : {'z-index' : 0}}); 202 }, 203 204 registerEvents: function(){ 205 Vtiger_CustomView_Js.registerSelect2ElementForColumnsSelection(); 206 var contentsContainer = Vtiger_CustomView_Js.getContentsContainer(); 207 jQuery('.stndrdFilterDateSelect').datepicker(); 208 jQuery('.chzn-select').chosen(); 209 210 var select2Element = app.getSelect2ElementFromSelect(Vtiger_CustomView_Js.getColumnSelectElement()); 211 Vtiger_CustomView_Js.columnListSelect2Element = select2Element; 212 213 //To arrange the chosen choices in the order that is selected 214 Vtiger_CustomView_Js.arrangeSelectChoicesInOrder(); 215 216 jQuery("#standardDateFilter").change(function(){ 217 Vtiger_CustomView_Js.loadDateFilterValues(); 218 }); 219 220 Vtiger_CustomView_Js.makeColumnListSortable(); 221 222 jQuery("#CustomView").submit(function(e) { 223 var selectElement = Vtiger_CustomView_Js.getColumnSelectElement(); 224 var select2Element = app.getSelect2ElementFromSelect(selectElement); 225 var result = Vtiger_MultiSelect_Validator_Js.invokeValidation(selectElement); 226 if(result != true){ 227 select2Element.validationEngine('showPrompt', result , 'error','bottomLeft',true); 228 e.preventDefault(); 229 return; 230 } else { 231 select2Element.validationEngine('hide'); 232 } 233 if(jQuery('#viewname').val().length > 40) { 234 var params = { 235 title : app.vtranslate('JS_MESSAGE'), 236 text : app.vtranslate('JS_VIEWNAME_ALERT') 237 } 238 Vtiger_Helper_Js.showPnotify(params); 239 e.preventDefault(); 240 return; 241 } 242 243 //Mandatory Fields selection validation 244 //Any one Mandatory Field should select while creating custom view. 245 var mandatoryFieldsList = JSON.parse(jQuery('#mandatoryFieldsList').val()); 246 var selectedOptions = selectElement.val(); 247 var mandatoryFieldsMissing = true; 248 for(var i=0; i<selectedOptions.length; i++) { 249 if(jQuery.inArray(selectedOptions[i], mandatoryFieldsList) >= 0) { 250 mandatoryFieldsMissing = false; 251 break; 252 } 253 } 254 if(mandatoryFieldsMissing){ 255 var result = app.vtranslate('JS_PLEASE_SELECT_ATLEAST_ONE_MANDATORY_FIELD'); 256 select2Element.validationEngine('showPrompt', result , 'error','bottomLeft',true); 257 e.preventDefault(); 258 return; 259 } else { 260 select2Element.validationEngine('hide'); 261 } 262 //Mandatory Fields validation ends 263 264 var result = jQuery(e.currentTarget).validationEngine('validate'); 265 if(result == true){ 266 //handled standard filters saved values. 267 var stdfilterlist = {}; 268 269 if((jQuery('#standardFilterCurrentDate').val() != '') && (jQuery('#standardFilterEndDate').val()!= '') && (jQuery('select.standardFilterColumn option:selected').val() != 'none')){ 270 stdfilterlist['columnname'] = jQuery('select.standardFilterColumn option:selected').val(); 271 stdfilterlist['stdfilter'] = jQuery('select#standardDateFilter option:selected').val(); 272 stdfilterlist['startdate'] = jQuery('#standardFilterCurrentDate').val(); 273 stdfilterlist['enddate'] = jQuery('#standardFilterEndDate').val(); 274 jQuery('#stdfilterlist').val(JSON.stringify(stdfilterlist)); 275 } 276 277 //handled advanced filters saved values. 278 var advfilterlist = Vtiger_CustomView_Js.advanceFilterInstance.getValues(); 279 jQuery('#advfilterlist').val(JSON.stringify(advfilterlist)); 280 jQuery('input[name="columnslist"]', contentsContainer).val(JSON.stringify(Vtiger_CustomView_Js.getSelectedColumns())); 281 Vtiger_CustomView_Js.saveAndViewFilter(); 282 return false; 283 } else { 284 app.formAlignmentAfterValidation(jQuery(e.currentTarget)); 285 } 286 }); 287 288 jQuery('#CustomView').validationEngine(app.validationEngineOptions); 289 } 290 }
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 |