Changeset 24
- Timestamp:
- 2007-11-01 15:41:56 (1 year ago)
- Files:
-
- trunk/irstats/htdocs/mochikit (added)
- trunk/irstats/htdocs/mochikit/MochiKit.js (added)
- trunk/irstats/htdocs/mochikit/__package__.js (added)
- trunk/irstats/htdocs/plotkit (added)
- trunk/irstats/htdocs/plotkit/Base.js (added)
- trunk/irstats/htdocs/plotkit/Canvas.js (added)
- trunk/irstats/htdocs/plotkit/EasyPlot.js (added)
- trunk/irstats/htdocs/plotkit/Layout.js (added)
- trunk/irstats/htdocs/plotkit/PlotKit.js (added)
- trunk/irstats/htdocs/plotkit/PlotKit_Packed.js (added)
- trunk/irstats/htdocs/plotkit/SVG.js (added)
- trunk/irstats/htdocs/plotkit/SweetCanvas.js (added)
- trunk/irstats/htdocs/plotkit/SweetSVG.js (added)
- trunk/irstats/htdocs/plotkit/dummy.svg (added)
- trunk/irstats/htdocs/plotkit/excanvas.js (added)
- trunk/irstats/perl_lib/IRStats/View/DownloadCountHTML.pm (modified) (1 diff)
- trunk/irstats/perl_lib/IRStats/View/SearchEngineGraph.pm (modified) (1 diff)
- trunk/irstats/perl_lib/IRStats/Visualisation/Graph.pm (modified) (2 diffs)
- trunk/irstats/perl_lib/IRStats/Visualisation/Graph/Bar.pm (modified) (2 diffs)
- trunk/irstats/perl_lib/IRStats/Visualisation/Graph/Graph.pm.bak (deleted)
- trunk/irstats/perl_lib/IRStats/Visualisation/Graph/GraphLegend.pm (modified) (1 diff)
- trunk/irstats/perl_lib/IRStats/Visualisation/Graph/Line.pm (modified) (3 diffs)
- trunk/irstats/perl_lib/IRStats/Visualisation/Graph/Pie.pm (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/irstats/perl_lib/IRStats/View/DownloadCountHTML.pm
r1 r24 8 8 use IRStats::Visualisation::HTML; 9 9 use IRStats::View; 10 use perlchartdir;11 10 use Data::Dumper; 12 11 trunk/irstats/perl_lib/IRStats/View/SearchEngineGraph.pm
r19 r24 8 8 use IRStats::Visualisation::Graph::Pie; 9 9 use IRStats::View; 10 use perlchartdir;11 10 use Data::Dumper; 12 11 trunk/irstats/perl_lib/IRStats/Visualisation/Graph.pm
r12 r24 5 5 6 6 use IRStats::Visualisation; 7 use perlchartdir;8 7 use List::Util 'shuffle'; 9 8 use Data::Dumper; 9 10 BEGIN 11 { 12 eval "use perlchartdir"; 13 $IRStats::Visualisation::Graph::CHART_DIRECTOR = $@ ? 0 : 1; 14 } 10 15 11 16 our @ISA = qw/ IRStats::Visualisation /; … … 63 68 } 64 69 70 sub render 71 { 72 my( $self ) = @_; 65 73 66 67 68 74 if( $IRStats::Visualisation::Graph::CHART_DIRECTOR ) 75 { 76 return $self->chartdirector_render; 77 } 78 else 79 { 80 return $self->plotkit_render; 81 } 82 } 69 83 70 84 1; 71 trunk/irstats/perl_lib/IRStats/Visualisation/Graph/Bar.pm
r1 r24 2 2 3 3 use strict; 4 use warnings;5 4 6 5 use IRStats::Visualisation::Graph::GraphLegend; 7 6 use IRStats::Visualisation::Graph; 8 use perlchartdir;9 use Data::Dumper;10 7 11 8 our @ISA = qw(IRStats::Visualisation::Graph); … … 18 15 } 19 16 20 sub render 17 sub quote_javascript 18 { 19 my( $value ) = @_; 20 $value =~ s/'/\\'/g; 21 return "'$value'"; 22 } 23 24 sub plotkit_render 21 25 { 22 26 my ($self) = @_; 27 28 my $base_url = $self->{params}->get('conf')->static_url; 29 30 my $width = 490; 31 my $height = 290; 32 33 # Quick hack to get a unique id 34 my $canvas_id = $self->{filename}; 35 $canvas_id =~ s/\.png$//; 36 37 my @x_labels = @{$self->{x_labels}}; 38 my @data = @{$self->{data_series}->[0]->{data}}; 39 my $label = quote_javascript($self->{data_series}->[0]->{citation} || '(null)'); 40 41 my @series; 42 my @labels; 43 44 my $tick_every = scalar(@x_labels)/10; 45 46 for(my $i = 0; $i < @x_labels; $i++) 47 { 48 push @series, "[".$i.",".$data[$i]."]"; 49 push @labels, "{v:".$i.", label:".quote_javascript($x_labels[$i])."}" if int($i % $tick_every) == 0; 50 } 51 52 my $data_array = join(',', @series); 53 my $labels_array = join(',', @labels); 54 55 my $barWidthFillFraction = '0.75'; 56 my $renderer = 'SweetCanvasRenderer'; 57 58 my $html = <<EOH; 59 <script type="text/javascript" src="$base_url/mochikit/MochiKit.js"></script> 60 <script type="text/javascript" src="$base_url/plotkit/Base.js"></script> 61 <script type="text/javascript" src="$base_url/plotkit/Layout.js"></script> 62 <script type="text/javascript" src="$base_url/plotkit/Canvas.js"></script> 63 <script type="text/javascript" src="$base_url/plotkit/SweetCanvas.js"></script> 64 <div class='bar_graph'> 65 <div><canvas id='$canvas_id' width='$width' height='$height'></canvas></div><br /> 66 </div> 67 EOH 68 69 my $options = <<EOH; 70 'yTickPrecision': 0, 71 'xNumberOfTicks': 10, 72 'axisLabelColor': Color.blackColor(), 73 'xTicks': [$labels_array] 74 EOH 75 76 # Approximately! 77 if( scalar(@series)*2 > $width ) 78 { 79 $html .= <<EOH; 80 <script type="text/javascript"> 81 var options = { 82 $options, 83 'barWidthFillFraction': 2, 84 'shouldStroke': false, 85 'shouldFill': true 86 }; 87 var layout = new PlotKit.Layout('bar',options); 88 layout.addDataset($label,[$data_array]); 89 layout.evaluate(); 90 var canvas = MochiKit.DOM.getElement('$canvas_id'); 91 var plotter = new PlotKit.CanvasRenderer(canvas,layout,options); 92 93 plotter.render(); 94 </script> 95 EOH 96 } 97 else 98 { 99 $html .= <<EOH; 100 <script type="text/javascript"> 101 var options = { 102 $options 103 }; 104 var layout = new PlotKit.Layout('bar',options); 105 layout.addDataset($label,[$data_array]); 106 layout.evaluate(); 107 var canvas = MochiKit.DOM.getElement('$canvas_id'); 108 var plotter = new PlotKit.SweetCanvasRenderer(canvas,layout,options); 109 110 plotter.render(); 111 </script> 112 EOH 113 } 114 115 return $html; 116 } 117 118 sub chartdirector_render 119 { 120 my( $self ) = @_; 23 121 24 122 my $c = new XYChart(500, 300, 0xeeeeff, 0x000000, 1); trunk/irstats/perl_lib/IRStats/Visualisation/Graph/GraphLegend.pm
r1 r24 2 2 3 3 use strict; 4 use warnings;5 4 6 5 sub new trunk/irstats/perl_lib/IRStats/Visualisation/Graph/Line.pm
r1 r24 2 2 3 3 use strict; 4 use warnings;5 4 6 5 use IRStats::Visualisation::Graph::GraphLegend; 7 use Data::Dumper;8 use perlchartdir;9 6 use IRStats::Visualisation::Graph; 10 #use IRStats::Visualisation;11 7 12 8 # A graph object expects the following in the data hash: … … 36 32 } 37 33 34 sub quote_javascript 35 { 36 my( $value ) = @_; 37 $value =~ s/'/\\'/g; 38 return "'$value'"; 39 } 38 40 39 sub render 41 42 sub chartdirector_render 40 43 { 41 44 my ($self) = @_; 42 45 43 my $c = new XYChart( 600, 300, 0xeeeeff, 0x000000, 1);46 my $c = new XYChart(500, 300, 0xeeeeff, 0x000000, 1); 44 47 $c->setRoundedFrame(); 45 48 $c->setPlotArea(55, 58, 520, 195, 0xffffff, -1, -1, 0xcccccc, 0xcccccc); … … 77 80 } 78 81 82 sub plotkit_render 83 { 84 my ($self) = @_; 85 86 my $base_url = $self->{params}->get('conf')->static_url; 87 88 my $width = 490; 89 90 # Quick hack to get a unique id 91 my $canvas_id = $self->{filename}; 92 $canvas_id =~ s/\.png$//; 93 94 my @x_labels = @{$self->{x_labels}}; 95 my @data = @{$self->{data_series}->[0]->{data}}; 96 my $label = quote_javascript($self->{data_series}->[0]->{citation} || '(null)'); 97 98 my @series; 99 my @labels; 100 101 my $tick_every = scalar(@x_labels)/10; 102 103 for(my $i = 0; $i < @x_labels; $i++) 104 { 105 push @series, "[".$i.",".$data[$i]."]"; 106 push @labels, "{v:".$i.", label:".quote_javascript($x_labels[$i])."}" if int($i % $tick_every) == 0; 107 } 108 109 my $data_array = join(',', @series); 110 my $labels_array = join(',', @labels); 111 112 my $html = <<EOH; 113 <script type="text/javascript" src="$base_url/mochikit/MochiKit.js"></script> 114 <script type="text/javascript" src="$base_url/plotkit/Base.js"></script> 115 <script type="text/javascript" src="$base_url/plotkit/Layout.js"></script> 116 <script type="text/javascript" src="$base_url/plotkit/Canvas.js"></script> 117 <script type="text/javascript" src="$base_url/plotkit/SweetCanvas.js"></script> 118 <div class='bar_graph'> 119 <div><canvas id='$canvas_id' width='$width' height='290'></canvas></div><br /> 120 </div> 121 <script type="text/javascript"> 122 var options = { 123 'yTickPrecision': 0, 124 'xTicks': [$labels_array], 125 'xNumberOfTicks': 10, 126 'shouldStroke': true, 127 // 'strokeWidth': 0.1, 128 'axisLabelColor': Color.blackColor(), 129 'shouldFill': false 130 }; 131 var layout = new PlotKit.Layout('line',options); 132 layout.addDataset($label,[$data_array]); 133 layout.evaluate(); 134 var canvas = MochiKit.DOM.getElement('$canvas_id'); 135 var plotter = new PlotKit.CanvasRenderer(canvas,layout,options); 136 137 plotter.render(); 138 </script> 139 EOH 140 141 return $html; 142 } 143 79 144 1; 80 trunk/irstats/perl_lib/IRStats/Visualisation/Graph/Pie.pm
r1 r24 2 2 3 3 use strict; 4 use warnings;5 4 6 use perlchartdir;7 5 use IRStats::Visualisation::Graph; 8 9 6 10 7 our @ISA = qw/ IRStats::Visualisation::Graph /; … … 18 15 } 19 16 17 sub quote_javascript 18 { 19 my( $value ) = @_; 20 $value =~ s/'/\\'/g; 21 return "'$value'"; 22 } 20 23 21 sub render24 sub chartdirector_render 22 25 { 23 26 my ($self) = @_; … … 47 50 } 48 51 52 sub plotkit_render 53 { 54 my ($self) = @_; 55 56 my $base_url = $self->{params}->get('conf')->static_url; 57 58 # Quick hack to get a unique id 59 my $canvas_id = $self->{filename}; 60 $canvas_id =~ s/\.png$//; 61 62 my @series = (); 63 my @labels = (); 64 my $i = 0; 65 foreach (@{$self->{'data_series'}}) 66 { 67 push @series,'['.$i.', '.$_->{data}.']'; 68 my $c = $_->{citation} || '(null)'; 69 push @labels, '{v:'.$i.', label:'.quote_javascript($c).'}'; 70 ++$i; 71 } 72 73 my $series_array = join(',', @series); 74 my $labels_array = join(',', @labels); 75 76 my $html = <<EOH; 77 <div class='pie_graph'> 78 <div><canvas id='$canvas_id' height="290" width="490"></canvas></div><br /> 79 </div> 80 <script type="text/javascript" src="$base_url/mochikit/MochiKit.js"></script> 81 <script type="text/javascript" src="$base_url/plotkit/Base.js"></script> 82 <script type="text/javascript" src="$base_url/plotkit/Layout.js"></script> 83 <script type="text/javascript" src="$base_url/plotkit/Canvas.js"></script> 84 <script type="text/javascript" src="$base_url/plotkit/SweetCanvas.js"></script> 85 <script type="text/javascript"> 86 var options = { 87 'xTicks': [$labels_array], 88 'axisLabelColor': Color.blackColor(), 89 'axisLabelWidth': 100, 90 'axisLabelFontSize': 14, 91 }; 92 var layout = new PlotKit.Layout("pie", options); 93 layout.addDataset("data", [$series_array]); 94 layout.evaluate(); 95 var canvas = MochiKit.DOM.getElement('$canvas_id'); 96 var plotter = new PlotKit.SweetCanvasRenderer(canvas, layout, options); 97 98 plotter.render(); 99 </script> 100 EOH 101 return $html; 102 } 103 49 104 1; 50 105
