quoslibero
Version:
FusionCharts JavaScript charting framework
1 lines • 6.71 kB
JavaScript
import{fastTrim,extend2,xssEncode}from'../../../fc-core/src/lib';var FCGlobal,UNDEF,format='xml';const COMPACTDATAMODE='compactdatamode',STRING='string',FUNCTION='function',OBJECT='object';function replaceSp(a){return a.replace(/</g,'<').replace(/>/g,'>')}let toJSON=function(){var a,b,c,d={arr:{set:!0,trendlines:!0,vtrendlines:!0,line:{trendlines:!0,vtrendlines:!0},data:!0,dataset:!0,lineset:!0,categories:!0,category:!0,tasks:!0,linkeddata:!0,application:!0,definition:!0,axis:!0,connectors:!0,connector:{connectors:!0},trendset:!0,row:{rows:!0},column:{columns:!0},label:{labels:!0},color:{colorrange:!0},dial:{dials:!0},pointer:{pointers:!0},point:{trendpoints:!0},process:{processes:!0},task:{tasks:!0},milestone:{milestones:!0},datacolumn:{datatable:!0},text:{datacolumn:!0},item:{legend:!0},alert:{alerts:!0},groups:{annotations:!0},items:{groups:!0,data:!0},shapes:!0,shape:{shapes:!0},entitydef:!0,entity:{entitydef:!0}},tag:{chart:'linkedchart',map:'linkedmap',set:'data',vline:{chart:'data',graph:'data',dataset:'data',categories:'category',linkedchart:'data'},apply:{application:'application'},style:{definition:'definition'},marker:{application:'application',definition:'definition',data:'items'},entity:{entitydef:'entitydef',data:'data'},shape:{shapes:'shapes'},connector:{connectors:{chart:'connector',linkedchart:'connector',map:'connectors',linkedmap:'connectors'}},annotationgroup:{annotations:'groups'},annotation:{groups:'items'}},attr:{vline:{vline:'true'}},ins:{chart:!0,map:!0,graph:!0},dsv:{dataset:'data',categories:'category'},text:{target:'target',value:'value'},group:{styles:{definition:!0,application:!0},chart:{value:!0,target:!0},graph:{value:!0,target:!0},linkedchart:{value:!0,target:!0},markers:{definition:!0,application:!0,shapes:!0,connectors:!0,data:!0},map:{entitydef:!0,data:!0},linkedmap:{entitydef:!0,data:!0}}};return a={append:function(a,b,c,e){d.arr[c]&&(!0===d.arr[c]||!0===d.arr[c][e])?(!(b[c]instanceof Array)&&(b[c]=[]),b[c].push(a)):b[c]=a},child:function(b,c,e,f){var g,h,j,k,l,m;for(g=0;g<c.length;g+=1)switch(j=c[g],h=j.nodeName.toLowerCase(),j.nodeType){case 1:if(k=a.attr(j.attributes),m=d.ins[h],!0===m&&(l=k,k={},k[h]=l,l=UNDEF),m=d.attr[h],typeof m==OBJECT&&extend2(k,m,!1,!0),m=d.tag[h],m)if(typeof m==OBJECT&&typeof m[e]==OBJECT){for(l in l=UNDEF,m[e])if(f[l]){h=m[e][l];break}}else typeof m==OBJECT&&typeof m[e]==STRING?h=m[e]:typeof m==STRING&&(h=m);j.childNodes.length&&(m=d.group[e],m&&m[h]?a.child(b,j.childNodes,h,f):a.child(k,j.childNodes,h,f)),m=d.group[e],m&&m[h]||a.append(k,b,h,e);break;case 3:m=d.text[e],m&&(h=m,k=j.data,a.append(k,b,h,e)),m=d.dsv[e],typeof m==STRING&&f.chart&&parseInt(f.chart[COMPACTDATAMODE],10)&&(h=m,k=j.data,b[h]=b[h]?b[h]+k:k);}},attr:function(a){var b,d={};if(!a||!a.length)return d;for(b=0;b<a.length;b+=1)'xml'===c&&(a[b].value?a[b].value=replaceSp(a[b].value):a[b].nodeValue&&(a[b].nodeValue=replaceSp(a[b].nodeValue))),d[a[b].nodeName.toLowerCase()]=a[b].value||a[b].nodeValue;return d}},b=function(c){var d,e,f,g,h,j,k,l,m,n={};if(typeof c!=OBJECT&&c&&typeof c.toString!=FUNCTION)return b.errorObject=new TypeError('xml2json.parse()'),n;if(c=c.toString().replace(/<\!--[\s\S]*?-->/g,'').replace(/<\?xml[\s\S]*?\?>/ig,'').replace(/&(?!([^;\n\r]+?;))/g,'&$1'),c=fastTrim(c),!c)return n;try{if(window.DOMParser?d=new window.DOMParser().parseFromString(c,'text/xml'):document.body&&FCGlobal.options.allowIESafeXMLParsing?(e=document.createElement('xml'),e.innerHTML=c,document.body.appendChild(e),d=e.XMLDocument,document.body.removeChild(e),e=null):(d=new window.ActiveXObject('Microsoft.XMLDOM'),d.async='false',d.loadXML(c)),!(d&&d.childNodes&&1===d.childNodes.length&&(f=d.childNodes[0])&&f.nodeName&&(g=f.nodeName.toLowerCase())&&('chart'===g||'map'===g||'graph'===g)))return b.errorObject=new TypeError('xml2json.parse()'),n;if('graph'===g){for(h=d.createElement('chart'),k=f.attributes,m=k&&k.length||0;m--;)h.setAttribute(k[m].name,k[m].value),k.removeNamedItem(k[m].name);for(l=f.childNodes,m=l&&l.length||0,m&&(m-=1,j=f.removeChild(l[m]),h.appendChild(j));m--;)j=f.removeChild(l[m]),h.insertBefore(j,h.firstChild);d.replaceChild(h,f),f=h}}catch(a){b.errorObject=a}return f?(f.attributes&&(n[g]=a.attr(f.attributes)),f.childNodes&&a.child(n,f.childNodes,g,n),delete b.errorObject):b.errorObject=new TypeError('xml2json.parse()'),n},function(a){delete b.errorObject,c=arguments[arguments.length-1];var d=b(a);return{data:d,error:b.errorObject}}}(),fromJSON=function(){var a,b;return a={items:{explode:{data:'set',groups:{annotations:'annotationgroup'},items:{groups:'annotation'}},text:{chart:{target:'target',value:'value'},graph:{target:'target',value:'value'}},dsv:{dataset:{data:'dataset'},categories:{category:'categories'}},attr:{chart:{chart:'chart'},graph:{graph:'graph'},map:{map:'map'},linkedmap:{map:'map'},linkedchart:{chart:'chart'}},group:{styles:{definition:'style',application:'apply'},map:{data:'entity',entitydef:'entity'},markers:{definition:'marker',application:'marker',shapes:'shape',connectors:'connector',items:'marker'}},tag:{markers:{items:'data'}}},qualify:function(a,b,c){return typeof this.items[a][c]==OBJECT?this.items[a][c][b]:this.items[a][c]}},b=function(c,d,e,f){var g,h,i,j,k='',l='',m='',n='';if(d&&'function'==typeof d.toLowerCase&&(d=d.toLowerCase()),e===UNDEF&&c[d])for(h in c[d])i=h.toLowerCase(),i===COMPACTDATAMODE&&(f.applyDSV=1===c[d][h]);if(c instanceof Array)for(h=0;h<c.length;h+=1)m+=typeof c[h]==STRING?xssEncode(c[h]):b(c[h],d,e,f);else{for(h in c)i=h.toLowerCase().replace(/[`~!@#$%^&*()|+\=?;:'", <>\{\}\[\]\\\/]/gi,''),c[h]instanceof Array&&(j=a.qualify('group',i,d))?(g=a.qualify('tag',i,d)||i,l+='<'+g+'>'+b(c[h],j,d,f)+'</'+g+'>'):typeof c[h]==OBJECT?(j=a.qualify('attr',i,d))?(n=b(c[h],j,d,f).replace(/\s*\/\>/ig,''),d=i):l+=b(c[h],i,d,f):f.applyDSV&&(j=a.qualify('dsv',i,d))?l+=c[h]:(j=a.qualify('text',i,d))?(g=a.qualify('tag',i,d)||j,l+='<'+g+'>'+c[h]+'</'+g+'>'):'vline'===i&&c[h]?d='vline':k+=' '+i+'="'+xssEncode(c[h]).toString().replace(/\"/ig,'"')+'"';(j=a.qualify('explode',e,d))&&(d=j),g=d,m=(''===n?'<'+g:n)+k+(''===l?' />':'>'+l+'</'+g+'>')}return m},function(a){if(delete b.errorObject,a&&typeof a==STRING)try{a=JSON.parse(a)}catch(a){b.errorObject=a}var c=a&&a.graph?'graph':a&&a.map?'map':'chart',d=b(a,c,UNDEF,{});return{data:d,error:b.errorObject}}}(),getXMLData=function(){return this.getChartData('xml')},setXMLData=function(a){this.setChartData(a,'xml')},wrapper=function(a){return a&&(FCGlobal=a,a.prototype.getXMLData=getXMLData,a.prototype.setXMLData=setXMLData),{format:format,toJSON:toJSON,fromJSON:fromJSON}};export default{extension:wrapper,name:'XML',type:'transcoder',requiresFusionCharts:!0};