Add the legacy frontend themes, scripts, and plugin assets required by the main SPOTA interfaces.
2117 lines
81 KiB
JavaScript
2117 lines
81 KiB
JavaScript
/*jshint eqeqeq:false, eqnull:true, devel:true */
|
|
/*global xmlJsonClass, jQuery */
|
|
(function($){
|
|
/**
|
|
* jqGrid extension for form editing Grid Data
|
|
* 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
|
|
**/
|
|
"use strict";
|
|
var rp_ge = {};
|
|
$.jgrid.extend({
|
|
searchGrid : function (p) {
|
|
p = $.extend(true, {
|
|
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,
|
|
afterRedraw : null,
|
|
afterChange: null,
|
|
closeAfterSearch : false,
|
|
closeAfterReset: false,
|
|
closeOnEscape : false,
|
|
searchOnEnter : false,
|
|
multipleSearch : false,
|
|
multipleGroup : false,
|
|
//cloneSearchRowOnAdd: true,
|
|
top : 0,
|
|
left: 0,
|
|
jqModal : true,
|
|
modal: false,
|
|
resize : true,
|
|
width: 450,
|
|
height: 'auto',
|
|
dataheight: 'auto',
|
|
showQuery: false,
|
|
errorcheck : true,
|
|
// translation
|
|
// if you want to change or remove the order change it in sopt
|
|
// ['eq','ne','lt','le','gt','ge','bw','bn','in','ni','ew','en','cn','nc'],
|
|
sopt: null,
|
|
stringResult: undefined,
|
|
onClose : null,
|
|
onSearch : null,
|
|
onReset : null,
|
|
toTop : true,
|
|
overlay : 30,
|
|
columns : [],
|
|
tmplNames : null,
|
|
tmplFilters : null,
|
|
// translations - later in lang file
|
|
tmplLabel : ' Template: ',
|
|
showOnLoad: false,
|
|
layer: null
|
|
}, $.jgrid.search, p || {});
|
|
return this.each(function() {
|
|
var $t = this;
|
|
if(!$t.grid) {return;}
|
|
var fid = "fbox_"+$t.p.id,
|
|
showFrm = true,
|
|
IDs = {themodal:'searchmod'+fid,modalhead:'searchhd'+fid,modalcontent:'searchcnt'+fid, scrollelm : fid},
|
|
defaultFilters = $t.p.postData[p.sFilter];
|
|
if(typeof defaultFilters === "string") {
|
|
defaultFilters = $.jgrid.parse( defaultFilters );
|
|
}
|
|
if(p.recreateFilter === true) {
|
|
$("#"+$.jgrid.jqID(IDs.themodal)).remove();
|
|
}
|
|
function showFilter(_filter) {
|
|
showFrm = $($t).triggerHandler("jqGridFilterBeforeShow", [_filter]);
|
|
if(showFrm === undefined) {
|
|
showFrm = true;
|
|
}
|
|
if(showFrm && $.isFunction(p.beforeShowSearch)) {
|
|
showFrm = p.beforeShowSearch.call($t,_filter);
|
|
}
|
|
if(showFrm) {
|
|
$.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{gbox:"#gbox_"+$.jgrid.jqID(fid),jqm:p.jqModal, modal:p.modal, overlay: p.overlay, toTop: p.toTop});
|
|
$($t).triggerHandler("jqGridFilterAfterShow", [_filter]);
|
|
if($.isFunction(p.afterShowSearch)) {
|
|
p.afterShowSearch.call($t, _filter);
|
|
}
|
|
}
|
|
}
|
|
if ( $("#"+$.jgrid.jqID(IDs.themodal))[0] !== undefined ) {
|
|
showFilter($("#fbox_"+$.jgrid.jqID(+$t.p.id)));
|
|
} else {
|
|
var fil = $("<div><div id='"+fid+"' class='searchFilter' style='overflow:auto'></div></div>").insertBefore("#gview_"+$.jgrid.jqID($t.p.id)),
|
|
align = "left", butleft ="";
|
|
if($t.p.direction == "rtl") {
|
|
align = "right";
|
|
butleft = " style='text-align:left'";
|
|
fil.attr("dir","rtl");
|
|
}
|
|
var columns = $.extend([],$t.p.colModel),
|
|
bS ="<a href='javascript:void(0)' id='"+fid+"_search' class='fm-button ui-state-default ui-corner-all fm-button-icon-right ui-reset'><span class='ui-icon ui-icon-search'></span>"+p.Find+"</a>",
|
|
bC ="<a href='javascript:void(0)' id='"+fid+"_reset' class='fm-button ui-state-default ui-corner-all fm-button-icon-left ui-search'><span class='ui-icon ui-icon-arrowreturnthick-1-w'></span>"+p.Reset+"</a>",
|
|
bQ = "", tmpl="", colnm, found = false, bt, cmi=-1;
|
|
if(p.showQuery) {
|
|
bQ ="<a href='javascript:void(0)' id='"+fid+"_query' class='fm-button ui-state-default ui-corner-all fm-button-icon-left'><span class='ui-icon ui-icon-comment'></span>Query</a>";
|
|
}
|
|
if(!p.columns.length) {
|
|
$.each(columns, function(i,n){
|
|
if(!n.label) {
|
|
n.label = $t.p.colNames[i];
|
|
}
|
|
// find first searchable column and set it if no default filter
|
|
if(!found) {
|
|
var searchable = (n.search === undefined) ? true: n.search ,
|
|
hidden = (n.hidden === true),
|
|
ignoreHiding = (n.searchoptions && n.searchoptions.searchhidden === true);
|
|
if ((ignoreHiding && searchable) || (searchable && !hidden)) {
|
|
found = true;
|
|
colnm = n.index || n.name;
|
|
cmi =i;
|
|
}
|
|
}
|
|
});
|
|
} else {
|
|
columns = p.columns;
|
|
}
|
|
// old behaviour
|
|
if( (!defaultFilters && colnm) || p.multipleSearch === false ) {
|
|
var cmop = "eq";
|
|
if(cmi >=0 && columns[cmi].searchoptions && columns[cmi].searchoptions.sopt) {
|
|
cmop = columns[cmi].searchoptions.sopt[0];
|
|
} else if(p.sopt && p.sopt.length) {
|
|
cmop = p.sopt[0];
|
|
}
|
|
defaultFilters = {"groupOp": "AND",rules:[{"field":colnm,"op":cmop,"data":""}]};
|
|
}
|
|
found = false;
|
|
if(p.tmplNames && p.tmplNames.length) {
|
|
found = true;
|
|
tmpl = p.tmplLabel;
|
|
tmpl += "<select class='ui-template'>";
|
|
tmpl += "<option value='default'>Default</option>";
|
|
$.each(p.tmplNames, function(i,n){
|
|
tmpl += "<option value='"+i+"'>"+n+"</option>";
|
|
});
|
|
tmpl += "</select>";
|
|
}
|
|
|
|
bt = "<table class='EditTable' style='border:0px none;margin-top:5px' id='"+fid+"_2'><tbody><tr><td colspan='2'><hr class='ui-widget-content' style='margin:1px'/></td></tr><tr><td class='EditButton' style='text-align:"+align+"'>"+bC+tmpl+"</td><td class='EditButton' "+butleft+">"+bQ+bS+"</td></tr></tbody></table>";
|
|
fid = $.jgrid.jqID( fid);
|
|
$("#"+fid).jqFilter({
|
|
columns : columns,
|
|
filter: p.loadDefaults ? defaultFilters : null,
|
|
showQuery: p.showQuery,
|
|
errorcheck : p.errorcheck,
|
|
sopt: p.sopt,
|
|
groupButton : p.multipleGroup,
|
|
ruleButtons : p.multipleSearch,
|
|
afterRedraw : p.afterRedraw,
|
|
_gridsopt : $.jgrid.search.odata,
|
|
ajaxSelectOptions: $t.p.ajaxSelectOptions,
|
|
groupOps: p.groupOps,
|
|
onChange : function() {
|
|
if(this.p.showQuery) {
|
|
$('.query',this).html(this.toUserFriendlyString());
|
|
}
|
|
if ($.isFunction(p.afterChange)) {
|
|
p.afterChange.call($t, $("#"+fid), p);
|
|
}
|
|
},
|
|
direction : $t.p.direction
|
|
});
|
|
fil.append( bt );
|
|
if(found && p.tmplFilters && p.tmplFilters.length) {
|
|
$(".ui-template", fil).bind('change', function(){
|
|
var curtempl = $(this).val();
|
|
if(curtempl=="default") {
|
|
$("#"+fid).jqFilter('addFilter', defaultFilters);
|
|
} else {
|
|
$("#"+fid).jqFilter('addFilter', p.tmplFilters[parseInt(curtempl,10)]);
|
|
}
|
|
return false;
|
|
});
|
|
}
|
|
if(p.multipleGroup === true) {p.multipleSearch = true;}
|
|
$($t).triggerHandler("jqGridFilterInitialize", [$("#"+fid)]);
|
|
if($.isFunction(p.onInitializeSearch) ) {
|
|
p.onInitializeSearch.call($t, $("#"+fid));
|
|
}
|
|
p.gbox = "#gbox_"+fid;
|
|
if (p.layer) {
|
|
$.jgrid.createModal(IDs ,fil,p,"#gview_"+$.jgrid.jqID($t.p.id),$("#gbox_"+$.jgrid.jqID($t.p.id))[0], "#"+$.jgrid.jqID(p.layer), {position: "relative"});
|
|
} else {
|
|
$.jgrid.createModal(IDs ,fil,p,"#gview_"+$.jgrid.jqID($t.p.id),$("#gbox_"+$.jgrid.jqID($t.p.id))[0]);
|
|
}
|
|
if (p.searchOnEnter || p.closeOnEscape) {
|
|
$("#"+$.jgrid.jqID(IDs.themodal)).keydown(function (e) {
|
|
var $target = $(e.target);
|
|
if (p.searchOnEnter && e.which === 13 && // 13 === $.ui.keyCode.ENTER
|
|
!$target.hasClass('add-group') && !$target.hasClass('add-rule') &&
|
|
!$target.hasClass('delete-group') && !$target.hasClass('delete-rule') &&
|
|
(!$target.hasClass("fm-button") || !$target.is("[id$=_query]"))) {
|
|
$("#"+fid+"_search").focus().click();
|
|
return false;
|
|
}
|
|
if (p.closeOnEscape && e.which === 27) { // 27 === $.ui.keyCode.ESCAPE
|
|
$("#"+$.jgrid.jqID(IDs.modalhead)).find(".ui-jqdialog-titlebar-close").focus().click();
|
|
return false;
|
|
}
|
|
});
|
|
}
|
|
if(bQ) {
|
|
$("#"+fid+"_query").bind('click', function(){
|
|
$(".queryresult", fil).toggle();
|
|
return false;
|
|
});
|
|
}
|
|
if (p.stringResult===undefined) {
|
|
// to provide backward compatibility, inferring stringResult value from multipleSearch
|
|
p.stringResult = p.multipleSearch;
|
|
}
|
|
$("#"+fid+"_search").bind('click', function(){
|
|
var fl = $("#"+fid),
|
|
sdata={}, res ,
|
|
filters = fl.jqFilter('filterData');
|
|
if(p.errorcheck) {
|
|
fl[0].hideError();
|
|
if(!p.showQuery) {fl.jqFilter('toSQLString');}
|
|
if(fl[0].p.error) {
|
|
fl[0].showError();
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if(p.stringResult) {
|
|
try {
|
|
// xmlJsonClass or JSON.stringify
|
|
res = xmlJsonClass.toJson(filters, '', '', false);
|
|
} catch (e) {
|
|
try {
|
|
res = JSON.stringify(filters);
|
|
} catch (e2) { }
|
|
}
|
|
if(typeof res==="string") {
|
|
sdata[p.sFilter] = res;
|
|
$.each([p.sField,p.sValue, p.sOper], function() {sdata[this] = "";});
|
|
}
|
|
} else {
|
|
if(p.multipleSearch) {
|
|
sdata[p.sFilter] = filters;
|
|
$.each([p.sField,p.sValue, p.sOper], function() {sdata[this] = "";});
|
|
} else {
|
|
sdata[p.sField] = filters.rules[0].field;
|
|
sdata[p.sValue] = filters.rules[0].data;
|
|
sdata[p.sOper] = filters.rules[0].op;
|
|
sdata[p.sFilter] = "";
|
|
}
|
|
}
|
|
$t.p.search = true;
|
|
$.extend($t.p.postData,sdata);
|
|
$($t).triggerHandler("jqGridFilterSearch");
|
|
if($.isFunction(p.onSearch) ) {
|
|
p.onSearch.call($t);
|
|
}
|
|
$($t).trigger("reloadGrid",[{page:1}]);
|
|
if(p.closeAfterSearch) {
|
|
$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:p.jqModal,onClose: p.onClose});
|
|
}
|
|
return false;
|
|
});
|
|
$("#"+fid+"_reset").bind('click', function(){
|
|
var sdata={},
|
|
fl = $("#"+fid);
|
|
$t.p.search = false;
|
|
if(p.multipleSearch===false) {
|
|
sdata[p.sField] = sdata[p.sValue] = sdata[p.sOper] = "";
|
|
} else {
|
|
sdata[p.sFilter] = "";
|
|
}
|
|
fl[0].resetFilter();
|
|
if(found) {
|
|
$(".ui-template", fil).val("default");
|
|
}
|
|
$.extend($t.p.postData,sdata);
|
|
$($t).triggerHandler("jqGridFilterReset");
|
|
if($.isFunction(p.onReset) ) {
|
|
p.onReset.call($t);
|
|
}
|
|
$($t).trigger("reloadGrid",[{page:1}]);
|
|
return false;
|
|
});
|
|
showFilter($("#"+fid));
|
|
$(".fm-button:not(.ui-state-disabled)",fil).hover(
|
|
function(){$(this).addClass('ui-state-hover');},
|
|
function(){$(this).removeClass('ui-state-hover');}
|
|
);
|
|
}
|
|
});
|
|
},
|
|
editGridRow : function(rowid, p){
|
|
p = $.extend(true, {
|
|
top : 0,
|
|
left: 0,
|
|
width: 300,
|
|
height: 'auto',
|
|
dataheight: 'auto',
|
|
modal: false,
|
|
overlay : 30,
|
|
drag: true,
|
|
resize: true,
|
|
url: null,
|
|
mtype : "POST",
|
|
clearAfterAdd :true,
|
|
closeAfterEdit : false,
|
|
reloadAfterSubmit : true,
|
|
onInitializeForm: null,
|
|
beforeInitData: null,
|
|
beforeShowForm: null,
|
|
afterShowForm: null,
|
|
beforeSubmit: null,
|
|
afterSubmit: null,
|
|
onclickSubmit: null,
|
|
afterComplete: null,
|
|
onclickPgButtons : null,
|
|
afterclickPgButtons: null,
|
|
editData : {},
|
|
recreateForm : false,
|
|
jqModal : true,
|
|
closeOnEscape : false,
|
|
addedrow : "first",
|
|
topinfo : '',
|
|
bottominfo: '',
|
|
saveicon : [],
|
|
closeicon : [],
|
|
savekey: [false,13],
|
|
navkeys: [false,38,40],
|
|
checkOnSubmit : false,
|
|
checkOnUpdate : false,
|
|
_savedData : {},
|
|
processing : false,
|
|
onClose : null,
|
|
ajaxEditOptions : {},
|
|
serializeEditData : null,
|
|
viewPagerButtons : true
|
|
}, $.jgrid.edit, p || {});
|
|
rp_ge[$(this)[0].p.id] = p;
|
|
return this.each(function(){
|
|
var $t = this;
|
|
if (!$t.grid || !rowid) {return;}
|
|
var gID = $t.p.id,
|
|
frmgr = "FrmGrid_"+gID, frmtborg = "TblGrid_"+gID, frmtb = "#"+$.jgrid.jqID(frmtborg),
|
|
IDs = {themodal:'editmod'+gID,modalhead:'edithd'+gID,modalcontent:'editcnt'+gID, scrollelm : frmgr},
|
|
onBeforeShow = $.isFunction(rp_ge[$t.p.id].beforeShowForm) ? rp_ge[$t.p.id].beforeShowForm : false,
|
|
onAfterShow = $.isFunction(rp_ge[$t.p.id].afterShowForm) ? rp_ge[$t.p.id].afterShowForm : false,
|
|
onBeforeInit = $.isFunction(rp_ge[$t.p.id].beforeInitData) ? rp_ge[$t.p.id].beforeInitData : false,
|
|
onInitializeForm = $.isFunction(rp_ge[$t.p.id].onInitializeForm) ? rp_ge[$t.p.id].onInitializeForm : false,
|
|
showFrm = true,
|
|
maxCols = 1, maxRows=0, postdata, extpost, newData, diff, frmoper;
|
|
frmgr = $.jgrid.jqID(frmgr);
|
|
if (rowid === "new") {
|
|
rowid = "_empty";
|
|
frmoper = "add";
|
|
p.caption=rp_ge[$t.p.id].addCaption;
|
|
} else {
|
|
p.caption=rp_ge[$t.p.id].editCaption;
|
|
frmoper = "edit";
|
|
}
|
|
if(p.recreateForm===true && $("#"+$.jgrid.jqID(IDs.themodal))[0] !== undefined) {
|
|
$("#"+$.jgrid.jqID(IDs.themodal)).remove();
|
|
}
|
|
var closeovrl = true;
|
|
if(p.checkOnUpdate && p.jqModal && !p.modal) {
|
|
closeovrl = false;
|
|
}
|
|
function getFormData(){
|
|
$(frmtb+" > tbody > tr > td > .FormElement").each(function() {
|
|
var celm = $(".customelement", this);
|
|
if (celm.length) {
|
|
var elem = celm[0], nm = $(elem).attr('name');
|
|
$.each($t.p.colModel, function(){
|
|
if(this.name === nm && this.editoptions && $.isFunction(this.editoptions.custom_value)) {
|
|
try {
|
|
postdata[nm] = this.editoptions.custom_value.call($t, $("#"+$.jgrid.jqID(nm),frmtb),'get');
|
|
if (postdata[nm] === undefined) {throw "e1";}
|
|
} catch (e) {
|
|
if (e==="e1") {$.jgrid.info_dialog($.jgrid.errors.errcap,"function 'custom_value' "+$.jgrid.edit.msg.novalue,$.jgrid.edit.bClose);}
|
|
else {$.jgrid.info_dialog($.jgrid.errors.errcap,e.message,$.jgrid.edit.bClose);}
|
|
}
|
|
return true;
|
|
}
|
|
});
|
|
} else {
|
|
switch ($(this).get(0).type) {
|
|
case "checkbox":
|
|
if($(this).is(":checked")) {
|
|
postdata[this.name]= $(this).val();
|
|
}else {
|
|
var ofv = $(this).attr("offval");
|
|
postdata[this.name]= ofv;
|
|
}
|
|
break;
|
|
case "select-one":
|
|
postdata[this.name]= $("option:selected",this).val();
|
|
extpost[this.name]= $("option:selected",this).text();
|
|
break;
|
|
case "select-multiple":
|
|
postdata[this.name]= $(this).val();
|
|
if(postdata[this.name]) {postdata[this.name] = postdata[this.name].join(",");}
|
|
else {postdata[this.name] ="";}
|
|
var selectedText = [];
|
|
$("option:selected",this).each(
|
|
function(i,selected){
|
|
selectedText[i] = $(selected).text();
|
|
}
|
|
);
|
|
extpost[this.name]= selectedText.join(",");
|
|
break;
|
|
case "password":
|
|
case "text":
|
|
case "textarea":
|
|
case "button":
|
|
postdata[this.name] = $(this).val();
|
|
|
|
break;
|
|
}
|
|
if($t.p.autoencode) {postdata[this.name] = $.jgrid.htmlEncode(postdata[this.name]);}
|
|
}
|
|
});
|
|
return true;
|
|
}
|
|
function createData(rowid,obj,tb,maxcols){
|
|
var nm, hc,trdata, cnt=0,tmp, dc,elc, retpos=[], ind=false,
|
|
tdtmpl = "<td class='CaptionTD'> </td><td class='DataTD'> </td>", tmpl="", i; //*2
|
|
for (i =1; i<=maxcols;i++) {
|
|
tmpl += tdtmpl;
|
|
}
|
|
if(rowid != '_empty') {
|
|
ind = $(obj).jqGrid("getInd",rowid);
|
|
}
|
|
$(obj.p.colModel).each( function(i) {
|
|
nm = this.name;
|
|
// hidden fields are included in the form
|
|
if(this.editrules && this.editrules.edithidden === true) {
|
|
hc = false;
|
|
} else {
|
|
hc = this.hidden === true ? true : false;
|
|
}
|
|
dc = hc ? "style='display:none'" : "";
|
|
if ( nm !== 'cb' && nm !== 'subgrid' && this.editable===true && nm !== 'rn') {
|
|
if(ind === false) {
|
|
tmp = "";
|
|
} else {
|
|
if(nm == obj.p.ExpandColumn && obj.p.treeGrid === true) {
|
|
tmp = $("td[role='gridcell']:eq("+i+")",obj.rows[ind]).text();
|
|
} else {
|
|
try {
|
|
tmp = $.unformat.call(obj, $("td[role='gridcell']:eq("+i+")",obj.rows[ind]),{rowId:rowid, colModel:this},i);
|
|
} catch (_) {
|
|
tmp = (this.edittype && this.edittype == "textarea") ? $("td[role='gridcell']:eq("+i+")",obj.rows[ind]).text() : $("td[role='gridcell']:eq("+i+")",obj.rows[ind]).html();
|
|
}
|
|
if(!tmp || tmp == " " || tmp == " " || (tmp.length==1 && tmp.charCodeAt(0)==160) ) {tmp='';}
|
|
}
|
|
}
|
|
var opt = $.extend({}, this.editoptions || {} ,{id:nm,name:nm}),
|
|
frmopt = $.extend({}, {elmprefix:'',elmsuffix:'',rowabove:false,rowcontent:''}, this.formoptions || {}),
|
|
rp = parseInt(frmopt.rowpos,10) || cnt+1,
|
|
cp = parseInt((parseInt(frmopt.colpos,10) || 1)*2,10);
|
|
if(rowid == "_empty" && opt.defaultValue ) {
|
|
tmp = $.isFunction(opt.defaultValue) ? opt.defaultValue.call($t) : opt.defaultValue;
|
|
}
|
|
if(!this.edittype) {this.edittype = "text";}
|
|
if($t.p.autoencode) {tmp = $.jgrid.htmlDecode(tmp);}
|
|
elc = $.jgrid.createEl.call($t,this.edittype,opt,tmp,false,$.extend({},$.jgrid.ajaxOptions,obj.p.ajaxSelectOptions || {}));
|
|
if(tmp === "" && this.edittype == "checkbox") {tmp = $(elc).attr("offval");}
|
|
if(tmp === "" && this.edittype == "select") {tmp = $("option:eq(0)",elc).text();}
|
|
if(rp_ge[$t.p.id].checkOnSubmit || rp_ge[$t.p.id].checkOnUpdate) {rp_ge[$t.p.id]._savedData[nm] = tmp;}
|
|
$(elc).addClass("FormElement");
|
|
if(this.edittype == 'text' || this.edittype == 'textarea') {
|
|
$(elc).addClass("ui-widget-content ui-corner-all");
|
|
}
|
|
trdata = $(tb).find("tr[rowpos="+rp+"]");
|
|
if(frmopt.rowabove) {
|
|
var newdata = $("<tr><td class='contentinfo' colspan='"+(maxcols*2)+"'>"+frmopt.rowcontent+"</td></tr>");
|
|
$(tb).append(newdata);
|
|
newdata[0].rp = rp;
|
|
}
|
|
if ( trdata.length===0 ) {
|
|
trdata = $("<tr "+dc+" rowpos='"+rp+"'></tr>").addClass("FormData").attr("id","tr_"+nm);
|
|
$(trdata).append(tmpl);
|
|
$(tb).append(trdata);
|
|
trdata[0].rp = rp;
|
|
}
|
|
$("td:eq("+(cp-2)+")",trdata[0]).html(frmopt.label === undefined ? obj.p.colNames[i]: frmopt.label);
|
|
$("td:eq("+(cp-1)+")",trdata[0]).append(frmopt.elmprefix).append(elc).append(frmopt.elmsuffix);
|
|
if($.isFunction(opt.custom_value) && rowid !== "_empty" ) {
|
|
opt.custom_value.call($t, $("#"+nm,"#"+frmgr),'set',tmp);
|
|
}
|
|
$.jgrid.bindEv( elc, opt, $t);
|
|
retpos[cnt] = i;
|
|
cnt++;
|
|
}
|
|
});
|
|
if( cnt > 0) {
|
|
var idrow = $("<tr class='FormData' style='display:none'><td class='CaptionTD'></td><td colspan='"+ (maxcols*2-1)+"' class='DataTD'><input class='FormElement' id='id_g' type='text' name='"+obj.p.id+"_id' value='"+rowid+"'/></td></tr>");
|
|
idrow[0].rp = cnt+999;
|
|
$(tb).append(idrow);
|
|
if(rp_ge[$t.p.id].checkOnSubmit || rp_ge[$t.p.id].checkOnUpdate) {rp_ge[$t.p.id]._savedData[obj.p.id+"_id"] = rowid;}
|
|
}
|
|
return retpos;
|
|
}
|
|
function fillData(rowid,obj,fmid){
|
|
var nm,cnt=0,tmp, fld,opt,vl,vlc;
|
|
if(rp_ge[$t.p.id].checkOnSubmit || rp_ge[$t.p.id].checkOnUpdate) {rp_ge[$t.p.id]._savedData = {};rp_ge[$t.p.id]._savedData[obj.p.id+"_id"]=rowid;}
|
|
var cm = obj.p.colModel;
|
|
if(rowid == '_empty') {
|
|
$(cm).each(function(){
|
|
nm = this.name;
|
|
opt = $.extend({}, this.editoptions || {} );
|
|
fld = $("#"+$.jgrid.jqID(nm),"#"+fmid);
|
|
if(fld && fld.length && fld[0] !== null) {
|
|
vl = "";
|
|
if(opt.defaultValue ) {
|
|
vl = $.isFunction(opt.defaultValue) ? opt.defaultValue.call($t) : opt.defaultValue;
|
|
if(fld[0].type=='checkbox') {
|
|
vlc = vl.toLowerCase();
|
|
if(vlc.search(/(false|0|no|off|undefined)/i)<0 && vlc!=="") {
|
|
fld[0].checked = true;
|
|
fld[0].defaultChecked = true;
|
|
fld[0].value = vl;
|
|
} else {
|
|
fld[0].checked = false;
|
|
fld[0].defaultChecked = false;
|
|
}
|
|
} else {fld.val(vl);}
|
|
} else {
|
|
if( fld[0].type=='checkbox' ) {
|
|
fld[0].checked = false;
|
|
fld[0].defaultChecked = false;
|
|
vl = $(fld).attr("offval");
|
|
} else if (fld[0].type && fld[0].type.substr(0,6)=='select') {
|
|
fld[0].selectedIndex = 0;
|
|
} else {
|
|
fld.val(vl);
|
|
}
|
|
}
|
|
if(rp_ge[$t.p.id].checkOnSubmit===true || rp_ge[$t.p.id].checkOnUpdate) {rp_ge[$t.p.id]._savedData[nm] = vl;}
|
|
}
|
|
});
|
|
$("#id_g","#"+fmid).val(rowid);
|
|
return;
|
|
}
|
|
var tre = $(obj).jqGrid("getInd",rowid,true);
|
|
if(!tre) {return;}
|
|
$('td[role="gridcell"]',tre).each( function(i) {
|
|
nm = cm[i].name;
|
|
// hidden fields are included in the form
|
|
if ( nm !== 'cb' && nm !== 'subgrid' && nm !== 'rn' && cm[i].editable===true) {
|
|
if(nm == obj.p.ExpandColumn && obj.p.treeGrid === true) {
|
|
tmp = $(this).text();
|
|
} else {
|
|
try {
|
|
tmp = $.unformat.call(obj, $(this),{rowId:rowid, colModel:cm[i]},i);
|
|
} catch (_) {
|
|
tmp = cm[i].edittype=="textarea" ? $(this).text() : $(this).html();
|
|
}
|
|
}
|
|
if($t.p.autoencode) {tmp = $.jgrid.htmlDecode(tmp);}
|
|
if(rp_ge[$t.p.id].checkOnSubmit===true || rp_ge[$t.p.id].checkOnUpdate) {rp_ge[$t.p.id]._savedData[nm] = tmp;}
|
|
nm = $.jgrid.jqID(nm);
|
|
switch (cm[i].edittype) {
|
|
case "password":
|
|
case "text":
|
|
case "button" :
|
|
case "image":
|
|
case "textarea":
|
|
if(tmp == " " || tmp == " " || (tmp.length==1 && tmp.charCodeAt(0)==160) ) {tmp='';}
|
|
$("#"+nm,"#"+fmid).val(tmp);
|
|
break;
|
|
case "select":
|
|
var opv = tmp.split(",");
|
|
opv = $.map(opv,function(n){return $.trim(n);});
|
|
$("#"+nm+" option","#"+fmid).each(function(){
|
|
if (!cm[i].editoptions.multiple && ($.trim(tmp) == $.trim($(this).text()) || opv[0] == $.trim($(this).text()) || opv[0] == $.trim($(this).val())) ){
|
|
this.selected= true;
|
|
} else if (cm[i].editoptions.multiple){
|
|
if( $.inArray($.trim($(this).text()), opv ) > -1 || $.inArray($.trim($(this).val()), opv ) > -1 ){
|
|
this.selected = true;
|
|
}else{
|
|
this.selected = false;
|
|
}
|
|
} else {
|
|
this.selected = false;
|
|
}
|
|
});
|
|
break;
|
|
case "checkbox":
|
|
tmp = String(tmp);
|
|
if(cm[i].editoptions && cm[i].editoptions.value) {
|
|
var cb = cm[i].editoptions.value.split(":");
|
|
if(cb[0] == tmp) {
|
|
$("#"+nm,"#"+fmid)[$t.p.useProp ? 'prop': 'attr']("checked",true);
|
|
$("#"+nm,"#"+fmid)[$t.p.useProp ? 'prop': 'attr']("defaultChecked",true); //ie
|
|
} else {
|
|
$("#"+nm,"#"+fmid)[$t.p.useProp ? 'prop': 'attr']("checked", false);
|
|
$("#"+nm,"#"+fmid)[$t.p.useProp ? 'prop': 'attr']("defaultChecked", false); //ie
|
|
}
|
|
} else {
|
|
tmp = tmp.toLowerCase();
|
|
if(tmp.search(/(false|0|no|off|undefined)/i)<0 && tmp!=="") {
|
|
$("#"+nm,"#"+fmid)[$t.p.useProp ? 'prop': 'attr']("checked",true);
|
|
$("#"+nm,"#"+fmid)[$t.p.useProp ? 'prop': 'attr']("defaultChecked",true); //ie
|
|
} else {
|
|
$("#"+nm,"#"+fmid)[$t.p.useProp ? 'prop': 'attr']("checked", false);
|
|
$("#"+nm,"#"+fmid)[$t.p.useProp ? 'prop': 'attr']("defaultChecked", false); //ie
|
|
}
|
|
}
|
|
break;
|
|
case 'custom' :
|
|
try {
|
|
if(cm[i].editoptions && $.isFunction(cm[i].editoptions.custom_value)) {
|
|
cm[i].editoptions.custom_value.call($t, $("#"+nm,"#"+fmid),'set',tmp);
|
|
} else {throw "e1";}
|
|
} catch (e) {
|
|
if (e=="e1") {$.jgrid.info_dialog($.jgrid.errors.errcap,"function 'custom_value' "+$.jgrid.edit.msg.nodefined,$.jgrid.edit.bClose);}
|
|
else {$.jgrid.info_dialog($.jgrid.errors.errcap,e.message,$.jgrid.edit.bClose);}
|
|
}
|
|
break;
|
|
}
|
|
cnt++;
|
|
}
|
|
});
|
|
if(cnt>0) {$("#id_g",frmtb).val(rowid);}
|
|
}
|
|
function setNulls() {
|
|
$.each($t.p.colModel, function(i,n){
|
|
if(n.editoptions && n.editoptions.NullIfEmpty === true) {
|
|
if(postdata.hasOwnProperty(n.name) && postdata[n.name] === "") {
|
|
postdata[n.name] = 'null';
|
|
}
|
|
}
|
|
});
|
|
}
|
|
function postIt() {
|
|
var copydata, ret=[true,"",""], onCS = {}, opers = $t.p.prmNames, idname, oper, key, selr, i;
|
|
|
|
var retvals = $($t).triggerHandler("jqGridAddEditBeforeCheckValues", [$("#"+frmgr), frmoper]);
|
|
if(retvals && typeof retvals === 'object') {postdata = retvals;}
|
|
|
|
if($.isFunction(rp_ge[$t.p.id].beforeCheckValues)) {
|
|
retvals = rp_ge[$t.p.id].beforeCheckValues.call($t, postdata,$("#"+frmgr),postdata[$t.p.id+"_id"] == "_empty" ? opers.addoper : opers.editoper);
|
|
if(retvals && typeof retvals === 'object') {postdata = retvals;}
|
|
}
|
|
for( key in postdata ){
|
|
if(postdata.hasOwnProperty(key)) {
|
|
ret = $.jgrid.checkValues.call($t,postdata[key],key,$t);
|
|
if(ret[0] === false) {break;}
|
|
}
|
|
}
|
|
setNulls();
|
|
if(ret[0]) {
|
|
onCS = $($t).triggerHandler("jqGridAddEditClickSubmit", [rp_ge[$t.p.id], postdata, frmoper]);
|
|
if( onCS === undefined && $.isFunction( rp_ge[$t.p.id].onclickSubmit)) {
|
|
onCS = rp_ge[$t.p.id].onclickSubmit.call($t, rp_ge[$t.p.id], postdata) || {};
|
|
}
|
|
ret = $($t).triggerHandler("jqGridAddEditBeforeSubmit", [postdata, $("#"+frmgr), frmoper]);
|
|
if(ret === undefined) {
|
|
ret = [true,"",""];
|
|
}
|
|
if( ret[0] && $.isFunction(rp_ge[$t.p.id].beforeSubmit)) {
|
|
ret = rp_ge[$t.p.id].beforeSubmit.call($t,postdata,$("#"+frmgr));
|
|
}
|
|
}
|
|
|
|
if(ret[0] && !rp_ge[$t.p.id].processing) {
|
|
rp_ge[$t.p.id].processing = true;
|
|
$("#sData", frmtb+"_2").addClass('ui-state-active');
|
|
oper = opers.oper;
|
|
idname = opers.id;
|
|
// we add to pos data array the action - the name is oper
|
|
postdata[oper] = ($.trim(postdata[$t.p.id+"_id"]) == "_empty") ? opers.addoper : opers.editoper;
|
|
if(postdata[oper] != opers.addoper) {
|
|
postdata[idname] = postdata[$t.p.id+"_id"];
|
|
} else {
|
|
// check to see if we have allredy this field in the form and if yes lieve it
|
|
if( postdata[idname] === undefined ) {postdata[idname] = postdata[$t.p.id+"_id"];}
|
|
}
|
|
delete postdata[$t.p.id+"_id"];
|
|
postdata = $.extend(postdata,rp_ge[$t.p.id].editData,onCS);
|
|
if($t.p.treeGrid === true) {
|
|
if(postdata[oper] == opers.addoper) {
|
|
selr = $($t).jqGrid("getGridParam", 'selrow');
|
|
var tr_par_id = $t.p.treeGridModel == 'adjacency' ? $t.p.treeReader.parent_id_field : 'parent_id';
|
|
postdata[tr_par_id] = selr;
|
|
}
|
|
for(i in $t.p.treeReader){
|
|
if($t.p.treeReader.hasOwnProperty(i)) {
|
|
var itm = $t.p.treeReader[i];
|
|
if(postdata.hasOwnProperty(itm)) {
|
|
if(postdata[oper] == opers.addoper && i === 'parent_id_field') {continue;}
|
|
delete postdata[itm];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
postdata[idname] = $.jgrid.stripPref($t.p.idPrefix, postdata[idname]);
|
|
var ajaxOptions = $.extend({
|
|
url: rp_ge[$t.p.id].url || $($t).jqGrid('getGridParam','editurl'),
|
|
type: rp_ge[$t.p.id].mtype,
|
|
data: $.isFunction(rp_ge[$t.p.id].serializeEditData) ? rp_ge[$t.p.id].serializeEditData.call($t,postdata) : postdata,
|
|
complete:function(data,status){
|
|
var key;
|
|
postdata[idname] = $t.p.idPrefix + postdata[idname];
|
|
if(status != "success") {
|
|
ret[0] = false;
|
|
ret[1] = $($t).triggerHandler("jqGridAddEditErrorTextFormat", [data, frmoper]);
|
|
if ($.isFunction(rp_ge[$t.p.id].errorTextFormat)) {
|
|
ret[1] = rp_ge[$t.p.id].errorTextFormat.call($t, data);
|
|
} else {
|
|
ret[1] = status + " Status: '" + data.statusText + "'. Error code: " + data.status;
|
|
}
|
|
} else {
|
|
// data is posted successful
|
|
// execute aftersubmit with the returned data from server
|
|
ret = $($t).triggerHandler("jqGridAddEditAfterSubmit", [data, postdata, frmoper]);
|
|
if(ret === undefined) {
|
|
ret = [true,"",""];
|
|
}
|
|
if( ret[0] && $.isFunction(rp_ge[$t.p.id].afterSubmit) ) {
|
|
ret = rp_ge[$t.p.id].afterSubmit.call($t, data,postdata);
|
|
}
|
|
}
|
|
if(ret[0] === false) {
|
|
$("#FormError>td",frmtb).html(ret[1]);
|
|
$("#FormError",frmtb).show();
|
|
} else {
|
|
// remove some values if formattaer select or checkbox
|
|
$.each($t.p.colModel, function(){
|
|
if(extpost[this.name] && this.formatter && this.formatter=='select') {
|
|
try {delete extpost[this.name];} catch (e) {}
|
|
}
|
|
});
|
|
postdata = $.extend(postdata,extpost);
|
|
if($t.p.autoencode) {
|
|
$.each(postdata,function(n,v){
|
|
postdata[n] = $.jgrid.htmlDecode(v);
|
|
});
|
|
}
|
|
//rp_ge[$t.p.id].reloadAfterSubmit = rp_ge[$t.p.id].reloadAfterSubmit && $t.p.datatype != "local";
|
|
// the action is add
|
|
if(postdata[oper] == opers.addoper ) {
|
|
//id processing
|
|
// user not set the id ret[2]
|
|
if(!ret[2]) {ret[2] = $.jgrid.randId();}
|
|
postdata[idname] = ret[2];
|
|
if(rp_ge[$t.p.id].closeAfterAdd) {
|
|
if(rp_ge[$t.p.id].reloadAfterSubmit) {$($t).trigger("reloadGrid");}
|
|
else {
|
|
if($t.p.treeGrid === true){
|
|
$($t).jqGrid("addChildNode",ret[2],selr,postdata );
|
|
} else {
|
|
$($t).jqGrid("addRowData",ret[2],postdata,p.addedrow);
|
|
$($t).jqGrid("setSelection",ret[2]);
|
|
}
|
|
}
|
|
$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose});
|
|
} else if (rp_ge[$t.p.id].clearAfterAdd) {
|
|
if(rp_ge[$t.p.id].reloadAfterSubmit) {$($t).trigger("reloadGrid");}
|
|
else {
|
|
if($t.p.treeGrid === true){
|
|
$($t).jqGrid("addChildNode",ret[2],selr,postdata );
|
|
} else {
|
|
$($t).jqGrid("addRowData",ret[2],postdata,p.addedrow);
|
|
}
|
|
}
|
|
fillData("_empty",$t,frmgr);
|
|
} else {
|
|
if(rp_ge[$t.p.id].reloadAfterSubmit) {$($t).trigger("reloadGrid");}
|
|
else {
|
|
if($t.p.treeGrid === true){
|
|
$($t).jqGrid("addChildNode",ret[2],selr,postdata );
|
|
} else {
|
|
$($t).jqGrid("addRowData",ret[2],postdata,p.addedrow);
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
// the action is update
|
|
if(rp_ge[$t.p.id].reloadAfterSubmit) {
|
|
$($t).trigger("reloadGrid");
|
|
if( !rp_ge[$t.p.id].closeAfterEdit ) {setTimeout(function(){$($t).jqGrid("setSelection",postdata[idname]);},1000);}
|
|
} else {
|
|
if($t.p.treeGrid === true) {
|
|
$($t).jqGrid("setTreeRow", postdata[idname],postdata);
|
|
} else {
|
|
$($t).jqGrid("setRowData", postdata[idname],postdata);
|
|
}
|
|
}
|
|
if(rp_ge[$t.p.id].closeAfterEdit) {$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose});}
|
|
}
|
|
if($.isFunction(rp_ge[$t.p.id].afterComplete)) {
|
|
copydata = data;
|
|
setTimeout(function(){
|
|
$($t).triggerHandler("jqGridAddEditAfterComplete", [copydata, postdata, $("#"+frmgr), frmoper]);
|
|
rp_ge[$t.p.id].afterComplete.call($t, copydata, postdata, $("#"+frmgr));
|
|
copydata=null;
|
|
},500);
|
|
}
|
|
if(rp_ge[$t.p.id].checkOnSubmit || rp_ge[$t.p.id].checkOnUpdate) {
|
|
$("#"+frmgr).data("disabled",false);
|
|
if(rp_ge[$t.p.id]._savedData[$t.p.id+"_id"] !="_empty"){
|
|
for(key in rp_ge[$t.p.id]._savedData) {
|
|
if(rp_ge[$t.p.id]._savedData.hasOwnProperty(key) && postdata[key]) {
|
|
rp_ge[$t.p.id]._savedData[key] = postdata[key];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
rp_ge[$t.p.id].processing=false;
|
|
$("#sData", frmtb+"_2").removeClass('ui-state-active');
|
|
try{$(':input:visible',"#"+frmgr)[0].focus();} catch (e){}
|
|
}
|
|
}, $.jgrid.ajaxOptions, rp_ge[$t.p.id].ajaxEditOptions );
|
|
|
|
if (!ajaxOptions.url && !rp_ge[$t.p.id].useDataProxy) {
|
|
if ($.isFunction($t.p.dataProxy)) {
|
|
rp_ge[$t.p.id].useDataProxy = true;
|
|
} else {
|
|
ret[0]=false;ret[1] += " "+$.jgrid.errors.nourl;
|
|
}
|
|
}
|
|
if (ret[0]) {
|
|
if (rp_ge[$t.p.id].useDataProxy) {
|
|
var dpret = $t.p.dataProxy.call($t, ajaxOptions, "set_"+$t.p.id);
|
|
if(dpret === undefined) {
|
|
dpret = [true, ""];
|
|
}
|
|
if(dpret[0] === false ) {
|
|
ret[0] = false;
|
|
ret[1] = dpret[1] || "Error deleting the selected row!" ;
|
|
} else {
|
|
if(ajaxOptions.data.oper == opers.addoper && rp_ge[$t.p.id].closeAfterAdd ) {
|
|
$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});
|
|
}
|
|
if(ajaxOptions.data.oper == opers.editoper && rp_ge[$t.p.id].closeAfterEdit ) {
|
|
$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});
|
|
}
|
|
}
|
|
} else {
|
|
$.ajax(ajaxOptions);
|
|
}
|
|
}
|
|
}
|
|
if(ret[0] === false) {
|
|
$("#FormError>td",frmtb).html(ret[1]);
|
|
$("#FormError",frmtb).show();
|
|
// return;
|
|
}
|
|
}
|
|
function compareData(nObj, oObj ) {
|
|
var ret = false,key;
|
|
for (key in nObj) {
|
|
if(nObj.hasOwnProperty(key) && nObj[key] != oObj[key]) {
|
|
ret = true;
|
|
break;
|
|
}
|
|
}
|
|
return ret;
|
|
}
|
|
function checkUpdates () {
|
|
var stat = true;
|
|
$("#FormError",frmtb).hide();
|
|
if(rp_ge[$t.p.id].checkOnUpdate) {
|
|
postdata = {};extpost={};
|
|
getFormData();
|
|
newData = $.extend({},postdata,extpost);
|
|
diff = compareData(newData,rp_ge[$t.p.id]._savedData);
|
|
if(diff) {
|
|
$("#"+frmgr).data("disabled",true);
|
|
$(".confirm","#"+IDs.themodal).show();
|
|
stat = false;
|
|
}
|
|
}
|
|
return stat;
|
|
}
|
|
function restoreInline()
|
|
{
|
|
var i;
|
|
if (rowid !== "_empty" && $t.p.savedRow !== undefined && $t.p.savedRow.length > 0 && $.isFunction($.fn.jqGrid.restoreRow)) {
|
|
for (i=0;i<$t.p.savedRow.length;i++) {
|
|
if ($t.p.savedRow[i].id == rowid) {
|
|
$($t).jqGrid('restoreRow',rowid);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
function updateNav(cr, posarr){
|
|
var totr = posarr[1].length-1;
|
|
if (cr===0) {
|
|
$("#pData",frmtb+"_2").addClass('ui-state-disabled');
|
|
} else if( posarr[1][cr-1] !== undefined && $("#"+$.jgrid.jqID(posarr[1][cr-1])).hasClass('ui-state-disabled')) {
|
|
$("#pData",frmtb+"_2").addClass('ui-state-disabled');
|
|
} else {
|
|
$("#pData",frmtb+"_2").removeClass('ui-state-disabled');
|
|
}
|
|
|
|
if (cr==totr) {
|
|
$("#nData",frmtb+"_2").addClass('ui-state-disabled');
|
|
} else if( posarr[1][cr+1] !== undefined && $("#"+$.jgrid.jqID(posarr[1][cr+1])).hasClass('ui-state-disabled')) {
|
|
$("#nData",frmtb+"_2").addClass('ui-state-disabled');
|
|
} else {
|
|
$("#nData",frmtb+"_2").removeClass('ui-state-disabled');
|
|
}
|
|
}
|
|
function getCurrPos() {
|
|
var rowsInGrid = $($t).jqGrid("getDataIDs"),
|
|
selrow = $("#id_g",frmtb).val(),
|
|
pos = $.inArray(selrow,rowsInGrid);
|
|
return [pos,rowsInGrid];
|
|
}
|
|
|
|
if ( $("#"+$.jgrid.jqID(IDs.themodal))[0] !== undefined ) {
|
|
showFrm = $($t).triggerHandler("jqGridAddEditBeforeInitData", [$("#"+$.jgrid.jqID(frmgr)), frmoper]);
|
|
if(showFrm === undefined) {
|
|
showFrm = true;
|
|
}
|
|
if(showFrm && onBeforeInit) {
|
|
showFrm = onBeforeInit.call($t,$("#"+frmgr));
|
|
}
|
|
if(showFrm === false) {return;}
|
|
restoreInline();
|
|
$(".ui-jqdialog-title","#"+$.jgrid.jqID(IDs.modalhead)).html(p.caption);
|
|
$("#FormError",frmtb).hide();
|
|
if(rp_ge[$t.p.id].topinfo) {
|
|
$(".topinfo",frmtb).html(rp_ge[$t.p.id].topinfo);
|
|
$(".tinfo",frmtb).show();
|
|
} else {
|
|
$(".tinfo",frmtb).hide();
|
|
}
|
|
if(rp_ge[$t.p.id].bottominfo) {
|
|
$(".bottominfo",frmtb+"_2").html(rp_ge[$t.p.id].bottominfo);
|
|
$(".binfo",frmtb+"_2").show();
|
|
} else {
|
|
$(".binfo",frmtb+"_2").hide();
|
|
}
|
|
// filldata
|
|
fillData(rowid,$t,frmgr);
|
|
///
|
|
if(rowid=="_empty" || !rp_ge[$t.p.id].viewPagerButtons) {
|
|
$("#pData, #nData",frmtb+"_2").hide();
|
|
} else {
|
|
$("#pData, #nData",frmtb+"_2").show();
|
|
}
|
|
if(rp_ge[$t.p.id].processing===true) {
|
|
rp_ge[$t.p.id].processing=false;
|
|
$("#sData", frmtb+"_2").removeClass('ui-state-active');
|
|
}
|
|
if($("#"+frmgr).data("disabled")===true) {
|
|
$(".confirm","#"+$.jgrid.jqID(IDs.themodal)).hide();
|
|
$("#"+frmgr).data("disabled",false);
|
|
}
|
|
$($t).triggerHandler("jqGridAddEditBeforeShowForm", [$("#"+frmgr), frmoper]);
|
|
if(onBeforeShow) { onBeforeShow.call($t, $("#"+frmgr)); }
|
|
$("#"+$.jgrid.jqID(IDs.themodal)).data("onClose",rp_ge[$t.p.id].onClose);
|
|
$.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{gbox:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, jqM: false, overlay: p.overlay, modal:p.modal});
|
|
if(!closeovrl) {
|
|
$(".jqmOverlay").click(function(){
|
|
if(!checkUpdates()) {return false;}
|
|
$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});
|
|
return false;
|
|
});
|
|
}
|
|
$($t).triggerHandler("jqGridAddEditAfterShowForm", [$("#"+frmgr), frmoper]);
|
|
if(onAfterShow) { onAfterShow.call($t, $("#"+frmgr)); }
|
|
} else {
|
|
var dh = isNaN(p.dataheight) ? p.dataheight : p.dataheight+"px",
|
|
frm = $("<form name='FormPost' id='"+frmgr+"' class='FormGrid' onSubmit='return false;' style='width:100%;overflow:auto;position:relative;height:"+dh+";'></form>").data("disabled",false),
|
|
tbl = $("<table id='"+frmtborg+"' class='EditTable' cellspacing='0' cellpadding='0' border='0'><tbody></tbody></table>");
|
|
showFrm = $($t).triggerHandler("jqGridAddEditBeforeInitData", [$("#"+frmgr), frmoper]);
|
|
if(showFrm === undefined) {
|
|
showFrm = true;
|
|
}
|
|
if(showFrm && onBeforeInit) {
|
|
showFrm = onBeforeInit.call($t,$("#"+frmgr));
|
|
}
|
|
if(showFrm === false) {return;}
|
|
restoreInline();
|
|
$($t.p.colModel).each( function() {
|
|
var fmto = this.formoptions;
|
|
maxCols = Math.max(maxCols, fmto ? fmto.colpos || 0 : 0 );
|
|
maxRows = Math.max(maxRows, fmto ? fmto.rowpos || 0 : 0 );
|
|
});
|
|
$(frm).append(tbl);
|
|
var flr = $("<tr id='FormError' style='display:none'><td class='ui-state-error' colspan='"+(maxCols*2)+"'></td></tr>");
|
|
flr[0].rp = 0;
|
|
$(tbl).append(flr);
|
|
//topinfo
|
|
flr = $("<tr style='display:none' class='tinfo'><td class='topinfo' colspan='"+(maxCols*2)+"'>"+rp_ge[$t.p.id].topinfo+"</td></tr>");
|
|
flr[0].rp = 0;
|
|
$(tbl).append(flr);
|
|
// set the id.
|
|
// use carefull only to change here colproperties.
|
|
// create data
|
|
var rtlb = $t.p.direction == "rtl" ? true :false,
|
|
bp = rtlb ? "nData" : "pData",
|
|
bn = rtlb ? "pData" : "nData";
|
|
createData(rowid,$t,tbl,maxCols);
|
|
// buttons at footer
|
|
var bP = "<a href='javascript:void(0)' id='"+bp+"' class='fm-button ui-state-default ui-corner-left'><span class='ui-icon ui-icon-triangle-1-w'></span></a>",
|
|
bN = "<a href='javascript:void(0)' id='"+bn+"' class='fm-button ui-state-default ui-corner-right'><span class='ui-icon ui-icon-triangle-1-e'></span></a>",
|
|
bS ="<a href='javascript:void(0)' id='sData' class='fm-button ui-state-default ui-corner-all'>"+p.bSubmit+"</a>",
|
|
bC ="<a href='javascript:void(0)' id='cData' class='fm-button ui-state-default ui-corner-all'>"+p.bCancel+"</a>";
|
|
var bt = "<table border='0' cellspacing='0' cellpadding='0' class='EditTable' id='"+frmtborg+"_2'><tbody><tr><td colspan='2'><hr class='ui-widget-content' style='margin:1px'/></td></tr><tr id='Act_Buttons'><td class='navButton'>"+(rtlb ? bN+bP : bP+bN)+"</td><td class='EditButton'>"+bS+bC+"</td></tr>";
|
|
bt += "<tr style='display:none' class='binfo'><td class='bottominfo' colspan='2'>"+rp_ge[$t.p.id].bottominfo+"</td></tr>";
|
|
bt += "</tbody></table>";
|
|
if(maxRows > 0) {
|
|
var sd=[];
|
|
$.each($(tbl)[0].rows,function(i,r){
|
|
sd[i] = r;
|
|
});
|
|
sd.sort(function(a,b){
|
|
if(a.rp > b.rp) {return 1;}
|
|
if(a.rp < b.rp) {return -1;}
|
|
return 0;
|
|
});
|
|
$.each(sd, function(index, row) {
|
|
$('tbody',tbl).append(row);
|
|
});
|
|
}
|
|
p.gbox = "#gbox_"+$.jgrid.jqID(gID);
|
|
var cle = false;
|
|
if(p.closeOnEscape===true){
|
|
p.closeOnEscape = false;
|
|
cle = true;
|
|
}
|
|
var tms = $("<span></span>").append(frm).append(bt);
|
|
$.jgrid.createModal(IDs,tms,p,"#gview_"+$.jgrid.jqID($t.p.id),$("#gbox_"+$.jgrid.jqID($t.p.id))[0]);
|
|
if(rtlb) {
|
|
$("#pData, #nData",frmtb+"_2").css("float","right");
|
|
$(".EditButton",frmtb+"_2").css("text-align","left");
|
|
}
|
|
if(rp_ge[$t.p.id].topinfo) {$(".tinfo",frmtb).show();}
|
|
if(rp_ge[$t.p.id].bottominfo) {$(".binfo",frmtb+"_2").show();}
|
|
tms = null;bt=null;
|
|
$("#"+$.jgrid.jqID(IDs.themodal)).keydown( function( e ) {
|
|
var wkey = e.target;
|
|
if ($("#"+frmgr).data("disabled")===true ) {return false;}//??
|
|
if(rp_ge[$t.p.id].savekey[0] === true && e.which == rp_ge[$t.p.id].savekey[1]) { // save
|
|
if(wkey.tagName != "TEXTAREA") {
|
|
$("#sData", frmtb+"_2").trigger("click");
|
|
return false;
|
|
}
|
|
}
|
|
if(e.which === 27) {
|
|
if(!checkUpdates()) {return false;}
|
|
if(cle) {$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:p.gbox,jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});}
|
|
return false;
|
|
}
|
|
if(rp_ge[$t.p.id].navkeys[0]===true) {
|
|
if($("#id_g",frmtb).val() == "_empty") {return true;}
|
|
if(e.which == rp_ge[$t.p.id].navkeys[1]){ //up
|
|
$("#pData", frmtb+"_2").trigger("click");
|
|
return false;
|
|
}
|
|
if(e.which == rp_ge[$t.p.id].navkeys[2]){ //down
|
|
$("#nData", frmtb+"_2").trigger("click");
|
|
return false;
|
|
}
|
|
}
|
|
});
|
|
if(p.checkOnUpdate) {
|
|
$("a.ui-jqdialog-titlebar-close span","#"+$.jgrid.jqID(IDs.themodal)).removeClass("jqmClose");
|
|
$("a.ui-jqdialog-titlebar-close","#"+$.jgrid.jqID(IDs.themodal)).unbind("click")
|
|
.click(function(){
|
|
if(!checkUpdates()) {return false;}
|
|
$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose});
|
|
return false;
|
|
});
|
|
}
|
|
p.saveicon = $.extend([true,"left","ui-icon-disk"],p.saveicon);
|
|
p.closeicon = $.extend([true,"left","ui-icon-close"],p.closeicon);
|
|
// beforeinitdata after creation of the form
|
|
if(p.saveicon[0]===true) {
|
|
$("#sData",frmtb+"_2").addClass(p.saveicon[1] == "right" ? 'fm-button-icon-right' : 'fm-button-icon-left')
|
|
.append("<span class='ui-icon "+p.saveicon[2]+"'></span>");
|
|
}
|
|
if(p.closeicon[0]===true) {
|
|
$("#cData",frmtb+"_2").addClass(p.closeicon[1] == "right" ? 'fm-button-icon-right' : 'fm-button-icon-left')
|
|
.append("<span class='ui-icon "+p.closeicon[2]+"'></span>");
|
|
}
|
|
if(rp_ge[$t.p.id].checkOnSubmit || rp_ge[$t.p.id].checkOnUpdate) {
|
|
bS ="<a href='javascript:void(0)' id='sNew' class='fm-button ui-state-default ui-corner-all' style='z-index:1002'>"+p.bYes+"</a>";
|
|
bN ="<a href='javascript:void(0)' id='nNew' class='fm-button ui-state-default ui-corner-all' style='z-index:1002'>"+p.bNo+"</a>";
|
|
bC ="<a href='javascript:void(0)' id='cNew' class='fm-button ui-state-default ui-corner-all' style='z-index:1002'>"+p.bExit+"</a>";
|
|
var ii, zI = p.zIndex || 999;zI ++;
|
|
if ($.browser.msie && $.browser.version ==6) {
|
|
ii = '<iframe style="display:block;position:absolute;z-index:-1;filter:Alpha(Opacity=\'0\');" src="javascript:false;"></iframe>';
|
|
} else {ii="";}
|
|
$("<div class='ui-widget-overlay jqgrid-overlay confirm' style='z-index:"+zI+";display:none;'> "+ii+"</div><div class='confirm ui-widget-content ui-jqconfirm' style='z-index:"+(zI+1)+"'>"+p.saveData+"<br/><br/>"+bS+bN+bC+"</div>").insertAfter("#"+frmgr);
|
|
$("#sNew","#"+$.jgrid.jqID(IDs.themodal)).click(function(){
|
|
postIt();
|
|
$("#"+frmgr).data("disabled",false);
|
|
$(".confirm","#"+$.jgrid.jqID(IDs.themodal)).hide();
|
|
return false;
|
|
});
|
|
$("#nNew","#"+$.jgrid.jqID(IDs.themodal)).click(function(){
|
|
$(".confirm","#"+$.jgrid.jqID(IDs.themodal)).hide();
|
|
$("#"+frmgr).data("disabled",false);
|
|
setTimeout(function(){$(":input","#"+frmgr)[0].focus();},0);
|
|
return false;
|
|
});
|
|
$("#cNew","#"+$.jgrid.jqID(IDs.themodal)).click(function(){
|
|
$(".confirm","#"+$.jgrid.jqID(IDs.themodal)).hide();
|
|
$("#"+frmgr).data("disabled",false);
|
|
$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose});
|
|
return false;
|
|
});
|
|
}
|
|
// here initform - only once
|
|
$($t).triggerHandler("jqGridAddEditInitializeForm", [$("#"+frmgr), frmoper]);
|
|
if(onInitializeForm) {onInitializeForm.call($t,$("#"+frmgr));}
|
|
if(rowid=="_empty" || !rp_ge[$t.p.id].viewPagerButtons) {$("#pData,#nData",frmtb+"_2").hide();} else {$("#pData,#nData",frmtb+"_2").show();}
|
|
$($t).triggerHandler("jqGridAddEditBeforeShowForm", [$("#"+frmgr), frmoper]);
|
|
if(onBeforeShow) { onBeforeShow.call($t, $("#"+frmgr));}
|
|
$("#"+$.jgrid.jqID(IDs.themodal)).data("onClose",rp_ge[$t.p.id].onClose);
|
|
$.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{gbox:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, overlay: p.overlay,modal:p.modal});
|
|
if(!closeovrl) {
|
|
$(".jqmOverlay").click(function(){
|
|
if(!checkUpdates()) {return false;}
|
|
$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});
|
|
return false;
|
|
});
|
|
}
|
|
$($t).triggerHandler("jqGridAddEditAfterShowForm", [$("#"+frmgr), frmoper]);
|
|
if(onAfterShow) { onAfterShow.call($t, $("#"+frmgr)); }
|
|
$(".fm-button","#"+$.jgrid.jqID(IDs.themodal)).hover(
|
|
function(){$(this).addClass('ui-state-hover');},
|
|
function(){$(this).removeClass('ui-state-hover');}
|
|
);
|
|
$("#sData", frmtb+"_2").click(function(){
|
|
postdata = {};extpost={};
|
|
$("#FormError",frmtb).hide();
|
|
// all depend on ret array
|
|
//ret[0] - succes
|
|
//ret[1] - msg if not succes
|
|
//ret[2] - the id that will be set if reload after submit false
|
|
getFormData();
|
|
if(postdata[$t.p.id+"_id"] == "_empty") {postIt();}
|
|
else if(p.checkOnSubmit===true ) {
|
|
newData = $.extend({},postdata,extpost);
|
|
diff = compareData(newData,rp_ge[$t.p.id]._savedData);
|
|
if(diff) {
|
|
$("#"+frmgr).data("disabled",true);
|
|
$(".confirm","#"+$.jgrid.jqID(IDs.themodal)).show();
|
|
} else {
|
|
postIt();
|
|
}
|
|
} else {
|
|
postIt();
|
|
}
|
|
return false;
|
|
});
|
|
$("#cData", frmtb+"_2").click(function(){
|
|
if(!checkUpdates()) {return false;}
|
|
$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose});
|
|
return false;
|
|
});
|
|
$("#nData", frmtb+"_2").click(function(){
|
|
if(!checkUpdates()) {return false;}
|
|
$("#FormError",frmtb).hide();
|
|
var npos = getCurrPos();
|
|
npos[0] = parseInt(npos[0],10);
|
|
if(npos[0] != -1 && npos[1][npos[0]+1]) {
|
|
$($t).triggerHandler("jqGridAddEditClickPgButtons", ['next',$("#"+frmgr),npos[1][npos[0]]]);
|
|
var nposret;
|
|
if($.isFunction(p.onclickPgButtons)) {
|
|
nposret = p.onclickPgButtons.call($t, 'next',$("#"+frmgr),npos[1][npos[0]]);
|
|
if( nposret !== undefined && nposret === false ) {return false;}
|
|
}
|
|
if( $("#"+$.jgrid.jqID(npos[1][npos[0]+1])).hasClass('ui-state-disabled')) {return false;}
|
|
fillData(npos[1][npos[0]+1],$t,frmgr);
|
|
$($t).jqGrid("setSelection",npos[1][npos[0]+1]);
|
|
$($t).triggerHandler("jqGridAddEditAfterClickPgButtons", ['next',$("#"+frmgr),npos[1][npos[0]]]);
|
|
if($.isFunction(p.afterclickPgButtons)) {
|
|
p.afterclickPgButtons.call($t, 'next',$("#"+frmgr),npos[1][npos[0]+1]);
|
|
}
|
|
updateNav(npos[0]+1,npos);
|
|
}
|
|
return false;
|
|
});
|
|
$("#pData", frmtb+"_2").click(function(){
|
|
if(!checkUpdates()) {return false;}
|
|
$("#FormError",frmtb).hide();
|
|
var ppos = getCurrPos();
|
|
if(ppos[0] != -1 && ppos[1][ppos[0]-1]) {
|
|
$($t).triggerHandler("jqGridAddEditClickPgButtons", ['prev',$("#"+frmgr),ppos[1][ppos[0]]]);
|
|
var pposret;
|
|
if($.isFunction(p.onclickPgButtons)) {
|
|
pposret = p.onclickPgButtons.call($t, 'prev',$("#"+frmgr),ppos[1][ppos[0]]);
|
|
if( pposret !== undefined && pposret === false ) {return false;}
|
|
}
|
|
if( $("#"+$.jgrid.jqID(ppos[1][ppos[0]-1])).hasClass('ui-state-disabled')) {return false;}
|
|
fillData(ppos[1][ppos[0]-1],$t,frmgr);
|
|
$($t).jqGrid("setSelection",ppos[1][ppos[0]-1]);
|
|
$($t).triggerHandler("jqGridAddEditAfterClickPgButtons", ['prev',$("#"+frmgr),ppos[1][ppos[0]]]);
|
|
if($.isFunction(p.afterclickPgButtons)) {
|
|
p.afterclickPgButtons.call($t, 'prev',$("#"+frmgr),ppos[1][ppos[0]-1]);
|
|
}
|
|
updateNav(ppos[0]-1,ppos);
|
|
}
|
|
return false;
|
|
});
|
|
}
|
|
var posInit =getCurrPos();
|
|
updateNav(posInit[0],posInit);
|
|
|
|
});
|
|
},
|
|
viewGridRow : function(rowid, p){
|
|
p = $.extend(true, {
|
|
top : 0,
|
|
left: 0,
|
|
width: 0,
|
|
height: 'auto',
|
|
dataheight: 'auto',
|
|
modal: false,
|
|
overlay: 30,
|
|
drag: true,
|
|
resize: true,
|
|
jqModal: true,
|
|
closeOnEscape : false,
|
|
labelswidth: '30%',
|
|
closeicon: [],
|
|
navkeys: [false,38,40],
|
|
onClose: null,
|
|
beforeShowForm : null,
|
|
beforeInitData : null,
|
|
viewPagerButtons : true
|
|
}, $.jgrid.view, p || {});
|
|
rp_ge[$(this)[0].p.id] = p;
|
|
return this.each(function(){
|
|
var $t = this;
|
|
if (!$t.grid || !rowid) {return;}
|
|
var gID = $t.p.id,
|
|
frmgr = "ViewGrid_"+$.jgrid.jqID( gID ), frmtb = "ViewTbl_" + $.jgrid.jqID( gID ),
|
|
frmgr_id = "ViewGrid_"+gID, frmtb_id = "ViewTbl_"+gID,
|
|
IDs = {themodal:'viewmod'+gID,modalhead:'viewhd'+gID,modalcontent:'viewcnt'+gID, scrollelm : frmgr},
|
|
onBeforeInit = $.isFunction(rp_ge[$t.p.id].beforeInitData) ? rp_ge[$t.p.id].beforeInitData : false,
|
|
showFrm = true,
|
|
maxCols = 1, maxRows=0;
|
|
function focusaref(){ //Sfari 3 issues
|
|
if(rp_ge[$t.p.id].closeOnEscape===true || rp_ge[$t.p.id].navkeys[0]===true) {
|
|
setTimeout(function(){$(".ui-jqdialog-titlebar-close","#"+$.jgrid.jqID(IDs.modalhead)).focus();},0);
|
|
}
|
|
}
|
|
function createData(rowid,obj,tb,maxcols){
|
|
var nm, hc,trdata, cnt=0,tmp, dc, retpos=[], ind=false, i,
|
|
tdtmpl = "<td class='CaptionTD form-view-label ui-widget-content' width='"+p.labelswidth+"'> </td><td class='DataTD form-view-data ui-helper-reset ui-widget-content'> </td>", tmpl="",
|
|
tdtmpl2 = "<td class='CaptionTD form-view-label ui-widget-content'> </td><td class='DataTD form-view-data ui-widget-content'> </td>",
|
|
fmtnum = ['integer','number','currency'],max1 =0, max2=0 ,maxw,setme, viewfld;
|
|
for (i=1;i<=maxcols;i++) {
|
|
tmpl += i == 1 ? tdtmpl : tdtmpl2;
|
|
}
|
|
// find max number align rigth with property formatter
|
|
$(obj.p.colModel).each( function() {
|
|
if(this.editrules && this.editrules.edithidden === true) {
|
|
hc = false;
|
|
} else {
|
|
hc = this.hidden === true ? true : false;
|
|
}
|
|
if(!hc && this.align==='right') {
|
|
if(this.formatter && $.inArray(this.formatter,fmtnum) !== -1 ) {
|
|
max1 = Math.max(max1,parseInt(this.width,10));
|
|
} else {
|
|
max2 = Math.max(max2,parseInt(this.width,10));
|
|
}
|
|
}
|
|
});
|
|
maxw = max1 !==0 ? max1 : max2 !==0 ? max2 : 0;
|
|
ind = $(obj).jqGrid("getInd",rowid);
|
|
$(obj.p.colModel).each( function(i) {
|
|
nm = this.name;
|
|
setme = false;
|
|
// hidden fields are included in the form
|
|
if(this.editrules && this.editrules.edithidden === true) {
|
|
hc = false;
|
|
} else {
|
|
hc = this.hidden === true ? true : false;
|
|
}
|
|
dc = hc ? "style='display:none'" : "";
|
|
viewfld = (typeof this.viewable !== 'boolean') ? true : this.viewable;
|
|
if ( nm !== 'cb' && nm !== 'subgrid' && nm !== 'rn' && viewfld) {
|
|
if(ind === false) {
|
|
tmp = "";
|
|
} else {
|
|
if(nm == obj.p.ExpandColumn && obj.p.treeGrid === true) {
|
|
tmp = $("td:eq("+i+")",obj.rows[ind]).text();
|
|
} else {
|
|
tmp = $("td:eq("+i+")",obj.rows[ind]).html();
|
|
}
|
|
}
|
|
setme = this.align === 'right' && maxw !==0 ? true : false;
|
|
var frmopt = $.extend({},{rowabove:false,rowcontent:''}, this.formoptions || {}),
|
|
rp = parseInt(frmopt.rowpos,10) || cnt+1,
|
|
cp = parseInt((parseInt(frmopt.colpos,10) || 1)*2,10);
|
|
if(frmopt.rowabove) {
|
|
var newdata = $("<tr><td class='contentinfo' colspan='"+(maxcols*2)+"'>"+frmopt.rowcontent+"</td></tr>");
|
|
$(tb).append(newdata);
|
|
newdata[0].rp = rp;
|
|
}
|
|
trdata = $(tb).find("tr[rowpos="+rp+"]");
|
|
if ( trdata.length===0 ) {
|
|
trdata = $("<tr "+dc+" rowpos='"+rp+"'></tr>").addClass("FormData").attr("id","trv_"+nm);
|
|
$(trdata).append(tmpl);
|
|
$(tb).append(trdata);
|
|
trdata[0].rp = rp;
|
|
}
|
|
$("td:eq("+(cp-2)+")",trdata[0]).html('<b>'+ (frmopt.label === undefined ? obj.p.colNames[i]: frmopt.label)+'</b>');
|
|
$("td:eq("+(cp-1)+")",trdata[0]).append("<span>"+tmp+"</span>").attr("id","v_"+nm);
|
|
if(setme){
|
|
$("td:eq("+(cp-1)+") span",trdata[0]).css({'text-align':'right',width:maxw+"px"});
|
|
}
|
|
retpos[cnt] = i;
|
|
cnt++;
|
|
}
|
|
});
|
|
if( cnt > 0) {
|
|
var idrow = $("<tr class='FormData' style='display:none'><td class='CaptionTD'></td><td colspan='"+ (maxcols*2-1)+"' class='DataTD'><input class='FormElement' id='id_g' type='text' name='id' value='"+rowid+"'/></td></tr>");
|
|
idrow[0].rp = cnt+99;
|
|
$(tb).append(idrow);
|
|
}
|
|
return retpos;
|
|
}
|
|
function fillData(rowid,obj){
|
|
var nm, hc,cnt=0,tmp, opt,trv;
|
|
trv = $(obj).jqGrid("getInd",rowid,true);
|
|
if(!trv) {return;}
|
|
$('td',trv).each( function(i) {
|
|
nm = obj.p.colModel[i].name;
|
|
// hidden fields are included in the form
|
|
if(obj.p.colModel[i].editrules && obj.p.colModel[i].editrules.edithidden === true) {
|
|
hc = false;
|
|
} else {
|
|
hc = obj.p.colModel[i].hidden === true ? true : false;
|
|
}
|
|
if ( nm !== 'cb' && nm !== 'subgrid' && nm !== 'rn') {
|
|
if(nm == obj.p.ExpandColumn && obj.p.treeGrid === true) {
|
|
tmp = $(this).text();
|
|
} else {
|
|
tmp = $(this).html();
|
|
}
|
|
opt = $.extend({},obj.p.colModel[i].editoptions || {});
|
|
nm = $.jgrid.jqID("v_"+nm);
|
|
$("#"+nm+" span","#"+frmtb).html(tmp);
|
|
if (hc) {$("#"+nm,"#"+frmtb).parents("tr:first").hide();}
|
|
cnt++;
|
|
}
|
|
});
|
|
if(cnt>0) {$("#id_g","#"+frmtb).val(rowid);}
|
|
}
|
|
function updateNav(cr,posarr){
|
|
var totr = posarr[1].length-1;
|
|
if (cr===0) {
|
|
$("#pData","#"+frmtb+"_2").addClass('ui-state-disabled');
|
|
} else if( posarr[1][cr-1] !== undefined && $("#"+$.jgrid.jqID(posarr[1][cr-1])).hasClass('ui-state-disabled')) {
|
|
$("#pData",frmtb+"_2").addClass('ui-state-disabled');
|
|
} else {
|
|
$("#pData","#"+frmtb+"_2").removeClass('ui-state-disabled');
|
|
}
|
|
if (cr==totr) {
|
|
$("#nData","#"+frmtb+"_2").addClass('ui-state-disabled');
|
|
} else if( posarr[1][cr+1] !== undefined && $("#"+$.jgrid.jqID(posarr[1][cr+1])).hasClass('ui-state-disabled')) {
|
|
$("#nData",frmtb+"_2").addClass('ui-state-disabled');
|
|
} else {
|
|
$("#nData","#"+frmtb+"_2").removeClass('ui-state-disabled');
|
|
}
|
|
}
|
|
function getCurrPos() {
|
|
var rowsInGrid = $($t).jqGrid("getDataIDs"),
|
|
selrow = $("#id_g","#"+frmtb).val(),
|
|
pos = $.inArray(selrow,rowsInGrid);
|
|
return [pos,rowsInGrid];
|
|
}
|
|
|
|
if ( $("#"+$.jgrid.jqID(IDs.themodal))[0] !== undefined ) {
|
|
if(onBeforeInit) {
|
|
showFrm = onBeforeInit.call($t,$("#"+frmgr));
|
|
if(showFrm === undefined) {
|
|
showFrm = true;
|
|
}
|
|
}
|
|
if(showFrm === false) {return;}
|
|
$(".ui-jqdialog-title","#"+$.jgrid.jqID(IDs.modalhead)).html(p.caption);
|
|
$("#FormError","#"+frmtb).hide();
|
|
fillData(rowid,$t);
|
|
if($.isFunction(rp_ge[$t.p.id].beforeShowForm)) {rp_ge[$t.p.id].beforeShowForm.call($t,$("#"+frmgr));}
|
|
$.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{gbox:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, jqM: false, overlay: p.overlay, modal:p.modal});
|
|
focusaref();
|
|
} else {
|
|
var dh = isNaN(p.dataheight) ? p.dataheight : p.dataheight+"px";
|
|
var frm = $("<form name='FormPost' id='"+frmgr_id+"' class='FormGrid' style='width:100%;overflow:auto;position:relative;height:"+dh+";'></form>"),
|
|
tbl =$("<table id='"+frmtb_id+"' class='EditTable' cellspacing='1' cellpadding='2' border='0' style='table-layout:fixed'><tbody></tbody></table>");
|
|
if(onBeforeInit) {
|
|
showFrm = onBeforeInit.call($t,$("#"+frmgr));
|
|
if(showFrm === undefined) {
|
|
showFrm = true;
|
|
}
|
|
}
|
|
if(showFrm === false) {return;}
|
|
$($t.p.colModel).each( function() {
|
|
var fmto = this.formoptions;
|
|
maxCols = Math.max(maxCols, fmto ? fmto.colpos || 0 : 0 );
|
|
maxRows = Math.max(maxRows, fmto ? fmto.rowpos || 0 : 0 );
|
|
});
|
|
// set the id.
|
|
$(frm).append(tbl);
|
|
createData(rowid, $t, tbl, maxCols);
|
|
var rtlb = $t.p.direction == "rtl" ? true :false,
|
|
bp = rtlb ? "nData" : "pData",
|
|
bn = rtlb ? "pData" : "nData",
|
|
|
|
// buttons at footer
|
|
bP = "<a href='javascript:void(0)' id='"+bp+"' class='fm-button ui-state-default ui-corner-left'><span class='ui-icon ui-icon-triangle-1-w'></span></a>",
|
|
bN = "<a href='javascript:void(0)' id='"+bn+"' class='fm-button ui-state-default ui-corner-right'><span class='ui-icon ui-icon-triangle-1-e'></span></a>",
|
|
bC ="<a href='javascript:void(0)' id='cData' class='fm-button ui-state-default ui-corner-all'>"+p.bClose+"</a>";
|
|
if(maxRows > 0) {
|
|
var sd=[];
|
|
$.each($(tbl)[0].rows,function(i,r){
|
|
sd[i] = r;
|
|
});
|
|
sd.sort(function(a,b){
|
|
if(a.rp > b.rp) {return 1;}
|
|
if(a.rp < b.rp) {return -1;}
|
|
return 0;
|
|
});
|
|
$.each(sd, function(index, row) {
|
|
$('tbody',tbl).append(row);
|
|
});
|
|
}
|
|
p.gbox = "#gbox_"+$.jgrid.jqID(gID);
|
|
var bt = $("<span></span>").append(frm).append("<table border='0' class='EditTable' id='"+frmtb+"_2'><tbody><tr id='Act_Buttons'><td class='navButton' width='"+p.labelswidth+"'>"+(rtlb ? bN+bP : bP+bN)+"</td><td class='EditButton'>"+bC+"</td></tr></tbody></table>");
|
|
$.jgrid.createModal(IDs,bt,p,"#gview_"+$.jgrid.jqID($t.p.id),$("#gview_"+$.jgrid.jqID($t.p.id))[0]);
|
|
if(rtlb) {
|
|
$("#pData, #nData","#"+frmtb+"_2").css("float","right");
|
|
$(".EditButton","#"+frmtb+"_2").css("text-align","left");
|
|
}
|
|
if(!p.viewPagerButtons) {$("#pData, #nData","#"+frmtb+"_2").hide();}
|
|
bt = null;
|
|
$("#"+IDs.themodal).keydown( function( e ) {
|
|
if(e.which === 27) {
|
|
if(rp_ge[$t.p.id].closeOnEscape) {$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:p.gbox,jqm:p.jqModal, onClose: p.onClose});}
|
|
return false;
|
|
}
|
|
if(p.navkeys[0]===true) {
|
|
if(e.which === p.navkeys[1]){ //up
|
|
$("#pData", "#"+frmtb+"_2").trigger("click");
|
|
return false;
|
|
}
|
|
if(e.which === p.navkeys[2]){ //down
|
|
$("#nData", "#"+frmtb+"_2").trigger("click");
|
|
return false;
|
|
}
|
|
}
|
|
});
|
|
p.closeicon = $.extend([true,"left","ui-icon-close"],p.closeicon);
|
|
if(p.closeicon[0]===true) {
|
|
$("#cData","#"+frmtb+"_2").addClass(p.closeicon[1] == "right" ? 'fm-button-icon-right' : 'fm-button-icon-left')
|
|
.append("<span class='ui-icon "+p.closeicon[2]+"'></span>");
|
|
}
|
|
if($.isFunction(p.beforeShowForm)) {p.beforeShowForm.call($t,$("#"+frmgr));}
|
|
$.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{gbox:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, modal:p.modal});
|
|
$(".fm-button:not(.ui-state-disabled)","#"+frmtb+"_2").hover(
|
|
function(){$(this).addClass('ui-state-hover');},
|
|
function(){$(this).removeClass('ui-state-hover');}
|
|
);
|
|
focusaref();
|
|
$("#cData", "#"+frmtb+"_2").click(function(){
|
|
$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: p.onClose});
|
|
return false;
|
|
});
|
|
$("#nData", "#"+frmtb+"_2").click(function(){
|
|
$("#FormError","#"+frmtb).hide();
|
|
var npos = getCurrPos();
|
|
npos[0] = parseInt(npos[0],10);
|
|
if(npos[0] != -1 && npos[1][npos[0]+1]) {
|
|
if($.isFunction(p.onclickPgButtons)) {
|
|
p.onclickPgButtons.call($t,'next',$("#"+frmgr),npos[1][npos[0]]);
|
|
}
|
|
fillData(npos[1][npos[0]+1],$t);
|
|
$($t).jqGrid("setSelection",npos[1][npos[0]+1]);
|
|
if($.isFunction(p.afterclickPgButtons)) {
|
|
p.afterclickPgButtons.call($t,'next',$("#"+frmgr),npos[1][npos[0]+1]);
|
|
}
|
|
updateNav(npos[0]+1,npos);
|
|
}
|
|
focusaref();
|
|
return false;
|
|
});
|
|
$("#pData", "#"+frmtb+"_2").click(function(){
|
|
$("#FormError","#"+frmtb).hide();
|
|
var ppos = getCurrPos();
|
|
if(ppos[0] != -1 && ppos[1][ppos[0]-1]) {
|
|
if($.isFunction(p.onclickPgButtons)) {
|
|
p.onclickPgButtons.call($t,'prev',$("#"+frmgr),ppos[1][ppos[0]]);
|
|
}
|
|
fillData(ppos[1][ppos[0]-1],$t);
|
|
$($t).jqGrid("setSelection",ppos[1][ppos[0]-1]);
|
|
if($.isFunction(p.afterclickPgButtons)) {
|
|
p.afterclickPgButtons.call($t,'prev',$("#"+frmgr),ppos[1][ppos[0]-1]);
|
|
}
|
|
updateNav(ppos[0]-1,ppos);
|
|
}
|
|
focusaref();
|
|
return false;
|
|
});
|
|
}
|
|
var posInit =getCurrPos();
|
|
updateNav(posInit[0],posInit);
|
|
});
|
|
},
|
|
delGridRow : function(rowids,p) {
|
|
p = $.extend(true, {
|
|
top : 0,
|
|
left: 0,
|
|
width: 240,
|
|
height: 'auto',
|
|
dataheight : 'auto',
|
|
modal: false,
|
|
overlay: 30,
|
|
drag: true,
|
|
resize: true,
|
|
url : '',
|
|
mtype : "POST",
|
|
reloadAfterSubmit: true,
|
|
beforeShowForm: null,
|
|
beforeInitData : null,
|
|
afterShowForm: null,
|
|
beforeSubmit: null,
|
|
onclickSubmit: null,
|
|
afterSubmit: null,
|
|
jqModal : true,
|
|
closeOnEscape : false,
|
|
delData: {},
|
|
delicon : [],
|
|
cancelicon : [],
|
|
onClose : null,
|
|
ajaxDelOptions : {},
|
|
processing : false,
|
|
serializeDelData : null,
|
|
useDataProxy : false
|
|
}, $.jgrid.del, p ||{});
|
|
rp_ge[$(this)[0].p.id] = p;
|
|
return this.each(function(){
|
|
var $t = this;
|
|
if (!$t.grid ) {return;}
|
|
if(!rowids) {return;}
|
|
var onBeforeShow = $.isFunction( rp_ge[$t.p.id].beforeShowForm ),
|
|
onAfterShow = $.isFunction( rp_ge[$t.p.id].afterShowForm ),
|
|
onBeforeInit = $.isFunction(rp_ge[$t.p.id].beforeInitData) ? rp_ge[$t.p.id].beforeInitData : false,
|
|
gID = $t.p.id, onCS = {},
|
|
showFrm = true,
|
|
dtbl = "DelTbl_"+$.jgrid.jqID(gID),postd, idname, opers, oper,
|
|
dtbl_id = "DelTbl_" + gID,
|
|
IDs = {themodal:'delmod'+gID,modalhead:'delhd'+gID,modalcontent:'delcnt'+gID, scrollelm: dtbl};
|
|
if ($.isArray(rowids)) {rowids = rowids.join();}
|
|
if ( $("#"+$.jgrid.jqID(IDs.themodal))[0] !== undefined ) {
|
|
if(onBeforeInit) {
|
|
showFrm = onBeforeInit.call($t,$("#"+dtbl));
|
|
if(showFrm === undefined) {
|
|
showFrm = true;
|
|
}
|
|
}
|
|
if(showFrm === false) {return;}
|
|
$("#DelData>td","#"+dtbl).text(rowids);
|
|
$("#DelError","#"+dtbl).hide();
|
|
if( rp_ge[$t.p.id].processing === true) {
|
|
rp_ge[$t.p.id].processing=false;
|
|
$("#dData", "#"+dtbl).removeClass('ui-state-active');
|
|
}
|
|
if(onBeforeShow) {rp_ge[$t.p.id].beforeShowForm.call($t,$("#"+dtbl));}
|
|
$.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{gbox:"#gbox_"+$.jgrid.jqID(gID),jqm:rp_ge[$t.p.id].jqModal,jqM: false, overlay: rp_ge[$t.p.id].overlay, modal:rp_ge[$t.p.id].modal});
|
|
if(onAfterShow) {rp_ge[$t.p.id].afterShowForm.call($t,$("#"+dtbl));}
|
|
} else {
|
|
var dh = isNaN(rp_ge[$t.p.id].dataheight) ? rp_ge[$t.p.id].dataheight : rp_ge[$t.p.id].dataheight+"px";
|
|
var tbl = "<div id='"+dtbl_id+"' class='formdata' style='width:100%;overflow:auto;position:relative;height:"+dh+";'>";
|
|
tbl += "<table class='DelTable'><tbody>";
|
|
// error data
|
|
tbl += "<tr id='DelError' style='display:none'><td class='ui-state-error'></td></tr>";
|
|
tbl += "<tr id='DelData' style='display:none'><td >"+rowids+"</td></tr>";
|
|
tbl += "<tr><td class=\"delmsg\" style=\"white-space:pre;\">"+rp_ge[$t.p.id].msg+"</td></tr><tr><td > </td></tr>";
|
|
// buttons at footer
|
|
tbl += "</tbody></table></div>";
|
|
var bS = "<a href='javascript:void(0)' id='dData' class='fm-button ui-state-default ui-corner-all'>"+p.bSubmit+"</a>",
|
|
bC = "<a href='javascript:void(0)' id='eData' class='fm-button ui-state-default ui-corner-all'>"+p.bCancel+"</a>";
|
|
tbl += "<table cellspacing='0' cellpadding='0' border='0' class='EditTable' id='"+dtbl+"_2'><tbody><tr><td><hr class='ui-widget-content' style='margin:1px'/></td></tr><tr><td class='DelButton EditButton'>"+bS+" "+bC+"</td></tr></tbody></table>";
|
|
p.gbox = "#gbox_"+$.jgrid.jqID(gID);
|
|
$.jgrid.createModal(IDs,tbl,p,"#gview_"+$.jgrid.jqID($t.p.id),$("#gview_"+$.jgrid.jqID($t.p.id))[0]);
|
|
|
|
if(onBeforeInit) {
|
|
showFrm = onBeforeInit.call($t,$("#"+dtbl));
|
|
if(showFrm === undefined) {
|
|
showFrm = true;
|
|
}
|
|
}
|
|
if(showFrm === false) {return;}
|
|
|
|
$(".fm-button","#"+dtbl+"_2").hover(
|
|
function(){$(this).addClass('ui-state-hover');},
|
|
function(){$(this).removeClass('ui-state-hover');}
|
|
);
|
|
p.delicon = $.extend([true,"left","ui-icon-scissors"],rp_ge[$t.p.id].delicon);
|
|
p.cancelicon = $.extend([true,"left","ui-icon-cancel"],rp_ge[$t.p.id].cancelicon);
|
|
if(p.delicon[0]===true) {
|
|
$("#dData","#"+dtbl+"_2").addClass(p.delicon[1] == "right" ? 'fm-button-icon-right' : 'fm-button-icon-left')
|
|
.append("<span class='ui-icon "+p.delicon[2]+"'></span>");
|
|
}
|
|
if(p.cancelicon[0]===true) {
|
|
$("#eData","#"+dtbl+"_2").addClass(p.cancelicon[1] == "right" ? 'fm-button-icon-right' : 'fm-button-icon-left')
|
|
.append("<span class='ui-icon "+p.cancelicon[2]+"'></span>");
|
|
}
|
|
$("#dData","#"+dtbl+"_2").click(function(){
|
|
var ret=[true,""], pk,
|
|
postdata = $("#DelData>td","#"+dtbl).text(); //the pair is name=val1,val2,...
|
|
onCS = {};
|
|
if( $.isFunction( rp_ge[$t.p.id].onclickSubmit ) ) {onCS = rp_ge[$t.p.id].onclickSubmit.call($t,rp_ge[$t.p.id], postdata) || {};}
|
|
if( $.isFunction( rp_ge[$t.p.id].beforeSubmit ) ) {ret = rp_ge[$t.p.id].beforeSubmit.call($t,postdata);}
|
|
if(ret[0] && !rp_ge[$t.p.id].processing) {
|
|
rp_ge[$t.p.id].processing = true;
|
|
opers = $t.p.prmNames;
|
|
postd = $.extend({},rp_ge[$t.p.id].delData, onCS);
|
|
oper = opers.oper;
|
|
postd[oper] = opers.deloper;
|
|
idname = opers.id;
|
|
postdata = String(postdata).split(",");
|
|
if(!postdata.length) { return false; }
|
|
for(pk in postdata) {
|
|
if(postdata.hasOwnProperty(pk)) {
|
|
postdata[pk] = $.jgrid.stripPref($t.p.idPrefix, postdata[pk]);
|
|
}
|
|
}
|
|
postd[idname] = postdata.join();
|
|
$(this).addClass('ui-state-active');
|
|
var ajaxOptions = $.extend({
|
|
url: rp_ge[$t.p.id].url || $($t).jqGrid('getGridParam','editurl'),
|
|
type: rp_ge[$t.p.id].mtype,
|
|
data: $.isFunction(rp_ge[$t.p.id].serializeDelData) ? rp_ge[$t.p.id].serializeDelData.call($t,postd) : postd,
|
|
complete:function(data,status){
|
|
var i;
|
|
if(status != "success") {
|
|
ret[0] = false;
|
|
if ($.isFunction(rp_ge[$t.p.id].errorTextFormat)) {
|
|
ret[1] = rp_ge[$t.p.id].errorTextFormat.call($t,data);
|
|
} else {
|
|
ret[1] = status + " Status: '" + data.statusText + "'. Error code: " + data.status;
|
|
}
|
|
} else {
|
|
// data is posted successful
|
|
// execute aftersubmit with the returned data from server
|
|
if( $.isFunction( rp_ge[$t.p.id].afterSubmit ) ) {
|
|
ret = rp_ge[$t.p.id].afterSubmit.call($t,data,postd);
|
|
}
|
|
}
|
|
if(ret[0] === false) {
|
|
$("#DelError>td","#"+dtbl).html(ret[1]);
|
|
$("#DelError","#"+dtbl).show();
|
|
} else {
|
|
if(rp_ge[$t.p.id].reloadAfterSubmit && $t.p.datatype != "local") {
|
|
$($t).trigger("reloadGrid");
|
|
} else {
|
|
if($t.p.treeGrid===true){
|
|
try {$($t).jqGrid("delTreeNode",$t.p.idPrefix+postdata[0]);} catch(e){}
|
|
} else {
|
|
for(i=0;i<postdata.length;i++) {
|
|
$($t).jqGrid("delRowData",$t.p.idPrefix+ postdata[i]);
|
|
}
|
|
}
|
|
$t.p.selrow = null;
|
|
$t.p.selarrrow = [];
|
|
}
|
|
if($.isFunction(rp_ge[$t.p.id].afterComplete)) {
|
|
setTimeout(function(){rp_ge[$t.p.id].afterComplete.call($t,data,postdata);},500);
|
|
}
|
|
}
|
|
rp_ge[$t.p.id].processing=false;
|
|
$("#dData", "#"+dtbl+"_2").removeClass('ui-state-active');
|
|
if(ret[0]) {$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});}
|
|
}
|
|
}, $.jgrid.ajaxOptions, rp_ge[$t.p.id].ajaxDelOptions);
|
|
|
|
|
|
if (!ajaxOptions.url && !rp_ge[$t.p.id].useDataProxy) {
|
|
if ($.isFunction($t.p.dataProxy)) {
|
|
rp_ge[$t.p.id].useDataProxy = true;
|
|
} else {
|
|
ret[0]=false;ret[1] += " "+$.jgrid.errors.nourl;
|
|
}
|
|
}
|
|
if (ret[0]) {
|
|
if (rp_ge[$t.p.id].useDataProxy) {
|
|
var dpret = $t.p.dataProxy.call($t, ajaxOptions, "del_"+$t.p.id);
|
|
if(dpret === undefined) {
|
|
dpret = [true, ""];
|
|
}
|
|
if(dpret[0] === false ) {
|
|
ret[0] = false;
|
|
ret[1] = dpret[1] || "Error deleting the selected row!" ;
|
|
} else {
|
|
$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});
|
|
}
|
|
}
|
|
else {$.ajax(ajaxOptions);}
|
|
}
|
|
}
|
|
|
|
if(ret[0] === false) {
|
|
$("#DelError>td","#"+dtbl).html(ret[1]);
|
|
$("#DelError","#"+dtbl).show();
|
|
}
|
|
return false;
|
|
});
|
|
$("#eData", "#"+dtbl+"_2").click(function(){
|
|
$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:rp_ge[$t.p.id].jqModal, onClose: rp_ge[$t.p.id].onClose});
|
|
return false;
|
|
});
|
|
if(onBeforeShow) {rp_ge[$t.p.id].beforeShowForm.call($t,$("#"+dtbl));}
|
|
$.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{gbox:"#gbox_"+$.jgrid.jqID(gID),jqm:rp_ge[$t.p.id].jqModal, overlay: rp_ge[$t.p.id].overlay, modal:rp_ge[$t.p.id].modal});
|
|
if(onAfterShow) {rp_ge[$t.p.id].afterShowForm.call($t,$("#"+dtbl));}
|
|
}
|
|
if(rp_ge[$t.p.id].closeOnEscape===true) {
|
|
setTimeout(function(){$(".ui-jqdialog-titlebar-close","#"+$.jgrid.jqID(IDs.modalhead)).focus();},0);
|
|
}
|
|
});
|
|
},
|
|
navGrid : function (elem, o, pEdit,pAdd,pDel,pSearch, pView) {
|
|
o = $.extend({
|
|
edit: true,
|
|
editicon: "ui-icon-pencil",
|
|
add: true,
|
|
addicon:"ui-icon-plus",
|
|
del: true,
|
|
delicon:"ui-icon-trash",
|
|
search: true,
|
|
searchicon:"ui-icon-search",
|
|
refresh: true,
|
|
refreshicon:"ui-icon-refresh",
|
|
refreshstate: 'firstpage',
|
|
view: false,
|
|
viewicon : "ui-icon-document",
|
|
position : "left",
|
|
closeOnEscape : true,
|
|
beforeRefresh : null,
|
|
afterRefresh : null,
|
|
cloneToTop : false,
|
|
alertwidth : 200,
|
|
alertheight : 'auto',
|
|
alerttop: null,
|
|
alertleft: null,
|
|
alertzIndex : null
|
|
}, $.jgrid.nav, o ||{});
|
|
return this.each(function() {
|
|
if(this.nav) {return;}
|
|
var alertIDs = {themodal: 'alertmod_' + this.p.id, modalhead: 'alerthd_' + this.p.id,modalcontent: 'alertcnt_' + this.p.id},
|
|
$t = this, twd, tdw;
|
|
if(!$t.grid || typeof elem !== 'string') {return;}
|
|
if ($("#"+alertIDs.themodal)[0] === undefined) {
|
|
if(!o.alerttop && !o.alertleft) {
|
|
if (window.innerWidth !== undefined) {
|
|
o.alertleft = window.innerWidth;
|
|
o.alerttop = window.innerHeight;
|
|
} else if (document.documentElement !== undefined && document.documentElement.clientWidth !== undefined && document.documentElement.clientWidth !== 0) {
|
|
o.alertleft = document.documentElement.clientWidth;
|
|
o.alerttop = document.documentElement.clientHeight;
|
|
} else {
|
|
o.alertleft=1024;
|
|
o.alerttop=768;
|
|
}
|
|
o.alertleft = o.alertleft/2 - parseInt(o.alertwidth,10)/2;
|
|
o.alerttop = o.alerttop/2-25;
|
|
}
|
|
$.jgrid.createModal(alertIDs,
|
|
"<div>"+o.alerttext+"</div><span tabindex='0'><span tabindex='-1' id='jqg_alrt'></span></span>",
|
|
{
|
|
gbox:"#gbox_"+$.jgrid.jqID($t.p.id),
|
|
jqModal:true,
|
|
drag:true,
|
|
resize:true,
|
|
caption:o.alertcap,
|
|
top:o.alerttop,
|
|
left:o.alertleft,
|
|
width:o.alertwidth,
|
|
height: o.alertheight,
|
|
closeOnEscape:o.closeOnEscape,
|
|
zIndex: o.alertzIndex
|
|
},
|
|
"#gview_"+$.jgrid.jqID($t.p.id),
|
|
$("#gbox_"+$.jgrid.jqID($t.p.id))[0],
|
|
true
|
|
);
|
|
}
|
|
var clone = 1, i,
|
|
onHoverIn = function () {
|
|
if (!$(this).hasClass('ui-state-disabled')) {
|
|
$(this).addClass("ui-state-hover");
|
|
}
|
|
},
|
|
onHoverOut = function () {
|
|
$(this).removeClass("ui-state-hover");
|
|
};
|
|
if(o.cloneToTop && $t.p.toppager) {clone = 2;}
|
|
for(i = 0; i<clone; i++) {
|
|
var tbd,
|
|
navtbl = $("<table cellspacing='0' cellpadding='0' border='0' class='ui-pg-table navtable' style='float:left;table-layout:auto;'><tbody><tr></tr></tbody></table>"),
|
|
sep = "<td class='ui-pg-button ui-state-disabled' style='width:4px;'><span class='ui-separator'></span></td>",
|
|
pgid, elemids;
|
|
if(i===0) {
|
|
pgid = elem;
|
|
elemids = $t.p.id;
|
|
if(pgid == $t.p.toppager) {
|
|
elemids += "_top";
|
|
clone = 1;
|
|
}
|
|
} else {
|
|
pgid = $t.p.toppager;
|
|
elemids = $t.p.id+"_top";
|
|
}
|
|
if($t.p.direction == "rtl") {$(navtbl).attr("dir","rtl").css("float","right");}
|
|
if (o.add) {
|
|
pAdd = pAdd || {};
|
|
tbd = $("<td class='ui-pg-button ui-corner-all'></td>");
|
|
$(tbd).append("<div class='ui-pg-div'><span class='ui-icon "+o.addicon+"'></span>"+o.addtext+"</div>");
|
|
$("tr",navtbl).append(tbd);
|
|
$(tbd,navtbl)
|
|
.attr({"title":o.addtitle || "",id : pAdd.id || "add_"+elemids})
|
|
.click(function(){
|
|
if (!$(this).hasClass('ui-state-disabled')) {
|
|
if ($.isFunction( o.addfunc )) {
|
|
o.addfunc.call($t);
|
|
} else {
|
|
$($t).jqGrid("editGridRow","new",pAdd);
|
|
}
|
|
}
|
|
return false;
|
|
}).hover(onHoverIn, onHoverOut);
|
|
tbd = null;
|
|
}
|
|
if (o.edit) {
|
|
tbd = $("<td class='ui-pg-button ui-corner-all'></td>");
|
|
pEdit = pEdit || {};
|
|
$(tbd).append("<div class='ui-pg-div'><span class='ui-icon "+o.editicon+"'></span>"+o.edittext+"</div>");
|
|
$("tr",navtbl).append(tbd);
|
|
$(tbd,navtbl)
|
|
.attr({"title":o.edittitle || "",id: pEdit.id || "edit_"+elemids})
|
|
.click(function(){
|
|
if (!$(this).hasClass('ui-state-disabled')) {
|
|
var sr = $t.p.selrow;
|
|
if (sr) {
|
|
if($.isFunction( o.editfunc ) ) {
|
|
o.editfunc.call($t, sr);
|
|
} else {
|
|
$($t).jqGrid("editGridRow",sr,pEdit);
|
|
}
|
|
} else {
|
|
$.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:true});
|
|
$("#jqg_alrt").focus();
|
|
}
|
|
}
|
|
return false;
|
|
}).hover(onHoverIn, onHoverOut);
|
|
tbd = null;
|
|
}
|
|
if (o.view) {
|
|
tbd = $("<td class='ui-pg-button ui-corner-all'></td>");
|
|
pView = pView || {};
|
|
$(tbd).append("<div class='ui-pg-div'><span class='ui-icon "+o.viewicon+"'></span>"+o.viewtext+"</div>");
|
|
$("tr",navtbl).append(tbd);
|
|
$(tbd,navtbl)
|
|
.attr({"title":o.viewtitle || "",id: pView.id || "view_"+elemids})
|
|
.click(function(){
|
|
if (!$(this).hasClass('ui-state-disabled')) {
|
|
var sr = $t.p.selrow;
|
|
if (sr) {
|
|
if($.isFunction( o.viewfunc ) ) {
|
|
o.viewfunc.call($t, sr);
|
|
} else {
|
|
$($t).jqGrid("viewGridRow",sr,pView);
|
|
}
|
|
} else {
|
|
$.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:true});
|
|
$("#jqg_alrt").focus();
|
|
}
|
|
}
|
|
return false;
|
|
}).hover(onHoverIn, onHoverOut);
|
|
tbd = null;
|
|
}
|
|
if (o.del) {
|
|
tbd = $("<td class='ui-pg-button ui-corner-all'></td>");
|
|
pDel = pDel || {};
|
|
$(tbd).append("<div class='ui-pg-div'><span class='ui-icon "+o.delicon+"'></span>"+o.deltext+"</div>");
|
|
$("tr",navtbl).append(tbd);
|
|
$(tbd,navtbl)
|
|
.attr({"title":o.deltitle || "",id: pDel.id || "del_"+elemids})
|
|
.click(function(){
|
|
if (!$(this).hasClass('ui-state-disabled')) {
|
|
var dr;
|
|
if($t.p.multiselect) {
|
|
dr = $t.p.selarrrow;
|
|
if(dr.length===0) {dr = null;}
|
|
} else {
|
|
dr = $t.p.selrow;
|
|
}
|
|
if(dr){
|
|
if($.isFunction( o.delfunc )){
|
|
o.delfunc.call($t, dr);
|
|
}else{
|
|
$($t).jqGrid("delGridRow",dr,pDel);
|
|
}
|
|
} else {
|
|
$.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:true});$("#jqg_alrt").focus();
|
|
}
|
|
}
|
|
return false;
|
|
}).hover(onHoverIn, onHoverOut);
|
|
tbd = null;
|
|
}
|
|
if(o.add || o.edit || o.del || o.view) {$("tr",navtbl).append(sep);}
|
|
if (o.search) {
|
|
tbd = $("<td class='ui-pg-button ui-corner-all'></td>");
|
|
pSearch = pSearch || {};
|
|
$(tbd).append("<div class='ui-pg-div'><span class='ui-icon "+o.searchicon+"'></span>"+o.searchtext+"</div>");
|
|
$("tr",navtbl).append(tbd);
|
|
$(tbd,navtbl)
|
|
.attr({"title":o.searchtitle || "",id:pSearch.id || "search_"+elemids})
|
|
.click(function(){
|
|
if (!$(this).hasClass('ui-state-disabled')) {
|
|
if($.isFunction( o.searchfunc )) {
|
|
o.searchfunc.call($t, pSearch);
|
|
} else {
|
|
$($t).jqGrid("searchGrid",pSearch);
|
|
}
|
|
}
|
|
return false;
|
|
}).hover(onHoverIn, onHoverOut);
|
|
if (pSearch.showOnLoad && pSearch.showOnLoad === true) {
|
|
$(tbd,navtbl).click();
|
|
}
|
|
tbd = null;
|
|
}
|
|
if (o.refresh) {
|
|
tbd = $("<td class='ui-pg-button ui-corner-all'></td>");
|
|
$(tbd).append("<div class='ui-pg-div'><span class='ui-icon "+o.refreshicon+"'></span>"+o.refreshtext+"</div>");
|
|
$("tr",navtbl).append(tbd);
|
|
$(tbd,navtbl)
|
|
.attr({"title":o.refreshtitle || "",id: "refresh_"+elemids})
|
|
.click(function(){
|
|
if (!$(this).hasClass('ui-state-disabled')) {
|
|
if($.isFunction(o.beforeRefresh)) {o.beforeRefresh.call($t);}
|
|
$t.p.search = false;
|
|
try {
|
|
var gID = $t.p.id;
|
|
$t.p.postData.filters ="";
|
|
$("#fbox_"+$.jgrid.jqID(gID)).jqFilter('resetFilter');
|
|
if($.isFunction($t.clearToolbar)) {$t.clearToolbar.call($t,false);}
|
|
} catch (e) {}
|
|
switch (o.refreshstate) {
|
|
case 'firstpage':
|
|
$($t).trigger("reloadGrid", [{page:1}]);
|
|
break;
|
|
case 'current':
|
|
$($t).trigger("reloadGrid", [{current:true}]);
|
|
break;
|
|
}
|
|
if($.isFunction(o.afterRefresh)) {o.afterRefresh.call($t);}
|
|
}
|
|
return false;
|
|
}).hover(onHoverIn, onHoverOut);
|
|
tbd = null;
|
|
}
|
|
tdw = $(".ui-jqgrid").css("font-size") || "11px";
|
|
$('body').append("<div id='testpg2' class='ui-jqgrid ui-widget ui-widget-content' style='font-size:"+tdw+";visibility:hidden;' ></div>");
|
|
twd = $(navtbl).clone().appendTo("#testpg2").width();
|
|
$("#testpg2").remove();
|
|
$(pgid+"_"+o.position,pgid).append(navtbl);
|
|
if($t.p._nvtd) {
|
|
if(twd > $t.p._nvtd[0] ) {
|
|
$(pgid+"_"+o.position,pgid).width(twd);
|
|
$t.p._nvtd[0] = twd;
|
|
}
|
|
$t.p._nvtd[1] = twd;
|
|
}
|
|
tdw =null;twd=null;navtbl =null;
|
|
this.nav = true;
|
|
}
|
|
});
|
|
},
|
|
navButtonAdd : function (elem, p) {
|
|
p = $.extend({
|
|
caption : "newButton",
|
|
title: '',
|
|
buttonicon : 'ui-icon-newwin',
|
|
onClickButton: null,
|
|
position : "last",
|
|
cursor : 'pointer'
|
|
}, p ||{});
|
|
return this.each(function() {
|
|
if( !this.grid) {return;}
|
|
if( typeof elem === "string" && elem.indexOf("#") !== 0) {elem = "#"+$.jgrid.jqID(elem);}
|
|
var findnav = $(".navtable",elem)[0], $t = this;
|
|
if (findnav) {
|
|
if( p.id && $("#"+$.jgrid.jqID(p.id), findnav)[0] !== undefined ) {return;}
|
|
var tbd = $("<td></td>");
|
|
if(p.buttonicon.toString().toUpperCase() == "NONE") {
|
|
$(tbd).addClass('ui-pg-button ui-corner-all').append("<div class='ui-pg-div'>"+p.caption+"</div>");
|
|
} else {
|
|
$(tbd).addClass('ui-pg-button ui-corner-all').append("<div class='ui-pg-div'><span class='ui-icon "+p.buttonicon+"'></span>"+p.caption+"</div>");
|
|
}
|
|
if(p.id) {$(tbd).attr("id",p.id);}
|
|
if(p.position=='first'){
|
|
if(findnav.rows[0].cells.length ===0 ) {
|
|
$("tr",findnav).append(tbd);
|
|
} else {
|
|
$("tr td:eq(0)",findnav).before(tbd);
|
|
}
|
|
} else {
|
|
$("tr",findnav).append(tbd);
|
|
}
|
|
$(tbd,findnav)
|
|
.attr("title",p.title || "")
|
|
.click(function(e){
|
|
if (!$(this).hasClass('ui-state-disabled')) {
|
|
if ($.isFunction(p.onClickButton) ) {p.onClickButton.call($t,e);}
|
|
}
|
|
return false;
|
|
})
|
|
.hover(
|
|
function () {
|
|
if (!$(this).hasClass('ui-state-disabled')) {
|
|
$(this).addClass('ui-state-hover');
|
|
}
|
|
},
|
|
function () {$(this).removeClass("ui-state-hover");}
|
|
);
|
|
}
|
|
});
|
|
},
|
|
navSeparatorAdd:function (elem,p) {
|
|
p = $.extend({
|
|
sepclass : "ui-separator",
|
|
sepcontent: '',
|
|
position : "last"
|
|
}, p ||{});
|
|
return this.each(function() {
|
|
if( !this.grid) {return;}
|
|
if( typeof elem === "string" && elem.indexOf("#") !== 0) {elem = "#"+$.jgrid.jqID(elem);}
|
|
var findnav = $(".navtable",elem)[0];
|
|
if(findnav) {
|
|
var sep = "<td class='ui-pg-button ui-state-disabled' style='width:4px;'><span class='"+p.sepclass+"'></span>"+p.sepcontent+"</td>";
|
|
if (p.position === 'first') {
|
|
if (findnav.rows[0].cells.length === 0) {
|
|
$("tr", findnav).append(sep);
|
|
} else {
|
|
$("tr td:eq(0)", findnav).before(sep);
|
|
}
|
|
} else {
|
|
$("tr", findnav).append(sep);
|
|
}
|
|
}
|
|
});
|
|
},
|
|
GridToForm : function( rowid, formid ) {
|
|
return this.each(function(){
|
|
var $t = this, i;
|
|
if (!$t.grid) {return;}
|
|
var rowdata = $($t).jqGrid("getRowData",rowid);
|
|
if (rowdata) {
|
|
for(i in rowdata) {
|
|
if(rowdata.hasOwnProperty(i)) {
|
|
if ( $("[name="+$.jgrid.jqID(i)+"]",formid).is("input:radio") || $("[name="+$.jgrid.jqID(i)+"]",formid).is("input:checkbox")) {
|
|
$("[name="+$.jgrid.jqID(i)+"]",formid).each( function() {
|
|
if( $(this).val() == rowdata[i] ) {
|
|
$(this)[$t.p.useProp ? 'prop': 'attr']("checked",true);
|
|
} else {
|
|
$(this)[$t.p.useProp ? 'prop': 'attr']("checked", false);
|
|
}
|
|
});
|
|
} else {
|
|
// this is very slow on big table and form.
|
|
$("[name="+$.jgrid.jqID(i)+"]",formid).val(rowdata[i]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
},
|
|
FormToGrid : function(rowid, formid, mode, position){
|
|
return this.each(function() {
|
|
var $t = this;
|
|
if(!$t.grid) {return;}
|
|
if(!mode) {mode = 'set';}
|
|
if(!position) {position = 'first';}
|
|
var fields = $(formid).serializeArray();
|
|
var griddata = {};
|
|
$.each(fields, function(i, field){
|
|
griddata[field.name] = field.value;
|
|
});
|
|
if(mode=='add') {$($t).jqGrid("addRowData",rowid,griddata, position);}
|
|
else if(mode=='set') {$($t).jqGrid("setRowData",rowid,griddata);}
|
|
});
|
|
}
|
|
});
|
|
})(jQuery);
|