+++ /dev/null
-;(function($){\r
-/**\r
- * jqGrid extension for SubGrid Data\r
- * Tony Tomov tony@trirand.com\r
- * http://trirand.com/blog/ \r
- * Dual licensed under the MIT and GPL licenses:\r
- * http://www.opensource.org/licenses/mit-license.php\r
- * http://www.gnu.org/licenses/gpl.html\r
-**/\r
-$.fn.addSubGrid = function(t,row,pos,rowelem) {\r
- return this.each(function(){\r
- var ts = this;\r
- if (!ts.grid ) { return; }\r
- var td, res,_id, pID;\r
- td = document.createElement("td");\r
- $(td,t).html("<img src='"+ts.p.imgpath+"plus.gif'/>")\r
- .toggle( function(e) {\r
- $(this).html("<img src='"+ts.p.imgpath+"minus.gif'/>");\r
- pID = $("table:first",ts.grid.bDiv).attr("id");\r
- res = $(this).parent();\r
- var atd= pos==1?'<td></td>':'';\r
- _id = $(res).attr("id");\r
- var nhc = 0;\r
- $.each(ts.p.colModel,function(i,v){\r
- if(this.hidden === true) {nhc++;}\r
- });\r
- var subdata = "<tr class='subgrid'>"+atd+"<td><img src='"+ts.p.imgpath+"line3.gif'/></td><td colspan='"+parseInt(ts.p.colNames.length-1-nhc)+"'><div id="+pID+"_"+_id+" class='tablediv'>";\r
- $(this).parent().after( subdata+ "</div></td></tr>" );\r
- $(".tablediv",ts).css("width", ts.grid.width-20+"px");\r
- if( typeof ts.p.subGridRowExpanded === 'function') {\r
- ts.p.subGridRowExpanded(pID+"_"+ _id,_id);\r
- } else {\r
- populatesubgrid(res);\r
- }\r
- }, function(e) {\r
- if( typeof ts.p.subGridRowColapsed === 'function') {\r
- res = $(this).parent();\r
- _id = $(res).attr("id");\r
- ts.p.subGridRowColapsed(pID+"_"+_id,_id );\r
- };\r
- $(this).parent().next().remove(".subgrid");\r
- $(this).html("<img src='"+ts.p.imgpath+"plus.gif'/>");\r
- });\r
- row.appendChild(td);\r
- //-------------------------\r
- var populatesubgrid = function( rd ) {\r
- var res,sid,dp;\r
- sid = $(rd).attr("id");\r
- dp = {id:sid};\r
- if(!ts.p.subGridModel[0]) { return false; }\r
- if(ts.p.subGridModel[0].params) {\r
- for(var j=0; j < ts.p.subGridModel[0].params.length; j++) {\r
- for(var i=0; i<ts.p.colModel.length; i++) {\r
- if(ts.p.colModel[i].name == ts.p.subGridModel[0].params[j]) {\r
- dp[ts.p.colModel[i].name]= $("td:eq("+i+")",rd).text().replace(/\ \;/ig,'');\r
- }\r
- }\r
- }\r
- }\r
- if(!ts.grid.hDiv.loading) {\r
- ts.grid.hDiv.loading = true;\r
- $("div.loading",ts.grid.hDiv).fadeIn("fast");\r
- switch(ts.p.datatype) {\r
- case "xml":\r
- $.ajax({type:ts.p.mtype, url: ts.p.subGridUrl, dataType:"xml",data: dp, complete: function(sxml) { subGridJXml(sxml.responseXML, sid); } });\r
- break;\r
- case "json":\r
- $.ajax({type:ts.p.mtype, url: ts.p.subGridUrl, dataType:"json",data: dp, complete: function(JSON) { res = subGridJXml(JSON,sid); } });\r
- break;\r
- }\r
- }\r
- return false;\r
- };\r
- var subGridCell = function(trdiv,cell,pos){\r
- var tddiv;\r
- tddiv = document.createElement("div");\r
- tddiv.className = "celldiv";\r
- $(tddiv).html(cell);\r
- $(tddiv).width( ts.p.subGridModel[0].width[pos] || 80);\r
- trdiv.appendChild(tddiv);\r
- };\r
- var subGridJXml = function(sjxml, sbid){\r
- var trdiv, tddiv,result = "", i,cur, sgmap;\r
- var dummy = document.createElement("span");\r
- trdiv = document.createElement("div");\r
- trdiv.className="rowdiv";\r
- for (i = 0; i<ts.p.subGridModel[0].name.length; i++) {\r
- tddiv = document.createElement("div");\r
- tddiv.className = "celldivth";\r
- $(tddiv).html(ts.p.subGridModel[0].name[i]);\r
- $(tddiv).width( ts.p.subGridModel[0].width[i]);\r
- trdiv.appendChild(tddiv);\r
- }\r
- dummy.appendChild(trdiv);\r
- if (sjxml){\r
- if(ts.p.datatype === "xml") {\r
- sgmap = ts.p.xmlReader.subgrid;\r
- $(sgmap.root+">"+sgmap.row, sjxml).each( function(){\r
- trdiv = document.createElement("div");\r
- trdiv.className="rowdiv";\r
- if(sgmap.repeatitems === true) {\r
- $(sgmap.cell,this).each( function(i) {\r
- subGridCell(trdiv, this.textContent || this.text || ' ',i);\r
- });\r
- } else {\r
- var f = ts.p.subGridModel[0].mapping;\r
- if (f) {\r
- for (i=0;i<f.length;i++) {\r
- subGridCell(trdiv, $(f[i],this).text() || ' ',i);\r
- }\r
- }\r
- }\r
- dummy.appendChild(trdiv);\r
- });\r
- } else {\r
- sjxml = eval("("+sjxml.responseText+")");\r
- sgmap = ts.p.jsonReader.subgrid;\r
- for (i=0;i<sjxml[sgmap.root].length;i++) {\r
- cur = sjxml[sgmap.root][i];\r
- trdiv = document.createElement("div");\r
- trdiv.className="rowdiv";\r
- if(sgmap.repeatitems === true) {\r
- if(sgmap.cell) { cur=cur[sgmap.cell]; }\r
- for (var j=0;j<cur.length;j++) {\r
- subGridCell(trdiv, cur[j] || ' ',j);\r
- }\r
- } else {\r
- var f = ts.p.subGridModel[0].mapping;\r
- if(f.length) {\r
- for (var j=0;j<f.length;j++) {\r
- subGridCell(trdiv, cur[f[j]] || ' ',j);\r
- }\r
- }\r
- }\r
- dummy.appendChild(trdiv);\r
- }\r
- }\r
- var pID = $("table:first",ts.grid.bDiv).attr("id")+"_";\r
- $("#"+pID+sbid).append($(dummy).html());\r
- sjxml = null;\r
- ts.grid.hDiv.loading = false;\r
- $("div.loading",ts.grid.hDiv).fadeOut("fast");\r
- }\r
- return false;\r
- }\r
- });\r
-};\r
-})(jQuery);\r