+++ /dev/null
-;(function($){\r
-/**\r
- * jqGrid extension for form editing Grid Data\r
- * Tony Tomov tony@trirand.com\r
- * http://trirand.com/blog/ \r
- * Dual licensed under the MIT and GPL licenses:\r
- * http://www.opensource.org/licenses/mit-license.php\r
- * http://www.gnu.org/licenses/gpl.html\r
-**/ \r
-$.fn.extend({\r
- searchGrid : function ( p ) {\r
- p = $.extend({\r
- top : 0,\r
- left: 0,\r
- width: 360,\r
- height: 80,\r
- modal: false,\r
- drag: true,\r
- closeicon: 'ico-close.gif',\r
- dirty: false,\r
- sField:'searchField',\r
- sValue:'searchString',\r
- sOper: 'searchOper',\r
- processData: "",\r
- checkInput :false,\r
- beforeShowSearch: null,\r
- afterShowSearch : null,\r
- onInitializeSearch: null,\r
- // translation\r
- // if you want to change or remove the order change it in sopt\r
- // ['bw','eq','ne','lt','le','gt','ge','ew','cn'] \r
- sopt: null \r
- }, $.jgrid.search, p || {});\r
- return this.each(function(){\r
- var $t = this;\r
- if( !$t.grid ) { return; }\r
- if(!p.imgpath) { p.imgpath= $t.p.imgpath; }\r
- var gID = $("table:first",$t.grid.bDiv).attr("id");\r
- var IDs = { themodal:'srchmod'+gID,modalhead:'srchhead'+gID,modalcontent:'srchcnt'+gID };\r
- if ( $("#"+IDs.themodal).html() != null ) {\r
- if( $.isFunction('beforeShowSearch') ) { beforeShowSearch($("#srchcnt"+gID)); }\r
- viewModal("#"+IDs.themodal,{modal: p.modal});\r
- if( $.isFunction('afterShowSearch') ) { afterShowSearch($("#srchcnt"+gID)); }\r
- } else {\r
- var cM = $t.p.colModel;\r
- var cNames = "<select id='snames' class='search'>";\r
- var nm, hc, sf;\r
- for(var i=0; i< cM.length;i++) {\r
- nm = cM[i].name;\r
- hc = (cM[i].hidden===true) ? true : false;\r
- sf = (cM[i].search===false) ? false: true;\r
- if( nm !== 'cb' && nm !== 'subgrid' && sf && !hc ) { // add here condition for searchable\r
- var sname = (cM[i].index) ? cM[i].index : nm;\r
- cNames += "<option value='"+sname+"'>"+$t.p.colNames[i]+"</option>";\r
- }\r
- }\r
- cNames += "</select>";\r
- var getopt = p.sopt || ['bw','eq','ne','lt','le','gt','ge','ew','cn'];\r
- var sOpt = "<select id='sopt' class='search'>";\r
- for(var i = 0; i<getopt.length;i++) {\r
- sOpt += getopt[i]=='eq' ? "<option value='eq'>"+p.odata[0]+"</option>" : "";\r
- sOpt += getopt[i]=='ne' ? "<option value='ne'>"+p.odata[1]+"</option>" : "";\r
- sOpt += getopt[i]=='lt' ? "<option value='lt'>"+p.odata[2]+"</option>" : "";\r
- sOpt += getopt[i]=='le' ? "<option value='le'>"+p.odata[3]+"</option>" : "";\r
- sOpt += getopt[i]=='gt' ? "<option value='gt'>"+p.odata[4]+"</option>" : "";\r
- sOpt += getopt[i]=='ge' ? "<option value='ge'>"+p.odata[5]+"</option>" : "";\r
- sOpt += getopt[i]=='bw' ? "<option value='bw'>"+p.odata[6]+"</option>" : "";\r
- sOpt += getopt[i]=='ew' ? "<option value='ew'>"+p.odata[7]+"</option>" : "";\r
- sOpt += getopt[i]=='cn' ? "<option value='cn'>"+p.odata[8]+"</option>" : "";\r
- };\r
- sOpt += "</select>";\r
- // field and buttons\r
- var sField = "<input id='sval' class='search' type='text' size='20' maxlength='100'/>";\r
- var bSearch = "<input id='sbut' class='buttonsearch' type='button' value='"+p.Find+"'/>";\r
- var bReset = "<input id='sreset' class='buttonsearch' type='button' value='"+p.Reset+"'/>";\r
- var cnt = $("<table width='100%'><tbody><tr style='display:none' id='srcherr'><td colspan='5'></td></tr><tr><td>"+cNames+"</td><td>"+sOpt+"</td><td>"+sField+"</td><td>"+bSearch+"</td><td>"+bReset+"</td></tr></tbody></table>");\r
- createModal(IDs,cnt,p,$t.grid.hDiv,$t.grid.hDiv);\r
- if ( $.isFunction('onInitializeSearch') ) { onInitializeSearch( $("#srchcnt"+gID) ); };\r
- if ( $.isFunction('beforeShowSearch') ) { beforeShowSearch($("#srchcnt"+gID)); };\r
- viewModal("#"+IDs.themodal,{modal:p.modal});\r
- if($.isFunction('afterShowSearch')) { afterShowSearch($("#srchcnt"+gID)); }\r
- if(p.drag) { DnRModal("#"+IDs.themodal,"#"+IDs.modalhead+" td.modaltext"); }\r
- $("#sbut","#"+IDs.themodal).click(function(){\r
- if( $("#sval","#"+IDs.themodal).val() !="" ) {\r
- var es=[true,"",""];\r
- $("#srcherr >td","#srchcnt"+gID).html("").hide();\r
- $t.p.searchdata[p.sField] = $("option[@selected]","#snames").val();\r
- $t.p.searchdata[p.sOper] = $("option[@selected]","#sopt").val();\r
- $t.p.searchdata[p.sValue] = $("#sval","#"+IDs.modalcontent).val();\r
- if(p.checkInput) {\r
- for(var i=0; i< cM.length;i++) {\r
- var sname = (cM[i].index) ? cM[i].index : nm;\r
- if (sname == $t.p.searchdata[p.sField]) {\r
- break;\r
- }\r
- }\r
- es = checkValues($t.p.searchdata[p.sValue],i,$t);\r
- }\r
- if (es[0]===true) {\r
- $t.p.search = true; // initialize the search\r
- // construct array of data which is passed in populate() see jqGrid\r
- if(p.dirty) { $(".no-dirty-cell",$t.p.pager).addClass("dirty-cell"); }\r
- $t.p.page= 1;\r
- $($t).trigger("reloadGrid");\r
- } else {\r
- $("#srcherr >td","#srchcnt"+gID).html(es[1]).show();\r
- }\r
- }\r
- });\r
- $("#sreset","#"+IDs.themodal).click(function(){\r
- if ($t.p.search) {\r
- $("#srcherr >td","#srchcnt"+gID).html("").hide();\r
- $t.p.search = false;\r
- $t.p.searchdata = {};\r
- $t.p.page= 1;\r
- $("#sval","#"+IDs.themodal).val("");\r
- if(p.dirty) { $(".no-dirty-cell",$t.p.pager).removeClass("dirty-cell"); }\r
- $($t).trigger("reloadGrid");\r
- }\r
- });\r
- }\r
- });\r
- },\r
- editGridRow : function(rowid, p){\r
- p = $.extend({\r
- top : 0,\r
- left: 0,\r
- width: 0,\r
- height: 0,\r
- modal: false,\r
- drag: true, \r
- closeicon: 'ico-close.gif',\r
- imgpath: '',\r
- url: null,\r
- mtype : "POST",\r
- closeAfterAdd : false,\r
- clearAfterAdd : true,\r
- closeAfterEdit : false,\r
- reloadAfterSubmit : true,\r
- onInitializeForm: null, // only once\r
- beforeInitData: null,\r
- beforeShowForm: null,\r
- afterShowForm: null,\r
- beforeSubmit: null,\r
- afterSubmit: null,\r
- onclickSubmit: null,\r
- editData : {}\r
- }, $.jgrid.edit, p || {});\r
- return this.each(function(){\r
- var $t = this;\r
- if (!$t.grid || !rowid) { return; }\r
- if(!p.imgpath) { p.imgpath= $t.p.imgpath; }\r
- // I hate to rewrite code, but ...\r
- var gID = $("table:first",$t.grid.bDiv).attr("id");\r
- var IDs = {themodal:'editmod'+gID,modalhead:'edithd'+gID,modalcontent:'editcnt'+gID};\r
- var onBeforeShow = typeof p.beforeShowForm === 'function' ? true: false;\r
- var onAfterShow = typeof p.afterShowForm === 'function' ? true: false;\r
- var onBeforeInit = typeof p.beforeInitData === 'function' ? true: false;\r
- if (rowid=="new") {\r
- rowid = "_empty";\r
- p.caption=p.addCaption;\r
- } else {\r
- p.caption=p.editCaption;\r
- };\r
- var frmgr = "FrmGrid_"+gID;\r
- var frmtb = "TblGrid_"+gID;\r
- if ( $("#"+IDs.themodal).html() != null ) {\r
- $(".modaltext","#"+IDs.modalhead).html(p.caption);\r
- $("#FormError","#"+frmtb).hide();\r
- if(onBeforeInit) { p.beforeInitData($("#"+frmgr)); }\r
- fillData(rowid,$t);\r
- if(rowid=="_empty") { $("#pData, #nData","#"+frmtb).hide(); } else { $("#pData, #nData","#"+frmtb).show(); }\r
- if(onBeforeShow) { p.beforeShowForm($("#"+frmgr)); }\r
- viewModal("#"+IDs.themodal,{modal:p.modal});\r
- if(onAfterShow) { p.afterShowForm($("#"+frmgr)); }\r
- } else {\r
- var frm = $("<form name='FormPost' id='"+frmgr+"' class='FormGrid'></form>");\r
- var tbl =$("<table id='"+frmtb+"' class='EditTable' cellspacing='0' cellpading='0' border='0'><tbody></tbody></table>");\r
- $(frm).append(tbl);\r
- $(tbl).append("<tr id='FormError' style='display:none'><td colspan='2'>"+" "+"</td></tr>");\r
- // set the id.\r
- // use carefull only to change here colproperties.\r
- if(onBeforeInit) { p.beforeInitData($("#"+frmgr)); }\r
- var valref = createData(rowid,$t,tbl);\r
- // buttons at footer\r
- var imp = $t.p.imgpath;\r
- var bP ="<img id='pData' src='"+imp+$t.p.previmg+"'/>";\r
- var bN ="<img id='nData' src='"+imp+$t.p.nextimg+"'/>";\r
- var bS ="<input id='sData' type='button' class='EditButton' value='"+p.bSubmit+"'/>";\r
- var bC ="<input id='cData' type='button' class='EditButton' value='"+p.bCancel+"'/>";\r
- $(tbl).append("<tr id='Act_Buttons'><td class='navButton'>"+bP+" "+bN+"</td><td class='EditButton'>"+bS+" "+bC+"</td></tr>");\r
- // beforeinitdata after creation of the form\r
- createModal(IDs,frm,p,$t.grid.hDiv,$t.grid.hDiv);\r
- // here initform - only once\r
- if(typeof p.onInitializeForm === 'function') { p.onInitializeForm($("#"+frmgr)); }\r
- if( p.drag ) { DnRModal("#"+IDs.themodal,"#"+IDs.modalhead+" td.modaltext"); }\r
- if(rowid=="_empty") { $("#pData,#nData","#"+frmtb).hide(); } else { $("#pData,#nData","#"+frmtb).show(); }\r
- if(onBeforeShow) { p.beforeShowForm($("#"+frmgr)); }\r
- viewModal("#"+IDs.themodal,{modal:p.modal});\r
- if(onAfterShow) { p.afterShowForm($("#"+frmgr)); }\r
- $("#sData", "#"+frmtb).click(function(e){\r
- var postdata = {}, ret=[true,"",""], extpost={};\r
- $("#FormError","#"+frmtb).hide();\r
- // all depend on ret array\r
- //ret[0] - succes\r
- //ret[1] - msg if not succes\r
- //ret[2] - the id that will be set if reload after submit false\r
- var j =0;\r
- $(".FormElement", "#"+frmtb).each(function(i){\r
- var suc = true;\r
- switch ($(this).get(0).type) {\r
- case "checkbox":\r
- if($(this).attr("checked")) {\r
- postdata[this.name]= $(this).val();\r
- }else {\r
- postdata[this.name]= "";\r
- extpost[this.name] = $(this).attr("offval");\r
- }\r
- break;\r
- case "select-one":\r
- postdata[this.name]= $("option:selected",this).val();\r
- extpost[this.name]= $("option:selected",this).text();\r
- break;\r
- case "select-multiple":\r
- postdata[this.name]= $(this).val();\r
- var selectedText = [];\r
- $("option:selected",this).each(\r
- function(i,selected){\r
- selectedText[i] = $(selected).text();\r
- }\r
- );\r
- extpost[this.name]= selectedText.join(",");\r
- break; \r
- case "password":\r
- case "text":\r
- case "textarea":\r
- postdata[this.name] = $(this).val();\r
- ret = checkValues($(this).val(),valref[i],$t);\r
- if(ret[0] === false) { suc=false; }\r
- break;\r
- }\r
- j++;\r
- if(!suc) { return false; }\r
- });\r
- if(j==0) { ret[0] = false; ret[1] = $.jgrid.errors.norecords; }\r
- if( typeof p.onclickSubmit === 'function' ) { p.editData = p.onclickSubmit(p) || {}; }\r
- if(ret[0]) {\r
- if( typeof p.beforeSubmit === 'function') { ret = p.beforeSubmit(postdata,$("#"+frmgr)); }\r
- }\r
- var gurl = p.url ? p.url : $t.p.editurl;\r
- if(ret[0]) {\r
- if(!gurl) { ret[0]=false; ret[1] += " "+$.jgrid.errors.nourl; }\r
- }\r
- if(ret[0] === false) {\r
- $("#FormError>td","#"+frmtb).html(ret[1]);\r
- $("#FormError","#"+frmtb).show();\r
- } else {\r
- if(!p.processing) {\r
- p.processing = true;\r
- $("div.loading","#"+IDs.themodal).fadeIn("fast");\r
- $(this).attr("disabled",true);\r
- // we add to pos data array the action - the name is oper\r
- postdata.oper = postdata.id == "_empty" ? "add" : "edit";\r
- postdata = $.extend(postdata,p.editData);\r
- $.ajax({\r
- url:gurl,\r
- type: p.mtype,\r
- data:postdata,\r
- complete:function(data,Status){\r
- if(Status != "success") {\r
- ret[0] = false;\r
- ret[1] = Status+" Status: "+data.statusText +" Error code: "+data.status;\r
- } else {\r
- // data is posted successful\r
- // execute aftersubmit with the returned data from server\r
- if( typeof p.afterSubmit === 'function' ) {\r
- ret = p.afterSubmit(data,postdata);\r
- }\r
- }\r
- if(ret[0] === false) {\r
- $("#FormError>td","#"+frmtb).html(ret[1]);\r
- $("#FormError","#"+frmtb).show();\r
- } else {\r
- postdata = $.extend(postdata,extpost);\r
- // the action is add\r
- if(postdata.id=="_empty" ) {\r
- //id processing\r
- // user not set the id ret[2]\r
- if(!ret[2]) { ret[2] = parseInt($($t).getGridParam('records'))+1; }\r
- postdata.id = ret[2];\r
- if(p.closeAfterAdd) {\r
- if(p.reloadAfterSubmit) { $($t).trigger("reloadGrid"); }\r
- else { $($t).addRowData(ret[2],postdata,"first"); }\r
- $("#"+IDs.themodal).jqmHide();\r
- } else if (p.clearAfterAdd) {\r
- if(p.reloadAfterSubmit) { $($t).trigger("reloadGrid"); }\r
- else { $($t).addRowData(ret[2],postdata,"first"); }\r
- $(".FormElement", "#"+frmtb).each(function(i){\r
- switch ($(this).get(0).type) {\r
- case "checkbox":\r
- $(this).attr("checked",0);\r
- break;\r
- case "select-one":\r
- case "select-multiple":\r
- $("option",this).attr("selected","");\r
- break;\r
- case "password":\r
- case "text":\r
- case "textarea":\r
- if(this.name =='id') { $(this).val("_empty"); }\r
- else { $(this).val(""); }\r
- break;\r
- }\r
- });\r
- } else {\r
- if(p.reloadAfterSubmit) { $($t).trigger("reloadGrid"); }\r
- else { $($t).addRowData(ret[2],postdata,"first"); }\r
- }\r
- } else {\r
- // the action is update\r
- if(p.reloadAfterSubmit) {\r
- $($t).trigger("reloadGrid");\r
- if( !p.closeAfterEdit ) { $($t).setSelection(postdata.id); }\r
- } else {\r
- if($t.p.treeGrid === true) {\r
- $($t).setTreeRow(postdata.id,postdata);\r
- } else {\r
- $($t).setRowData(postdata.id,postdata);\r
- }\r
- }\r
- if(p.closeAfterEdit) { $("#"+IDs.themodal).jqmHide(); }\r
- }\r
- }\r
- p.processing=false;\r
- $("#sData", "#"+frmtb).attr("disabled",false);\r
- $("div.loading","#"+IDs.themodal).fadeOut("fast");\r
- }\r
- });\r
- }\r
- }\r
- e.stopPropagation();\r
- });\r
- $("#cData", "#"+frmtb).click(function(e){\r
- $("#"+IDs.themodal).jqmHide();\r
- e.stopPropagation();\r
- });\r
- $("#nData", "#"+frmtb).click(function(e){\r
- $("#FormError","#"+frmtb).hide();\r
- var npos = getCurrPos();\r
- npos[0] = parseInt(npos[0]);\r
- if(npos[0] != -1 && npos[1][npos[0]+1]) {\r
- fillData(npos[1][npos[0]+1],$t);\r
- $($t).setSelection(npos[1][npos[0]+1]);\r
- updateNav(npos[0]+1,npos[1].length-1);\r
- };\r
- return false;\r
- });\r
- $("#pData", "#"+frmtb).click(function(e){\r
- $("#FormError","#"+frmtb).hide();\r
- var ppos = getCurrPos();\r
- if(ppos[0] != -1 && ppos[1][ppos[0]-1]) {\r
- fillData(ppos[1][ppos[0]-1],$t);\r
- $($t).setSelection(ppos[1][ppos[0]-1]);\r
- updateNav(ppos[0]-1,ppos[1].length-1);\r
- };\r
- return false;\r
- });\r
- };\r
- var posInit =getCurrPos();\r
- updateNav(posInit[0],posInit[1].length-1);\r
- function updateNav(cr,totr,rid){ \r
- var imp = $t.p.imgpath;\r
- if (cr==0) { $("#pData","#"+frmtb).attr("src",imp+"off-"+$t.p.previmg); } else { $("#pData","#"+frmtb).attr("src",imp+$t.p.previmg); }\r
- if (cr==totr) { $("#nData","#"+frmtb).attr("src",imp+"off-"+$t.p.nextimg); } else { $("#nData","#"+frmtb).attr("src",imp+$t.p.nextimg); }\r
- };\r
- function getCurrPos() {\r
- var rowsInGrid = $($t).getDataIDs();\r
- var selrow = $("#id_g","#"+frmtb).val();\r
- var pos = $.inArray(selrow,rowsInGrid);\r
- return [pos,rowsInGrid];\r
- };\r
- function createData(rowid,obj,tb){\r
- var nm, hc,trdata, tdl, tde, cnt=0,tmp, dc,elc, retpos=[];\r
- $('#'+rowid+' td',obj.grid.bDiv).each( function(i) {\r
- nm = obj.p.colModel[i].name;\r
- // hidden fields are included in the form\r
- if(obj.p.colModel[i].editrules && obj.p.colModel[i].editrules.edithidden == true) {\r
- hc = false;\r
- } else {\r
- hc = obj.p.colModel[i].hidden === true ? true : false;\r
- }\r
- dc = hc ? "style='display:none'" : "";\r
- if ( nm !== 'cb' && nm !== 'subgrid' && obj.p.colModel[i].editable===true) {\r
- if(nm == obj.p.ExpandColumn && obj.p.treeGrid === true) {\r
- tmp = $(this).text();\r
- } else {\r
- tmp = $(this).html().replace(/\ \;/ig,'');\r
- }\r
- var opt = $.extend(obj.p.colModel[i].editoptions || {} ,{id:nm,name:nm});\r
- if(!obj.p.colModel[i].edittype) obj.p.colModel[i].edittype = "text";\r
- elc = createEl(obj.p.colModel[i].edittype,opt,tmp);\r
- $(elc).addClass("FormElement");\r
- trdata = $("<tr "+dc+"></tr>").addClass("FormData");\r
- tdl = $("<td></td>").addClass("CaptionTD");\r
- tde = $("<td></td>").addClass("DataTD");\r
- $(tdl).html(obj.p.colNames[i]+": ");\r
- $(tde).append(elc);\r
- trdata.append(tdl);\r
- trdata.append(tde);\r
- if(tb) { $(tb).append(trdata); }\r
- else { $(trdata).insertBefore("#Act_Buttons"); }\r
- retpos[cnt] = i;\r
- cnt++;\r
- };\r
- });\r
- if( cnt > 0) {\r
- var idrow = $("<tr class='FormData' style='display:none'><td class='CaptionTD'>"+" "+"</td><td class='DataTD'><input class='FormElement' id='id_g' type='text' name='id' value='"+rowid+"'/></td></tr>");\r
- if(tb) { $(tb).append(idrow); }\r
- else { $(idrow).insertBefore("#Act_Buttons"); }\r
- }\r
- return retpos;\r
- };\r
- function fillData(rowid,obj){\r
- var nm, hc,cnt=0,tmp;\r
- $('#'+rowid+' td',obj.grid.bDiv).each( function(i) {\r
- nm = obj.p.colModel[i].name;\r
- // hidden fields are included in the form\r
- if(obj.p.colModel[i].editrules && obj.p.colModel[i].editrules.edithidden === true) {\r
- hc = false;\r
- } else {\r
- hc = obj.p.colModel[i].hidden === true ? true : false;\r
- }\r
- if ( nm !== 'cb' && nm !== 'subgrid' && obj.p.colModel[i].editable===true) {\r
- if(nm == obj.p.ExpandColumn && obj.p.treeGrid === true) {\r
- tmp = $(this).text();\r
- } else {\r
- tmp = $(this).html().replace(/\ \;/ig,'');\r
- }\r
- switch (obj.p.colModel[i].edittype) {\r
- case "password":\r
- case "text":\r
- case "textarea":\r
- $("#"+nm,"#"+frmtb).val(tmp);\r
- break;\r
- case "select":\r
- $("#"+nm+" option","#"+frmtb).each(function(j){\r
- if (!obj.p.colModel[i].editoptions.multiple && tmp == $(this).text() ){\r
- this.selected= true;\r
- } else if (obj.p.colModel[i].editoptions.multiple){\r
- if( $.inArray($(this).text(), tmp.split(",") ) > -1 ){\r
- this.selected = true;\r
- }else{\r
- this.selected = false;\r
- }\r
- } else {\r
- this.selected = false;\r
- }\r
- });\r
- break;\r
- case "checkbox":\r
- if(tmp==$("#"+nm,"#"+frmtb).val()) {\r
- $("#"+nm,"#"+frmtb).attr("checked",true);\r
- $("#"+nm,"#"+frmtb).attr("defaultChecked",true); //ie\r
- } else {\r
- $("#"+nm,"#"+frmtb).attr("checked",false);\r
- $("#"+nm,"#"+frmtb).attr("defaultChecked",""); //ie\r
- }\r
- break; \r
- }\r
- if (hc) { $("#"+nm,"#"+frmtb).parents("tr:first").hide(); }\r
- cnt++;\r
- }\r
- });\r
- if(cnt>0) { $("#id_g","#"+frmtb).val(rowid); }\r
- else { $("#id_g","#"+frmtb).val(""); }\r
- return cnt;\r
- };\r
- });\r
- },\r
- delGridRow : function(rowids,p) {\r
- p = $.extend({\r
- top : 0,\r
- left: 0,\r
- width: 240,\r
- height: 90,\r
- modal: false,\r
- drag: true, \r
- closeicon: 'ico-close.gif',\r
- imgpath: '',\r
- url : '',\r
- mtype : "POST",\r
- reloadAfterSubmit: true,\r
- beforeShowForm: null,\r
- afterShowForm: null,\r
- beforeSubmit: null,\r
- onclickSubmit: null,\r
- afterSubmit: null,\r
- onclickSubmit: null,\r
- delData: {}\r
- }, $.jgrid.del, p ||{});\r
- return this.each(function(){\r
- var $t = this;\r
- if (!$t.grid ) { return; }\r
- if(!rowids) { return; }\r
- if(!p.imgpath) { p.imgpath= $t.p.imgpath; }\r
- var onBeforeShow = typeof p.beforeShowForm === 'function' ? true: false;\r
- var onAfterShow = typeof p.afterShowForm === 'function' ? true: false;\r
- if (isArray(rowids)) { rowids = rowids.join(); }\r
- var gID = $("table:first",$t.grid.bDiv).attr("id");\r
- var IDs = {themodal:'delmod'+gID,modalhead:'delhd'+gID,modalcontent:'delcnt'+gID};\r
- var dtbl = "DelTbl_"+gID;\r
- if ( $("#"+IDs.themodal).html() != null ) {\r
- $("#DelData>td","#"+dtbl).text(rowids);\r
- $("#DelError","#"+dtbl).hide();\r
- if(onBeforeShow) { p.beforeShowForm($("#"+dtbl)); }\r
- viewModal("#"+IDs.themodal,{modal:p.modal});\r
- if(onAfterShow) { p.afterShowForm($("#"+dtbl)); }\r
- } else {\r
- var tbl =$("<table id='"+dtbl+"' class='DelTable'><tbody></tbody></table>");\r
- // error data \r
- $(tbl).append("<tr id='DelError' style='display:none'><td >"+" "+"</td></tr>");\r
- $(tbl).append("<tr id='DelData' style='display:none'><td >"+rowids+"</td></tr>");\r
- $(tbl).append("<tr><td >"+p.msg+"</td></tr>");\r
- // buttons at footer\r
- var bS ="<input id='dData' type='button' value='"+p.bSubmit+"'/>";\r
- var bC ="<input id='eData' type='button' value='"+p.bCancel+"'/>";\r
- $(tbl).append("<tr><td class='DelButton'>"+bS+" "+bC+"</td></tr>");\r
- createModal(IDs,tbl,p,$t.grid.hDiv,$t.grid.hDiv);\r
- if( p.drag) { DnRModal("#"+IDs.themodal,"#"+IDs.modalhead+" td.modaltext"); }\r
- $("#dData","#"+dtbl).click(function(e){\r
- var ret=[true,""];\r
- var postdata = $("#DelData>td","#"+dtbl).text(); //the pair is name=val1,val2,...\r
- if( typeof p.onclickSubmit === 'function' ) { p.delData = p.onclickSubmit(p) || {}; }\r
- if( typeof p.beforeSubmit === 'function' ) { ret = p.beforeSubmit(postdata); }\r
- var gurl = p.url ? p.url : $t.p.editurl;\r
- if(!gurl) { ret[0]=false;ret[1] += " "+$.jgrid.errors.nourl;}\r
- if(ret[0] === false) {\r
- $("#DelError>td","#"+dtbl).html(ret[1]);\r
- $("#DelError","#"+dtbl).show();\r
- } else {\r
- if(!p.processing) {\r
- p.processing = true;\r
- $("div.loading","#"+IDs.themodal).fadeIn("fast");\r
- $(this).attr("disabled",true);\r
- var postd = $.extend({oper:"del", id:postdata},p.delData);\r
- $.ajax({\r
- url:gurl,\r
- type: p.mtype,\r
- data:postd,\r
- complete:function(data,Status){\r
- if(Status != "success") {\r
- ret[0] = false;\r
- ret[1] = Status+" Status: "+data.statusText +" Error code: "+data.status;\r
- } else {\r
- // data is posted successful\r
- // execute aftersubmit with the returned data from server\r
- if( typeof p.afterSubmit === 'function' ) {\r
- ret = p.afterSubmit(data,postdata);\r
- }\r
- }\r
- if(ret[0] === false) {\r
- $("#DelError>td","#"+dtbl).html(ret[1]);\r
- $("#DelError","#"+dtbl).show();\r
- } else {\r
- if(p.reloadAfterSubmit) {\r
- if($t.p.treeGrid) {\r
- $($t).setGridParam({treeANode:0,datatype:$t.p.treedatatype});\r
- }\r
- $($t).trigger("reloadGrid");\r
- } else {\r
- var toarr = [];\r
- toarr = postdata.split(",");\r
- if($t.p.treeGrid===true){\r
- try {$($t).delTreeNode(toarr[0])} catch(e){}\r
- } else {\r
- for(var i=0;i<toarr.length;i++) {\r
- $($t).delRowData(toarr[i]);\r
- }\r
- }\r
- $t.p.selrow = null;\r
- $t.p.selarrrow = [];\r
- }\r
- }\r
- p.processing=false;\r
- $("#dData", "#"+dtbl).attr("disabled",false);\r
- $("div.loading","#"+IDs.themodal).fadeOut("fast");\r
- if(ret[0]) { $("#"+IDs.themodal).jqmHide(); }\r
- }\r
- });\r
- }\r
- }\r
- return false;\r
- });\r
- $("#eData", "#"+dtbl).click(function(e){\r
- $("#"+IDs.themodal).jqmHide();\r
- return false;\r
- });\r
- if(onBeforeShow) { p.beforeShowForm($("#"+dtbl)); }\r
- viewModal("#"+IDs.themodal,{modal:p.modal});\r
- if(onAfterShow) { p.afterShowForm($("#"+dtbl)); }\r
- }\r
- });\r
- },\r
- navGrid : function (elem, o, pEdit,pAdd,pDel,pSearch) {\r
- o = $.extend({\r
- edit: true,\r
- editicon: "row_edit.gif",\r
-\r
- add: true,\r
- addicon:"row_add.gif",\r
-\r
- del: true,\r
- delicon:"row_delete.gif",\r
-\r
- search: true,\r
- searchicon:"find.gif",\r
-\r
- refresh: true,\r
- refreshicon:"refresh.gif",\r
- refreshstate: 'firstpage',\r
-\r
- position : "left",\r
- closeicon: "ico-close.gif"\r
- }, $.jgrid.nav, o ||{});\r
- return this.each(function() { \r
- var alertIDs = {themodal:'alertmod',modalhead:'alerthd',modalcontent:'alertcnt'};\r
- var $t = this;\r
- if(!$t.grid) { return; }\r
- if ($("#"+alertIDs.themodal).html() == null) {\r
- var vwidth;\r
- var vheight;\r
- if (typeof window.innerWidth != 'undefined') {\r
- vwidth = window.innerWidth,\r
- vheight = window.innerHeight\r
- } else if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0) {\r
- vwidth = document.documentElement.clientWidth,\r
- vheight = document.documentElement.clientHeight\r
- } else {\r
- vwidth=1024;\r
- vheight=768;\r
- }\r
- createModal(alertIDs,"<div>"+o.alerttext+"</div>",{imgpath:$t.p.imgpath,closeicon:o.closeicon,caption:o.alertcap,top:vheight/2-25,left:vwidth/2-100,width:200,height:50},$t.grid.hDiv,$t.grid.hDiv,true);\r
- DnRModal("#"+alertIDs.themodal,"#"+alertIDs.modalhead);\r
- }\r
- var navTbl = $("<table cellspacing='0' cellpadding='0' border='0' class='navtable'><tbody></tbody></table>").height(20);\r
- var trd = document.createElement("tr");\r
- $(trd).addClass("nav-row");\r
- var imp = $t.p.imgpath;\r
- var tbd;\r
- if (o.edit) {\r
- tbd = document.createElement("td");\r
- $(tbd).append(" ").css({border:"none",padding:"0px"});\r
- trd.appendChild(tbd);\r
- tbd = document.createElement("td");\r
- tbd.title = o.edittitle || "";\r
- $(tbd).append("<table cellspacing='0' cellpadding='0' border='0' class='tbutton'><tr><td><img src='"+imp+o.editicon+"'/></td><td valign='center'>"+o.edittext+" </td></tr></table>")\r
- .css("cursor","pointer")\r
- .addClass("nav-button")\r
- .click(function(){\r
- var sr = $($t).getGridParam('selrow');\r
- if (sr) { $($t).editGridRow(sr,pEdit || {}); }\r
- else { viewModal("#"+alertIDs.themodal); }\r
- return false;\r
- })\r
- .hover( function () {\r
- $(this).addClass("nav-hover");\r
- },\r
- function () {\r
- $(this).removeClass("nav-hover");\r
- }\r
- );\r
- trd.appendChild(tbd);\r
- tbd = null;\r
- }\r
- if (o.add) {\r
- tbd = document.createElement("td");\r
- $(tbd).append(" ").css({border:"none",padding:"0px"});\r
- trd.appendChild(tbd);\r
- tbd = document.createElement("td");\r
- tbd.title = o.addtitle || "";\r
- $(tbd).append("<table cellspacing='0' cellpadding='0' border='0' class='tbutton'><tr><td><img src='"+imp+o.addicon+"'/></td><td>"+o.addtext+" </td></tr></table>")\r
- .css("cursor","pointer")\r
- .addClass("nav-button")\r
- .click(function(){\r
- if (typeof o.addfunc == 'function') {\r
- o.addfunc();\r
- } else {\r
- $($t).editGridRow("new",pAdd || {});\r
- }\r
- return false;\r
- })\r
- .hover(\r
- function () {\r
- $(this).addClass("nav-hover");\r
- },\r
- function () {\r
- $(this).removeClass("nav-hover");\r
- }\r
- );\r
- trd.appendChild(tbd);\r
- tbd = null;\r
- }\r
- if (o.del) {\r
- tbd = document.createElement("td");\r
- $(tbd).append(" ").css({border:"none",padding:"0px"});\r
- trd.appendChild(tbd);\r
- tbd = document.createElement("td");\r
- tbd.title = o.deltitle || "";\r
- $(tbd).append("<table cellspacing='0' cellpadding='0' border='0' class='tbutton'><tr><td><img src='"+imp+o.delicon+"'/></td><td>"+o.deltext+" </td></tr></table>")\r
- .css("cursor","pointer")\r
- .addClass("nav-button")\r
- .click(function(){\r
- var dr;\r
- if($t.p.multiselect) {\r
- dr = $($t).getGridParam('selarrrow');\r
- if(dr.length==0) { dr = null; }\r
- } else {\r
- dr = $($t).getGridParam('selrow');\r
- }\r
- if (dr) { $($t).delGridRow(dr,pDel || {}); }\r
- else { viewModal("#"+alertIDs.themodal); }\r
- return false;\r
- })\r
- .hover(\r
- function () {\r
- $(this).addClass("nav-hover");\r
- },\r
- function () {\r
- $(this).removeClass("nav-hover");\r
- }\r
- );\r
- trd.appendChild(tbd);\r
- tbd = null;\r
- }\r
- if (o.search) {\r
- tbd = document.createElement("td");\r
- $(tbd).append(" ").css({border:"none",padding:"0px"});\r
- trd.appendChild(tbd);\r
- tbd = document.createElement("td");\r
- if( $(elem)[0] == $t.p.pager[0] ) { pSearch = $.extend(pSearch,{dirty:true}); }\r
- tbd.title = o.searchtitle || "";\r
- $(tbd).append("<table cellspacing='0' cellpadding='0' border='0' class='tbutton'><tr><td class='no-dirty-cell'><img src='"+imp+o.searchicon+"'/></td><td>"+o.searchtext+" </td></tr></table>")\r
- .css({cursor:"pointer"})\r
- .addClass("nav-button")\r
- .click(function(){\r
- $($t).searchGrid(pSearch || {});\r
- return false;\r
- })\r
- .hover(\r
- function () {\r
- $(this).addClass("nav-hover");\r
- },\r
- function () {\r
- $(this).removeClass("nav-hover");\r
- }\r
- );\r
- trd.appendChild(tbd);\r
- tbd = null;\r
- }\r
- if (o.refresh) {\r
- tbd = document.createElement("td");\r
- $(tbd).append(" ").css({border:"none",padding:"0px"});\r
- trd.appendChild(tbd);\r
- tbd = document.createElement("td");\r
- tbd.title = o.refreshtitle || "";\r
- var dirtycell = ($(elem)[0] == $t.p.pager[0] ) ? true : false;\r
- $(tbd).append("<table cellspacing='0' cellpadding='0' border='0' class='tbutton'><tr><td><img src='"+imp+o.refreshicon+"'/></td><td>"+o.refreshtext+" </td></tr></table>")\r
- .css("cursor","pointer")\r
- .addClass("nav-button")\r
- .click(function(){\r
- $t.p.search = false;\r
- switch (o.refreshstate) {\r
- case 'firstpage':\r
- $t.p.page=1;\r
- $($t).trigger("reloadGrid");\r
- break;\r
- case 'current':\r
- var sr = $t.p.multiselect===true ? selarrrow : $t.p.selrow;\r
- $($t).setGridParam({gridComplete: function() {\r
- if($t.p.multiselect===true) {\r
- if(sr.length>0) {\r
- for(var i=0;i<sr.length;i++){\r
- $($t).setSelection(sr[i]);\r
- }\r
- }\r
- } else {\r
- if(sr) {\r
- $($t).setSelection(sr);\r
- }\r
- }\r
- }});\r
- $($t).trigger("reloadGrid");\r
- break;\r
- }\r
- if (dirtycell) { $(".no-dirty-cell",$t.p.pager).removeClass("dirty-cell"); }\r
- if(o.search) {\r
- var gID = $("table:first",$t.grid.bDiv).attr("id");\r
- $("#sval",'#srchcnt'+gID).val("");\r
- }\r
- return false;\r
- })\r
- .hover(\r
- function () {\r
- $(this).addClass("nav-hover");\r
- },\r
- function () {\r
- $(this).removeClass("nav-hover");\r
- }\r
- );\r
- trd.appendChild(tbd);\r
- tbd = null;\r
- }\r
- if(o.position=="left") {\r
- $(navTbl).append(trd).addClass("nav-table-left");\r
- } else {\r
- $(navTbl).append(trd).addClass("nav-table-right");\r
- }\r
- $(elem).prepend(navTbl);\r
- });\r
- },\r
- navButtonAdd : function (elem, p) {\r
- p = $.extend({\r
- caption : "newButton",\r
- title: '',\r
- buttonimg : '',\r
- onClickButton: null,\r
- position : "last"\r
- }, p ||{});\r
- return this.each(function() {\r
- if( !this.grid) { return; }\r
- if( elem.indexOf("#") != 0) { elem = "#"+elem; }\r
- var findnav = $(".navtable",elem)[0];\r
- if (findnav) {\r
- var tdb, tbd1;\r
- var tbd1 = document.createElement("td");\r
- $(tbd1).append(" ").css({border:"none",padding:"0px"});\r
- var trd = $("tr:eq(0)",findnav)[0];\r
- if( p.position !='first' ) {\r
- trd.appendChild(tbd1);\r
- }\r
- tbd = document.createElement("td");\r
- tbd.title = p.title;\r
- var im = (p.buttonimg) ? "<img src='"+p.buttonimg+"'/>" : " ";\r
- $(tbd).append("<table cellspacing='0' cellpadding='0' border='0' class='tbutton'><tr><td>"+im+"</td><td>"+p.caption+" </td></tr></table>")\r
- .css("cursor","pointer")\r
- .addClass("nav-button")\r
- .click(function(e){\r
- if (typeof p.onClickButton == 'function') { p.onClickButton(); }\r
- e.stopPropagation();\r
- return false;\r
- })\r
- .hover(\r
- function () {\r
- $(this).addClass("nav-hover");\r
- },\r
- function () {\r
- $(this).removeClass("nav-hover");\r
- }\r
- );\r
- if(p.position != 'first') {\r
- trd.appendChild(tbd);\r
- } else {\r
- $(trd).prepend(tbd);\r
- $(trd).prepend(tbd1);\r
- }\r
- tbd=null;tbd1=null;\r
- }\r
- });\r
- },\r
- GridToForm : function( rowid, formid ) {\r
- return this.each(function(){\r
- var $t = this;\r
- if (!$t.grid) { return; } \r
- var rowdata = $($t).getRowData(rowid);\r
- if (rowdata) {\r
- for(var i in rowdata) {\r
- if ( $("[name="+i+"]",formid).is("input:radio") ) {\r
- $("[name="+i+"]",formid).each( function() {\r
- if( $(this).val() == rowdata[i] ) {\r
- $(this).attr("checked","checked");\r
- } else {\r
- $(this).attr("checked","");\r
- }\r
- });\r
- } else {\r
- // this is very slow on big table and form.\r
- $("[name="+i+"]",formid).val(rowdata[i]);\r
- }\r
- }\r
- }\r
- });\r
- },\r
- FormToGrid : function(rowid, formid){\r
- return this.each(function() {\r
- var $t = this;\r
- if(!$t.grid) { return; }\r
- var fields = $(formid).serializeArray();\r
- var griddata = {};\r
- $.each(fields, function(i, field){\r
- griddata[field.name] = field.value;\r
- });\r
- $($t).setRowData(rowid,griddata);\r
- });\r
- }\r
-});\r
-})(jQuery);\r