@@ -394,6 +394,124 @@ function () {
394
394
}
395
395
);
396
396
397
+ jQuery( '.export_csv' ).click( function() {
398
+ var exclude_series = jQuery( this ).data( 'exclude_series' ) || '';
399
+ exclude_series = exclude_series.toString();
400
+ exclude_series = exclude_series.split( ',' );
401
+ var xaxes_label = jQuery( this ).data( 'xaxes' );
402
+ var groupby = jQuery( this ) .data( 'groupby' );
403
+ var index_type = jQuery( this ).data( 'index_type' );
404
+ var export_format = jQuery( this ).data( 'export' );
405
+ var csv_data = 'data:text/csv;charset=utf-8,\uFEFF';
406
+ var s, series_data, d;
407
+
408
+ if ( 'table' === export_format ) {
409
+
410
+ jQuery( this ).offsetParent().find( 'thead tr,tbody tr' ).each( function() {
411
+ jQuery( this ).find( 'th, td' ).each( function() {
412
+ var value = jQuery( this ).text();
413
+ value = value.replace( '[?]', '' ).replace( '#', '' );
414
+ csv_data += '"' + value + '"' + ',';
415
+ });
416
+ csv_data = csv_data.substring( 0, csv_data.length - 1 );
417
+ csv_data += '\n';
418
+ });
419
+
420
+ jQuery( this ).offsetParent().find( 'tfoot tr' ).each( function() {
421
+ jQuery( this ).find( 'th, td' ).each( function() {
422
+ var value = jQuery( this ).text();
423
+ value = value.replace( '[?]', '' ).replace( '#', '' );
424
+ csv_data += '"' + value + '"' + ',';
425
+ if ( jQuery( this ).attr( 'colspan' ) > 0 ) {
426
+ for ( i = 1; i < jQuery(this).attr('colspan'); i++ ) {
427
+ csv_data += '"",';
428
+ }
429
+ }
430
+ });
431
+ csv_data = csv_data.substring( 0, csv_data.length - 1 );
432
+ csv_data += '\n';
433
+ });
434
+
435
+ } else {
436
+
437
+ if ( ! window.main_chart ) {
438
+ return false;
439
+ }
440
+
441
+ var the_series = stripe_main_char.getData();
442
+ var series = [];
443
+ csv_data += '"' + xaxes_label + '",';
444
+
445
+ jQuery.each( the_series, function( index, value ) {
446
+ if ( ! exclude_series || jQuery.inArray( index.toString(), exclude_series ) === -1 ) {
447
+ series.push( value );
448
+ }
449
+ });
450
+
451
+ // CSV Headers
452
+ for ( s = 0; s < series.length; ++s ) {
453
+ csv_data += '"' + series[s].label + '",';
454
+ }
455
+
456
+ csv_data = csv_data.substring( 0, csv_data.length - 1 );
457
+ csv_data += '\n';
458
+
459
+ // Get x axis values
460
+ var xaxis = {};
461
+
462
+ for ( s = 0; s < series.length; ++s ) {
463
+ series_data = series[s].data;
464
+ for ( d = 0; d < series_data.length; ++d ) {
465
+ xaxis[series_data[d][0]] = [];
466
+ // Zero values to start
467
+ for ( var i = 0; i < series.length; ++i ) {
468
+ xaxis[series_data[d][0]].push(0);
469
+ }
470
+ }
471
+ }
472
+
473
+ // Add chart data
474
+ for ( s = 0; s < series.length; ++s ) {
475
+ series_data = series[s].data;
476
+ for ( d = 0; d < series_data.length; ++d ) {
477
+ xaxis[series_data[d][0]][s] = series_data[d][1];
478
+ }
479
+ }
480
+
481
+ // Loop data and output to csv string
482
+ jQuery.each( xaxis, function( index, value ) {
483
+ var date = new Date( parseInt( index, 10 ) );
484
+
485
+ if ( 'none' === index_type ) {
486
+ csv_data += '"' + index + '",';
487
+ } else {
488
+ if ( groupby === 'day' ) {
489
+ csv_data += '"' + date.getUTCFullYear() + '-' + parseInt( date.getUTCMonth() + 1, 10 ) + '-' + date.getUTCDate() + '",';
490
+ } else {
491
+ csv_data += '"' + date.getUTCFullYear() + '-' + parseInt( date.getUTCMonth() + 1, 10 ) + '",';
492
+ }
493
+ }
494
+
495
+ for ( var d = 0; d < value.length; ++d ) {
496
+ var val = value[d];
497
+
498
+ if ( Math.round( val ) !== val ) {
499
+ val = parseFloat( val );
500
+ val = val.toFixed( 2 );
501
+ }
502
+
503
+ csv_data += '"' + val + '",';
504
+ }
505
+ csv_data = csv_data.substring( 0, csv_data.length - 1 );
506
+ csv_data += '\n';
507
+ } );
508
+ }
509
+
510
+ // Set data as href and return
511
+ jQuery( this ).attr( 'href', encodeURI( csv_data ) );
512
+ return true;
513
+ });
514
+
397
515
});
398
516
</script>
399
517
<?php
0 commit comments