UNPKG

quoslibero

Version:

FusionCharts JavaScript charting framework

1 lines 7.3 kB
import{raiseError}from'../../../fc-core/src/event-api';var FCGlobal,UNDEF,jsonToCsv,csvToJson,multilevelPieCsv,recursiveCategoryCall,multiPieData,multiPieLineCount,headerLen,counter,win=window,COMMA=',',QUOTE='"',APOS='\'',TAB='\t',CRLF='\r\n',LIT_QUOT='{quot}',LIT_TAB='{tab}',LIT_APOS='{apos}',toInt=win.parseInt,toFloat=win.parseFloat,returnFirstArgument=function(a){return a};class DSV{constructor(a){this.data=[],this.rowCount=0,this.columnCount=0,this.configure(a)}set(a,b,c){var d;if(this.rowCount<=a){for(d=this.rowCount;d<=a;d+=1)this.data[d]=[];this.rowCount=a+1}this.columnCount<=b&&(this.columnCount=b+1),this.data[a][b]=c}setRow(a,b){var c;if(this.rowCount<=a){for(c=this.rowCount;c<=a;c+=1)this.data[c]=[];this.rowCount=a+1}this.columnCount<b.length&&(this.columnCount=b.length),this.data[a]=b}get(a,b){var c=this.data;return c[a]&&c[a][b]}configure(a){var b=DSV.decodeLiterals;this.delimiter=b(a.delimiter,COMMA),this.qualifier=b(a.qualifier,QUOTE),this.eolCharacter=b(a.eolCharacter,CRLF),this.numberFormatted=!!toInt(a.numberFormatted,0)}clear(){this.data=[],this.rowCount=0,this.columnCount=0}toString(){var a,b,c='';for(a=0;a<this.rowCount;a+=1)b=this.qualifier+this.data[a].join(this.qualifier+this.delimiter+this.qualifier)+this.qualifier,c+='""'===b?this.eolCharacter:b+this.eolCharacter;return 0<this.rowCount&&(c=c.slice(0,c.length-2)),c}}DSV.decodeLiterals=function(a,b){return a!==UNDEF&&null!==a&&a.toString?a.replace(LIT_TAB,TAB).replace(LIT_QUOT,QUOTE).replace(LIT_APOS,APOS):b},recursiveCategoryCall=function(a,b){let c,d=a.label||'';if(multiPieData.push(d),counter++,headerLen=Math.max(headerLen,counter),a.category!==UNDEF){for(c=0;c<a.category.length;++c)recursiveCategoryCall(a.category[c],b);multiPieData.pop(),counter--}else b.setRow(multiPieLineCount++,multiPieData.slice()),multiPieData.pop(),counter--},multilevelPieCsv=function(a){var b,c,d,e=a,f=e.chart,g=e&&e.category||[],h=g.length,j=[];for(multiPieLineCount=1,headerLen=0,counter=0,d=new DSV({separator:f.exportdataseparator,qualifier:f.exportdataqualifier,numberFormatted:f.exportdataformattedval}),b=0;b<h;++b)c=g[b],multiPieData=[],recursiveCategoryCall(c,d);for(b=0;b<headerLen;++b)j.push('category');return d.setRow(0,j),{data:d.toString(),error:UNDEF,predictedFormat:{multilevel:!0}}},jsonToCsv=function(a,b){var c,d,e,f,h,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O=a,P=b&&b.jsVars,Q=b&&b.args,R=Q&&Q.type,S=P&&P.instanceAPI,T=O.chart||O.map||O.graph||{},U=!!(T.exporterrorcolumns||0),V=O.categories&&O.categories[0]&&O.categories[0].category||[],W=O.map&&!O.chart||P&&P.instanceAPI&&'geo'===P.instanceAPI.defaultSeriesType,X=!1,Y=!1,Z=!1,$=!1,_=!1,aa=returnFirstArgument,ba={},ca=0,da=-1;if('multilevelpie'===R)return multilevelPieCsv(a);if(c=new DSV({separator:T.exportdataseparator,qualifier:T.exportdataqualifier,numberFormatted:T.exportdataformattedval}),FCGlobal.formatNumber&&c.numberFormatted&&(aa=function(a,b){return FCGlobal.formatNumber(a,T,b)}),W)for(H in ba.geo=!0,p=P.instanceAPI.getDatasets(),G=p&&p[0]&&p[0].components.data||[],c.setRow(0,['Id',' Short Name','Long Name','Value','Formatted Value']),h=0,G)(I=G[H],J=I.config,M=J.cleanValue,!0!==I.hidden)&&c.setRow(++h,[H,J.shortLabel,J.label,null===M?'':M,J.formattedValue]);else if((p=O.dials&&O.dials.dial||O.pointers&&O.pointers.pointer||O.value)!==UNDEF){if(ba.gauge=!0,'string'==typeof p)c.set(0,0,aa(p)),ba.singlevalue=!0,'string'==typeof O.target&&(c.set(0,1,aa(O.target)),ba.bullet=!0);else for(c.setRow(0,['Id','Value']),ba.multivalue=!0,(h=0,n=1,m=p.length);h<m;h+=1,n+=1)c.setRow(n,[n,aa(p[h].value)]);}else if(p=O.dataset||!(O.data instanceof Array)&&[]){if(ba.multiseries=!0,e=1,q=O.lineset,q&&(p=p.concat(q),ba.lineset=!0),r=O.axis,r&&(p=p.concat(r),ba.multiaxis=!0),u=p.length,t=V.length,!(u=p.length)){for(h=0;h<t;h+=1)v=V[h],c.set(h+1,0,v.label||v.name);ba.multilevel=!0}for(h=0;h<u;h+=1)for(w=p,w[h].dataset?(w=w[h].dataset,f=0,s=w.length):(w=p,f=h,s=f+1);f<s&&!X&&!Z;f+=1)if(x=w[f],da++,!(S&&(D=S.getDatasets())&&D[da]&&!1===D[da].visible)){for(K=S&&D&&D[da],N=K&&K.config&&K.config.parentYAxis,c.set(0,e,x.seriesname),'string'==typeof x.data&&(ba.compactdata=!0,x.data=x.data.split(T.dataseparator||'|')),(m=0,n=0,y=x.data&&x.data.length||0);m<y||m<t;m+=1){if(v=V[m],d=n+1,z=x.data&&x.data[n]||{},z.x!==UNDEF&&z.y!==UNDEF){X=ba.xy=!0;break}if(z.open!==UNDEF||z.high!==UNDEF||z.close!==UNDEF||z.low!==UNDEF){$=ba.ohlc=!0;break}if(z.rowid!==UNDEF&&z.columnid!==UNDEF){Z=ba.heatmap=!0;break}m<t&&!v.vline&&(c.set(d,0,v.label||v.name),A=toFloat(z?z.value:''),A=isNaN(A)?'':aa(A,N),c.set(d,e,A),(Y||U||z.errorvalue)&&(!Y&&c.set(0,e+1,'Error'),C=1,c.set(d,e+1,aa(z.errorvalue))),n+=1)}C&&(e+=C,C=0),e+=1}q&&(p=p.slice(0,-q.length)),r&&(p=p.slice(0,-r.length))}else if(p=O.data){for(c.set(0,1,T.yaxisname||'Value'),ba.singleseries=!0,_='1'==T.showsumatend,(h=0,t=p.length);h<t;h+=1)z=p[h],z.vline||(A=toFloat(z.value?z.value:''),c.setRow(h+1,[z.label||z.name,isNaN(A)?'':(ca+=A,aa(A))]));_&&(ba.summation=!0,c.setRow(h+1,[T.sumlabel||'Total',aa(ca)]))}if($)for(c.clear(),c.setRow(0,['Open','Close','High','Low']),(h=0,d=1,p=O.dataset,s=p.length);h<s;h+=1)for(m=0,x=p[h]&&p[h].data||[],u=x.length;m<u;m+=1,d+=1)z=x[m]||{},c.setRow(m+1,[aa(z.open),aa(z.close),aa(z.high),aa(z.low)]);else if(X){for(c.clear(),Y=!1,C=0,c.setRow(0,['Series','x','y']),(h=0,d=1,p=O.dataset,s=p.length);h<s;h+=1)if(!(S&&(D=S.getDatasets())&&D[h]&&!1===D[h].visible))for(m=0,x=p[h]&&p[h].data||[],u=x.length;m<u;m+=1,d+=1)z=x[m]||{},A=[p[h].seriesname,aa(z.x),aa(z.y)],z.z!==UNDEF&&(A.push(aa(z.z)),!C&&(c.set(0,3,'z'),C=1)),(Y||U||z.errorvalue!==UNDEF||z.horizontalerrorvalue!==UNDEF||z.verticalerrorvalue!==UNDEF)&&(B=aa(z.errorvalue),A.push(z.errorvalue,z.horizontalerrorvalue===UNDEF?B:aa(z.horizontalerrorvalue),z.verticalerrorvalue===UNDEF?B:aa(z.verticalerrorvalue)),!Y&&(c.set(0,C+3,'Error'),c.set(0,C+4,'Horizontal Error'),c.set(0,C+5,'Vertical Error')),Y=ba.error=!0),c.setRow(d,A);}else if(Z){for(c.clear(),E={},F={},(h=0,m=1,V=O.rows&&O.rows.row||[],o=V.length);h<o;h+=1,m+=1)v=V[h],v.id&&(E[v.id.toLowerCase()]=m,c.set(m,0,v.label||v.id));for(h=0,m=1,V=O.columns&&O.columns.column||[],o=V.length;h<o;h+=1,m+=1)v=V[h],v.id&&(F[v.id.toLowerCase()]=m,c.set(0,m,v.label||v.id));for(x=O.dataset&&O.dataset[0]&&O.dataset[0].data||[],L=S&&(D=S.getDatasets())&&D[0]&&D[0].components&&D[0].components.data||[],(h=0,o=x.length);h<o;h+=1)(z=x[h],d=z.rowid.toLowerCase(),e=z.columnid.toLowerCase(),!(L[h]&&!1===L[h].visible))&&(E[d]||(E[d]=c.rowCount,c.set(c.rowCount,0,z.rowid)),F[e]||(F[e]=c.columnCount,c.set(0,c.columnCount,z.columnid)),c.set(E[d],F[e],aa(z.value)))}return r=null,q=null,V=null,p=null,0<c.rowCount&&c.get(0,0)===UNDEF&&c.set(0,0,T.xaxisname||'Label'),{data:c.toString(),error:UNDEF,predictedFormat:ba}},csvToJson=function(a,b){return raiseError(b,'0604111215','run','csvToJson()','fusionCharts CSV data-handler only supports encoding of data.'),a};function getCSVData(){return this.getChartData('csv')}function getDataAsCSV(){return this.getCSVData()}function wrapper(a){return a&&(FCGlobal=a,a.prototype.getDataAsCSV=getDataAsCSV,a.prototype.getCSVData=getCSVData),{format:'csv',toJSON:csvToJson,fromJSON:jsonToCsv}}export default{extension:wrapper,name:'csv',type:'transcoder',requiresFusionCharts:!0};