123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- /*jshint eqeqeq:false, eqnull:true, devel:true */
- /*global jQuery, xmlJsonClass */
- (function($){
- /*
- * jqGrid extension for constructing Grid Data from external file
- * Tony Tomov tony@trirand.com
- * http://trirand.com/blog/
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl-2.0.html
- **/
- "use strict";
- $.jgrid.extend({
- jqGridImport : function(o) {
- o = $.extend({
- imptype : "xml", // xml, json, xmlstring, jsonstring
- impstring: "",
- impurl: "",
- mtype: "GET",
- impData : {},
- xmlGrid :{
- config : "roots>grid",
- data: "roots>rows"
- },
- jsonGrid :{
- config : "grid",
- data: "data"
- },
- ajaxOptions :{}
- }, o || {});
- return this.each(function(){
- var $t = this;
- var xmlConvert = function (xml,o) {
- var cnfg = $(o.xmlGrid.config,xml)[0];
- var xmldata = $(o.xmlGrid.data,xml)[0], jstr, jstr1, key;
- if(xmlJsonClass.xml2json && $.jgrid.parse) {
- jstr = xmlJsonClass.xml2json(cnfg," ");
- jstr = $.jgrid.parse(jstr);
- for(key in jstr) {
- if(jstr.hasOwnProperty(key)) {
- jstr1=jstr[key];
- }
- }
- if(xmldata) {
- // save the datatype
- var svdatatype = jstr.grid.datatype;
- jstr.grid.datatype = 'xmlstring';
- jstr.grid.datastr = xml;
- $($t).jqGrid( jstr1 ).jqGrid("setGridParam",{datatype:svdatatype});
- } else {
- $($t).jqGrid( jstr1 );
- }
- jstr = null;jstr1=null;
- } else {
- alert("xml2json or parse are not present");
- }
- };
- var jsonConvert = function (jsonstr,o){
- if (jsonstr && typeof jsonstr === 'string') {
- var _jsonparse = false;
- if($.jgrid.useJSON) {
- $.jgrid.useJSON = false;
- _jsonparse = true;
- }
- var json = $.jgrid.parse(jsonstr);
- if(_jsonparse) { $.jgrid.useJSON = true; }
- var gprm = json[o.jsonGrid.config];
- var jdata = json[o.jsonGrid.data];
- if(jdata) {
- var svdatatype = gprm.datatype;
- gprm.datatype = 'jsonstring';
- gprm.datastr = jdata;
- $($t).jqGrid( gprm ).jqGrid("setGridParam",{datatype:svdatatype});
- } else {
- $($t).jqGrid( gprm );
- }
- }
- };
- switch (o.imptype){
- case 'xml':
- $.ajax($.extend({
- url:o.impurl,
- type:o.mtype,
- data: o.impData,
- dataType:"xml",
- complete: function(xml,stat) {
- if(stat === 'success') {
- xmlConvert(xml.responseXML,o);
- $($t).triggerHandler("jqGridImportComplete", [xml, o]);
- if($.isFunction(o.importComplete)) {
- o.importComplete(xml);
- }
- }
- xml=null;
- }
- }, o.ajaxOptions));
- break;
- case 'xmlstring' :
- // we need to make just the conversion and use the same code as xml
- if(o.impstring && typeof o.impstring === 'string') {
- var xmld = $.parseXML(o.impstring);
- if(xmld) {
- xmlConvert(xmld,o);
- $($t).triggerHandler("jqGridImportComplete", [xmld, o]);
- if($.isFunction(o.importComplete)) {
- o.importComplete(xmld);
- }
- o.impstring = null;
- }
- xmld = null;
- }
- break;
- case 'json':
- $.ajax($.extend({
- url:o.impurl,
- type:o.mtype,
- data: o.impData,
- dataType:"json",
- complete: function(json) {
- try {
- jsonConvert(json.responseText,o );
- $($t).triggerHandler("jqGridImportComplete", [json, o]);
- if($.isFunction(o.importComplete)) {
- o.importComplete(json);
- }
- } catch (ee){}
- json=null;
- }
- }, o.ajaxOptions ));
- break;
- case 'jsonstring' :
- if(o.impstring && typeof o.impstring === 'string') {
- jsonConvert(o.impstring,o );
- $($t).triggerHandler("jqGridImportComplete", [o.impstring, o]);
- if($.isFunction(o.importComplete)) {
- o.importComplete(o.impstring);
- }
- o.impstring = null;
- }
- break;
- }
- });
- },
- jqGridExport : function(o) {
- o = $.extend({
- exptype : "xmlstring",
- root: "grid",
- ident: "\t"
- }, o || {});
- var ret = null;
- this.each(function () {
- if(!this.grid) { return;}
- var key, gprm = $.extend(true, {},$(this).jqGrid("getGridParam"));
- // we need to check for:
- // 1.multiselect, 2.subgrid 3. treegrid and remove the unneded columns from colNames
- if(gprm.rownumbers) {
- gprm.colNames.splice(0,1);
- gprm.colModel.splice(0,1);
- }
- if(gprm.multiselect) {
- gprm.colNames.splice(0,1);
- gprm.colModel.splice(0,1);
- }
- if(gprm.subGrid) {
- gprm.colNames.splice(0,1);
- gprm.colModel.splice(0,1);
- }
- gprm.knv = null;
- if(gprm.treeGrid) {
- for (key in gprm.treeReader) {
- if(gprm.treeReader.hasOwnProperty(key)) {
- gprm.colNames.splice(gprm.colNames.length-1);
- gprm.colModel.splice(gprm.colModel.length-1);
- }
- }
- }
- switch (o.exptype) {
- case 'xmlstring' :
- ret = "<"+o.root+">"+xmlJsonClass.json2xml(gprm,o.ident)+"</"+o.root+">";
- break;
- case 'jsonstring' :
- ret = "{"+ xmlJsonClass.toJson(gprm,o.root,o.ident,false)+"}";
- if(gprm.postData.filters !== undefined) {
- ret=ret.replace(/filters":"/,'filters":');
- ret=ret.replace(/}]}"/,'}]}');
- }
- break;
- }
- });
- return ret;
- },
- excelExport : function(o) {
- o = $.extend({
- exptype : "remote",
- url : null,
- oper: "oper",
- tag: "excel",
- exportOptions : {}
- }, o || {});
- return this.each(function(){
- if(!this.grid) { return;}
- var url;
- if(o.exptype === "remote") {
- var pdata = $.extend({},this.p.postData);
- pdata[o.oper] = o.tag;
- var params = jQuery.param(pdata);
- if(o.url.indexOf("?") !== -1) { url = o.url+"&"+params; }
- else { url = o.url+"?"+params; }
- window.location = url;
- }
- });
- }
- });
- })(jQuery);
|