(function($){ /* * jqGrid methods without support. Use as you wish * Tony Tomov tony@trirand.com * http://trirand.com/blog/ * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl-2.0.html * * This list of deprecated methods. * If you instead want to use them, please include this file after the grid main file. * Some methods will be then overwritten. * */ /*global jQuery, $ */ $.jgrid.extend({ // This is the ols search Filter method used in navigator. searchGrid : function (p) { p = $.extend({ recreateFilter: false, drag: true, sField:'searchField', sValue:'searchString', sOper: 'searchOper', sFilter: 'filters', loadDefaults: true, // this options activates loading of default filters from grid's postData for Multipe Search only. beforeShowSearch: null, afterShowSearch : null, onInitializeSearch: null, closeAfterSearch : false, closeAfterReset: false, closeOnEscape : false, multipleSearch : false, cloneSearchRowOnAdd: true, // translation // if you want to change or remove the order change it in sopt // ['bw','eq','ne','lt','le','gt','ge','ew','cn'] sopt: null, // Note: stringResult is intentionally declared "undefined by default". // you are velcome to define stringResult expressly in the options you pass to searchGrid() // stringResult is a "safeguard" measure to insure we post sensible data when communicated as form-encoded // see http://github.com/tonytomov/jqGrid/issues/#issue/36 // // If this value is not expressly defined in the incoming options, // lower in the code we will infer the value based on value of multipleSearch stringResult: undefined, onClose : null, // useDataProxy allows ADD, EDIT and DEL code to bypass calling $.ajax // directly when grid's 'dataProxy' property (grid.p.dataProxy) is a function. // Used for "editGridRow" and "delGridRow" below and automatically flipped to TRUE // when ajax setting's 'url' (grid's 'editurl') property is undefined. // When 'useDataProxy' is true, instead of calling $.ajax.call(gridDOMobj, o, i) we call // gridDOMobj.p.dataProxy.call(gridDOMobj, o, i) // // Behavior is extremely similar to when 'datatype' is a function, but arguments are slightly different. // Normally the following is fed to datatype.call(a, b, c): // a = Pointer to grid's table DOM element, b = grid.p.postdata, c = "load_"+grid's ID // In cases of "edit" and "del" the following is fed: // a = Pointer to grid's table DOM element (same), // b = extended Ajax Options including postdata in "data" property. (different object type) // c = "set_"+grid's ID in case of "edit" and "del_"+grid's ID in case of "del" (same type, different content) // The major difference is that complete ajax options object, with attached "complete" and "error" // callback functions is fed instead of only post data. // This allows you to emulate a $.ajax call (including calling "complete"/"error"), // while retrieving the data locally in the browser. useDataProxy: false, overlay : true }, $.jgrid.search, p || {}); return this.each(function() { var $t = this; if(!$t.grid) {return;} var fid = "fbox_"+$t.p.id, showFrm = true; function applyDefaultFilters(gridDOMobj, filterSettings) { /* gridDOMobj = ointer to grid DOM object ( $(#list)[0] ) What we need from gridDOMobj: gridDOMobj.SearchFilter is the pointer to the Search box, once it's created. gridDOMobj.p.postData - dictionary of post settings. These can be overriden at grid creation to contain default filter settings. We will parse these and will populate the search with defaults. filterSettings - same settings object you (would) pass to $().jqGrid('searchGrid', filterSettings); */ // Pulling default filter settings out of postData property of grid's properties.: var defaultFilters = gridDOMobj.p.postData[filterSettings.sFilter]; // example of what we might get: {"groupOp":"and","rules":[{"field":"amount","op":"eq","data":"100"}]} // suppose we have imported this with grid import, the this is a string. if(typeof(defaultFilters) == "string") { defaultFilters = $.jgrid.parse(defaultFilters); } if (defaultFilters) { if (defaultFilters.groupOp) { gridDOMobj.SearchFilter.setGroupOp(defaultFilters.groupOp); } if (defaultFilters.rules) { var f, i = 0, li = defaultFilters.rules.length, success = false; for (; i < li; i++) { f = defaultFilters.rules[i]; // we are not trying to counter all issues with filter declaration here. Just the basics to avoid lookup exceptions. if (f.field !== undefined && f.op !== undefined && f.data !== undefined) { success = gridDOMobj.SearchFilter.setFilter({ 'sfref':gridDOMobj.SearchFilter.$.find(".sf:last"), 'filter':$.extend({},f) }); if (success) { gridDOMobj.SearchFilter.add(); } } } } } } // end of applyDefaultFilters function hideFilter(selector) { if(p.onClose){ var fclm = p.onClose(selector); if(typeof fclm == 'boolean' && !fclm) { return; } } selector.hide(); if(p.overlay === true) { $(".jqgrid-overlay:first","#gbox_"+$t.p.id).hide(); } } function showFilter(){ var fl = $(".ui-searchFilter").length; if(fl > 1) { var zI = $("#"+fid).css("zIndex"); $("#"+fid).css({zIndex:parseInt(zI,10)+fl}); } $("#"+fid).show(); if(p.overlay === true) { $(".jqgrid-overlay:first","#gbox_"+$t.p.id).show(); } try{$(':input:visible',"#"+fid)[0].focus();}catch(_){} } function searchFilters(filters) { var hasFilters = (filters !== undefined), grid = $("#"+$t.p.id), sdata={}; if(p.multipleSearch===false) { sdata[p.sField] = filters.rules[0].field; sdata[p.sValue] = filters.rules[0].data; sdata[p.sOper] = filters.rules[0].op; if(sdata.hasOwnProperty(p.sFilter) ) { delete sdata[p.sFilter]; } } else { sdata[p.sFilter] = filters; $.each([p.sField, p.sValue, p.sOper], function(i, n){ if(sdata.hasOwnProperty(n)) { delete sdata[n];} }); } grid[0].p.search = hasFilters; $.extend(grid[0].p.postData,sdata); grid.trigger("reloadGrid",[{page:1}]); if(p.closeAfterSearch) { hideFilter($("#"+fid)); } } function resetFilters(op) { var reload = op && op.hasOwnProperty("reload") ? op.reload : true, grid = $("#"+$t.p.id), sdata={}; grid[0].p.search = false; if(p.multipleSearch===false) { sdata[p.sField] = sdata[p.sValue] = sdata[p.sOper] = ""; } else { sdata[p.sFilter] = ""; } $.extend(grid[0].p.postData,sdata); if(reload) { grid.trigger("reloadGrid",[{page:1}]); } if(p.closeAfterReset) { hideFilter($("#"+fid)); } } if($.fn.searchFilter) { if(p.recreateFilter===true) {$("#"+fid).remove();} if( $("#"+fid).html() !== null ) { if ( $.isFunction(p.beforeShowSearch) ) { showFrm = p.beforeShowSearch($("#"+fid)); if(typeof(showFrm) == "undefined") { showFrm = true; } } if(showFrm === false) { return; } showFilter(); if( $.isFunction(p.afterShowSearch) ) { p.afterShowSearch($("#"+fid)); } } else { var fields = [], colNames = $("#"+$t.p.id).jqGrid("getGridParam","colNames"), colModel = $("#"+$t.p.id).jqGrid("getGridParam","colModel"), stempl = ['eq','ne','lt','le','gt','ge','bw','bn','in','ni','ew','en','cn','nc'], j,pos,k,oprtr=[]; if (p.sopt !==null) { k=0; for(j=0;j