grid.formedit.js 89 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387
  1. /*jshint eqeqeq:false, eqnull:true, devel:true */
  2. /*global jQuery, define */
  3. (function( factory ) {
  4. "use strict";
  5. if ( typeof define === "function" && define.amd ) {
  6. // AMD. Register as an anonymous module.
  7. define([
  8. "jquery",
  9. "js/grid.base",
  10. "js/grid.common"
  11. ], factory );
  12. } else {
  13. // Browser globals
  14. factory( jQuery );
  15. }
  16. }(function( $ ) {
  17. "use strict";
  18. //module begin
  19. var rp_ge = {};
  20. $.jgrid.extend({
  21. editGridRow : function(rowid, p){
  22. var regional = $.jgrid.getRegional(this[0], 'edit'),
  23. currstyle = this[0].p.styleUI,
  24. styles = $.jgrid.styleUI[currstyle].formedit,
  25. commonstyle = $.jgrid.styleUI[currstyle].common;
  26. p = $.extend(true, {
  27. top : 0,
  28. left: 0,
  29. width: '500',
  30. datawidth: 'auto',
  31. height: 'auto',
  32. dataheight: 'auto',
  33. modal: false,
  34. overlay : 30,
  35. drag: true,
  36. resize: true,
  37. url: null,
  38. mtype : "POST",
  39. clearAfterAdd :true,
  40. closeAfterEdit : false,
  41. reloadAfterSubmit : true,
  42. onInitializeForm: null,
  43. beforeInitData: null,
  44. beforeShowForm: null,
  45. afterShowForm: null,
  46. beforeSubmit: null,
  47. afterSubmit: null,
  48. onclickSubmit: null,
  49. afterComplete: null,
  50. onclickPgButtons : null,
  51. afterclickPgButtons: null,
  52. editData : {},
  53. recreateForm : false,
  54. jqModal : true,
  55. closeOnEscape : false,
  56. addedrow : "first",
  57. topinfo : '',
  58. bottominfo: '',
  59. saveicon : [],
  60. closeicon : [],
  61. savekey: [false,13],
  62. navkeys: [false,38,40],
  63. checkOnSubmit : false,
  64. checkOnUpdate : false,
  65. processing : false,
  66. onClose : null,
  67. ajaxEditOptions : {},
  68. serializeEditData : null,
  69. viewPagerButtons : true,
  70. overlayClass : commonstyle.overlay,
  71. removemodal : true,
  72. form: 'edit',
  73. template : null,
  74. focusField : true,
  75. editselected : false,
  76. html5Check : false,
  77. buttons : []
  78. }, regional, p || {});
  79. rp_ge[$(this)[0].p.id] = p;
  80. return this.each(function(){
  81. var $t = this;
  82. if (!$t.grid || !rowid) {return;}
  83. $t.p.savedData = {};
  84. var gID = $t.p.id,
  85. frmgr = "FrmGrid_"+gID, frmtborg = "TblGrid_"+gID, frmtb = "#"+$.jgrid.jqID(frmtborg), frmtb2,
  86. IDs = {themodal:'editmod'+gID,modalhead:'edithd'+gID,modalcontent:'editcnt'+gID, scrollelm : frmgr},
  87. showFrm = true, maxCols = 1, maxRows=0, postdata, diff, frmoper,
  88. templ = typeof rp_ge[$t.p.id].template === "string" && rp_ge[$t.p.id].template.length > 0,
  89. errors =$.jgrid.getRegional(this, 'errors');
  90. rp_ge[$t.p.id].styleUI = $t.p.styleUI || 'jQueryUI';
  91. if($.jgrid.isMobile()) {
  92. rp_ge[$t.p.id].resize = false;
  93. }
  94. if (rowid === "new") {
  95. rowid = "_empty";
  96. frmoper = "add";
  97. p.caption=rp_ge[$t.p.id].addCaption;
  98. } else {
  99. p.caption=rp_ge[$t.p.id].editCaption;
  100. frmoper = "edit";
  101. }
  102. if(!p.recreateForm) {
  103. if( $($t).data("formProp") ) {
  104. $.extend(rp_ge[$(this)[0].p.id], $($t).data("formProp"));
  105. }
  106. }
  107. var closeovrl = true;
  108. if(p.checkOnUpdate && p.jqModal && !p.modal) {
  109. closeovrl = false;
  110. }
  111. function getFormData(){
  112. var a2 ={}, i;
  113. $(frmtb).find(".FormElement").each(function() {
  114. var celm = $(".customelement", this);
  115. if (celm.length) {
  116. var elem = celm[0], nm = $(elem).attr('name');
  117. $.each($t.p.colModel, function(){
  118. if(this.name === nm && this.editoptions && $.isFunction(this.editoptions.custom_value)) {
  119. try {
  120. postdata[nm] = this.editoptions.custom_value.call($t, $("#"+$.jgrid.jqID(nm),frmtb),'get');
  121. if (postdata[nm] === undefined) {throw "e1";}
  122. } catch (e) {
  123. if (e==="e1") {$.jgrid.info_dialog(errors.errcap,"function 'custom_value' "+rp_ge[$(this)[0]].p.msg.novalue,rp_ge[$(this)[0]].p.bClose, {styleUI : rp_ge[$(this)[0]].p.styleUI });}
  124. else {$.jgrid.info_dialog(errors.errcap,e.message,rp_ge[$(this)[0]].p.bClose, {styleUI : rp_ge[$(this)[0]].p.styleUI });}
  125. }
  126. return true;
  127. }
  128. });
  129. } else {
  130. switch ($(this).get(0).type) {
  131. case "checkbox":
  132. if($(this).is(":checked")) {
  133. postdata[this.name]= $(this).val();
  134. } else {
  135. var ofv = $(this).attr("offval");
  136. postdata[this.name]= ofv;
  137. }
  138. break;
  139. case "select-one":
  140. postdata[this.name]= $(this).val();
  141. break;
  142. case "select-multiple":
  143. postdata[this.name]= $(this).val();
  144. postdata[this.name] = postdata[this.name] ? postdata[this.name].join(",") : "";
  145. break;
  146. case "radio" :
  147. if(a2.hasOwnProperty(this.name)) {
  148. return true;
  149. } else {
  150. a2[this.name] = ($(this).attr("offval") === undefined) ? "off" : $(this).attr("offval");
  151. }
  152. break;
  153. default:
  154. postdata[this.name] = $(this).val();
  155. }
  156. if($t.p.autoencode) {
  157. postdata[this.name] = $.jgrid.htmlEncode(postdata[this.name]);
  158. }
  159. }
  160. });
  161. for(i in a2 ) {
  162. if( a2.hasOwnProperty(i)) {
  163. var val = $('input[name="'+i+'"]:checked',frmtb).val();
  164. postdata[i] = (val !== undefined) ? val : a2[i];
  165. if($t.p.autoencode) {
  166. postdata[i] = $.jgrid.htmlEncode(postdata[i]);
  167. }
  168. }
  169. }
  170. return true;
  171. }
  172. function createData(rowid,obj,tb,maxcols){
  173. var nm, hc,trdata, cnt=0,tmp, dc,elc, retpos=[], ind=false,
  174. tdtmpl = "<td class='CaptionTD'></td><td class='DataTD'></td>", tmpl="", i, ffld; //*2
  175. for (i =1; i<=maxcols;i++) {
  176. tmpl += tdtmpl;
  177. }
  178. if(rowid !== '_empty') {
  179. ind = $(obj).jqGrid("getInd",rowid);
  180. }
  181. $(obj.p.colModel).each( function(i) {
  182. nm = this.name;
  183. // hidden fields are included in the form
  184. if(this.editrules && this.editrules.edithidden === true) {
  185. hc = false;
  186. } else {
  187. hc = this.hidden === true ? true : false;
  188. }
  189. dc = hc ? "style='display:none'" : "";
  190. if ( nm !== 'cb' && nm !== 'subgrid' && this.editable===true && nm !== 'rn') {
  191. if(ind === false) {
  192. tmp = "";
  193. } else {
  194. if(nm === obj.p.ExpandColumn && obj.p.treeGrid === true) {
  195. tmp = $("td[role='gridcell']:eq("+i+")",obj.rows[ind]).text();
  196. } else {
  197. try {
  198. tmp = $.unformat.call(obj, $("td[role='gridcell']:eq("+i+")",obj.rows[ind]),{rowId:rowid, colModel:this},i);
  199. } catch (_) {
  200. tmp = (this.edittype && this.edittype === "textarea") ? $("td[role='gridcell']:eq("+i+")",obj.rows[ind]).text() : $("td[role='gridcell']:eq("+i+")",obj.rows[ind]).html();
  201. }
  202. if(!tmp || tmp === "&nbsp;" || tmp === "&#160;" || (tmp.length===1 && tmp.charCodeAt(0)===160) ) {tmp='';}
  203. }
  204. }
  205. var opt = $.extend({}, this.editoptions || {} ,{id:nm,name:nm, rowId: rowid, oper:'edit'}),
  206. frmopt = $.extend({}, {elmprefix:'',elmsuffix:'',rowabove:false,rowcontent:''}, this.formoptions || {}),
  207. rp = parseInt(frmopt.rowpos,10) || cnt+1,
  208. cp = parseInt((parseInt(frmopt.colpos,10) || 1)*2,10);
  209. if(rowid === "_empty" && opt.defaultValue ) {
  210. tmp = $.isFunction(opt.defaultValue) ? opt.defaultValue.call($t) : opt.defaultValue;
  211. }
  212. if(!this.edittype) {
  213. this.edittype = "text";
  214. }
  215. if($t.p.autoencode) {
  216. tmp = $.jgrid.htmlDecode(tmp);
  217. }
  218. elc = $.jgrid.createEl.call($t,this.edittype,opt,tmp,false,$.extend({},$.jgrid.ajaxOptions,obj.p.ajaxSelectOptions || {}));
  219. //if(tmp === "" && this.edittype == "checkbox") {tmp = $(elc).attr("offval");}
  220. //if(tmp === "" && this.edittype == "select") {tmp = $("option:eq(0)",elc).text();}
  221. if(this.edittype === "select") {
  222. tmp = $(elc).val();
  223. if($(elc).get(0).type === 'select-multiple' && tmp) {
  224. tmp = tmp.join(",");
  225. }
  226. }
  227. if(this.edittype === 'checkbox') {
  228. if($(elc).is(":checked")) {
  229. tmp= $(elc).val();
  230. } else {
  231. tmp = $(elc).attr("offval");
  232. }
  233. }
  234. $(elc).addClass("FormElement");
  235. if( $.inArray(this.edittype,
  236. ['text','textarea','password','select',
  237. 'color', 'date', 'datetime', 'datetime-local','email','month',
  238. 'number','range', 'search', 'tel', 'time', 'url','week'] ) > -1) {
  239. $(elc).addClass( styles.inputClass );
  240. }
  241. ffld = true;
  242. if(templ) {
  243. var ftmplfld = $(frm).find("#"+nm);
  244. if(ftmplfld.length){
  245. ftmplfld.replaceWith( elc );
  246. } else {
  247. ffld = false;
  248. }
  249. } else {
  250. //--------------------
  251. trdata = $(tb).find("tr[rowpos="+rp+"]");
  252. if(frmopt.rowabove) {
  253. var newdata = $("<tr><td class='contentinfo' colspan='"+(maxcols*2)+"'>"+frmopt.rowcontent+"</td></tr>");
  254. $(tb).append(newdata);
  255. newdata[0].rp = rp;
  256. }
  257. if ( trdata.length===0 ) {
  258. trdata = $("<tr "+dc+" rowpos='"+rp+"'></tr>").addClass("FormData").attr("id","tr_"+nm);
  259. $(trdata).append(tmpl);
  260. $(tb).append(trdata);
  261. trdata[0].rp = rp;
  262. }
  263. $("td:eq("+(cp-2)+")",trdata[0]).html("<label for='"+nm+"'>"+ (frmopt.label === undefined ? obj.p.colNames[i]: frmopt.label) + "</label>");
  264. $("td:eq("+(cp-1)+")",trdata[0]).append(frmopt.elmprefix).append(elc).append(frmopt.elmsuffix);
  265. //-------------------------
  266. }
  267. if( (rp_ge[$t.p.id].checkOnSubmit || rp_ge[$t.p.id].checkOnUpdate) && ffld) {
  268. $t.p.savedData[nm] = tmp;
  269. }
  270. if(this.edittype==='custom' && $.isFunction(opt.custom_value) ) {
  271. opt.custom_value.call($t, $("#"+nm, frmgr),'set',tmp);
  272. }
  273. $.jgrid.bindEv.call($t, elc, opt);
  274. retpos[cnt] = i;
  275. cnt++;
  276. }
  277. });
  278. if( cnt > 0) {
  279. var idrow;
  280. if(templ) {
  281. idrow = "<div class='FormData' style='display:none'><input class='FormElement' id='id_g' type='text' name='"+obj.p.id+"_id' value='"+rowid+"'/>";
  282. $(frm).append(idrow);
  283. } else {
  284. 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>");
  285. idrow[0].rp = cnt+999;
  286. $(tb).append(idrow);
  287. }
  288. //$(tb).append(idrow);
  289. if(rp_ge[$t.p.id].checkOnSubmit || rp_ge[$t.p.id].checkOnUpdate) {
  290. $t.p.savedData[obj.p.id+"_id"] = rowid;
  291. }
  292. }
  293. return retpos;
  294. }
  295. function fillData(rowid,obj,fmid){
  296. var nm,cnt=0,tmp, fld,opt,vl,vlc;
  297. if(rp_ge[$t.p.id].checkOnSubmit || rp_ge[$t.p.id].checkOnUpdate) {
  298. $t.p.savedData = {};
  299. $t.p.savedData[obj.p.id+"_id"]=rowid;
  300. }
  301. var cm = obj.p.colModel;
  302. if(rowid === '_empty') {
  303. $(cm).each(function(){
  304. nm = this.name;
  305. opt = $.extend({}, this.editoptions || {} );
  306. fld = $("#"+$.jgrid.jqID(nm),fmid);
  307. if(fld && fld.length && fld[0] !== null) {
  308. vl = "";
  309. if(this.edittype === 'custom' && $.isFunction(opt.custom_value)) {
  310. opt.custom_value.call($t, $("#"+nm,fmid),'set',vl);
  311. } else if(opt.defaultValue ) {
  312. vl = $.isFunction(opt.defaultValue) ? opt.defaultValue.call($t) : opt.defaultValue;
  313. if(fld[0].type==='checkbox') {
  314. vlc = vl.toLowerCase();
  315. if(vlc.search(/(false|f|0|no|n|off|undefined)/i)<0 && vlc!=="") {
  316. fld[0].checked = true;
  317. fld[0].defaultChecked = true;
  318. fld[0].value = vl;
  319. } else {
  320. fld[0].checked = false;
  321. fld[0].defaultChecked = false;
  322. }
  323. } else {fld.val(vl);}
  324. } else {
  325. if( fld[0].type==='checkbox' ) {
  326. fld[0].checked = false;
  327. fld[0].defaultChecked = false;
  328. vl = $(fld).attr("offval");
  329. } else if (fld[0].type && fld[0].type.substr(0,6)==='select') {
  330. fld[0].selectedIndex = 0;
  331. } else {
  332. fld.val(vl);
  333. }
  334. }
  335. if(rp_ge[$t.p.id].checkOnSubmit===true || rp_ge[$t.p.id].checkOnUpdate) {
  336. $t.p.savedData[nm] = vl;
  337. }
  338. }
  339. });
  340. $("#id_g",fmid).val(rowid);
  341. return;
  342. }
  343. var tre = $(obj).jqGrid("getInd",rowid,true);
  344. if(!tre) {return;}
  345. $('td[role="gridcell"]',tre).each( function(i) {
  346. nm = cm[i].name;
  347. // hidden fields are included in the form
  348. if ( nm !== 'cb' && nm !== 'subgrid' && nm !== 'rn' && cm[i].editable===true) {
  349. if(nm === obj.p.ExpandColumn && obj.p.treeGrid === true) {
  350. tmp = $(this).text();
  351. } else {
  352. try {
  353. tmp = $.unformat.call(obj, $(this),{rowId:rowid, colModel:cm[i]},i);
  354. } catch (_) {
  355. tmp = cm[i].edittype==="textarea" ? $(this).text() : $(this).html();
  356. }
  357. }
  358. if($t.p.autoencode) {tmp = $.jgrid.htmlDecode(tmp);}
  359. if(rp_ge[$t.p.id].checkOnSubmit===true || rp_ge[$t.p.id].checkOnUpdate) {
  360. $t.p.savedData[nm] = tmp;
  361. }
  362. nm = $.jgrid.jqID(nm);
  363. switch (cm[i].edittype) {
  364. case "select":
  365. var opv = tmp.split(",");
  366. opv = $.map(opv,function(n){return $.trim(n);});
  367. $("#"+nm+" option",fmid).each(function(){
  368. if (!cm[i].editoptions.multiple && ($.trim(tmp) === $.trim($(this).text()) || opv[0] === $.trim($(this).text()) || opv[0] === $.trim($(this).val())) ){
  369. this.selected= true;
  370. } else if (cm[i].editoptions.multiple){
  371. if( $.inArray($.trim($(this).text()), opv ) > -1 || $.inArray($.trim($(this).val()), opv ) > -1 ){
  372. this.selected = true;
  373. }else{
  374. this.selected = false;
  375. }
  376. } else {
  377. this.selected = false;
  378. }
  379. });
  380. if(rp_ge[$t.p.id].checkOnSubmit===true || rp_ge[$t.p.id].checkOnUpdate) {
  381. tmp = $("#"+nm,fmid).val();
  382. if(cm[i].editoptions.multiple) {
  383. tmp = tmp.join(",");
  384. }
  385. $t.p.savedData[nm] = tmp;
  386. }
  387. break;
  388. case "checkbox":
  389. tmp = String(tmp);
  390. if(cm[i].editoptions && cm[i].editoptions.value) {
  391. var cb = cm[i].editoptions.value.split(":");
  392. if(cb[0] === tmp) {
  393. $("#"+nm, fmid)[$t.p.useProp ? 'prop': 'attr']({"checked":true, "defaultChecked" : true});
  394. } else {
  395. $("#"+nm, fmid)[$t.p.useProp ? 'prop': 'attr']({"checked":false, "defaultChecked" : false});
  396. }
  397. } else {
  398. tmp = tmp.toLowerCase();
  399. if(tmp.search(/(false|f|0|no|n|off|undefined)/i)<0 && tmp!=="") {
  400. $("#"+nm, fmid)[$t.p.useProp ? 'prop': 'attr']("checked",true);
  401. $("#"+nm, fmid)[$t.p.useProp ? 'prop': 'attr']("defaultChecked",true); //ie
  402. } else {
  403. $("#"+nm, fmid)[$t.p.useProp ? 'prop': 'attr']("checked", false);
  404. $("#"+nm, fmid)[$t.p.useProp ? 'prop': 'attr']("defaultChecked", false); //ie
  405. }
  406. }
  407. if(rp_ge[$t.p.id].checkOnSubmit===true || rp_ge[$t.p.id].checkOnUpdate) {
  408. if($("#"+nm, fmid).is(":checked")) {
  409. tmp = $("#"+nm, fmid).val();
  410. } else {
  411. tmp = $("#"+nm, fmid).attr("offval");
  412. }
  413. $t.p.savedData[nm] = tmp;
  414. }
  415. break;
  416. case 'custom' :
  417. try {
  418. if(cm[i].editoptions && $.isFunction(cm[i].editoptions.custom_value)) {
  419. cm[i].editoptions.custom_value.call($t, $("#"+nm, fmid),'set',tmp);
  420. } else {throw "e1";}
  421. } catch (e) {
  422. if (e==="e1") {$.jgrid.info_dialog(errors.errcap,"function 'custom_value' "+rp_ge[$(this)[0]].p.msg.nodefined,$.rp_ge[$(this)[0]].p.bClose, {styleUI : rp_ge[$(this)[0]].p.styleUI });}
  423. else {$.jgrid.info_dialog(errors.errcap,e.message,$.rp_ge[$(this)[0]].p.bClose, {styleUI : rp_ge[$(this)[0]].p.styleUI });}
  424. }
  425. break;
  426. default :
  427. if(tmp === "&nbsp;" || tmp === "&#160;" || (tmp.length===1 && tmp.charCodeAt(0)===160) ) {tmp='';}
  428. $("#"+nm,fmid).val(tmp);
  429. }
  430. cnt++;
  431. }
  432. });
  433. if(cnt>0) {
  434. $("#id_g",frmtb).val(rowid);
  435. if( rp_ge[$t.p.id].checkOnSubmit===true || rp_ge[$t.p.id].checkOnUpdate ) {
  436. $t.p.savedData[obj.p.id+"_id"] = rowid;
  437. }
  438. }
  439. }
  440. function setNulls() {
  441. $.each($t.p.colModel, function(i,n){
  442. if(n.editoptions && n.editoptions.NullIfEmpty === true) {
  443. if(postdata.hasOwnProperty(n.name) && postdata[n.name] === "") {
  444. postdata[n.name] = 'null';
  445. }
  446. }
  447. });
  448. }
  449. function postIt() {
  450. var copydata, ret=[true,"",""], onCS = {}, opers = $t.p.prmNames, idname, oper, key, selr, i, url;
  451. var retvals = $($t).triggerHandler("jqGridAddEditBeforeCheckValues", [postdata, $(frmgr), frmoper]);
  452. if(retvals && typeof retvals === 'object') {postdata = retvals;}
  453. if($.isFunction(rp_ge[$t.p.id].beforeCheckValues)) {
  454. retvals = rp_ge[$t.p.id].beforeCheckValues.call($t, postdata, $(frmgr),frmoper);
  455. if(retvals && typeof retvals === 'object') {postdata = retvals;}
  456. }
  457. if(rp_ge[$t.p.id].html5Check) {
  458. if( !$.jgrid.validateForm(frm[0]) ) {
  459. return false;
  460. }
  461. }
  462. for( key in postdata ){
  463. if(postdata.hasOwnProperty(key)) {
  464. ret = $.jgrid.checkValues.call($t,postdata[key],key);
  465. if(ret[0] === false) {break;}
  466. }
  467. }
  468. setNulls();
  469. if(ret[0]) {
  470. onCS = $($t).triggerHandler("jqGridAddEditClickSubmit", [rp_ge[$t.p.id], postdata, frmoper]);
  471. if( onCS === undefined && $.isFunction( rp_ge[$t.p.id].onclickSubmit)) {
  472. onCS = rp_ge[$t.p.id].onclickSubmit.call($t, rp_ge[$t.p.id], postdata, frmoper) || {};
  473. }
  474. ret = $($t).triggerHandler("jqGridAddEditBeforeSubmit", [postdata, $(frmgr), frmoper]);
  475. if(ret === undefined) {
  476. ret = [true,"",""];
  477. }
  478. if( ret[0] && $.isFunction(rp_ge[$t.p.id].beforeSubmit)) {
  479. ret = rp_ge[$t.p.id].beforeSubmit.call($t,postdata,$(frmgr), frmoper);
  480. }
  481. }
  482. if(ret[0] && !rp_ge[$t.p.id].processing) {
  483. rp_ge[$t.p.id].processing = true;
  484. $("#sData", frmtb+"_2").addClass( commonstyle.active );
  485. url = rp_ge[$t.p.id].url || $($t).jqGrid('getGridParam','editurl');
  486. oper = opers.oper;
  487. idname = url === 'clientArray' ? $t.p.keyName : opers.id;
  488. // we add to pos data array the action - the name is oper
  489. postdata[oper] = ($.trim(postdata[$t.p.id+"_id"]) === "_empty") ? opers.addoper : opers.editoper;
  490. if(postdata[oper] !== opers.addoper) {
  491. postdata[idname] = postdata[$t.p.id+"_id"];
  492. } else {
  493. // check to see if we have allredy this field in the form and if yes lieve it
  494. if( postdata[idname] === undefined ) {postdata[idname] = postdata[$t.p.id+"_id"];}
  495. }
  496. delete postdata[$t.p.id+"_id"];
  497. postdata = $.extend(postdata,rp_ge[$t.p.id].editData,onCS);
  498. if($t.p.treeGrid === true) {
  499. if(postdata[oper] === opers.addoper) {
  500. selr = $($t).jqGrid("getGridParam", 'selrow');
  501. var tr_par_id = $t.p.treeGridModel === 'adjacency' ? $t.p.treeReader.parent_id_field : 'parent_id';
  502. postdata[tr_par_id] = selr;
  503. }
  504. for(i in $t.p.treeReader){
  505. if($t.p.treeReader.hasOwnProperty(i)) {
  506. var itm = $t.p.treeReader[i];
  507. if(postdata.hasOwnProperty(itm)) {
  508. if(postdata[oper] === opers.addoper && i === 'parent_id_field') {continue;}
  509. delete postdata[itm];
  510. }
  511. }
  512. }
  513. }
  514. postdata[idname] = $.jgrid.stripPref($t.p.idPrefix, postdata[idname]);
  515. var ajaxOptions = $.extend({
  516. url: url,
  517. type: rp_ge[$t.p.id].mtype,
  518. data: $.isFunction(rp_ge[$t.p.id].serializeEditData) ? rp_ge[$t.p.id].serializeEditData.call($t,postdata) : postdata,
  519. complete:function(data,status){
  520. var key;
  521. $("#sData", frmtb+"_2").removeClass( commonstyle.active );
  522. postdata[idname] = $t.p.idPrefix + postdata[idname];
  523. if(data.status >= 300 && data.status !== 304) {
  524. ret[0] = false;
  525. ret[1] = $($t).triggerHandler("jqGridAddEditErrorTextFormat", [data, frmoper]);
  526. if ($.isFunction(rp_ge[$t.p.id].errorTextFormat)) {
  527. ret[1] = rp_ge[$t.p.id].errorTextFormat.call($t, data, frmoper);
  528. } else {
  529. ret[1] = status + " Status: '" + data.statusText + "'. Error code: " + data.status;
  530. }
  531. } else {
  532. // data is posted successful
  533. // execute aftersubmit with the returned data from server
  534. ret = $($t).triggerHandler("jqGridAddEditAfterSubmit", [data, postdata, frmoper]);
  535. if(ret === undefined) {
  536. ret = [true,"",""];
  537. }
  538. if( ret[0] && $.isFunction(rp_ge[$t.p.id].afterSubmit) ) {
  539. ret = rp_ge[$t.p.id].afterSubmit.call($t, data,postdata, frmoper);
  540. }
  541. }
  542. if(ret[0] === false) {
  543. $(".FormError",frmgr).html(ret[1]);
  544. $(".FormError",frmgr).show();
  545. } else {
  546. if($t.p.autoencode) {
  547. $.each(postdata,function(n,v){
  548. postdata[n] = $.jgrid.htmlDecode(v);
  549. });
  550. }
  551. //rp_ge[$t.p.id].reloadAfterSubmit = rp_ge[$t.p.id].reloadAfterSubmit && $t.p.datatype != "local";
  552. // the action is add
  553. if(postdata[oper] === opers.addoper ) {
  554. //id processing
  555. // user not set the id ret[2]
  556. if(!ret[2]) {ret[2] = $.jgrid.randId();}
  557. if(postdata[idname] == null || postdata[idname] === ($t.p.idPrefix + "_empty") || postdata[idname] === ""){
  558. postdata[idname] = ret[2];
  559. } else {
  560. ret[2] = postdata[idname];
  561. }
  562. if(rp_ge[$t.p.id].reloadAfterSubmit) {
  563. $($t).trigger("reloadGrid");
  564. } else {
  565. if($t.p.treeGrid === true){
  566. $($t).jqGrid("addChildNode",ret[2],selr,postdata );
  567. } else {
  568. $($t).jqGrid("addRowData",ret[2],postdata,p.addedrow);
  569. }
  570. }
  571. if(rp_ge[$t.p.id].closeAfterAdd) {
  572. if($t.p.treeGrid !== true){
  573. $($t).jqGrid("setSelection",ret[2]);
  574. }
  575. $.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose, removemodal: rp_ge[$t.p.id].removemodal, formprop: !rp_ge[$t.p.id].recreateForm, form: rp_ge[$t.p.id].form});
  576. } else if (rp_ge[$t.p.id].clearAfterAdd) {
  577. fillData("_empty", $t, frmgr);
  578. }
  579. } else {
  580. // the action is update
  581. if(rp_ge[$t.p.id].reloadAfterSubmit) {
  582. $($t).trigger("reloadGrid");
  583. if( !rp_ge[$t.p.id].closeAfterEdit ) {setTimeout(function(){$($t).jqGrid("setSelection",postdata[idname]);},1000);}
  584. } else {
  585. if($t.p.treeGrid === true) {
  586. $($t).jqGrid("setTreeRow", postdata[idname],postdata);
  587. } else {
  588. $($t).jqGrid("setRowData", postdata[idname],postdata);
  589. }
  590. }
  591. 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, removemodal: rp_ge[$t.p.id].removemodal, formprop: !rp_ge[$t.p.id].recreateForm, form: rp_ge[$t.p.id].form});}
  592. }
  593. if( $.isFunction(rp_ge[$t.p.id].afterComplete) || $._data( $($t)[0], 'events' ).hasOwnProperty('jqGridAddEditAfterComplete') ) {
  594. copydata = data;
  595. setTimeout(function(){
  596. $($t).triggerHandler("jqGridAddEditAfterComplete", [copydata, postdata, $(frmgr), frmoper]);
  597. try {
  598. rp_ge[$t.p.id].afterComplete.call($t, copydata, postdata, $(frmgr), frmoper);
  599. } catch(excacmp) {
  600. //do nothing
  601. }
  602. copydata=null;
  603. },500);
  604. }
  605. if(rp_ge[$t.p.id].checkOnSubmit || rp_ge[$t.p.id].checkOnUpdate) {
  606. $(frmgr).data("disabled",false);
  607. if($t.p.savedData[$t.p.id+"_id"] !== "_empty"){
  608. for(key in $t.p.savedData) {
  609. if($t.p.savedData.hasOwnProperty(key) && postdata[key]) {
  610. $t.p.savedData[key] = postdata[key];
  611. }
  612. }
  613. }
  614. }
  615. }
  616. rp_ge[$t.p.id].processing=false;
  617. try{$(':input:visible',frmgr)[0].focus();} catch (e){}
  618. }
  619. }, $.jgrid.ajaxOptions, rp_ge[$t.p.id].ajaxEditOptions );
  620. if (!ajaxOptions.url && !rp_ge[$t.p.id].useDataProxy) {
  621. if ($.isFunction($t.p.dataProxy)) {
  622. rp_ge[$t.p.id].useDataProxy = true;
  623. } else {
  624. ret[0]=false;ret[1] += " "+errors.nourl;
  625. }
  626. }
  627. if (ret[0]) {
  628. if (rp_ge[$t.p.id].useDataProxy) {
  629. var dpret = $t.p.dataProxy.call($t, ajaxOptions, "set_"+$t.p.id);
  630. if(dpret === undefined) {
  631. dpret = [true, ""];
  632. }
  633. if(dpret[0] === false ) {
  634. ret[0] = false;
  635. ret[1] = dpret[1] || "Error deleting the selected row!" ;
  636. } else {
  637. if(ajaxOptions.data.oper === opers.addoper && rp_ge[$t.p.id].closeAfterAdd ) {
  638. $.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose, removemodal: rp_ge[$t.p.id].removemodal, formprop: !rp_ge[$t.p.id].recreateForm, form: rp_ge[$t.p.id].form});
  639. }
  640. if(ajaxOptions.data.oper === opers.editoper && rp_ge[$t.p.id].closeAfterEdit ) {
  641. $.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose, removemodal: rp_ge[$t.p.id].removemodal, formprop: !rp_ge[$t.p.id].recreateForm, form: rp_ge[$t.p.id].form});
  642. }
  643. }
  644. } else {
  645. if(ajaxOptions.url === "clientArray") {
  646. rp_ge[$t.p.id].reloadAfterSubmit = false;
  647. postdata = ajaxOptions.data;
  648. ajaxOptions.complete({status:200, statusText:''},'');
  649. } else {
  650. $.ajax(ajaxOptions);
  651. }
  652. }
  653. }
  654. }
  655. if(ret[0] === false) {
  656. $(".FormError",frmgr).html(ret[1]);
  657. $(".FormError",frmgr).show();
  658. // return;
  659. }
  660. }
  661. function compareData(nObj, oObj ) {
  662. var ret = false,key;
  663. ret = !( $.isPlainObject(nObj) && $.isPlainObject(oObj) && Object.getOwnPropertyNames(nObj).length === Object.getOwnPropertyNames(oObj).length);
  664. if(!ret) {
  665. for (key in oObj) {
  666. if(oObj.hasOwnProperty(key) ) {
  667. if(nObj.hasOwnProperty(key) ) {
  668. if( nObj[key] !== oObj[key] ) {
  669. ret = true;
  670. break;
  671. }
  672. } else {
  673. ret = true;
  674. break;
  675. }
  676. }
  677. }
  678. }
  679. return ret;
  680. }
  681. function checkUpdates () {
  682. var stat = true;
  683. $(".FormError",frmgr).hide();
  684. if(rp_ge[$t.p.id].checkOnUpdate) {
  685. postdata = {};
  686. getFormData();
  687. diff = compareData(postdata, $t.p.savedData);
  688. if(diff) {
  689. $(frmgr).data("disabled",true);
  690. $(".confirm","#"+IDs.themodal).show();
  691. stat = false;
  692. }
  693. }
  694. return stat;
  695. }
  696. function restoreInline() {
  697. var i;
  698. if (rowid !== "_empty" && $t.p.savedRow !== undefined && $t.p.savedRow.length > 0 && $.isFunction($.fn.jqGrid.restoreRow)) {
  699. for (i=0;i<$t.p.savedRow.length;i++) {
  700. if ($t.p.savedRow[i].id === rowid) {
  701. $($t).jqGrid('restoreRow',rowid);
  702. break;
  703. }
  704. }
  705. }
  706. }
  707. function updateNav(cr, posarr){
  708. var totr = posarr[1].length-1;
  709. if (cr===0) {
  710. $("#pData",frmtb2).addClass( commonstyle.disabled );
  711. } else if( posarr[1][cr-1] !== undefined && $("#"+$.jgrid.jqID(posarr[1][cr-1])).hasClass( commonstyle.disabled )) {
  712. $("#pData",frmtb2).addClass( commonstyle.disabled );
  713. } else {
  714. $("#pData",frmtb2).removeClass( commonstyle.disabled );
  715. }
  716. if (cr===totr) {
  717. $("#nData",frmtb2).addClass( commonstyle.disabled );
  718. } else if( posarr[1][cr+1] !== undefined && $("#"+$.jgrid.jqID(posarr[1][cr+1])).hasClass( commonstyle.disabled )) {
  719. $("#nData",frmtb2).addClass( commonstyle.disabled );
  720. } else {
  721. $("#nData",frmtb2).removeClass( commonstyle.disabled );
  722. }
  723. }
  724. function getCurrPos() {
  725. var rowsInGrid = $($t).jqGrid("getDataIDs"),
  726. selrow = $("#id_g",frmtb).val(), pos;
  727. if($t.p.multiselect && rp_ge[$t.p.id].editselected) {
  728. var arr = [];
  729. for(var i=0, len = rowsInGrid.length;i<len;i++) {
  730. if($.inArray(rowsInGrid[i],$t.p.selarrrow) !== -1) {
  731. arr.push(rowsInGrid[i]);
  732. }
  733. }
  734. pos = $.inArray(selrow,arr);
  735. return [pos, arr];
  736. } else {
  737. pos = $.inArray(selrow,rowsInGrid);
  738. }
  739. return [pos,rowsInGrid];
  740. }
  741. function parseTemplate ( template ){
  742. var tmpl ="";
  743. if(typeof template === "string") {
  744. tmpl = template.replace(/\{([\w\-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g, function(m,i){
  745. return '<span id="'+ i+ '" ></span>';
  746. });
  747. }
  748. return tmpl;
  749. }
  750. function syncSavedData () {
  751. if(rp_ge[$t.p.id].checkOnSubmit || rp_ge[$t.p.id].checkOnUpdate) {
  752. var a1=[], a2={};
  753. a1 = $.map($t.p.savedData, function(v, i){
  754. return i;
  755. });
  756. $(".FormElement", frm ).each(function(){
  757. if( a1.indexOf(this.name) === -1 ) {
  758. var tv = $(this).val(), tt = $(this).get(0).type;
  759. if( tt === 'checkbox') {
  760. if(!$(this).is(":checked")) {
  761. tv = $(this).attr("offval");
  762. }
  763. } else if(tt === 'select-multiple') {
  764. tv = tv.join(",");
  765. } else if(tt === 'radio') {
  766. if(a2.hasOwnProperty(this.name)) {
  767. return true;
  768. } else {
  769. a2[this.name] = ($(this).attr("offval") === undefined) ? "off" : $(this).attr("offval");
  770. }
  771. }
  772. $t.p.savedData[this.name] = tv;
  773. }
  774. });
  775. for(var i in a2 ) {
  776. if( a2.hasOwnProperty(i)) {
  777. var val = $('input[name="'+i+'"]:checked',frm).val();
  778. $t.p.savedData[i] = (val !== undefined) ? val : a2[i];
  779. }
  780. }
  781. }
  782. }
  783. var dh = isNaN(rp_ge[$(this)[0].p.id].dataheight) ? rp_ge[$(this)[0].p.id].dataheight : rp_ge[$(this)[0].p.id].dataheight+"px",
  784. dw = isNaN(rp_ge[$(this)[0].p.id].datawidth) ? rp_ge[$(this)[0].p.id].datawidth : rp_ge[$(this)[0].p.id].datawidth+"px",
  785. frm = $("<form name='FormPost' id='"+frmgr+"' class='FormGrid' onSubmit='return false;' style='width:"+dw+";height:"+dh+";'></form>").data("disabled",false),
  786. tbl;
  787. if(templ) {
  788. tbl = parseTemplate( rp_ge[$(this)[0].p.id].template );
  789. frmtb2 = frmtb;
  790. } else {
  791. tbl = $("<table id='"+frmtborg+"' class='EditTable ui-common-table'><tbody></tbody></table>");
  792. frmtb2 = frmtb+"_2";
  793. }
  794. frmgr = "#"+ $.jgrid.jqID(frmgr);
  795. // errors
  796. $(frm).append("<div class='FormError " + commonstyle.error + "' style='display:none;'></div>" );
  797. // topinfo
  798. $(frm).append("<div class='tinfo topinfo'>"+rp_ge[$t.p.id].topinfo+"</div>");
  799. $($t.p.colModel).each( function() {
  800. var fmto = this.formoptions;
  801. maxCols = Math.max(maxCols, fmto ? fmto.colpos || 0 : 0 );
  802. maxRows = Math.max(maxRows, fmto ? fmto.rowpos || 0 : 0 );
  803. });
  804. $(frm).append(tbl);
  805. showFrm = $($t).triggerHandler("jqGridAddEditBeforeInitData", [frm, frmoper]);
  806. if(showFrm === undefined) {
  807. showFrm = true;
  808. }
  809. if(showFrm && $.isFunction(rp_ge[$t.p.id].beforeInitData)) {
  810. showFrm = rp_ge[$t.p.id].beforeInitData.call($t,frm, frmoper);
  811. }
  812. if(showFrm === false) {return;}
  813. restoreInline();
  814. // set the id.
  815. // use carefull only to change here colproperties.
  816. // create data
  817. createData(rowid,$t,tbl,maxCols);
  818. // buttons at footer
  819. var rtlb = $t.p.direction === "rtl" ? true :false,
  820. bp = rtlb ? "nData" : "pData",
  821. bn = rtlb ? "pData" : "nData";
  822. var bP = "<a id='"+bp+"' class='fm-button " + commonstyle.button + "'><span class='" + commonstyle.icon_base + " " + styles.icon_prev+ "'></span></a>",
  823. bN = "<a id='"+bn+"' class='fm-button " + commonstyle.button + "'><span class='" + commonstyle.icon_base + " " + styles.icon_next+ "'></span></a>",
  824. bS ="<a id='sData' class='fm-button " + commonstyle.button + "'>"+p.bSubmit+"</a>",
  825. bC ="<a id='cData' class='fm-button " + commonstyle.button + "'>"+p.bCancel+"</a>",
  826. user_buttons = ( $.isArray( rp_ge[$t.p.id].buttons ) ? $.jgrid.buildButtons( rp_ge[$t.p.id].buttons, bS + bC, commonstyle ) : bS + bC );
  827. var bt = "<table style='height:auto' class='EditTable ui-common-table' id='"+frmtborg+"_2'><tbody><tr><td colspan='2'><hr class='"+commonstyle.content+"' style='margin:1px'/></td></tr><tr id='Act_Buttons'><td class='navButton'>"+(rtlb ? bN+bP : bP+bN)+"</td><td class='EditButton'>"+ user_buttons +"</td></tr>";
  828. //bt += "<tr style='display:none' class='binfo'><td class='bottominfo' colspan='2'>"+rp_ge[$t.p.id].bottominfo+"</td></tr>";
  829. bt += "</tbody></table>";
  830. if(maxRows > 0) {
  831. var sd=[];
  832. $.each($(tbl)[0].rows,function(i,r){
  833. sd[i] = r;
  834. });
  835. sd.sort(function(a,b){
  836. if(a.rp > b.rp) {return 1;}
  837. if(a.rp < b.rp) {return -1;}
  838. return 0;
  839. });
  840. $.each(sd, function(index, row) {
  841. $('tbody',tbl).append(row);
  842. });
  843. }
  844. p.gbox = "#gbox_"+$.jgrid.jqID(gID);
  845. var cle = false;
  846. if(p.closeOnEscape===true){
  847. p.closeOnEscape = false;
  848. cle = true;
  849. }
  850. var tms;
  851. if(templ) {
  852. $(frm).find("#pData").replaceWith( bP );
  853. $(frm).find("#nData").replaceWith( bN );
  854. $(frm).find("#sData").replaceWith( bS );
  855. $(frm).find("#cData").replaceWith( bC );
  856. tms = $("<div id="+frmtborg+"></div>").append(frm);
  857. } else {
  858. tms = $("<div></div>").append(frm).append(bt);
  859. }
  860. $(frm).append("<div class='binfo topinfo bottominfo'>"+rp_ge[$t.p.id].bottominfo+"</div>");
  861. var fs = $('.ui-jqgrid').css('font-size') || '11px';
  862. $.jgrid.createModal(IDs, tms, rp_ge[$(this)[0].p.id], "#gview_"+$.jgrid.jqID($t.p.id), $("#gbox_"+$.jgrid.jqID($t.p.id))[0], null, {"font-size": fs});
  863. if(rtlb) {
  864. $("#pData, #nData",frmtb+"_2").css("float","right");
  865. $(".EditButton",frmtb+"_2").css("text-align","left");
  866. }
  867. if(rp_ge[$t.p.id].topinfo) {$(".tinfo", frmgr).show();}
  868. if(rp_ge[$t.p.id].bottominfo) {$(".binfo",frmgr).show();}
  869. tms = null;bt=null;
  870. $("#"+$.jgrid.jqID(IDs.themodal)).keydown( function( e ) {
  871. var wkey = e.target;
  872. if ($(frmgr).data("disabled")===true ) {return false;}//??
  873. if(rp_ge[$t.p.id].savekey[0] === true && e.which === rp_ge[$t.p.id].savekey[1]) { // save
  874. if(wkey.tagName !== "TEXTAREA") {
  875. $("#sData", frmtb+"_2").trigger("click");
  876. return false;
  877. }
  878. }
  879. if(e.which === 27) {
  880. if(!checkUpdates()) {return false;}
  881. if(cle) {$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:p.gbox,jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose, removemodal: rp_ge[$t.p.id].removemodal, formprop: !rp_ge[$t.p.id].recreateForm, form: rp_ge[$t.p.id].form});}
  882. return false;
  883. }
  884. if(rp_ge[$t.p.id].navkeys[0]===true) {
  885. if($("#id_g",frmtb).val() === "_empty") {return true;}
  886. if(e.which === rp_ge[$t.p.id].navkeys[1]){ //up
  887. $("#pData", frmtb2).trigger("click");
  888. return false;
  889. }
  890. if(e.which === rp_ge[$t.p.id].navkeys[2]){ //down
  891. $("#nData", frmtb2).trigger("click");
  892. return false;
  893. }
  894. }
  895. });
  896. if(p.checkOnUpdate) {
  897. $("a.ui-jqdialog-titlebar-close span","#"+$.jgrid.jqID(IDs.themodal)).removeClass("jqmClose");
  898. $("a.ui-jqdialog-titlebar-close","#"+$.jgrid.jqID(IDs.themodal)).off("click")
  899. .click(function(){
  900. if(!checkUpdates()) {return false;}
  901. $.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose, removemodal: rp_ge[$t.p.id].removemodal, formprop: !rp_ge[$t.p.id].recreateForm, form: rp_ge[$t.p.id].form});
  902. return false;
  903. });
  904. }
  905. p.saveicon = $.extend([true,"left", styles.icon_save ],p.saveicon);
  906. p.closeicon = $.extend([true,"left", styles.icon_close ],p.closeicon);
  907. // beforeinitdata after creation of the form
  908. if(p.saveicon[0]===true) {
  909. $("#sData",frmtb2).addClass(p.saveicon[1] === "right" ? 'fm-button-icon-right' : 'fm-button-icon-left')
  910. .append("<span class='"+commonstyle.icon_base + " " +p.saveicon[2]+"'></span>");
  911. }
  912. if(p.closeicon[0]===true) {
  913. $("#cData",frmtb2).addClass(p.closeicon[1] === "right" ? 'fm-button-icon-right' : 'fm-button-icon-left')
  914. .append("<span class='" + commonstyle.icon_base +" "+p.closeicon[2]+"'></span>");
  915. }
  916. if(rp_ge[$t.p.id].checkOnSubmit || rp_ge[$t.p.id].checkOnUpdate) {
  917. bS ="<a id='sNew' class='fm-button "+commonstyle.button + "' style='z-index:1002'>"+p.bYes+"</a>";
  918. bN ="<a id='nNew' class='fm-button "+commonstyle.button + "' style='z-index:1002;margin-left:5px'>"+p.bNo+"</a>";
  919. bC ="<a id='cNew' class='fm-button "+commonstyle.button + "' style='z-index:1002;margin-left:5px;'>"+p.bExit+"</a>";
  920. var zI = p.zIndex || 999;zI ++;
  921. $("#"+IDs.themodal).append("<div class='"+ p.overlayClass+" jqgrid-overlay confirm' style='z-index:"+zI+";display:none;position:absolute;'>&#160;"+"</div><div class='confirm ui-jqconfirm "+commonstyle.content+"' style='z-index:"+(zI+1)+"'>"+p.saveData+"<br/><br/>"+bS+bN+bC+"</div>");
  922. $("#sNew","#"+$.jgrid.jqID(IDs.themodal)).click(function(){
  923. postIt();
  924. $(frmgr).data("disabled",false);
  925. $(".confirm","#"+$.jgrid.jqID(IDs.themodal)).hide();
  926. return false;
  927. });
  928. $("#nNew","#"+$.jgrid.jqID(IDs.themodal)).click(function(){
  929. $(".confirm","#"+$.jgrid.jqID(IDs.themodal)).hide();
  930. $(frmgr).data("disabled",false);
  931. setTimeout(function(){$(":input:visible",frmgr)[0].focus();},0);
  932. return false;
  933. });
  934. $("#cNew","#"+$.jgrid.jqID(IDs.themodal)).click(function(){
  935. $(".confirm","#"+$.jgrid.jqID(IDs.themodal)).hide();
  936. $(frmgr).data("disabled",false);
  937. $.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose, removemodal: rp_ge[$t.p.id].removemodal, formprop: !rp_ge[$t.p.id].recreateForm, form: rp_ge[$t.p.id].form});
  938. return false;
  939. });
  940. }
  941. // here initform
  942. $($t).triggerHandler("jqGridAddEditInitializeForm", [$(frmgr), frmoper]);
  943. if($.isFunction(rp_ge[$t.p.id].onInitializeForm)) { rp_ge[$t.p.id].onInitializeForm.call($t,$(frmgr), frmoper);}
  944. if(rowid==="_empty" || !rp_ge[$t.p.id].viewPagerButtons) {$("#pData,#nData",frmtb2).hide();} else {$("#pData,#nData",frmtb2).show();}
  945. $($t).triggerHandler("jqGridAddEditBeforeShowForm", [$(frmgr), frmoper]);
  946. if($.isFunction(rp_ge[$t.p.id].beforeShowForm)) { rp_ge[$t.p.id].beforeShowForm.call($t, $(frmgr), frmoper);}
  947. syncSavedData();
  948. $("#"+$.jgrid.jqID(IDs.themodal)).data("onClose",rp_ge[$t.p.id].onClose);
  949. $.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{
  950. gbox:"#gbox_"+$.jgrid.jqID(gID),
  951. jqm:p.jqModal,
  952. overlay: p.overlay,
  953. modal:p.modal,
  954. overlayClass: p.overlayClass,
  955. focusField : p.focusField,
  956. onHide : function(h) {
  957. var fh = $('#editmod'+gID)[0].style.height,
  958. fw = $('#editmod'+gID)[0].style.width;
  959. if(fh.indexOf("px") > -1 ) {
  960. fh = parseFloat(fh);
  961. }
  962. if(fw.indexOf("px") > -1 ) {
  963. fw = parseFloat(fw);
  964. }
  965. $($t).data("formProp", {
  966. top:parseFloat($(h.w).css("top")),
  967. left : parseFloat($(h.w).css("left")),
  968. width : fw,
  969. height : fh,
  970. dataheight : $(frmgr).height(),
  971. datawidth: $(frmgr).width()
  972. });
  973. h.w.remove();
  974. if(h.o) {h.o.remove();}
  975. }
  976. });
  977. if(!closeovrl) {
  978. $("." + $.jgrid.jqID(p.overlayClass)).click(function(){
  979. if(!checkUpdates()) {return false;}
  980. $.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose, removemodal: rp_ge[$t.p.id].removemodal, formprop: !rp_ge[$t.p.id].recreateForm, form: rp_ge[$t.p.id].form});
  981. return false;
  982. });
  983. }
  984. $(".fm-button","#"+$.jgrid.jqID(IDs.themodal)).hover(
  985. function(){$(this).addClass( commonstyle.hover );},
  986. function(){$(this).removeClass( commonstyle.hover );}
  987. );
  988. $("#sData", frmtb2).click(function(){
  989. postdata = {};
  990. $(".FormError",frmgr).hide();
  991. // all depend on ret array
  992. //ret[0] - succes
  993. //ret[1] - msg if not succes
  994. //ret[2] - the id that will be set if reload after submit false
  995. getFormData();
  996. if(postdata[$t.p.id+"_id"] === "_empty") {postIt();}
  997. else if(p.checkOnSubmit===true ) {
  998. diff = compareData(postdata, $t.p.savedData);
  999. if(diff) {
  1000. $(frmgr).data("disabled",true);
  1001. $(".confirm","#"+$.jgrid.jqID(IDs.themodal)).show();
  1002. } else {
  1003. postIt();
  1004. }
  1005. } else {
  1006. postIt();
  1007. }
  1008. return false;
  1009. });
  1010. $("#cData", frmtb2).click(function(){
  1011. if(!checkUpdates()) {return false;}
  1012. $.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal,onClose: rp_ge[$t.p.id].onClose, removemodal: rp_ge[$t.p.id].removemodal, formprop: !rp_ge[$t.p.id].recreateForm, form: rp_ge[$t.p.id].form});
  1013. return false;
  1014. });
  1015. // user buttons bind
  1016. $(frmtb2).find("[data-index]").each(function(){
  1017. var index = parseInt($(this).attr('data-index'),10);
  1018. if(index >=0 ) {
  1019. if( p.buttons[index].hasOwnProperty('click')) {
  1020. $(this).on('click', function(e) {
  1021. p.buttons[index].click.call($t, $(frmgr)[0], rp_ge[$t.p.id], e);
  1022. });
  1023. }
  1024. }
  1025. });
  1026. $("#nData", frmtb2).click(function(){
  1027. if(!checkUpdates()) {return false;}
  1028. $(".FormError",frmgr).hide();
  1029. var npos = getCurrPos();
  1030. npos[0] = parseInt(npos[0],10);
  1031. if(npos[0] !== -1 && npos[1][npos[0]+1]) {
  1032. $($t).triggerHandler("jqGridAddEditClickPgButtons", ['next',$(frmgr),npos[1][npos[0]]]);
  1033. var nposret;
  1034. if($.isFunction(p.onclickPgButtons)) {
  1035. nposret = p.onclickPgButtons.call($t, 'next',$(frmgr),npos[1][npos[0]]);
  1036. if( nposret !== undefined && nposret === false ) {return false;}
  1037. }
  1038. if( $("#"+$.jgrid.jqID(npos[1][npos[0]+1])).hasClass( commonstyle.disabled )) {return false;}
  1039. fillData(npos[1][npos[0]+1],$t,frmgr);
  1040. if(!($t.p.multiselect && rp_ge[$t.p.id].editselected)) {
  1041. $($t).jqGrid("setSelection",npos[1][npos[0]+1]);
  1042. }
  1043. $($t).triggerHandler("jqGridAddEditAfterClickPgButtons", ['next',$(frmgr),npos[1][npos[0]]]);
  1044. if($.isFunction(p.afterclickPgButtons)) {
  1045. p.afterclickPgButtons.call($t, 'next',$(frmgr),npos[1][npos[0]+1]);
  1046. }
  1047. syncSavedData();
  1048. updateNav(npos[0]+1,npos);
  1049. }
  1050. return false;
  1051. });
  1052. $("#pData", frmtb2).click(function(){
  1053. if(!checkUpdates()) {return false;}
  1054. $(".FormError",frmgr).hide();
  1055. var ppos = getCurrPos();
  1056. if(ppos[0] !== -1 && ppos[1][ppos[0]-1]) {
  1057. $($t).triggerHandler("jqGridAddEditClickPgButtons", ['prev',$(frmgr),ppos[1][ppos[0]]]);
  1058. var pposret;
  1059. if($.isFunction(p.onclickPgButtons)) {
  1060. pposret = p.onclickPgButtons.call($t, 'prev',$(frmgr),ppos[1][ppos[0]]);
  1061. if( pposret !== undefined && pposret === false ) {return false;}
  1062. }
  1063. if( $("#"+$.jgrid.jqID(ppos[1][ppos[0]-1])).hasClass( commonstyle.disabled )) {return false;}
  1064. fillData(ppos[1][ppos[0]-1],$t,frmgr);
  1065. if(!($t.p.multiselect && rp_ge[$t.p.id].editselected)) {
  1066. $($t).jqGrid("setSelection",ppos[1][ppos[0]-1]);
  1067. }
  1068. $($t).triggerHandler("jqGridAddEditAfterClickPgButtons", ['prev',$(frmgr),ppos[1][ppos[0]]]);
  1069. if($.isFunction(p.afterclickPgButtons)) {
  1070. p.afterclickPgButtons.call($t, 'prev',$(frmgr),ppos[1][ppos[0]-1]);
  1071. }
  1072. syncSavedData();
  1073. updateNav(ppos[0]-1,ppos);
  1074. }
  1075. return false;
  1076. });
  1077. $($t).triggerHandler("jqGridAddEditAfterShowForm", [$(frmgr), frmoper]);
  1078. if($.isFunction(rp_ge[$t.p.id].afterShowForm)) { rp_ge[$t.p.id].afterShowForm.call($t, $(frmgr), frmoper); }
  1079. var posInit =getCurrPos();
  1080. updateNav(posInit[0],posInit);
  1081. });
  1082. },
  1083. viewGridRow : function(rowid, p){
  1084. var regional = $.jgrid.getRegional(this[0], 'view'),
  1085. currstyle = this[0].p.styleUI,
  1086. styles = $.jgrid.styleUI[currstyle].formedit,
  1087. commonstyle = $.jgrid.styleUI[currstyle].common;
  1088. p = $.extend(true, {
  1089. top : 0,
  1090. left: 0,
  1091. width: 500,
  1092. datawidth: 'auto',
  1093. height: 'auto',
  1094. dataheight: 'auto',
  1095. modal: false,
  1096. overlay: 30,
  1097. drag: true,
  1098. resize: true,
  1099. jqModal: true,
  1100. closeOnEscape : false,
  1101. labelswidth: 'auto',
  1102. closeicon: [],
  1103. navkeys: [false,38,40],
  1104. onClose: null,
  1105. beforeShowForm : null,
  1106. beforeInitData : null,
  1107. viewPagerButtons : true,
  1108. recreateForm : false,
  1109. removemodal: true,
  1110. form: 'view',
  1111. buttons : []
  1112. }, regional, p || {});
  1113. rp_ge[$(this)[0].p.id] = p;
  1114. return this.each(function(){
  1115. var $t = this;
  1116. if (!$t.grid || !rowid) {return;}
  1117. var gID = $t.p.id,
  1118. frmgr = "ViewGrid_"+$.jgrid.jqID( gID ), frmtb = "ViewTbl_" + $.jgrid.jqID( gID ),
  1119. frmgr_id = "ViewGrid_"+gID, frmtb_id = "ViewTbl_"+gID,
  1120. IDs = {themodal:'viewmod'+gID,modalhead:'viewhd'+gID,modalcontent:'viewcnt'+gID, scrollelm : frmgr},
  1121. showFrm = true,
  1122. maxCols = 1, maxRows=0;
  1123. rp_ge[$t.p.id].styleUI = $t.p.styleUI || 'jQueryUI';
  1124. if(!p.recreateForm) {
  1125. if( $($t).data("viewProp") ) {
  1126. $.extend(rp_ge[$(this)[0].p.id], $($t).data("viewProp"));
  1127. }
  1128. }
  1129. function focusaref(){ //Sfari 3 issues
  1130. if(rp_ge[$t.p.id].closeOnEscape===true || rp_ge[$t.p.id].navkeys[0]===true) {
  1131. setTimeout(function(){$(".ui-jqdialog-titlebar-close","#"+$.jgrid.jqID(IDs.modalhead)).attr("tabindex", "-1").focus();},0);
  1132. }
  1133. }
  1134. function createData(rowid,obj,tb,maxcols){
  1135. var nm, hc,trdata, cnt=0,tmp, dc, retpos=[], ind=false, i,
  1136. tdtmpl = "<td class='CaptionTD form-view-label " + commonstyle.content + "' width='"+p.labelswidth+"'></td><td class='DataTD form-view-data ui-helper-reset " + commonstyle.content +"'></td>", tmpl="",
  1137. tdtmpl2 = "<td class='CaptionTD form-view-label " + commonstyle.content +"'></td><td class='DataTD form-view-data " + commonstyle.content +"'></td>",
  1138. fmtnum = ['integer','number','currency'],max1 =0, max2=0 ,maxw,setme, viewfld;
  1139. for (i=1;i<=maxcols;i++) {
  1140. tmpl += i === 1 ? tdtmpl : tdtmpl2;
  1141. }
  1142. // find max number align rigth with property formatter
  1143. $(obj.p.colModel).each( function() {
  1144. if(this.editrules && this.editrules.edithidden === true) {
  1145. hc = false;
  1146. } else {
  1147. hc = this.hidden === true ? true : false;
  1148. }
  1149. if(!hc && this.align==='right') {
  1150. if(this.formatter && $.inArray(this.formatter,fmtnum) !== -1 ) {
  1151. max1 = Math.max(max1,parseInt(this.width,10));
  1152. } else {
  1153. max2 = Math.max(max2,parseInt(this.width,10));
  1154. }
  1155. }
  1156. });
  1157. maxw = max1 !==0 ? max1 : max2 !==0 ? max2 : 0;
  1158. ind = $(obj).jqGrid("getInd",rowid);
  1159. $(obj.p.colModel).each( function(i) {
  1160. nm = this.name;
  1161. setme = false;
  1162. // hidden fields are included in the form
  1163. if(this.editrules && this.editrules.edithidden === true) {
  1164. hc = false;
  1165. } else {
  1166. hc = this.hidden === true ? true : false;
  1167. }
  1168. dc = hc ? "style='display:none'" : "";
  1169. viewfld = (typeof this.viewable !== 'boolean') ? true : this.viewable;
  1170. if ( nm !== 'cb' && nm !== 'subgrid' && nm !== 'rn' && viewfld) {
  1171. if(ind === false) {
  1172. tmp = "";
  1173. } else {
  1174. if(nm === obj.p.ExpandColumn && obj.p.treeGrid === true) {
  1175. tmp = $("td:eq("+i+")",obj.rows[ind]).text();
  1176. } else {
  1177. tmp = $("td:eq("+i+")",obj.rows[ind]).html();
  1178. }
  1179. }
  1180. setme = this.align === 'right' && maxw !==0 ? true : false;
  1181. var frmopt = $.extend({},{rowabove:false,rowcontent:''}, this.formoptions || {}),
  1182. rp = parseInt(frmopt.rowpos,10) || cnt+1,
  1183. cp = parseInt((parseInt(frmopt.colpos,10) || 1)*2,10);
  1184. if(frmopt.rowabove) {
  1185. var newdata = $("<tr><td class='contentinfo' colspan='"+(maxcols*2)+"'>"+frmopt.rowcontent+"</td></tr>");
  1186. $(tb).append(newdata);
  1187. newdata[0].rp = rp;
  1188. }
  1189. trdata = $(tb).find("tr[rowpos="+rp+"]");
  1190. if ( trdata.length===0 ) {
  1191. trdata = $("<tr "+dc+" rowpos='"+rp+"'></tr>").addClass("FormData").attr("id","trv_"+nm);
  1192. $(trdata).append(tmpl);
  1193. $(tb).append(trdata);
  1194. trdata[0].rp = rp;
  1195. }
  1196. $("td:eq("+(cp-2)+")",trdata[0]).html('<b>'+ (frmopt.label === undefined ? obj.p.colNames[i]: frmopt.label)+'</b>');
  1197. $("td:eq("+(cp-1)+")",trdata[0]).append("<span>"+tmp+"</span>").attr("id","v_"+nm);
  1198. if(setme){
  1199. $("td:eq("+(cp-1)+") span",trdata[0]).css({'text-align':'right',width:maxw+"px"});
  1200. }
  1201. retpos[cnt] = i;
  1202. cnt++;
  1203. }
  1204. });
  1205. if( cnt > 0) {
  1206. 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>");
  1207. idrow[0].rp = cnt+99;
  1208. $(tb).append(idrow);
  1209. }
  1210. return retpos;
  1211. }
  1212. function fillData(rowid,obj){
  1213. var nm, hc,cnt=0,tmp,trv;
  1214. trv = $(obj).jqGrid("getInd",rowid,true);
  1215. if(!trv) {return;}
  1216. $('td',trv).each( function(i) {
  1217. nm = obj.p.colModel[i].name;
  1218. // hidden fields are included in the form
  1219. if(obj.p.colModel[i].editrules && obj.p.colModel[i].editrules.edithidden === true) {
  1220. hc = false;
  1221. } else {
  1222. hc = obj.p.colModel[i].hidden === true ? true : false;
  1223. }
  1224. if ( nm !== 'cb' && nm !== 'subgrid' && nm !== 'rn') {
  1225. if(nm === obj.p.ExpandColumn && obj.p.treeGrid === true) {
  1226. tmp = $(this).text();
  1227. } else {
  1228. tmp = $(this).html();
  1229. }
  1230. nm = $.jgrid.jqID("v_"+nm);
  1231. $("#"+nm+" span","#"+frmtb).html(tmp);
  1232. if (hc) {$("#"+nm,"#"+frmtb).parents("tr:first").hide();}
  1233. cnt++;
  1234. }
  1235. });
  1236. if(cnt>0) {$("#id_g","#"+frmtb).val(rowid);}
  1237. }
  1238. function updateNav(cr,posarr){
  1239. var totr = posarr[1].length-1;
  1240. if (cr===0) {
  1241. $("#pData","#"+frmtb+"_2").addClass( commonstyle.disabled );
  1242. } else if( posarr[1][cr-1] !== undefined && $("#"+$.jgrid.jqID(posarr[1][cr-1])).hasClass(commonstyle.disabled)) {
  1243. $("#pData",frmtb+"_2").addClass( commonstyle.disabled );
  1244. } else {
  1245. $("#pData","#"+frmtb+"_2").removeClass( commonstyle.disabled );
  1246. }
  1247. if (cr===totr) {
  1248. $("#nData","#"+frmtb+"_2").addClass( commonstyle.disabled );
  1249. } else if( posarr[1][cr+1] !== undefined && $("#"+$.jgrid.jqID(posarr[1][cr+1])).hasClass( commonstyle.disabled )) {
  1250. $("#nData",frmtb+"_2").addClass( commonstyle.disabled );
  1251. } else {
  1252. $("#nData","#"+frmtb+"_2").removeClass( commonstyle.disabled );
  1253. }
  1254. }
  1255. function getCurrPos() {
  1256. var rowsInGrid = $($t).jqGrid("getDataIDs"),
  1257. selrow = $("#id_g","#"+frmtb).val(),
  1258. pos = $.inArray(selrow,rowsInGrid);
  1259. return [pos,rowsInGrid];
  1260. }
  1261. var dh = isNaN(rp_ge[$(this)[0].p.id].dataheight) ? rp_ge[$(this)[0].p.id].dataheight : rp_ge[$(this)[0].p.id].dataheight+"px",
  1262. dw = isNaN(rp_ge[$(this)[0].p.id].datawidth) ? rp_ge[$(this)[0].p.id].datawidth : rp_ge[$(this)[0].p.id].datawidth+"px",
  1263. frm = $("<form name='FormPost' id='"+frmgr_id+"' class='FormGrid' style='width:"+dw+";height:"+dh+";'></form>"),
  1264. tbl =$("<table id='"+frmtb_id+"' class='EditTable ViewTable'><tbody></tbody></table>");
  1265. $($t.p.colModel).each( function() {
  1266. var fmto = this.formoptions;
  1267. maxCols = Math.max(maxCols, fmto ? fmto.colpos || 0 : 0 );
  1268. maxRows = Math.max(maxRows, fmto ? fmto.rowpos || 0 : 0 );
  1269. });
  1270. // set the id.
  1271. $(frm).append(tbl);
  1272. showFrm = $($t).triggerHandler("jqGridViewRowBeforeInitData", [frm]);
  1273. if(showFrm === undefined) {
  1274. showFrm = true;
  1275. }
  1276. if(showFrm && $.isFunction(rp_ge[$t.p.id].beforeInitData)) {
  1277. showFrm = rp_ge[$t.p.id].beforeInitData.call($t, frm);
  1278. }
  1279. if(showFrm === false) {return;}
  1280. createData(rowid, $t, tbl, maxCols);
  1281. var rtlb = $t.p.direction === "rtl" ? true :false,
  1282. bp = rtlb ? "nData" : "pData",
  1283. bn = rtlb ? "pData" : "nData",
  1284. // buttons at footer
  1285. bP = "<a id='"+bp+"' class='fm-button " + commonstyle.button + "'><span class='" + commonstyle.icon_base + " " + styles.icon_prev+ "'></span></a>",
  1286. bN = "<a id='"+bn+"' class='fm-button " + commonstyle.button + "'><span class='" + commonstyle.icon_base + " " + styles.icon_next+ "'></span></a>",
  1287. bC ="<a id='cData' class='fm-button " + commonstyle.button + "'>"+p.bClose+"</a>",
  1288. user_buttons = ( $.isArray( rp_ge[$t.p.id].buttons ) ? $.jgrid.buildButtons( rp_ge[$t.p.id].buttons, bC, commonstyle ) : bC );
  1289. if(maxRows > 0) {
  1290. var sd=[];
  1291. $.each($(tbl)[0].rows,function(i,r){
  1292. sd[i] = r;
  1293. });
  1294. sd.sort(function(a,b){
  1295. if(a.rp > b.rp) {return 1;}
  1296. if(a.rp < b.rp) {return -1;}
  1297. return 0;
  1298. });
  1299. $.each(sd, function(index, row) {
  1300. $('tbody',tbl).append(row);
  1301. });
  1302. }
  1303. p.gbox = "#gbox_"+$.jgrid.jqID(gID);
  1304. var bt = $("<div></div>").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'>"+ user_buttons+"</td></tr></tbody></table>"),
  1305. fs = $('.ui-jqgrid').css('font-size') || '11px';
  1306. $.jgrid.createModal(IDs,bt, rp_ge[$(this)[0].p.id],"#gview_"+$.jgrid.jqID($t.p.id),$("#gview_"+$.jgrid.jqID($t.p.id))[0], null, {"font-size":fs});
  1307. if(rtlb) {
  1308. $("#pData, #nData","#"+frmtb+"_2").css("float","right");
  1309. $(".EditButton","#"+frmtb+"_2").css("text-align","left");
  1310. }
  1311. if(!p.viewPagerButtons) {$("#pData, #nData","#"+frmtb+"_2").hide();}
  1312. bt = null;
  1313. $("#"+IDs.themodal).keydown( function( e ) {
  1314. if(e.which === 27) {
  1315. if(rp_ge[$t.p.id].closeOnEscape) {$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:p.gbox,jqm:p.jqModal, onClose: p.onClose, removemodal: rp_ge[$t.p.id].removemodal, formprop: !rp_ge[$t.p.id].recreateForm, form: rp_ge[$t.p.id].form});}
  1316. return false;
  1317. }
  1318. if(p.navkeys[0]===true) {
  1319. if(e.which === p.navkeys[1]){ //up
  1320. $("#pData", "#"+frmtb+"_2").trigger("click");
  1321. return false;
  1322. }
  1323. if(e.which === p.navkeys[2]){ //down
  1324. $("#nData", "#"+frmtb+"_2").trigger("click");
  1325. return false;
  1326. }
  1327. }
  1328. });
  1329. p.closeicon = $.extend([true,"left", styles.icon_close ],p.closeicon);
  1330. if(p.closeicon[0]===true) {
  1331. $("#cData","#"+frmtb+"_2").addClass(p.closeicon[1] === "right" ? 'fm-button-icon-right' : 'fm-button-icon-left')
  1332. .append("<span class='" + commonstyle.icon_base+ " " +p.closeicon[2]+"'></span>");
  1333. }
  1334. $($t).triggerHandler("jqGridViewRowBeforeShowForm", [$("#"+frmgr)]);
  1335. if($.isFunction(p.beforeShowForm)) {p.beforeShowForm.call($t,$("#"+frmgr));}
  1336. $.jgrid.viewModal("#"+$.jgrid.jqID(IDs.themodal),{
  1337. gbox:"#gbox_"+$.jgrid.jqID(gID),
  1338. jqm:p.jqModal,
  1339. overlay: p.overlay,
  1340. modal:p.modal,
  1341. onHide : function(h) {
  1342. $($t).data("viewProp", {
  1343. top:parseFloat($(h.w).css("top")),
  1344. left : parseFloat($(h.w).css("left")),
  1345. width : $(h.w).width(),
  1346. height : $(h.w).height(),
  1347. dataheight : $("#"+frmgr).height(),
  1348. datawidth: $("#"+frmgr).width()
  1349. });
  1350. h.w.remove();
  1351. if(h.o) {h.o.remove();}
  1352. }
  1353. });
  1354. $(".fm-button:not(." + commonstyle.disabled + ")","#"+frmtb+"_2").hover(
  1355. function(){$(this).addClass( commonstyle.hover );},
  1356. function(){$(this).removeClass( commonstyle.hover );}
  1357. );
  1358. focusaref();
  1359. $("#cData", "#"+frmtb+"_2").click(function(){
  1360. $.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: p.onClose, removemodal: rp_ge[$t.p.id].removemodal, formprop: !rp_ge[$t.p.id].recreateForm, form: rp_ge[$t.p.id].form});
  1361. return false;
  1362. });
  1363. $("#"+frmtb+"_2").find("[data-index]").each(function(){
  1364. var index = parseInt($(this).attr('data-index'),10);
  1365. if(index >=0 ) {
  1366. if( p.buttons[index].hasOwnProperty('click')) {
  1367. $(this).on('click', function(e) {
  1368. p.buttons[index].click.call($t, $("#"+frmgr_id)[0], rp_ge[$t.p.id], e);
  1369. });
  1370. }
  1371. }
  1372. });
  1373. $("#nData", "#"+frmtb+"_2").click(function(){
  1374. $("#FormError","#"+frmtb).hide();
  1375. var npos = getCurrPos();
  1376. npos[0] = parseInt(npos[0],10);
  1377. if(npos[0] !== -1 && npos[1][npos[0]+1]) {
  1378. $($t).triggerHandler("jqGridViewRowClickPgButtons", ['next',$("#"+frmgr),npos[1][npos[0]]]);
  1379. if($.isFunction(p.onclickPgButtons)) {
  1380. p.onclickPgButtons.call($t,'next',$("#"+frmgr),npos[1][npos[0]]);
  1381. }
  1382. fillData(npos[1][npos[0]+1],$t);
  1383. $($t).jqGrid("setSelection",npos[1][npos[0]+1]);
  1384. $($t).triggerHandler("jqGridViewRowAfterClickPgButtons", ['next',$("#"+frmgr),npos[1][npos[0]+1]]);
  1385. if($.isFunction(p.afterclickPgButtons)) {
  1386. p.afterclickPgButtons.call($t,'next',$("#"+frmgr),npos[1][npos[0]+1]);
  1387. }
  1388. updateNav(npos[0]+1,npos);
  1389. }
  1390. focusaref();
  1391. return false;
  1392. });
  1393. $("#pData", "#"+frmtb+"_2").click(function(){
  1394. $("#FormError","#"+frmtb).hide();
  1395. var ppos = getCurrPos();
  1396. if(ppos[0] !== -1 && ppos[1][ppos[0]-1]) {
  1397. $($t).triggerHandler("jqGridViewRowClickPgButtons", ['prev',$("#"+frmgr),ppos[1][ppos[0]]]);
  1398. if($.isFunction(p.onclickPgButtons)) {
  1399. p.onclickPgButtons.call($t,'prev',$("#"+frmgr),ppos[1][ppos[0]]);
  1400. }
  1401. fillData(ppos[1][ppos[0]-1],$t);
  1402. $($t).jqGrid("setSelection",ppos[1][ppos[0]-1]);
  1403. $($t).triggerHandler("jqGridViewRowAfterClickPgButtons", ['prev',$("#"+frmgr),ppos[1][ppos[0]-1]]);
  1404. if($.isFunction(p.afterclickPgButtons)) {
  1405. p.afterclickPgButtons.call($t,'prev',$("#"+frmgr),ppos[1][ppos[0]-1]);
  1406. }
  1407. updateNav(ppos[0]-1,ppos);
  1408. }
  1409. focusaref();
  1410. return false;
  1411. });
  1412. var posInit =getCurrPos();
  1413. updateNav(posInit[0],posInit);
  1414. });
  1415. },
  1416. delGridRow : function(rowids,p) {
  1417. var regional = $.jgrid.getRegional(this[0], 'del'),
  1418. currstyle = this[0].p.styleUI,
  1419. styles = $.jgrid.styleUI[currstyle].formedit,
  1420. commonstyle = $.jgrid.styleUI[currstyle].common;
  1421. p = $.extend(true, {
  1422. top : 0,
  1423. left: 0,
  1424. width: 240,
  1425. height: 'auto',
  1426. dataheight : 'auto',
  1427. modal: false,
  1428. overlay: 30,
  1429. drag: true,
  1430. resize: true,
  1431. url : '',
  1432. mtype : "POST",
  1433. reloadAfterSubmit: true,
  1434. beforeShowForm: null,
  1435. beforeInitData : null,
  1436. afterShowForm: null,
  1437. beforeSubmit: null,
  1438. onclickSubmit: null,
  1439. afterSubmit: null,
  1440. jqModal : true,
  1441. closeOnEscape : false,
  1442. delData: {},
  1443. delicon : [],
  1444. cancelicon : [],
  1445. onClose : null,
  1446. ajaxDelOptions : {},
  1447. processing : false,
  1448. serializeDelData : null,
  1449. useDataProxy : false
  1450. }, regional, p ||{});
  1451. rp_ge[$(this)[0].p.id] = p;
  1452. return this.each(function(){
  1453. var $t = this;
  1454. if (!$t.grid ) {return;}
  1455. if(!rowids) {return;}
  1456. var gID = $t.p.id, onCS = {},
  1457. showFrm = true,
  1458. dtbl = "DelTbl_"+$.jgrid.jqID(gID),postd, idname, opers, oper,
  1459. dtbl_id = "DelTbl_" + gID,
  1460. IDs = {themodal:'delmod'+gID,modalhead:'delhd'+gID,modalcontent:'delcnt'+gID, scrollelm: dtbl};
  1461. rp_ge[$t.p.id].styleUI = $t.p.styleUI || 'jQueryUI';
  1462. if ($.isArray(rowids)) {rowids = rowids.join();}
  1463. if ( $("#"+$.jgrid.jqID(IDs.themodal))[0] !== undefined ) {
  1464. showFrm = $($t).triggerHandler("jqGridDelRowBeforeInitData", [$("#"+dtbl)]);
  1465. if(showFrm === undefined) {
  1466. showFrm = true;
  1467. }
  1468. if(showFrm && $.isFunction(rp_ge[$t.p.id].beforeInitData)) {
  1469. showFrm = rp_ge[$t.p.id].beforeInitData.call($t, $("#"+dtbl));
  1470. }
  1471. if(showFrm === false) {return;}
  1472. $("#DelData>td","#"+dtbl).text(rowids);
  1473. $("#DelError","#"+dtbl).hide();
  1474. if( rp_ge[$t.p.id].processing === true) {
  1475. rp_ge[$t.p.id].processing=false;
  1476. $("#dData", "#"+dtbl).removeClass( commonstyle.active );
  1477. }
  1478. $($t).triggerHandler("jqGridDelRowBeforeShowForm", [$("#"+dtbl)]);
  1479. if($.isFunction( rp_ge[$t.p.id].beforeShowForm )) {
  1480. rp_ge[$t.p.id].beforeShowForm.call($t,$("#"+dtbl));
  1481. }
  1482. $.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});
  1483. $($t).triggerHandler("jqGridDelRowAfterShowForm", [$("#"+dtbl)]);
  1484. if($.isFunction( rp_ge[$t.p.id].afterShowForm )) {
  1485. rp_ge[$t.p.id].afterShowForm.call($t, $("#"+dtbl));
  1486. }
  1487. } else {
  1488. var dh = isNaN(rp_ge[$t.p.id].dataheight) ? rp_ge[$t.p.id].dataheight : rp_ge[$t.p.id].dataheight+"px",
  1489. dw = isNaN(p.datawidth) ? p.datawidth : p.datawidth+"px",
  1490. tbl = "<div id='"+dtbl_id+"' class='formdata' style='width:"+dw+";overflow:auto;position:relative;height:"+dh+";'>";
  1491. tbl += "<table class='DelTable'><tbody>";
  1492. // error data
  1493. tbl += "<tr id='DelError' style='display:none'><td class='" + commonstyle.error +"'></td></tr>";
  1494. tbl += "<tr id='DelData' style='display:none'><td >"+rowids+"</td></tr>";
  1495. tbl += "<tr><td class=\"delmsg\" style=\"white-space:pre;\">"+rp_ge[$t.p.id].msg+"</td></tr><tr><td >&#160;</td></tr>";
  1496. // buttons at footer
  1497. tbl += "</tbody></table></div>";
  1498. var bS = "<a id='dData' class='fm-button " + commonstyle.button + "'>"+p.bSubmit+"</a>",
  1499. bC = "<a id='eData' class='fm-button " + commonstyle.button + "'>"+p.bCancel+"</a>",
  1500. user_buttons = ( $.isArray( rp_ge[$t.p.id].buttons ) ? $.jgrid.buildButtons( rp_ge[$t.p.id].buttons, bS + bC, commonstyle ) : bS + bC ),
  1501. fs = $('.ui-jqgrid').css('font-size') || '11px';
  1502. tbl += "<table class='EditTable ui-common-table' id='"+dtbl+"_2'><tbody><tr><td><hr class='" + commonstyle.content + "' style='margin:1px'/></td></tr><tr><td class='DelButton EditButton'>"+ user_buttons +"</td></tr></tbody></table>";
  1503. p.gbox = "#gbox_"+$.jgrid.jqID(gID);
  1504. $.jgrid.createModal(IDs,tbl, rp_ge[$t.p.id] ,"#gview_"+$.jgrid.jqID($t.p.id),$("#gview_"+$.jgrid.jqID($t.p.id))[0], null, {"font-size": fs});
  1505. $(".fm-button","#"+dtbl+"_2").hover(
  1506. function(){$(this).addClass( commonstyle.hover );},
  1507. function(){$(this).removeClass( commonstyle.hover );}
  1508. );
  1509. p.delicon = $.extend([true,"left", styles.icon_del ],rp_ge[$t.p.id].delicon);
  1510. p.cancelicon = $.extend([true,"left", styles.icon_cancel ],rp_ge[$t.p.id].cancelicon);
  1511. if(p.delicon[0]===true) {
  1512. $("#dData","#"+dtbl+"_2").addClass(p.delicon[1] === "right" ? 'fm-button-icon-right' : 'fm-button-icon-left')
  1513. .append("<span class='" + commonstyle.icon_base + " " + p.delicon[2]+"'></span>");
  1514. }
  1515. if(p.cancelicon[0]===true) {
  1516. $("#eData","#"+dtbl+"_2").addClass(p.cancelicon[1] === "right" ? 'fm-button-icon-right' : 'fm-button-icon-left')
  1517. .append("<span class='" + commonstyle.icon_base + " " + p.cancelicon[2]+"'></span>");
  1518. }
  1519. $("#dData","#"+dtbl+"_2").click(function(){
  1520. var ret=[true,""], pk,
  1521. postdata = $("#DelData>td","#"+dtbl).text(); //the pair is name=val1,val2,...
  1522. onCS = {};
  1523. onCS = $($t).triggerHandler("jqGridDelRowClickSubmit", [rp_ge[$t.p.id], postdata]);
  1524. if(onCS === undefined && $.isFunction( rp_ge[$t.p.id].onclickSubmit ) ) {
  1525. onCS = rp_ge[$t.p.id].onclickSubmit.call($t, rp_ge[$t.p.id], postdata) || {};
  1526. }
  1527. ret = $($t).triggerHandler("jqGridDelRowBeforeSubmit", [postdata]);
  1528. if(ret === undefined) {
  1529. ret = [true,"",""];
  1530. }
  1531. if( ret[0] && $.isFunction(rp_ge[$t.p.id].beforeSubmit)) {
  1532. ret = rp_ge[$t.p.id].beforeSubmit.call($t, postdata);
  1533. }
  1534. if(ret[0] && !rp_ge[$t.p.id].processing) {
  1535. rp_ge[$t.p.id].processing = true;
  1536. opers = $t.p.prmNames;
  1537. postd = $.extend({},rp_ge[$t.p.id].delData, onCS);
  1538. oper = opers.oper;
  1539. postd[oper] = opers.deloper;
  1540. idname = opers.id;
  1541. postdata = String(postdata).split(",");
  1542. if(!postdata.length) { return false; }
  1543. for(pk in postdata) {
  1544. if(postdata.hasOwnProperty(pk)) {
  1545. postdata[pk] = $.jgrid.stripPref($t.p.idPrefix, postdata[pk]);
  1546. }
  1547. }
  1548. postd[idname] = postdata.join();
  1549. $(this).addClass( commonstyle.active );
  1550. var ajaxOptions = $.extend({
  1551. url: rp_ge[$t.p.id].url || $($t).jqGrid('getGridParam','editurl'),
  1552. type: rp_ge[$t.p.id].mtype,
  1553. data: $.isFunction(rp_ge[$t.p.id].serializeDelData) ? rp_ge[$t.p.id].serializeDelData.call($t,postd) : postd,
  1554. complete:function(data,status){
  1555. var i;
  1556. $("#dData", "#"+dtbl+"_2").removeClass( commonstyle.active );
  1557. if(data.status >= 300 && data.status !== 304) {
  1558. ret[0] = false;
  1559. ret[1] = $($t).triggerHandler("jqGridDelRowErrorTextFormat", [data]);
  1560. if ($.isFunction(rp_ge[$t.p.id].errorTextFormat)) {
  1561. ret[1] = rp_ge[$t.p.id].errorTextFormat.call($t, data);
  1562. }
  1563. if(ret[1] === undefined) {
  1564. ret[1] = status + " Status: '" + data.statusText + "'. Error code: " + data.status;
  1565. }
  1566. } else {
  1567. // data is posted successful
  1568. // execute aftersubmit with the returned data from server
  1569. ret = $($t).triggerHandler("jqGridDelRowAfterSubmit", [data, postd]);
  1570. if(ret === undefined) {
  1571. ret = [true,"",""];
  1572. }
  1573. if( ret[0] && $.isFunction(rp_ge[$t.p.id].afterSubmit) ) {
  1574. ret = rp_ge[$t.p.id].afterSubmit.call($t, data, postd);
  1575. }
  1576. }
  1577. if(ret[0] === false) {
  1578. $("#DelError>td","#"+dtbl).html(ret[1]);
  1579. $("#DelError","#"+dtbl).show();
  1580. } else {
  1581. if(rp_ge[$t.p.id].reloadAfterSubmit && $t.p.datatype !== "local") {
  1582. $($t).trigger("reloadGrid");
  1583. } else {
  1584. if($t.p.treeGrid===true){
  1585. try {$($t).jqGrid("delTreeNode",$t.p.idPrefix+postdata[0]);} catch(e){}
  1586. } else {
  1587. for(i=0;i<postdata.length;i++) {
  1588. $($t).jqGrid("delRowData",$t.p.idPrefix+ postdata[i]);
  1589. }
  1590. }
  1591. $t.p.selrow = null;
  1592. $t.p.selarrrow = [];
  1593. }
  1594. if($.isFunction(rp_ge[$t.p.id].afterComplete) || $._data( $($t)[0], 'events' ).hasOwnProperty('jqGridDelRowAfterComplete')) {
  1595. var copydata = data;
  1596. setTimeout(function(){
  1597. $($t).triggerHandler("jqGridDelRowAfterComplete", [copydata, postd]);
  1598. try {
  1599. rp_ge[$t.p.id].afterComplete.call($t, copydata, postd);
  1600. } catch(eacg) {
  1601. // do nothing
  1602. }
  1603. },500);
  1604. }
  1605. }
  1606. rp_ge[$t.p.id].processing=false;
  1607. if(ret[0]) {$.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});}
  1608. }
  1609. }, $.jgrid.ajaxOptions, rp_ge[$t.p.id].ajaxDelOptions);
  1610. if (!ajaxOptions.url && !rp_ge[$t.p.id].useDataProxy) {
  1611. if ($.isFunction($t.p.dataProxy)) {
  1612. rp_ge[$t.p.id].useDataProxy = true;
  1613. } else {
  1614. ret[0]=false;ret[1] += " "+$.jgrid.getRegional($t, 'errors.nourl');
  1615. }
  1616. }
  1617. if (ret[0]) {
  1618. if (rp_ge[$t.p.id].useDataProxy) {
  1619. var dpret = $t.p.dataProxy.call($t, ajaxOptions, "del_"+$t.p.id);
  1620. if(dpret === undefined) {
  1621. dpret = [true, ""];
  1622. }
  1623. if(dpret[0] === false ) {
  1624. ret[0] = false;
  1625. ret[1] = dpret[1] || "Error deleting the selected row!" ;
  1626. } else {
  1627. $.jgrid.hideModal("#"+$.jgrid.jqID(IDs.themodal),{gb:"#gbox_"+$.jgrid.jqID(gID),jqm:p.jqModal, onClose: rp_ge[$t.p.id].onClose});
  1628. }
  1629. }
  1630. else {
  1631. if(ajaxOptions.url === "clientArray") {
  1632. postd = ajaxOptions.data;
  1633. ajaxOptions.complete({status:200, statusText:''},'');
  1634. } else {
  1635. $.ajax(ajaxOptions);
  1636. }
  1637. }
  1638. }
  1639. }
  1640. if(ret[0] === false) {
  1641. $("#DelError>td","#"+dtbl).html(ret[1]);
  1642. $("#DelError","#"+dtbl).show();
  1643. }
  1644. return false;
  1645. });
  1646. $("#eData", "#"+dtbl+"_2").click(function(){
  1647. $.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});
  1648. return false;
  1649. });
  1650. $("#"+dtbl+"_2").find("[data-index]").each(function(){
  1651. var index = parseInt($(this).attr('data-index'),10);
  1652. if(index >=0 ) {
  1653. if( p.buttons[index].hasOwnProperty('click')) {
  1654. $(this).on('click', function(e) {
  1655. p.buttons[index].click.call($t, $("#"+dtbl_id)[0], rp_ge[$t.p.id], e);
  1656. });
  1657. }
  1658. }
  1659. });
  1660. showFrm = $($t).triggerHandler("jqGridDelRowBeforeInitData", [$("#"+dtbl)]);
  1661. if(showFrm === undefined) {
  1662. showFrm = true;
  1663. }
  1664. if(showFrm && $.isFunction(rp_ge[$t.p.id].beforeInitData)) {
  1665. showFrm = rp_ge[$t.p.id].beforeInitData.call($t, $("#"+dtbl));
  1666. }
  1667. if(showFrm === false) {return;}
  1668. $($t).triggerHandler("jqGridDelRowBeforeShowForm", [$("#"+dtbl)]);
  1669. if($.isFunction( rp_ge[$t.p.id].beforeShowForm )) {
  1670. rp_ge[$t.p.id].beforeShowForm.call($t,$("#"+dtbl));
  1671. }
  1672. $.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});
  1673. $($t).triggerHandler("jqGridDelRowAfterShowForm", [$("#"+dtbl)]);
  1674. if($.isFunction( rp_ge[$t.p.id].afterShowForm )) {
  1675. rp_ge[$t.p.id].afterShowForm.call($t,$("#"+dtbl));
  1676. }
  1677. }
  1678. if(rp_ge[$t.p.id].closeOnEscape===true) {
  1679. setTimeout(function(){$(".ui-jqdialog-titlebar-close","#"+$.jgrid.jqID(IDs.modalhead)).attr("tabindex","-1").focus();},0);
  1680. }
  1681. });
  1682. },
  1683. navGrid : function (elem, p, pEdit, pAdd, pDel, pSearch, pView) {
  1684. var regional = $.jgrid.getRegional(this[0], 'nav'),
  1685. currstyle = this[0].p.styleUI,
  1686. styles = $.jgrid.styleUI[currstyle].navigator,
  1687. commonstyle = $.jgrid.styleUI[currstyle].common;
  1688. p = $.extend({
  1689. edit: true,
  1690. editicon: styles.icon_edit_nav,
  1691. add: true,
  1692. addicon: styles.icon_add_nav,
  1693. del: true,
  1694. delicon: styles.icon_del_nav,
  1695. search: true,
  1696. searchicon: styles.icon_search_nav,
  1697. refresh: true,
  1698. refreshicon: styles.icon_refresh_nav,
  1699. refreshstate: 'firstpage',
  1700. view: false,
  1701. viewicon : styles.icon_view_nav,
  1702. position : "left",
  1703. closeOnEscape : true,
  1704. beforeRefresh : null,
  1705. afterRefresh : null,
  1706. cloneToTop : false,
  1707. alertwidth : 200,
  1708. alertheight : 'auto',
  1709. alerttop: null,
  1710. alertleft: null,
  1711. alertzIndex : null,
  1712. dropmenu : false,
  1713. navButtonText : ''
  1714. }, regional, p ||{});
  1715. return this.each(function() {
  1716. if(this.p.navGrid) {return;}
  1717. var alertIDs = {themodal: 'alertmod_' + this.p.id, modalhead: 'alerthd_' + this.p.id,modalcontent: 'alertcnt_' + this.p.id},
  1718. $t = this, twd, tdw, o;
  1719. if(!$t.grid || typeof elem !== 'string') {return;}
  1720. if(!$($t).data('navGrid')) {
  1721. $($t).data('navGrid',p);
  1722. }
  1723. // speedoverhead, but usefull for future
  1724. o = $($t).data('navGrid');
  1725. if($t.p.force_regional) {
  1726. o = $.extend(o, regional);
  1727. }
  1728. if ($("#"+alertIDs.themodal)[0] === undefined) {
  1729. if(!o.alerttop && !o.alertleft) {
  1730. if (window.innerWidth !== undefined) {
  1731. o.alertleft = window.innerWidth;
  1732. o.alerttop = window.innerHeight;
  1733. } else if (document.documentElement !== undefined && document.documentElement.clientWidth !== undefined && document.documentElement.clientWidth !== 0) {
  1734. o.alertleft = document.documentElement.clientWidth;
  1735. o.alerttop = document.documentElement.clientHeight;
  1736. } else {
  1737. o.alertleft=1024;
  1738. o.alerttop=768;
  1739. }
  1740. o.alertleft = o.alertleft/2 - parseInt(o.alertwidth,10)/2;
  1741. o.alerttop = o.alerttop/2-25;
  1742. }
  1743. var fs = $('.ui-jqgrid').css('font-size') || '11px';
  1744. $.jgrid.createModal(alertIDs,
  1745. "<div>"+o.alerttext+"</div><span tabindex='0'><span tabindex='-1' id='jqg_alrt'></span></span>",
  1746. {
  1747. gbox:"#gbox_"+$.jgrid.jqID($t.p.id),
  1748. jqModal:true,
  1749. drag:true,
  1750. resize:true,
  1751. caption:o.alertcap,
  1752. top:o.alerttop,
  1753. left:o.alertleft,
  1754. width:o.alertwidth,
  1755. height: o.alertheight,
  1756. closeOnEscape:o.closeOnEscape,
  1757. zIndex: o.alertzIndex,
  1758. styleUI: $t.p.styleUI
  1759. },
  1760. "#gview_"+$.jgrid.jqID($t.p.id),
  1761. $("#gbox_"+$.jgrid.jqID($t.p.id))[0],
  1762. true,
  1763. {"font-size": fs}
  1764. );
  1765. }
  1766. var clone = 1, i,
  1767. onHoverIn = function () {
  1768. if (!$(this).hasClass(commonstyle.disabled)) {
  1769. $(this).addClass(commonstyle.hover);
  1770. }
  1771. },
  1772. onHoverOut = function () {
  1773. $(this).removeClass(commonstyle.hover);
  1774. };
  1775. if(o.cloneToTop && $t.p.toppager) {clone = 2;}
  1776. for(i = 0; i<clone; i++) {
  1777. var tbd,
  1778. navtbl = $("<table class='ui-pg-table navtable ui-common-table'><tbody><tr></tr></tbody></table>"),
  1779. sep = "<td class='ui-pg-button " +commonstyle.disabled + "' style='width:4px;'><span class='ui-separator'></span></td>",
  1780. pgid, elemids;
  1781. if(i===0) {
  1782. pgid = elem;
  1783. elemids = $t.p.id;
  1784. if(pgid === $t.p.toppager) {
  1785. elemids += "_top";
  1786. clone = 1;
  1787. }
  1788. } else {
  1789. pgid = $t.p.toppager;
  1790. elemids = $t.p.id+"_top";
  1791. }
  1792. if($t.p.direction === "rtl") {
  1793. $(navtbl).attr("dir","rtl").css("float","right");
  1794. }
  1795. pAdd = pAdd || {};
  1796. if (o.add) {
  1797. tbd = $("<td class='ui-pg-button "+commonstyle.cornerall+"'></td>");
  1798. $(tbd).append("<div class='ui-pg-div'><span class='"+commonstyle.icon_base +" " +o.addicon+"'></span>"+o.addtext+"</div>");
  1799. $("tr",navtbl).append(tbd);
  1800. $(tbd,navtbl)
  1801. .attr({"title":o.addtitle || "",id : pAdd.id || "add_"+elemids})
  1802. .click(function(){
  1803. if (!$(this).hasClass( commonstyle.disabled )) {
  1804. if ($.isFunction( o.addfunc )) {
  1805. o.addfunc.call($t);
  1806. } else {
  1807. $($t).jqGrid("editGridRow","new",pAdd);
  1808. }
  1809. }
  1810. return false;
  1811. }).hover(onHoverIn, onHoverOut);
  1812. tbd = null;
  1813. }
  1814. pEdit = pEdit || {};
  1815. if (o.edit) {
  1816. tbd = $("<td class='ui-pg-button "+commonstyle.cornerall+"'></td>");
  1817. $(tbd).append("<div class='ui-pg-div'><span class='"+commonstyle.icon_base+" "+o.editicon+"'></span>"+o.edittext+"</div>");
  1818. $("tr",navtbl).append(tbd);
  1819. $(tbd,navtbl)
  1820. .attr({"title":o.edittitle || "",id: pEdit.id || "edit_"+elemids})
  1821. .click(function(){
  1822. if (!$(this).hasClass( commonstyle.disabled )) {
  1823. var sr = $t.p.selrow;
  1824. if (sr) {
  1825. if($.isFunction( o.editfunc ) ) {
  1826. o.editfunc.call($t, sr);
  1827. } else {
  1828. $($t).jqGrid("editGridRow",sr,pEdit);
  1829. }
  1830. } else {
  1831. $.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:true});
  1832. $("#jqg_alrt").focus();
  1833. }
  1834. }
  1835. return false;
  1836. }).hover(onHoverIn, onHoverOut);
  1837. tbd = null;
  1838. }
  1839. pView = pView || {};
  1840. if (o.view) {
  1841. tbd = $("<td class='ui-pg-button "+commonstyle.cornerall+"'></td>");
  1842. $(tbd).append("<div class='ui-pg-div'><span class='"+commonstyle.icon_base+" "+o.viewicon+"'></span>"+o.viewtext+"</div>");
  1843. $("tr",navtbl).append(tbd);
  1844. $(tbd,navtbl)
  1845. .attr({"title":o.viewtitle || "",id: pView.id || "view_"+elemids})
  1846. .click(function(){
  1847. if (!$(this).hasClass( commonstyle.disabled )) {
  1848. var sr = $t.p.selrow;
  1849. if (sr) {
  1850. if($.isFunction( o.viewfunc ) ) {
  1851. o.viewfunc.call($t, sr);
  1852. } else {
  1853. $($t).jqGrid("viewGridRow",sr,pView);
  1854. }
  1855. } else {
  1856. $.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:true});
  1857. $("#jqg_alrt").focus();
  1858. }
  1859. }
  1860. return false;
  1861. }).hover(onHoverIn, onHoverOut);
  1862. tbd = null;
  1863. }
  1864. pDel = pDel || {};
  1865. if (o.del) {
  1866. tbd = $("<td class='ui-pg-button "+commonstyle.cornerall+"'></td>");
  1867. $(tbd).append("<div class='ui-pg-div'><span class='"+commonstyle.icon_base+" "+o.delicon+"'></span>"+o.deltext+"</div>");
  1868. $("tr",navtbl).append(tbd);
  1869. $(tbd,navtbl)
  1870. .attr({"title":o.deltitle || "",id: pDel.id || "del_"+elemids})
  1871. .click(function(){
  1872. if (!$(this).hasClass( commonstyle.disabled )) {
  1873. var dr;
  1874. if($t.p.multiselect) {
  1875. dr = $t.p.selarrrow;
  1876. if(dr.length===0) {dr = null;}
  1877. } else {
  1878. dr = $t.p.selrow;
  1879. }
  1880. if(dr){
  1881. if($.isFunction( o.delfunc )){
  1882. o.delfunc.call($t, dr);
  1883. }else{
  1884. $($t).jqGrid("delGridRow",dr,pDel);
  1885. }
  1886. } else {
  1887. $.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:true});$("#jqg_alrt").focus();
  1888. }
  1889. }
  1890. return false;
  1891. }).hover(onHoverIn, onHoverOut);
  1892. tbd = null;
  1893. }
  1894. if(o.add || o.edit || o.del || o.view) {$("tr",navtbl).append(sep);}
  1895. pSearch = pSearch || {};
  1896. if (o.search) {
  1897. tbd = $("<td class='ui-pg-button "+commonstyle.cornerall+"'></td>");
  1898. $(tbd).append("<div class='ui-pg-div'><span class='"+commonstyle.icon_base+" "+o.searchicon+"'></span>"+o.searchtext+"</div>");
  1899. $("tr",navtbl).append(tbd);
  1900. $(tbd,navtbl)
  1901. .attr({"title":o.searchtitle || "",id:pSearch.id || "search_"+elemids})
  1902. .click(function(){
  1903. if (!$(this).hasClass( commonstyle.disabled )) {
  1904. if($.isFunction( o.searchfunc )) {
  1905. o.searchfunc.call($t, pSearch);
  1906. } else {
  1907. $($t).jqGrid("searchGrid",pSearch);
  1908. }
  1909. }
  1910. return false;
  1911. }).hover(onHoverIn, onHoverOut);
  1912. if (pSearch.showOnLoad && pSearch.showOnLoad === true) {
  1913. $(tbd,navtbl).click();
  1914. }
  1915. tbd = null;
  1916. }
  1917. if (o.refresh) {
  1918. tbd = $("<td class='ui-pg-button "+commonstyle.cornerall+"'></td>");
  1919. $(tbd).append("<div class='ui-pg-div'><span class='"+commonstyle.icon_base+" "+o.refreshicon+"'></span>"+o.refreshtext+"</div>");
  1920. $("tr",navtbl).append(tbd);
  1921. $(tbd,navtbl)
  1922. .attr({"title":o.refreshtitle || "",id: "refresh_"+elemids})
  1923. .click(function(){
  1924. if (!$(this).hasClass( commonstyle.disabled )) {
  1925. if($.isFunction(o.beforeRefresh)) {o.beforeRefresh.call($t);}
  1926. $t.p.search = false;
  1927. $t.p.resetsearch = true;
  1928. try {
  1929. if( o.refreshstate !== 'currentfilter') {
  1930. var gID = $t.p.id;
  1931. $t.p.postData.filters ="";
  1932. try {
  1933. $("#fbox_"+$.jgrid.jqID(gID)).jqFilter('resetFilter');
  1934. } catch(ef) {}
  1935. if($.isFunction($t.clearToolbar)) {$t.clearToolbar.call($t,false);}
  1936. }
  1937. } catch (e) {}
  1938. switch (o.refreshstate) {
  1939. case 'firstpage':
  1940. $($t).trigger("reloadGrid", [{page:1}]);
  1941. break;
  1942. case 'current':
  1943. case 'currentfilter':
  1944. $($t).trigger("reloadGrid", [{current:true}]);
  1945. break;
  1946. }
  1947. if($.isFunction(o.afterRefresh)) {o.afterRefresh.call($t);}
  1948. }
  1949. return false;
  1950. }).hover(onHoverIn, onHoverOut);
  1951. tbd = null;
  1952. }
  1953. tdw = $(".ui-jqgrid").css("font-size") || "11px";
  1954. $('body').append("<div id='testpg2' class='ui-jqgrid "+$.jgrid.styleUI[currstyle].base.entrieBox+"' style='font-size:"+tdw+";visibility:hidden;' ></div>");
  1955. twd = $(navtbl).clone().appendTo("#testpg2").width();
  1956. $("#testpg2").remove();
  1957. if($t.p._nvtd) {
  1958. if(o.dropmenu) {
  1959. navtbl = null;
  1960. $($t).jqGrid('_buildNavMenu', pgid, elemids, p, pEdit, pAdd, pDel, pSearch, pView );
  1961. } else if(twd > $t.p._nvtd[0] ) {
  1962. if($t.p.responsive) {
  1963. navtbl = null;
  1964. $($t).jqGrid('_buildNavMenu', pgid, elemids, p, pEdit, pAdd, pDel, pSearch, pView );
  1965. } else {
  1966. $(pgid+"_"+o.position,pgid).append(navtbl).width(twd);
  1967. }
  1968. $t.p._nvtd[0] = twd;
  1969. } else {
  1970. $(pgid+"_"+o.position,pgid).append(navtbl);
  1971. }
  1972. $t.p._nvtd[1] = twd;
  1973. }
  1974. $t.p.navGrid = true;
  1975. }
  1976. if($t.p.storeNavOptions) {
  1977. $t.p.navOptions = o;
  1978. $t.p.editOptions = pEdit;
  1979. $t.p.addOptions = pAdd;
  1980. $t.p.delOptions = pDel;
  1981. $t.p.searchOptions = pSearch;
  1982. $t.p.viewOptions = pView;
  1983. $t.p.navButtons =[];
  1984. }
  1985. });
  1986. },
  1987. navButtonAdd : function (elem, p) {
  1988. var currstyle = this[0].p.styleUI,
  1989. styles = $.jgrid.styleUI[currstyle].navigator;
  1990. p = $.extend({
  1991. caption : "newButton",
  1992. title: '',
  1993. buttonicon : styles.icon_newbutton_nav,
  1994. onClickButton: null,
  1995. position : "last",
  1996. cursor : 'pointer',
  1997. internal : false
  1998. }, p ||{});
  1999. return this.each(function() {
  2000. if( !this.grid) {return;}
  2001. if( typeof elem === "string" && elem.indexOf("#") !== 0) {elem = "#"+$.jgrid.jqID(elem);}
  2002. var findnav = $(".navtable",elem)[0], $t = this,
  2003. //getstyle = $.jgrid.getMethod("getStyleUI"),
  2004. disabled = $.jgrid.styleUI[currstyle].common.disabled,
  2005. hover = $.jgrid.styleUI[currstyle].common.hover,
  2006. cornerall = $.jgrid.styleUI[currstyle].common.cornerall,
  2007. iconbase = $.jgrid.styleUI[currstyle].common.icon_base;
  2008. if ($t.p.storeNavOptions && !p.internal) {
  2009. $t.p.navButtons.push([elem,p]);
  2010. }
  2011. if (findnav) {
  2012. if( p.id && $("#"+$.jgrid.jqID(p.id), findnav)[0] !== undefined ) {return;}
  2013. var tbd = $("<td></td>");
  2014. if(p.buttonicon.toString().toUpperCase() === "NONE") {
  2015. $(tbd).addClass('ui-pg-button '+cornerall).append("<div class='ui-pg-div'>"+p.caption+"</div>");
  2016. } else {
  2017. $(tbd).addClass('ui-pg-button '+cornerall).append("<div class='ui-pg-div'><span class='"+iconbase+" "+p.buttonicon+"'></span>"+p.caption+"</div>");
  2018. }
  2019. if(p.id) {$(tbd).attr("id",p.id);}
  2020. if(p.position==='first'){
  2021. if(findnav.rows[0].cells.length ===0 ) {
  2022. $("tr",findnav).append(tbd);
  2023. } else {
  2024. $("tr td:eq(0)",findnav).before(tbd);
  2025. }
  2026. } else {
  2027. $("tr",findnav).append(tbd);
  2028. }
  2029. $(tbd,findnav)
  2030. .attr("title",p.title || "")
  2031. .click(function(e){
  2032. if (!$(this).hasClass(disabled)) {
  2033. if ($.isFunction(p.onClickButton) ) {p.onClickButton.call($t,e);}
  2034. }
  2035. return false;
  2036. })
  2037. .hover(
  2038. function () {
  2039. if (!$(this).hasClass(disabled)) {
  2040. $(this).addClass(hover);
  2041. }
  2042. },
  2043. function () {$(this).removeClass(hover);}
  2044. );
  2045. } else {
  2046. findnav = $(".dropdownmenu",elem)[0];
  2047. if (findnav) {
  2048. var id = $(findnav).val(),
  2049. eid = p.id || $.jgrid.randId(),
  2050. item = $('<li class="ui-menu-item" role="presentation"><a class="'+ cornerall+' g-menu-item" tabindex="0" role="menuitem" id="'+eid+'">'+(p.caption || p.title)+'</a></li>');
  2051. if(id) {
  2052. if(p.position === 'first') {
  2053. $("#"+id).prepend( item );
  2054. } else {
  2055. $("#"+id).append( item );
  2056. }
  2057. $(item).on("click", function(e){
  2058. if (!$(this).hasClass(disabled)) {
  2059. $("#"+id).hide();
  2060. if ($.isFunction(p.onClickButton) ) {
  2061. p.onClickButton.call($t,e);
  2062. }
  2063. }
  2064. return false;
  2065. }).find("a")
  2066. .hover(
  2067. function () {
  2068. if (!$(this).hasClass(disabled)) {
  2069. $(this).addClass(hover);
  2070. }
  2071. },
  2072. function () {$(this).removeClass(hover);}
  2073. );
  2074. }
  2075. }
  2076. }
  2077. });
  2078. },
  2079. navSeparatorAdd:function (elem,p) {
  2080. var currstyle = this[0].p.styleUI,
  2081. commonstyle = $.jgrid.styleUI[currstyle].common;
  2082. p = $.extend({
  2083. sepclass : "ui-separator",
  2084. sepcontent: '',
  2085. position : "last"
  2086. }, p ||{});
  2087. return this.each(function() {
  2088. if( !this.grid) {return;}
  2089. if( typeof elem === "string" && elem.indexOf("#") !== 0) {elem = "#"+$.jgrid.jqID(elem);}
  2090. var findnav = $(".navtable",elem)[0], sep, id;
  2091. if ( this.p.storeNavOptions ) {
  2092. this.p.navButtons.push([elem,p]);
  2093. }
  2094. if(findnav) {
  2095. sep = "<td class='ui-pg-button "+ commonstyle.disabled +"' style='width:4px;'><span class='"+p.sepclass+"'></span>"+p.sepcontent+"</td>";
  2096. if (p.position === 'first') {
  2097. if (findnav.rows[0].cells.length === 0) {
  2098. $("tr", findnav).append(sep);
  2099. } else {
  2100. $("tr td:eq(0)", findnav).before(sep);
  2101. }
  2102. } else {
  2103. $("tr", findnav).append(sep);
  2104. }
  2105. } else {
  2106. findnav = $(".dropdownmenu",elem)[0];
  2107. sep = "<li class='ui-menu-item " +commonstyle.disabled + "' style='width:100%' role='presentation'><hr class='ui-separator-li'></li>";
  2108. if(findnav) {
  2109. id = $(findnav).val();
  2110. if(id) {
  2111. if(p.position === "first") {
  2112. $("#"+id).prepend( sep );
  2113. } else {
  2114. $("#"+id).append( sep );
  2115. }
  2116. }
  2117. }
  2118. }
  2119. });
  2120. },
  2121. _buildNavMenu : function ( elem, elemids, p, pEdit, pAdd, pDel, pSearch, pView ) {
  2122. return this.each(function() {
  2123. var $t = this,
  2124. //actions = ['add','edit', 'del', 'view', 'search','refresh'],
  2125. regional = $.jgrid.getRegional($t, 'nav'),
  2126. currstyle = $t.p.styleUI,
  2127. styles = $.jgrid.styleUI[currstyle].navigator,
  2128. classes = $.jgrid.styleUI[currstyle].filter,
  2129. commonstyle = $.jgrid.styleUI[currstyle].common,
  2130. mid = "form_menu_"+$.jgrid.randId(),
  2131. bt = p.navButtonText ? p.navButtonText : regional.selectcaption || 'Actions',
  2132. act = "<button class='dropdownmenu "+commonstyle.button+"' value='"+mid+"'>" + bt +"</button>";
  2133. $(elem+"_"+p.position, elem).append( act );
  2134. var alertIDs = {themodal: 'alertmod_' + this.p.id, modalhead: 'alerthd_' + this.p.id,modalcontent: 'alertcnt_' + this.p.id},
  2135. _buildMenu = function() {
  2136. var fs = $('.ui-jqgrid').css('font-size') || '11px',
  2137. eid, itm,
  2138. str = $('<ul id="'+mid+'" class="ui-nav-menu modal-content" role="menu" tabindex="0" style="display:none;font-size:'+fs+'"></ul>');
  2139. if( p.add ) {
  2140. pAdd = pAdd || {};
  2141. eid = pAdd.id || "add_"+elemids;
  2142. itm = $('<li class="ui-menu-item" role="presentation"><a class="'+ commonstyle.cornerall+' g-menu-item" tabindex="0" role="menuitem" id="'+eid+'">'+(p.addtext || p.addtitle)+'</a></li>').click(function(){
  2143. if (!$(this).hasClass( commonstyle.disabled )) {
  2144. if ($.isFunction( p.addfunc )) {
  2145. p.addfunc.call($t);
  2146. } else {
  2147. $($t).jqGrid("editGridRow","new",pAdd);
  2148. }
  2149. $(str).hide();
  2150. }
  2151. return false;
  2152. });
  2153. $(str).append(itm);
  2154. }
  2155. if( p.edit ) {
  2156. pEdit = pEdit || {};
  2157. eid = pEdit.id || "edit_"+elemids;
  2158. itm = $('<li class="ui-menu-item" role="presentation"><a class="'+ commonstyle.cornerall+' g-menu-item" tabindex="0" role="menuitem" id="'+eid+'">'+(p.edittext || p.edittitle)+'</a></li>').click(function(){
  2159. if (!$(this).hasClass( commonstyle.disabled )) {
  2160. var sr = $t.p.selrow;
  2161. if (sr) {
  2162. if($.isFunction( p.editfunc ) ) {
  2163. p.editfunc.call($t, sr);
  2164. } else {
  2165. $($t).jqGrid("editGridRow",sr,pEdit);
  2166. }
  2167. } else {
  2168. $.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:true});
  2169. $("#jqg_alrt").focus();
  2170. }
  2171. $(str).hide();
  2172. }
  2173. return false;
  2174. });
  2175. $(str).append(itm);
  2176. }
  2177. if( p.view ) {
  2178. pView = pView || {};
  2179. eid = pView.id || "view_"+elemids;
  2180. itm = $('<li class="ui-menu-item" role="presentation"><a class="'+ commonstyle.cornerall+' g-menu-item" tabindex="0" role="menuitem" id="'+eid+'">'+(p.viewtext || p.viewtitle)+'</a></li>').click(function(){
  2181. if (!$(this).hasClass( commonstyle.disabled )) {
  2182. var sr = $t.p.selrow;
  2183. if (sr) {
  2184. if($.isFunction( p.editfunc ) ) {
  2185. p.viewfunc.call($t, sr);
  2186. } else {
  2187. $($t).jqGrid("viewGridRow",sr,pView);
  2188. }
  2189. } else {
  2190. $.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:true});
  2191. $("#jqg_alrt").focus();
  2192. }
  2193. $(str).hide();
  2194. }
  2195. return false;
  2196. });
  2197. $(str).append(itm);
  2198. }
  2199. if( p.del ) {
  2200. pDel = pDel || {};
  2201. eid = pDel.id || "del_"+elemids;
  2202. itm = $('<li class="ui-menu-item" role="presentation"><a class="'+ commonstyle.cornerall+' g-menu-item" tabindex="0" role="menuitem" id="'+eid+'">'+(p.deltext || p.deltitle)+'</a></li>').click(function(){
  2203. if (!$(this).hasClass( commonstyle.disabled )) {
  2204. var dr;
  2205. if($t.p.multiselect) {
  2206. dr = $t.p.selarrrow;
  2207. if(dr.length===0) {dr = null;}
  2208. } else {
  2209. dr = $t.p.selrow;
  2210. }
  2211. if(dr){
  2212. if($.isFunction( p.delfunc )){
  2213. p.delfunc.call($t, dr);
  2214. }else{
  2215. $($t).jqGrid("delGridRow",dr,pDel);
  2216. }
  2217. } else {
  2218. $.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:true});$("#jqg_alrt").focus();
  2219. }
  2220. $(str).hide();
  2221. }
  2222. return false;
  2223. });
  2224. $(str).append(itm);
  2225. }
  2226. if(p.add || p.edit || p.del || p.view) {
  2227. $(str).append("<li class='ui-menu-item " +commonstyle.disabled + "' style='width:100%' role='presentation'><hr class='ui-separator-li'></li>");
  2228. }
  2229. if( p.search ) {
  2230. pSearch = pSearch || {};
  2231. eid = pSearch.id || "search_"+elemids;
  2232. itm = $('<li class="ui-menu-item" role="presentation"><a class="'+ commonstyle.cornerall+' g-menu-item" tabindex="0" role="menuitem" id="'+eid+'">'+(p.searchtext || p.searchtitle)+'</a></li>').click(function(){
  2233. if (!$(this).hasClass( commonstyle.disabled )) {
  2234. if($.isFunction( p.searchfunc )) {
  2235. p.searchfunc.call($t, pSearch);
  2236. } else {
  2237. $($t).jqGrid("searchGrid",pSearch);
  2238. }
  2239. $(str).hide();
  2240. }
  2241. return false;
  2242. });
  2243. $(str).append(itm);
  2244. if (pSearch.showOnLoad && pSearch.showOnLoad === true) {
  2245. $( itm ).click();
  2246. }
  2247. }
  2248. if( p.refresh ) {
  2249. eid = pSearch.id || "search_"+elemids;
  2250. itm = $('<li class="ui-menu-item" role="presentation"><a class="'+ commonstyle.cornerall+' g-menu-item" tabindex="0" role="menuitem" id="'+eid+'">'+(p.refreshtext || p.refreshtitle)+'</a></li>').click(function(){
  2251. if (!$(this).hasClass( commonstyle.disabled )) {
  2252. if($.isFunction(p.beforeRefresh)) {p.beforeRefresh.call($t);}
  2253. $t.p.search = false;
  2254. $t.p.resetsearch = true;
  2255. try {
  2256. if( p.refreshstate !== 'currentfilter') {
  2257. var gID = $t.p.id;
  2258. $t.p.postData.filters ="";
  2259. try {
  2260. $("#fbox_"+$.jgrid.jqID(gID)).jqFilter('resetFilter');
  2261. } catch(ef) {}
  2262. if($.isFunction($t.clearToolbar)) {$t.clearToolbar.call($t,false);}
  2263. }
  2264. } catch (e) {}
  2265. switch (p.refreshstate) {
  2266. case 'firstpage':
  2267. $($t).trigger("reloadGrid", [{page:1}]);
  2268. break;
  2269. case 'current':
  2270. case 'currentfilter':
  2271. $($t).trigger("reloadGrid", [{current:true}]);
  2272. break;
  2273. }
  2274. if($.isFunction(p.afterRefresh)) {p.afterRefresh.call($t);}
  2275. $(str).hide();
  2276. }
  2277. return false;
  2278. });
  2279. $(str).append(itm);
  2280. }
  2281. $(str).hide();
  2282. $('body').append(str);
  2283. $("#"+mid).addClass("ui-menu " + classes.menu_widget);
  2284. $("#"+mid+" > li > a").hover(
  2285. function(){ $(this).addClass(commonstyle.hover); },
  2286. function(){ $(this).removeClass(commonstyle.hover); }
  2287. );
  2288. };
  2289. _buildMenu();
  2290. $(".dropdownmenu", elem+"_"+p.position).on("click", function( e ){
  2291. var offset = $(this).offset(),
  2292. left = ( offset.left ),
  2293. top = parseInt( offset.top),
  2294. bid =$(this).val();
  2295. //if( $("#"+mid)[0] === undefined) {
  2296. //_buildMenu();
  2297. //}
  2298. $("#"+bid).show().css({"top":top - ($("#"+bid).height() +10)+"px", "left":left+"px"});
  2299. e.stopPropagation();
  2300. });
  2301. $("body").on('click', function(e){
  2302. if(!$(e.target).hasClass("dropdownmenu")) {
  2303. $("#"+mid).hide();
  2304. }
  2305. });
  2306. });
  2307. },
  2308. GridToForm : function( rowid, formid ) {
  2309. return this.each(function(){
  2310. var $t = this, i;
  2311. if (!$t.grid) {return;}
  2312. var rowdata = $($t).jqGrid("getRowData",rowid);
  2313. if (rowdata) {
  2314. for(i in rowdata) {
  2315. if(rowdata.hasOwnProperty(i)) {
  2316. if ( $("[name="+$.jgrid.jqID(i)+"]",formid).is("input:radio") || $("[name="+$.jgrid.jqID(i)+"]",formid).is("input:checkbox")) {
  2317. $("[name="+$.jgrid.jqID(i)+"]",formid).each( function() {
  2318. if( $(this).val() == rowdata[i] ) {
  2319. $(this)[$t.p.useProp ? 'prop': 'attr']("checked",true);
  2320. } else {
  2321. $(this)[$t.p.useProp ? 'prop': 'attr']("checked", false);
  2322. }
  2323. });
  2324. } else {
  2325. // this is very slow on big table and form.
  2326. $("[name="+$.jgrid.jqID(i)+"]",formid).val(rowdata[i]);
  2327. }
  2328. }
  2329. }
  2330. }
  2331. });
  2332. },
  2333. FormToGrid : function(rowid, formid, mode, position){
  2334. return this.each(function() {
  2335. var $t = this;
  2336. if(!$t.grid) {return;}
  2337. if(!mode) {mode = 'set';}
  2338. if(!position) {position = 'first';}
  2339. var fields = $(formid).serializeArray();
  2340. var griddata = {};
  2341. $.each(fields, function(i, field){
  2342. griddata[field.name] = field.value;
  2343. });
  2344. if(mode==='add') {$($t).jqGrid("addRowData",rowid,griddata, position);}
  2345. else if(mode==='set') {$($t).jqGrid("setRowData",rowid,griddata);}
  2346. });
  2347. }
  2348. });
  2349. //module end
  2350. }));