diff options
author | Ivan Kohler <ivan@freeside.biz> | 2013-12-27 02:56:17 -0800 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2013-12-27 02:56:17 -0800 |
commit | 66c235e33563ccd785ff9e0828398f778a75fb9f (patch) | |
tree | a03b643509f9d97361ab4f62e034041459c49022 /httemplate/graph | |
parent | b73114bf2fad702043e21b76059d88c4560ce872 (diff) |
selectable sales report colors, RT#19464
Diffstat (limited to 'httemplate/graph')
-rw-r--r-- | httemplate/graph/cust_bill_pkg.cgi | 36 | ||||
-rw-r--r-- | httemplate/graph/report_cust_bill_pkg.html | 89 |
2 files changed, 100 insertions, 25 deletions
diff --git a/httemplate/graph/cust_bill_pkg.cgi b/httemplate/graph/cust_bill_pkg.cgi index 9660e5b88..39c972267 100644 --- a/httemplate/graph/cust_bill_pkg.cgi +++ b/httemplate/graph/cust_bill_pkg.cgi @@ -133,11 +133,6 @@ if ( $cgi->param('class_agg_break') eq 'aggregate' ) { #eslaf -my $hue = 0; -#my $hue_increment = 170; -#my $hue_increment = 145; -my $hue_increment = 125; - my @items = (); my @params = (); my @labels = (); @@ -165,14 +160,15 @@ elsif ( $use_usage == 2 ) { # If per-agent totals are enabled, they go under the Agent level. # There aren't any other kinds of subtotals. -foreach my $agent ( $all_agent || $sel_agent || qsearch('agent', { 'disabled' => '' } ) ) { +my $anum = 0; +foreach my $agent ( $all_agent || $sel_agent || $FS::CurrentUser::CurrentUser->agents ) { - my $col_scheme = Color::Scheme->new - ->from_hue($hue) #->from_hex($agent->color) - ->scheme('analogic') - ; - my @recur_colors = (); - my @onetime_colors = (); + my @agent_colors = map { my $col = $cgi->param("agent$anum-color$_"); + $col =~ s/^#//; + $col; + } + (0 .. 5); + my @colorbuf = (); ### fixup the color handling for package classes... ### and usage @@ -219,11 +215,8 @@ foreach my $agent ( $all_agent || $sel_agent || qsearch('agent', { 'disabled' => $rowlink .= "$class_param=$_;" foreach @classnums; push @links, $rowlink; - @recur_colors = ($col_scheme->colors)[0,4,8,1,5,9] - unless @recur_colors; - @onetime_colors = ($col_scheme->colors)[2,6,10,3,7,11] - unless @onetime_colors; - push @colors, shift @recur_colors; + @colorbuf = @agent_colors unless @colorbuf; + push @colors, shift @colorbuf; push @no_graph, 0; } #foreach $component @@ -260,11 +253,8 @@ foreach my $agent ( $all_agent || $sel_agent || qsearch('agent', { 'disabled' => "distribute=$distribute;". "use_override=$use_override;charges=$component;"; - @recur_colors = ($col_scheme->colors)[0,4,8,1,5,9] - unless @recur_colors; - @onetime_colors = ($col_scheme->colors)[2,6,10,3,7,11] - unless @onetime_colors; - push @colors, shift @recur_colors; + @colorbuf = @agent_colors unless @colorbuf; + push @colors, shift @colorbuf; push @no_graph, 0; } #foreach $component @@ -314,7 +304,7 @@ foreach my $agent ( $all_agent || $sel_agent || qsearch('agent', { 'disabled' => push @no_graph, 1; } - $hue += $hue_increment; + $anum++; } diff --git a/httemplate/graph/report_cust_bill_pkg.html b/httemplate/graph/report_cust_bill_pkg.html index d43ce7b64..1e54df3ab 100644 --- a/httemplate/graph/report_cust_bill_pkg.html +++ b/httemplate/graph/report_cust_bill_pkg.html @@ -1,4 +1,11 @@ -<% include('/elements/header.html', 'Sales Report' ) %> +<& /elements/header.html, + { title => 'Sales Report', + head => ' + <SCRIPT TYPE="text/javascript" SRC="'. $p. 'elements/jquery.js"></SCRIPT> + <SCRIPT TYPE="text/javascript" SRC="'. $p. 'elements/spectrum.js"></SCRIPT> + <LINK REL="stylesheet" HREF="'. $p. 'elements/spectrum.css" />', + } +&> <FORM ACTION="cust_bill_pkg.cgi" METHOD="GET"> @@ -16,6 +23,24 @@ </TR> <SCRIPT TYPE="text/javascript"> + +function agent_changed(obj) { + + if ( obj.value == '' ) { //breakdown, one color list per agent needed + document.getElementById('agent0-label').style.display = ''; +% for ( 1 .. $#agents ) { + document.getElementById('agent<% $_ %>-colors').style.display = ''; +% } + } else { //aggregate, only one color list needed + document.getElementById('agent0-label').style.display = 'none'; +% for ( 1 .. $#agents ) { + document.getElementById('agent<% $_ %>-colors').style.display = 'none'; +% } + } + + enable_agent_totals(obj); +} + function enable_agent_totals(obj) { %# enable it iff we are breaking down by agent AND something else obj.form.agent_totals.disabled = !( @@ -56,7 +81,7 @@ window.onload = class_mode_changed; 'disable_empty' => 0, 'pre_options' => [ 'all' => 'all (aggregate)' ], 'empty_label' => 'all (breakdown)', - 'onchange' => 'enable_agent_totals', + 'onchange' => 'agent_changed', &> <& /elements/tr-select-cust_class.html, @@ -159,6 +184,64 @@ window.onload = class_mode_changed; % } <TR> + <TD ALIGN="right">Colors</TD> + <TD> +% my @names = (); +% +% #no particular long-term attachment to this, just trying to replicate +% # historical behavior so people's graphs don't change color suddenly in 3.x +% my $hue = 0; +% my $hue_increment = 125; + + <TABLE> +% my $anum = 0; +% foreach my $agent ( @agents ) { + <TR <% $anum ? 'STYLE="display:none"' : '' %> + ID="agent<%$anum%>-colors" + > + <TD <% $anum ? '' :'STYLE="display:none"' %> + ID="agent<%$anum%>-label" + > + <% $agent->agent |h %> + </TD> + <TD> +% my $col_scheme = Color::Scheme->new +% ->from_hue($hue) #->from_hex($agent->color) +% ->scheme('analogic') +% ; +% +% my $cnum = 0; +% my @colors = ($col_scheme->colors)[ 0,4,8,1,5,9 ];#again some some random historical shite +% for (@colors) { +% my $name = "agent$anum-color$cnum"; +% push @names, $name; +% $cnum++; + <INPUT TYPE = "color" + NAME = "<% $name %>" + ID = "<% $name %>" + VALUE = "#<%$_%>" + > +% } + </TD> + </TR> +% $anum++; +% $hue += $hue_increment; +% } + </TABLE> + </TD> +</TR> + +<SCRIPT TYPE="text/javascript"> + $(document).ready(function() { +% foreach my $name (@names) { + $("#<% $name %>").spectrum({ + clickoutFiresChange: true + }); +% } + }); +</SCRIPT> + +<TR> <TD ALIGN="right"><INPUT TYPE="checkbox" NAME="agent_totals" VALUE="1" DISABLED="1"></TD> <TD>Show per-agent subtotals</TD> </TR> @@ -189,4 +272,6 @@ window.onload = class_mode_changed; die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Financial reports'); +my @agents = $FS::CurrentUser::CurrentUser->agents; + </%init> |