summaryrefslogtreecommitdiff
path: root/httemplate/graph
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2013-12-27 02:56:17 -0800
committerIvan Kohler <ivan@freeside.biz>2013-12-27 02:56:17 -0800
commit66c235e33563ccd785ff9e0828398f778a75fb9f (patch)
treea03b643509f9d97361ab4f62e034041459c49022 /httemplate/graph
parentb73114bf2fad702043e21b76059d88c4560ce872 (diff)
selectable sales report colors, RT#19464
Diffstat (limited to 'httemplate/graph')
-rw-r--r--httemplate/graph/cust_bill_pkg.cgi36
-rw-r--r--httemplate/graph/report_cust_bill_pkg.html89
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>