Skip to content

Commit

Permalink
Merge pull request #381 from OlegKi/master
Browse files Browse the repository at this point in the history
Fixing wrong encodding of rowid in rowactions and optimizing the code of formatter actions
  • Loading branch information
tonytomov committed Nov 21, 2012
2 parents 65a0613 + e23c95e commit 43b1b85
Showing 1 changed file with 68 additions and 66 deletions.
134 changes: 68 additions & 66 deletions js/jquery.fmatter.js
Expand Up @@ -393,51 +393,53 @@
cellval = ret.join(", "); cellval = ret.join(", ");
return cellval === "" ? $.fn.fmatter.defaultFormat(cellval,opts) : cellval; return cellval === "" ? $.fn.fmatter.defaultFormat(cellval,opts) : cellval;
}; };
$.fn.fmatter.rowactions = function(rid,gid,act,pos) { $.fn.fmatter.rowactions = function(act) {
var op ={ var $tr = $(this).closest("tr.jqgrow"),
keys:false, $actionsDiv = $(this).parent(),
onEdit : null, rid = $tr.attr("id"),
onSuccess: null, $grid = $(this).closest("table.ui-jqgrid-btable"),
afterSave:null, $t = $grid[0],
onError: null, p = $t.p,
afterRestore: null, cm = p.colModel[$.jgrid.getCellIndex(this)],
extraparam: {}, op = {
url: null, keys: false,
restoreAfterError: true, onEdit: null,
mtype: "POST", onSuccess: null,
delOptions: {}, afterSave: null,
editOptions : {} onError: null,
}; afterRestore: null,
rid = $.jgrid.jqID( rid ); extraparam: {},
gid = $.jgrid.jqID( gid ); url: null,
var cm = $('#'+gid)[0].p.colModel[pos]; restoreAfterError: true,
if(!$.fmatter.isUndefined(cm.formatoptions)) { mtype: "POST",
delOptions: {},
editOptions: {}
},
saverow = function(rowid, res) {
if($.isFunction(op.afterSave)) { op.afterSave.call($t, rowid, res); }
$actionsDiv.find("div.ui-inline-edit,div.ui-inline-del").show();
$actionsDiv.find("div.ui-inline-save,div.ui-inline-cancel").hide();
},
restorerow = function(rowid) {
if($.isFunction(op.afterRestore)) { op.afterRestore.call($t, rowid); }
$actionsDiv.find("div.ui-inline-edit,div.ui-inline-del").show();
$actionsDiv.find("div.ui-inline-save,div.ui-inline-cancel").hide();
};

if (!$.fmatter.isUndefined(cm.formatoptions)) {
op = $.extend(op,cm.formatoptions); op = $.extend(op,cm.formatoptions);
} }
if( !$.fmatter.isUndefined($('#'+gid)[0].p.editOptions) ) { if (!$.fmatter.isUndefined(p.editOptions)) {
op.editOptions = $('#'+gid)[0].p.editOptions; op.editOptions = p.editOptions;
} }
if( !$.fmatter.isUndefined($('#'+gid)[0].p.delOptions) ) { if (!$.fmatter.isUndefined(p.delOptions)) {
op.delOptions = $('#'+gid)[0].p.delOptions; op.delOptions = p.delOptions;
} }
var $t = $("#"+gid)[0]; if ($tr.hasClass("jqgrid-new-row")){
var saverow = function( rowid, res) { op.extraparam[p.prmNames.oper] = p.prmNames.addoper;
if($.isFunction(op.afterSave)) { op.afterSave.call($t, rowid, res); }
$("tr#"+rid+" div.ui-inline-edit, "+"tr#"+rid+" div.ui-inline-del","#"+gid + ".ui-jqgrid-btable:first").show();
$("tr#"+rid+" div.ui-inline-save, "+"tr#"+rid+" div.ui-inline-cancel","#"+gid+ ".ui-jqgrid-btable:first").hide();
},
restorerow = function( rowid) {
if($.isFunction(op.afterRestore) ) { op.afterRestore.call($t, rowid); }
$("tr#"+rid+" div.ui-inline-edit, "+"tr#"+rid+" div.ui-inline-del","#"+gid+ ".ui-jqgrid-btable:first").show();
$("tr#"+rid+" div.ui-inline-save, "+"tr#"+rid+" div.ui-inline-cancel","#"+gid+ ".ui-jqgrid-btable:first").hide();
};
if( $("#"+rid,"#"+gid).hasClass("jqgrid-new-row") ){
var opers = $t.p.prmNames,
oper = opers.oper;
op.extraparam[oper] = opers.addoper;
} }
var actop = { var actop = {
keys : op.keys, keys: op.keys,
oneditfunc: op.onEdit, oneditfunc: op.onEdit,
successfunc: op.onSuccess, successfunc: op.onSuccess,
url: op.url, url: op.url,
Expand All @@ -451,55 +453,55 @@
switch(act) switch(act)
{ {
case 'edit': case 'edit':
$('#'+gid).jqGrid('editRow', rid, actop); $grid.jqGrid('editRow', rid, actop);
$("tr#"+rid+" div.ui-inline-edit, "+"tr#"+rid+" div.ui-inline-del","#"+gid+ ".ui-jqgrid-btable:first").hide(); $actionsDiv.find("div.ui-inline-edit,div.ui-inline-del").hide();
$("tr#"+rid+" div.ui-inline-save, "+"tr#"+rid+" div.ui-inline-cancel","#"+gid+ ".ui-jqgrid-btable:first").show(); $actionsDiv.find("div.ui-inline-save,div.ui-inline-cancel").show();
$($t).triggerHandler("jqGridAfterGridComplete"); $grid.triggerHandler("jqGridAfterGridComplete");
break; break;
case 'save': case 'save':
if ( $('#'+gid).jqGrid('saveRow', rid, actop) ) { if ($grid.jqGrid('saveRow', rid, actop)) {
$("tr#"+rid+" div.ui-inline-edit, "+"tr#"+rid+" div.ui-inline-del","#"+gid+ ".ui-jqgrid-btable:first").show(); $actionsDiv.find("div.ui-inline-edit,div.ui-inline-del").show();
$("tr#"+rid+" div.ui-inline-save, "+"tr#"+rid+" div.ui-inline-cancel","#"+gid+ ".ui-jqgrid-btable:first").hide(); $actionsDiv.find("div.ui-inline-save,div.ui-inline-cancel").hide();
$($t).triggerHandler("jqGridAfterGridComplete"); $grid.triggerHandler("jqGridAfterGridComplete");
} }
break; break;
case 'cancel' : case 'cancel' :
$('#'+gid).jqGrid('restoreRow',rid, restorerow); $grid.jqGrid('restoreRow', rid, restorerow);
$("tr#"+rid+" div.ui-inline-edit, "+"tr#"+rid+" div.ui-inline-del","#"+gid+ ".ui-jqgrid-btable:first").show(); $actionsDiv.find("div.ui-inline-edit,div.ui-inline-del").show();
$("tr#"+rid+" div.ui-inline-save, "+"tr#"+rid+" div.ui-inline-cancel","#"+gid+ ".ui-jqgrid-btable:first").hide(); $actionsDiv.find("div.ui-inline-save,div.ui-inline-cancel").hide();
$($t).triggerHandler("jqGridAfterGridComplete"); $grid.triggerHandler("jqGridAfterGridComplete");
break; break;
case 'del': case 'del':
$('#'+gid).jqGrid('delGridRow',rid, op.delOptions); $grid.jqGrid('delGridRow', rid, op.delOptions);
break; break;
case 'formedit': case 'formedit':
$('#'+gid).jqGrid('setSelection',rid); $grid.jqGrid('setSelection', rid);
$('#'+gid).jqGrid('editGridRow',rid, op.editOptions); $grid.jqGrid('editGridRow', rid, op.editOptions);
break; break;
} }
}; };
$.fn.fmatter.actions = function(cellval,opts) { $.fn.fmatter.actions = function(cellval,opts) {
var op ={keys:false, editbutton:true, delbutton:true, editformbutton: false}; var op={keys:false, editbutton:true, delbutton:true, editformbutton: false},
rowid=opts.rowId, str="",ocl;
if(!$.fmatter.isUndefined(opts.colModel.formatoptions)) { if(!$.fmatter.isUndefined(opts.colModel.formatoptions)) {
op = $.extend(op,opts.colModel.formatoptions); op = $.extend(op,opts.colModel.formatoptions);
} }
var rowid = opts.rowId, str="",ocl;
if(typeof(rowid) =='undefined' || $.fmatter.isEmpty(rowid)) {return "";} if(typeof(rowid) =='undefined' || $.fmatter.isEmpty(rowid)) {return "";}
if(op.editformbutton){ if(op.editformbutton){
ocl = "onclick=jQuery.fn.fmatter.rowactions('"+rowid+"','"+opts.gid+"','formedit',"+opts.pos+"); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover'); "; ocl = "onclick=jQuery.fn.fmatter.rowactions.call(this,'formedit'); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover'); ";
str =str+ "<div title='"+$.jgrid.nav.edittitle+"' style='float:left;cursor:pointer;' class='ui-pg-div ui-inline-edit' "+ocl+"><span class='ui-icon ui-icon-pencil'></span></div>"; str += "<div title='"+$.jgrid.nav.edittitle+"' style='float:left;cursor:pointer;' class='ui-pg-div ui-inline-edit' "+ocl+"><span class='ui-icon ui-icon-pencil'></span></div>";
} else if(op.editbutton){ } else if(op.editbutton){
ocl = "onclick=jQuery.fn.fmatter.rowactions('"+rowid+"','"+opts.gid+"','edit',"+opts.pos+"); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover') "; ocl = "onclick=jQuery.fn.fmatter.rowactions.call(this,'edit'); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover') ";
str =str+ "<div title='"+$.jgrid.nav.edittitle+"' style='float:left;cursor:pointer;' class='ui-pg-div ui-inline-edit' "+ocl+"><span class='ui-icon ui-icon-pencil'></span></div>"; str += "<div title='"+$.jgrid.nav.edittitle+"' style='float:left;cursor:pointer;' class='ui-pg-div ui-inline-edit' "+ocl+"><span class='ui-icon ui-icon-pencil'></span></div>";
} }
if(op.delbutton) { if(op.delbutton) {
ocl = "onclick=jQuery.fn.fmatter.rowactions('"+rowid+"','"+opts.gid+"','del',"+opts.pos+"); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover'); "; ocl = "onclick=jQuery.fn.fmatter.rowactions.call(this,'del'); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover'); ";
str = str+"<div title='"+$.jgrid.nav.deltitle+"' style='float:left;margin-left:5px;' class='ui-pg-div ui-inline-del' "+ocl+"><span class='ui-icon ui-icon-trash'></span></div>"; str += "<div title='"+$.jgrid.nav.deltitle+"' style='float:left;margin-left:5px;' class='ui-pg-div ui-inline-del' "+ocl+"><span class='ui-icon ui-icon-trash'></span></div>";
} }
ocl = "onclick=jQuery.fn.fmatter.rowactions('"+rowid+"','"+opts.gid+"','save',"+opts.pos+"); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover'); "; ocl = "onclick=jQuery.fn.fmatter.rowactions.call(this,'save'); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover'); ";
str = str+"<div title='"+$.jgrid.edit.bSubmit+"' style='float:left;display:none' class='ui-pg-div ui-inline-save' "+ocl+"><span class='ui-icon ui-icon-disk'></span></div>"; str += "<div title='"+$.jgrid.edit.bSubmit+"' style='float:left;display:none' class='ui-pg-div ui-inline-save' "+ocl+"><span class='ui-icon ui-icon-disk'></span></div>";
ocl = "onclick=jQuery.fn.fmatter.rowactions('"+rowid+"','"+opts.gid+"','cancel',"+opts.pos+"); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover'); "; ocl = "onclick=jQuery.fn.fmatter.rowactions.call(this,'cancel'); onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover'); ";
str = str+"<div title='"+$.jgrid.edit.bCancel+"' style='float:left;display:none;margin-left:5px;' class='ui-pg-div ui-inline-cancel' "+ocl+"><span class='ui-icon ui-icon-cancel'></span></div>"; str += "<div title='"+$.jgrid.edit.bCancel+"' style='float:left;display:none;margin-left:5px;' class='ui-pg-div ui-inline-cancel' "+ocl+"><span class='ui-icon ui-icon-cancel'></span></div>";
return "<div style='margin-left:8px;'>" + str + "</div>"; return "<div style='margin-left:8px;'>" + str + "</div>";
}; };
$.unformat = function (cellval,options,pos,cnt) { $.unformat = function (cellval,options,pos,cnt) {
Expand Down

0 comments on commit 43b1b85

Please sign in to comment.