integrate RTx::Statistics package, part of merging spiritone RT changes (#1661)
[freeside.git] / rt / html / Reports / Activity / Elements / MiniPlot
1 <table class="miniplot"><tr>
2 % for my $major (@major) {
3 <td><div class="graph">
4     <ul>
5 % my $i = 0;
6 % for my $minor (@minor) {
7 %   my $percent = int( 100 * ($data->{$major}{$minor} || 0) / $max );
8         <li class="c<% ($i % 6) + 1%>" style="width: <% $barwidth %>%; 
9                                               left: <% $baroffset + $each * $i %>%;
10                                               height: <% $percent %>%;"><div class="data"><% $minor %>: <% $percent %>%</div></li>
11 % $i++;
12 % }
13     </ul>
14 </div></td>
15 % }
16 </tr><tr>
17 % for my $major (@major) {
18 <th class="legend"><% $major %></th>
19 % }
20 </tr>
21 </table>
22
23 <table class="miniplot"><tr>
24 % my $i = 0;
25 % for my $minor (@minor) {
26 <th><span class="demoblock c<% ($i++ % 6) + 1 %>"></span> <% $minor %></th>
27 % }
28 </tr>
29 </table>
30
31 <%args>
32 $data
33 $major => undef
34 $minor => undef
35 </%args>
36 <%init>
37
38 my $max = 1;
39
40 my %minor;
41 for my $major (keys %{$data}) {
42     for (keys %{$data->{$major}}) {
43         $minor{$_}++;
44         $max = $data->{$major}{$_} if $data->{$major}{$_} > $max;
45     }
46 }
47
48 my @major = $major ? @{$major} : sort keys %{$data};
49 my @minor = $minor ? @{$minor} : sort keys %minor;
50
51 return unless @minor and @major;
52
53 my $each      = int( (100 / @minor) );
54 my $barwidth  = int( (100 / @minor) * (3/4) );
55 my $baroffset = int( (100 / @minor) * (1/8) );
56
57 </%init>