All Downloads are FREE. Search and download functionalities are using the official Maven repository.

template.js.plugins.grid.inlinedit.js Maven / Gradle / Ivy

There is a newer version: 6.0.1
Show newest version
/**
 * jqGrid extension for manipulating Grid Data
 * Tony Tomov [email protected]
 * 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
 **/
(function(a){a.jgrid.inlineEdit=a.jgrid.inlineEdit||{};a.jgrid.extend({editRow:function(c,l,k,f,b,g,e,h,i){var d={},j=a.makeArray(arguments).slice(1);if(a.type(j[0])==="object"){d=j[0]}else{if(l!==undefined){d.keys=l}if(a.isFunction(k)){d.oneditfunc=k}if(a.isFunction(f)){d.successfunc=f}if(b!==undefined){d.url=b}if(g!==undefined){d.extraparam=g}if(a.isFunction(e)){d.aftersavefunc=e}if(a.isFunction(h)){d.errorfunc=h}if(a.isFunction(i)){d.afterrestorefunc=i}}d=a.extend(true,{keys:false,oneditfunc:null,successfunc:null,url:null,extraparam:{},aftersavefunc:null,errorfunc:null,afterrestorefunc:null,restoreAfterError:true,mtype:"POST"},a.jgrid.inlineEdit,d);return this.each(function(){var p=this,v,q,n,o=0,u=null,t={},m,s,r;if(!p.grid){return}m=a(p).jqGrid("getInd",c,true);if(m===false){return}r=a.isFunction(d.beforeEditRow)?d.beforeEditRow.call(p,d,c):undefined;if(r===undefined){r=true}if(!r){return}n=a(m).attr("editable")||"0";if(n==="0"&&!a(m).hasClass("not-editable-row")){s=p.p.colModel;a('td[role="gridcell"]',m).each(function(z){v=s[z].name;var y=p.p.treeGrid===true&&v===p.p.ExpandColumn;if(y){q=a("span:first",this).html()}else{try{q=a.unformat.call(p,this,{rowId:c,colModel:s[z]},z)}catch(w){q=(s[z].edittype&&s[z].edittype==="textarea")?a(this).text():a(this).html()}}if(v!=="cb"&&v!=="subgrid"&&v!=="rn"){if(p.p.autoencode){q=a.jgrid.htmlDecode(q)}t[v]=q;if(s[z].editable===true){if(u===null){u=z}if(y){a("span:first",this).html("")}else{a(this).html("")}var x=a.extend({},s[z].editoptions||{},{id:c+"_"+v,name:v});if(!s[z].edittype){s[z].edittype="text"}if(q===" "||q===" "||(q.length===1&&q.charCodeAt(0)===160)){q=""}var A=a.jgrid.createEl.call(p,s[z].edittype,x,q,true,a.extend({},a.jgrid.ajaxOptions,p.p.ajaxSelectOptions||{}));a(A).addClass("editable");if(y){a("span:first",this).append(A)}else{a(this).append(A)}a.jgrid.bindEv.call(p,A,x);if(s[z].edittype==="select"&&s[z].editoptions!==undefined&&s[z].editoptions.multiple===true&&s[z].editoptions.dataUrl===undefined&&a.jgrid.msie){a(A).width(a(A).width())}o++}}});if(o>0){t.id=c;p.p.savedRow.push(t);a(m).attr("editable","1");setTimeout(function(){a("td:eq("+u+") input",m).focus()},0);if(d.keys===true){a(m).bind("keydown",function(x){if(x.keyCode===27){a(p).jqGrid("restoreRow",c,d.afterrestorefunc);if(p.p._inlinenav){try{a(p).jqGrid("showAddEditButtons")}catch(z){}}return false}if(x.keyCode===13){var w=x.target;if(w.tagName==="TEXTAREA"){return true}if(a(p).jqGrid("saveRow",c,d)){if(p.p._inlinenav){try{a(p).jqGrid("showAddEditButtons")}catch(y){}}}return false}})}a(p).triggerHandler("jqGridInlineEditRow",[c,d]);if(a.isFunction(d.oneditfunc)){d.oneditfunc.call(p,c)}}}})},saveRow:function(p,l,h,j,u,s,c){var f=a.makeArray(arguments).slice(1),D={};if(a.type(f[0])==="object"){D=f[0]}else{if(a.isFunction(l)){D.successfunc=l}if(h!==undefined){D.url=h}if(j!==undefined){D.extraparam=j}if(a.isFunction(u)){D.aftersavefunc=u}if(a.isFunction(s)){D.errorfunc=s}if(a.isFunction(c)){D.afterrestorefunc=c}}D=a.extend(true,{successfunc:null,url:null,extraparam:{},aftersavefunc:null,errorfunc:null,afterrestorefunc:null,restoreAfterError:true,mtype:"POST"},a.jgrid.inlineEdit,D);var r=false;var I=this[0],d,K={},C={},B={},E,n,g,x;if(!I.grid){return r}x=a(I).jqGrid("getInd",p,true);if(x===false){return r}var G=a.isFunction(D.beforeSaveRow)?D.beforeSaveRow.call(I,D,p):undefined;if(G===undefined){G=true}if(!G){return}E=a(x).attr("editable");D.url=D.url||I.p.editurl;if(E==="1"){var v;a('td[role="gridcell"]',x).each(function(o){v=I.p.colModel[o];d=v.name;if(d!=="cb"&&d!=="subgrid"&&v.editable===true&&d!=="rn"&&!a(this).hasClass("not-editable-cell")){switch(v.edittype){case"checkbox":var k=["Yes","No"];if(v.editoptions){k=v.editoptions.value.split(":")}K[d]=a("input",this).is(":checked")?k[0]:k[1];break;case"text":case"password":case"textarea":case"button":K[d]=a("input, textarea",this).val();break;case"select":if(!v.editoptions.multiple){K[d]=a("select option:selected",this).val();C[d]=a("select option:selected",this).text()}else{var L=a("select",this),N=[];K[d]=a(L).val();if(K[d]){K[d]=K[d].join(",")}else{K[d]=""}a("select option:selected",this).each(function(e,O){N[e]=a(O).text()});C[d]=N.join(",")}if(v.formatter&&v.formatter==="select"){C={}}break;case"custom":try{if(v.editoptions&&a.isFunction(v.editoptions.custom_value)){K[d]=v.editoptions.custom_value.call(I,a(".customelement",this),"get");if(K[d]===undefined){throw"e2"}}else{throw"e1"}}catch(M){if(M==="e1"){a.jgrid.info_dialog(a.jgrid.errors.errcap,"function 'custom_value' "+a.jgrid.edit.msg.nodefined,a.jgrid.edit.bClose)}if(M==="e2"){a.jgrid.info_dialog(a.jgrid.errors.errcap,"function 'custom_value' "+a.jgrid.edit.msg.novalue,a.jgrid.edit.bClose)}else{a.jgrid.info_dialog(a.jgrid.errors.errcap,M.message,a.jgrid.edit.bClose)}}break}g=a.jgrid.checkValues.call(I,K[d],o);if(g[0]===false){return false}if(I.p.autoencode){K[d]=a.jgrid.htmlEncode(K[d])}if(D.url!=="clientArray"&&v.editoptions&&v.editoptions.NullIfEmpty===true){if(K[d]===""){B[d]="null"}}}});if(g[0]===false){try{var b=a(I).jqGrid("getGridRowById",p),t=a.jgrid.findPos(b);a.jgrid.info_dialog(a.jgrid.errors.errcap,g[1],a.jgrid.edit.bClose,{left:t[0],top:t[1]+a(b).outerHeight()})}catch(J){alert(g[1])}return r}var z,w=I.p.prmNames,q=p;if(I.p.keyIndex===false){z=w.id}else{z=I.p.colModel[I.p.keyIndex+(I.p.rownumbers===true?1:0)+(I.p.multiselect===true?1:0)+(I.p.subGrid===true?1:0)].name}if(K){K[w.oper]=w.editoper;if(K[z]===undefined||K[z]===""){K[z]=p}else{if(x.id!==I.p.idPrefix+K[z]){var y=a.jgrid.stripPref(I.p.idPrefix,p);if(I.p._index[y]!==undefined){I.p._index[K[z]]=I.p._index[y];delete I.p._index[y]}p=I.p.idPrefix+K[z];a(x).attr("id",p);if(I.p.selrow===q){I.p.selrow=p}if(a.isArray(I.p.selarrrow)){var H=a.inArray(q,I.p.selarrrow);if(H>=0){I.p.selarrrow[H]=p}}if(I.p.multiselect){var m="jqg_"+I.p.id+"_"+p;a("input.cbox",x).attr("id",m).attr("name",m)}}}if(I.p.inlineData===undefined){I.p.inlineData={}}K=a.extend({},K,I.p.inlineData,D.extraparam)}if(D.url==="clientArray"){K=a.extend({},K,C);if(I.p.autoencode){a.each(K,function(i,e){K[i]=a.jgrid.htmlDecode(e)})}var F,A=a(I).jqGrid("setRowData",p,K);a(x).attr("editable","0");for(F=0;F=0){I.p.savedRow.splice(n,1)}a(I).triggerHandler("jqGridInlineAfterSaveRow",[p,A,K,D]);if(a.isFunction(D.aftersavefunc)){D.aftersavefunc.call(I,p,A,D)}r=true;a(x).removeClass("jqgrid-new-row").unbind("keydown")}else{a("#lui_"+a.jgrid.jqID(I.p.id)).show();B=a.extend({},K,B);B[z]=a.jgrid.stripPref(I.p.idPrefix,B[z]);a.ajax(a.extend({url:D.url,data:a.isFunction(I.p.serializeRowData)?I.p.serializeRowData.call(I,B):B,type:D.mtype,async:false,complete:function(o,L){a("#lui_"+a.jgrid.jqID(I.p.id)).hide();if(L==="success"){var i=true,M,e;M=a(I).triggerHandler("jqGridInlineSuccessSaveRow",[o,p,D]);if(!a.isArray(M)){M=[true,K]}if(M[0]&&a.isFunction(D.successfunc)){M=D.successfunc.call(I,o)}if(a.isArray(M)){i=M[0];K=M[1]||K}else{i=M}if(i===true){if(I.p.autoencode){a.each(K,function(N,k){K[N]=a.jgrid.htmlDecode(k)})}K=a.extend({},K,C);a(I).jqGrid("setRowData",p,K);a(x).attr("editable","0");for(e=0;e=0){I.p.savedRow.splice(n,1)}a(I).triggerHandler("jqGridInlineAfterSaveRow",[p,o,K,D]);if(a.isFunction(D.aftersavefunc)){D.aftersavefunc.call(I,p,o)}r=true;a(x).removeClass("jqgrid-new-row").unbind("keydown")}else{a(I).triggerHandler("jqGridInlineErrorSaveRow",[p,o,L,null,D]);if(a.isFunction(D.errorfunc)){D.errorfunc.call(I,p,o,L,null)}if(D.restoreAfterError===true){a(I).jqGrid("restoreRow",p,D.afterrestorefunc)}}}},error:function(k,o,L){a("#lui_"+a.jgrid.jqID(I.p.id)).hide();a(I).triggerHandler("jqGridInlineErrorSaveRow",[p,k,o,L,D]);if(a.isFunction(D.errorfunc)){D.errorfunc.call(I,p,k,o,L)}else{var i=k.responseText||k.statusText;try{a.jgrid.info_dialog(a.jgrid.errors.errcap,'
'+i+"
",a.jgrid.edit.bClose,{buttonalign:"right"})}catch(M){alert(i)}}if(D.restoreAfterError===true){a(I).jqGrid("restoreRow",p,D.afterrestorefunc)}}},a.jgrid.ajaxOptions,I.p.ajaxRowOptions||{}))}}return r},restoreRow:function(d,b){var c=a.makeArray(arguments).slice(1),e={};if(a.type(c[0])==="object"){e=c[0]}else{if(a.isFunction(b)){e.afterrestorefunc=b}}e=a.extend(true,{},a.jgrid.inlineEdit,e);return this.each(function(){var m=this,f=-1,h,l={},g;if(!m.grid){return}h=a(m).jqGrid("getInd",d,true);if(h===false){return}var j=a.isFunction(e.beforeCancelRow)?e.beforeCancelRow.call(m,e,sr):undefined;if(j===undefined){j=true}if(!j){return}for(g=0;g=0){if(a.isFunction(a.fn.datepicker)){try{a("input.hasDatepicker","#"+a.jgrid.jqID(h.id)).datepicker("hide")}catch(i){}}a.each(m.p.colModel,function(){if(this.editable===true&&m.p.savedRow[f].hasOwnProperty(this.name)){l[this.name]=m.p.savedRow[f][this.name]}});a(m).jqGrid("setRowData",d,l);a(h).attr("editable","0").unbind("keydown");m.p.savedRow.splice(f,1);if(a("#"+a.jgrid.jqID(d),"#"+a.jgrid.jqID(m.p.id)).hasClass("jqgrid-new-row")){setTimeout(function(){a(m).jqGrid("delRowData",d);a(m).jqGrid("showAddEditButtons")},0)}}a(m).triggerHandler("jqGridInlineAfterRestoreRow",[d]);if(a.isFunction(e.afterrestorefunc)){e.afterrestorefunc.call(m,d)}})},addRow:function(b){b=a.extend(true,{rowID:null,initdata:{},position:"first",useDefValues:true,useFormatter:false,addRowParams:{extraparam:{}}},b||{});return this.each(function(){if(!this.grid){return}var f=this;var c=a.isFunction(b.beforeAddRow)?b.beforeAddRow.call(f,b.addRowParams):undefined;if(c===undefined){c=true}if(!c){return}b.rowID=a.isFunction(b.rowID)?b.rowID.call(f,b):((b.rowID!=null)?b.rowID:a.jgrid.randId());if(b.useDefValues===true){a(f.p.colModel).each(function(){if(this.editoptions&&this.editoptions.defaultValue){var h=this.editoptions.defaultValue,g=a.isFunction(h)?h.call(f):h;b.initdata[this.name]=g}})}a(f).jqGrid("addRowData",b.rowID,b.initdata,b.position);b.rowID=f.p.idPrefix+b.rowID;a("#"+a.jgrid.jqID(b.rowID),"#"+a.jgrid.jqID(f.p.id)).addClass("jqgrid-new-row");if(b.useFormatter){a("#"+a.jgrid.jqID(b.rowID)+" .ui-inline-edit","#"+a.jgrid.jqID(f.p.id)).click()}else{var d=f.p.prmNames,e=d.oper;b.addRowParams.extraparam[e]=d.addoper;a(f).jqGrid("editRow",b.rowID,b.addRowParams);a(f).jqGrid("setSelection",b.rowID)}})},inlineNav:function(b,c){c=a.extend(true,{edit:true,editicon:"ui-icon-pencil",add:true,addicon:"ui-icon-plus",save:true,saveicon:"ui-icon-disk",cancel:true,cancelicon:"ui-icon-cancel",addParams:{addRowParams:{extraparam:{}}},editParams:{},restoreAfterSelect:true},a.jgrid.nav,c||{});return this.each(function(){if(!this.grid){return}var k=this,e,h=a.jgrid.jqID(k.p.id);k.p._inlinenav=true;if(c.addParams.useFormatter===true){var d=k.p.colModel,g;for(g=0;g0&&k.p._inlinenav===true&&(m!==k.p.selrow&&k.p.selrow!==null)){if(k.p.selrow===c.addParams.rowID){a(k).jqGrid("delRowData",k.p.selrow)}else{a(k).jqGrid("restoreRow",k.p.selrow,c.editParams)}a(k).jqGrid("showAddEditButtons")}if(e){i=e.call(k,m,l)}return i}}})},showAddEditButtons:function(){return this.each(function(){if(!this.grid){return}var b=a.jgrid.jqID(this.p.id);a("#"+b+"_ilsave").addClass("ui-state-disabled");a("#"+b+"_ilcancel").addClass("ui-state-disabled");a("#"+b+"_iladd").removeClass("ui-state-disabled");a("#"+b+"_iledit").removeClass("ui-state-disabled")})}})})(jQuery);




© 2015 - 2025 Weber Informatics LLC | Privacy Policy