[freeside-commits] branch master updated. 66c235e33563ccd785ff9e0828398f778a75fb9f

Ivan ivan at 420.am
Fri Dec 27 02:56:21 PST 2013


The branch, master has been updated
       via  66c235e33563ccd785ff9e0828398f778a75fb9f (commit)
      from  b73114bf2fad702043e21b76059d88c4560ce872 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 66c235e33563ccd785ff9e0828398f778a75fb9f
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Fri Dec 27 02:56:17 2013 -0800

    selectable sales report colors, RT#19464

diff --git a/FS/FS/access_user.pm b/FS/FS/access_user.pm
index c938474..b740e47 100644
--- a/FS/FS/access_user.pm
+++ b/FS/FS/access_user.pm
@@ -401,6 +401,7 @@ sub agents {
     'table'     => 'agent',
     'hashref'   => { disabled=>'' },
     'extra_sql' => ' AND '. $self->agentnums_sql(@_),
+    'order_by'  => 'ORDER BY agent',
   });
 }
 
diff --git a/httemplate/docs/credits.html b/httemplate/docs/credits.html
index 218698f..908f717 100644
--- a/httemplate/docs/credits.html
+++ b/httemplate/docs/credits.html
@@ -73,6 +73,7 @@ Scott Edwards<BR>
 Kenny Elliott<BR>
 Donald Greer<BR>
 Joel Griffiths<BR>
+Brian Grinstead<BR>
 Ryan Gunn<BR>
 Troy Hammonds<BR>
 Sean Hanson<BR>
@@ -162,7 +163,7 @@ function myHeight() {
         return document.body.document.height;
     else
 */
-        return 1900; // approx height (add more per contributors)
+        return 1959; // approx height (add more per contributors)
 }
 
 document.body.style.overflow = 'hidden';
diff --git a/httemplate/docs/license.html b/httemplate/docs/license.html
index 5262f7a..7982753 100644
--- a/httemplate/docs/license.html
+++ b/httemplate/docs/license.html
@@ -42,6 +42,7 @@ All rights reserved<BR>
     published by the Free Software Foundation, either version 3 of the License,
     or (at your option) any later version.
 
+
 <!--entire other packages-->
 
 <P>
@@ -56,6 +57,7 @@ under the original GPLv2 license.
 Contains "Torrus" <http://www.torrus.org/> from Stanislav Sinyagin / K-Open
 GmbH, licensed under the terms of the GNU GPL.
 
+
 <!--important widgets or other "whole" bits-->
 
 <P>
@@ -75,6 +77,7 @@ the GNU GPL.
 Contains XMenu <http://webfx.eae.net/dhtml/xmenu/xmenu.html>
 by Erik Arvidsson, licensed under the terms of the GNU GPL.
 
+
 <!--RT add-ons-->
 
 <P>
@@ -86,6 +89,7 @@ Contains "RTx::Statistics Package"
 Contains "RTx::WebCronTool" <http://search.cpan.org/dist/RTx-WebCronTool/> from
 Audrey Tang, licensed under the same terms as Perl (GPL/Artistic).
 
+
 <!--libraries-->
 
 <P>
@@ -117,6 +121,15 @@ Contains the Masked Input JavaScript library by Kendall Conrad, licensed under
 a <a href="http://creativecommons.org/licenses/by-sa/3.0/us/">Creative Commons 
 Attribution-ShareAlike 3.0 United States</a> license.
 
+<P>
+Contains the jQuery library <http://jquery.com/> by the jQuery Foundation and
+other contributors, licensed under the terms of the MIT license.
+
+<P>
+Contains the Spectrum No Hassle jQuery Colorpicker by Brian Grinstead, licensed
+under the terms of the MIT license.
+
+
 <!-- artwork -->
 
 <P>
diff --git a/httemplate/graph/cust_bill_pkg.cgi b/httemplate/graph/cust_bill_pkg.cgi
index 9660e5b..39c9722 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 d43ce7b..1e54df3 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>

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/access_user.pm                       |    1 +
 httemplate/docs/credits.html               |    3 +-
 httemplate/docs/license.html               |   13 ++++
 httemplate/graph/cust_bill_pkg.cgi         |   36 ++++-------
 httemplate/graph/report_cust_bill_pkg.html |   89 +++++++++++++++++++++++++++-
 5 files changed, 116 insertions(+), 26 deletions(-)




More information about the freeside-commits mailing list