PageRenderTime 26ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 1ms

/files/jqgrid/4.4.1/js/grid.import.js

https://gitlab.com/Mirros/jsdelivr
JavaScript | 215 lines | 200 code | 1 blank | 14 comment | 46 complexity | 624e3271a0f3151897f608dde822bee9 MD5 | raw file
  1. ;(function($){
  2. /*
  3. * jqGrid extension for constructing Grid Data from external file
  4. * Tony Tomov tony@trirand.com
  5. * http://trirand.com/blog/
  6. * Dual licensed under the MIT and GPL licenses:
  7. * http://www.opensource.org/licenses/mit-license.php
  8. * http://www.gnu.org/licenses/gpl-2.0.html
  9. **/
  10. //jsHint options
  11. /*global jQuery, $, alert, xmlJsonClass */
  12. "use strict";
  13. $.jgrid.extend({
  14. jqGridImport : function(o) {
  15. o = $.extend({
  16. imptype : "xml", // xml, json, xmlstring, jsonstring
  17. impstring: "",
  18. impurl: "",
  19. mtype: "GET",
  20. impData : {},
  21. xmlGrid :{
  22. config : "roots>grid",
  23. data: "roots>rows"
  24. },
  25. jsonGrid :{
  26. config : "grid",
  27. data: "data"
  28. },
  29. ajaxOptions :{}
  30. }, o || {});
  31. return this.each(function(){
  32. var $t = this;
  33. var xmlConvert = function (xml,o) {
  34. var cnfg = $(o.xmlGrid.config,xml)[0];
  35. var xmldata = $(o.xmlGrid.data,xml)[0], jstr, jstr1;
  36. if(xmlJsonClass.xml2json && $.jgrid.parse) {
  37. jstr = xmlJsonClass.xml2json(cnfg," ");
  38. jstr = $.jgrid.parse(jstr);
  39. for(var key in jstr) {
  40. if(jstr.hasOwnProperty(key)) {
  41. jstr1=jstr[key];
  42. }
  43. }
  44. if(xmldata) {
  45. // save the datatype
  46. var svdatatype = jstr.grid.datatype;
  47. jstr.grid.datatype = 'xmlstring';
  48. jstr.grid.datastr = xml;
  49. $($t).jqGrid( jstr1 ).jqGrid("setGridParam",{datatype:svdatatype});
  50. } else {
  51. $($t).jqGrid( jstr1 );
  52. }
  53. jstr = null;jstr1=null;
  54. } else {
  55. alert("xml2json or parse are not present");
  56. }
  57. };
  58. var jsonConvert = function (jsonstr,o){
  59. if (jsonstr && typeof jsonstr == 'string') {
  60. var _jsonparse = false;
  61. if($.jgrid.useJSON) {
  62. $.jgrid.useJSON = false;
  63. _jsonparse = true;
  64. }
  65. var json = $.jgrid.parse(jsonstr);
  66. if(_jsonparse) { $.jgrid.useJSON = true; }
  67. var gprm = json[o.jsonGrid.config];
  68. var jdata = json[o.jsonGrid.data];
  69. if(jdata) {
  70. var svdatatype = gprm.datatype;
  71. gprm.datatype = 'jsonstring';
  72. gprm.datastr = jdata;
  73. $($t).jqGrid( gprm ).jqGrid("setGridParam",{datatype:svdatatype});
  74. } else {
  75. $($t).jqGrid( gprm );
  76. }
  77. }
  78. };
  79. switch (o.imptype){
  80. case 'xml':
  81. $.ajax($.extend({
  82. url:o.impurl,
  83. type:o.mtype,
  84. data: o.impData,
  85. dataType:"xml",
  86. complete: function(xml,stat) {
  87. if(stat == 'success') {
  88. xmlConvert(xml.responseXML,o);
  89. $($t).triggerHandler("jqGridImportComplete", [xml, o]);
  90. if($.isFunction(o.importComplete)) {
  91. o.importComplete(xml);
  92. }
  93. }
  94. xml=null;
  95. }
  96. }, o.ajaxOptions));
  97. break;
  98. case 'xmlstring' :
  99. // we need to make just the conversion and use the same code as xml
  100. if(o.impstring && typeof o.impstring == 'string') {
  101. var xmld = $.jgrid.stringToDoc(o.impstring);
  102. if(xmld) {
  103. xmlConvert(xmld,o);
  104. $($t).triggerHandler("jqGridImportComplete", [xmld, o]);
  105. if($.isFunction(o.importComplete)) {
  106. o.importComplete(xmld);
  107. }
  108. o.impstring = null;
  109. }
  110. xmld = null;
  111. }
  112. break;
  113. case 'json':
  114. $.ajax($.extend({
  115. url:o.impurl,
  116. type:o.mtype,
  117. data: o.impData,
  118. dataType:"json",
  119. complete: function(json) {
  120. try {
  121. jsonConvert(json.responseText,o );
  122. $($t).triggerHandler("jqGridImportComplete", [json, o]);
  123. if($.isFunction(o.importComplete)) {
  124. o.importComplete(json);
  125. }
  126. } catch (ee){}
  127. json=null;
  128. }
  129. }, o.ajaxOptions ));
  130. break;
  131. case 'jsonstring' :
  132. if(o.impstring && typeof o.impstring == 'string') {
  133. jsonConvert(o.impstring,o );
  134. $($t).triggerHandler("jqGridImportComplete", [o.impstring, o]);
  135. if($.isFunction(o.importComplete)) {
  136. o.importComplete(o.impstring);
  137. }
  138. o.impstring = null;
  139. }
  140. break;
  141. }
  142. });
  143. },
  144. jqGridExport : function(o) {
  145. o = $.extend({
  146. exptype : "xmlstring",
  147. root: "grid",
  148. ident: "\t"
  149. }, o || {});
  150. var ret = null;
  151. this.each(function () {
  152. if(!this.grid) { return;}
  153. var gprm = $.extend(true, {},$(this).jqGrid("getGridParam"));
  154. // we need to check for:
  155. // 1.multiselect, 2.subgrid 3. treegrid and remove the unneded columns from colNames
  156. if(gprm.rownumbers) {
  157. gprm.colNames.splice(0,1);
  158. gprm.colModel.splice(0,1);
  159. }
  160. if(gprm.multiselect) {
  161. gprm.colNames.splice(0,1);
  162. gprm.colModel.splice(0,1);
  163. }
  164. if(gprm.subGrid) {
  165. gprm.colNames.splice(0,1);
  166. gprm.colModel.splice(0,1);
  167. }
  168. gprm.knv = null;
  169. if(gprm.treeGrid) {
  170. for (var key in gprm.treeReader) {
  171. if(gprm.treeReader.hasOwnProperty(key)) {
  172. gprm.colNames.splice(gprm.colNames.length-1);
  173. gprm.colModel.splice(gprm.colModel.length-1);
  174. }
  175. }
  176. }
  177. switch (o.exptype) {
  178. case 'xmlstring' :
  179. ret = "<"+o.root+">"+xmlJsonClass.json2xml(gprm,o.ident)+"</"+o.root+">";
  180. break;
  181. case 'jsonstring' :
  182. ret = "{"+ xmlJsonClass.toJson(gprm,o.root,o.ident,false)+"}";
  183. if(gprm.postData.filters !== undefined) {
  184. ret=ret.replace(/filters":"/,'filters":');
  185. ret=ret.replace(/}]}"/,'}]}');
  186. }
  187. break;
  188. }
  189. });
  190. return ret;
  191. },
  192. excelExport : function(o) {
  193. o = $.extend({
  194. exptype : "remote",
  195. url : null,
  196. oper: "oper",
  197. tag: "excel",
  198. exportOptions : {}
  199. }, o || {});
  200. return this.each(function(){
  201. if(!this.grid) { return;}
  202. var url;
  203. if(o.exptype == "remote") {
  204. var pdata = $.extend({},this.p.postData);
  205. pdata[o.oper] = o.tag;
  206. var params = jQuery.param(pdata);
  207. if(o.url.indexOf("?") != -1) { url = o.url+"&"+params; }
  208. else { url = o.url+"?"+params; }
  209. window.location = url;
  210. }
  211. });
  212. }
  213. });
  214. })(jQuery);