관리-도구
편집 파일: reports.js
jQuery(function( $ ) { function showTooltip( x, y, contents ) { $( '<div class="chart-tooltip">' + contents + '</div>' ).css( { top: y - 16, left: x + 20 }).appendTo( 'body' ).fadeIn( 200 ); } var prev_data_index = null; var prev_series_index = null; $( '.chart-placeholder' ).bind( 'plothover', function ( event, pos, item ) { if ( item ) { if ( prev_data_index !== item.dataIndex || prev_series_index !== item.seriesIndex ) { prev_data_index = item.dataIndex; prev_series_index = item.seriesIndex; $( '.chart-tooltip' ).remove(); if ( item.series.points.show || item.series.enable_tooltip ) { var y = item.series.data[item.dataIndex][1], tooltip_content = ''; if ( item.series.prepend_label ) { tooltip_content = tooltip_content + item.series.label + ': '; } if ( item.series.prepend_tooltip ) { tooltip_content = tooltip_content + item.series.prepend_tooltip; } tooltip_content = tooltip_content + y; if ( item.series.append_tooltip ) { tooltip_content = tooltip_content + item.series.append_tooltip; } if ( item.series.pie.show ) { showTooltip( pos.pageX, pos.pageY, tooltip_content ); } else { showTooltip( item.pageX, item.pageY, tooltip_content ); } } } } else { $( '.chart-tooltip' ).remove(); prev_data_index = null; } }); $( '.kkart_sparkline.bars' ).each( function() { var chart_data = $( this ).data( 'sparkline' ); var options = { grid: { show: false } }; // main series var series = [{ data: chart_data, color: $( this ).data( 'color' ), bars: { fillColor: $( this ).data( 'color' ), fill: true, show: true, lineWidth: 1, barWidth: $( this ).data( 'barwidth' ), align: 'center' }, shadowSize: 0 }]; // draw the sparkline $.plot( $( this ), series, options ); }); $( '.kkart_sparkline.lines' ).each( function() { var chart_data = $( this ).data( 'sparkline' ); var options = { grid: { show: false } }; // main series var series = [{ data: chart_data, color: $( this ).data( 'color' ), lines: { fill: false, show: true, lineWidth: 1, align: 'center' }, shadowSize: 0 }]; // draw the sparkline $.plot( $( this ), series, options ); }); var dates = $( '.range_datepicker' ).datepicker({ changeMonth: true, changeYear: true, defaultDate: '', dateFormat: 'yy-mm-dd', numberOfMonths: 1, minDate: '-20Y', maxDate: '+1D', showButtonPanel: true, showOn: 'focus', buttonImageOnly: true, onSelect: function() { var option = $( this ).is( '.from' ) ? 'minDate' : 'maxDate', date = $( this ).datepicker( 'getDate' ); dates.not( this ).datepicker( 'option', option, date ); } }); var a = document.createElement( 'a' ); if ( typeof a.download === 'undefined' ) { $( '.export_csv' ).hide(); } // Export $( '.export_csv' ).click( function() { var exclude_series = $( this ).data( 'exclude_series' ) || ''; exclude_series = exclude_series.toString(); exclude_series = exclude_series.split( ',' ); var xaxes_label = $( this ).data( 'xaxes' ); var groupby = $( this ) .data( 'groupby' ); var index_type = $( this ).data( 'index_type' ); var export_format = $( this ).data( 'export' ); var csv_data = ''; var s, series_data, d; if ( 'table' === export_format ) { $( this ).offsetParent().find( 'thead tr,tbody tr' ).each( function() { $( this ).find( 'th, td' ).each( function() { var value = $( this ).text(); value = value.replace( '[?]', '' ).replace( '#', '' ); csv_data += '"' + value + '"' + ','; }); csv_data = csv_data.substring( 0, csv_data.length - 1 ); csv_data += '\n'; }); $( this ).offsetParent().find( 'tfoot tr' ).each( function() { $( this ).find( 'th, td' ).each( function() { var value = $( this ).text(); value = value.replace( '[?]', '' ).replace( '#', '' ); csv_data += '"' + value + '"' + ','; if ( $( this ).attr( 'colspan' ) > 0 ) { for ( i = 1; i < $(this).attr('colspan'); i++ ) { csv_data += '"",'; } } }); csv_data = csv_data.substring( 0, csv_data.length - 1 ); csv_data += '\n'; }); } else { if ( ! window.main_chart ) { return false; } var the_series = window.main_chart.getData(); var series = []; csv_data += '"' + xaxes_label + '",'; $.each( the_series, function( index, value ) { if ( ! exclude_series || $.inArray( index.toString(), exclude_series ) === -1 ) { series.push( value ); } }); // CSV Headers for ( s = 0; s < series.length; ++s ) { csv_data += '"' + series[s].label + '",'; } csv_data = csv_data.substring( 0, csv_data.length - 1 ); csv_data += '\n'; // Get x axis values var xaxis = {}; for ( s = 0; s < series.length; ++s ) { series_data = series[s].data; for ( d = 0; d < series_data.length; ++d ) { xaxis[series_data[d][0]] = []; // Zero values to start for ( var i = 0; i < series.length; ++i ) { xaxis[series_data[d][0]].push(0); } } } // Add chart data for ( s = 0; s < series.length; ++s ) { series_data = series[s].data; for ( d = 0; d < series_data.length; ++d ) { xaxis[series_data[d][0]][s] = series_data[d][1]; } } // Loop data and output to csv string $.each( xaxis, function( index, value ) { var date = new Date( parseInt( index, 10 ) ); if ( 'none' === index_type ) { csv_data += '"' + index + '",'; } else { if ( groupby === 'day' ) { csv_data += '"' + date.getUTCFullYear() + '-' + parseInt( date.getUTCMonth() + 1, 10 ) + '-' + date.getUTCDate() + '",'; } else { csv_data += '"' + date.getUTCFullYear() + '-' + parseInt( date.getUTCMonth() + 1, 10 ) + '",'; } } for ( var d = 0; d < value.length; ++d ) { var val = value[d]; if ( Math.round( val ) !== val ) { val = parseFloat( val ); val = val.toFixed( 2 ); } csv_data += '"' + val + '",'; } csv_data = csv_data.substring( 0, csv_data.length - 1 ); csv_data += '\n'; } ); } csv_data = 'data:text/csv;charset=utf-8,\uFEFF' + encodeURIComponent( csv_data ); // Set data as href and return $( this ).attr( 'href', csv_data ); return true; }); });