From e65c6a26ca778166aec2b2d1dd3012ab84fa611a Mon Sep 17 00:00:00 2001 From: ivan Date: Sun, 7 May 2006 20:27:21 +0000 Subject: first pass at sales reports per agent and package class --- httemplate/graph/elements/monthly.html | 157 +++++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 httemplate/graph/elements/monthly.html (limited to 'httemplate/graph/elements') diff --git a/httemplate/graph/elements/monthly.html b/httemplate/graph/elements/monthly.html new file mode 100644 index 000000000..c45113fa3 --- /dev/null +++ b/httemplate/graph/elements/monthly.html @@ -0,0 +1,157 @@ +<% + + # options example... + # + # 'title' => 'Page title', + # 'items' => \@items, + # 'params' => \@params, # opt, + # 'labels' => \@labels, # or \%labels (keys are items) + # 'graph_labels' => \%graph_labels, + # 'colors' => \%colors, + # 'links => \%link, #opt + # 'start_month' => $smonth, + # 'start_year' => $syear, + # 'end_month' => $emonth, + # 'end_year' => $eyear, + # 'agentnum' => $agentnum, #opt + # 'nototal' => 1, #opt, + # 'graph_type' => 'LinesPoints', #opt + + my(%opt) = @_; + my @items = @{ $opt{'items'} }; + + #foreach my $other (qw( labels graph_labels colors links )) { + foreach my $other (qw( labels graph_labels colors )) { + if ( ref($opt{$other}) eq 'HASH' ) { + $opt{$other} = [ map $opt{$other}{$_}, @items ]; + } + } + + my $report = new FS::Report::Table::Monthly ( + #'items' => $opt{'items'}, + 'items' => \@items, + 'params' => $opt{'params'}, + 'start_month' => $opt{'start_month'}, + 'start_year' => $opt{'start_year'}, + 'end_month' => $opt{'end_month'}, + 'end_year' => $opt{'end_year'}, + 'agentnum' => $opt{'agentnum'}, + ); + my $data = $report->data; + + if ( $cgi->param('_type') =~ /^(png)$/ ) { + + #my $chart = Chart::LinesPoints->new(1024,480); + #my $chart = Chart::LinesPoints->new(768,480); + + my $graph_type = 'LinesPoints'; + if ( $opt{'graph_type'} =~ /^(LinesPoints|Mountain)$/ ) { + $graph_type = $1; + } + my $class = "Chart::$graph_type"; + + my $chart = $class->new(976,384); + + my $d = 0; + $chart->set( + #'min_val' => 0, + 'legend' => 'bottom', + 'colors' => { ( + map { my $color = $_; + 'dataset'.$d++ => + [ map hex($_), unpack 'a2a2a2', $color ] + } + @{ $opt{'colors'} } + ), + #'grey_background' => [ 211, 211, 211 ], + 'grey_background' => 'white', + 'background' => [ 0xe8, 0xe8, 0xe8 ], #grey + }, + #'grey_background' => 'false', + 'legend_labels' => $opt{'graph_labels'}, + 'brush_size' => 4, + #'pt_size' => 12, + ); + + #my @data = map { $data->{$_} } ( 'label', @items ); + my @data = @{ $data->{data} }; + unshift @data, $data->{'label'}; + + http_header('Content-Type' => 'image/png' ); + + $chart->_set_colors(); + + %><%= $chart->scalar_png(\@data) %><% + + } else { + + my @mon = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); + +%><%= include('/elements/header.html', $opt{'title'} ) %> + +<% $cgi->param('_type', 'png'); %> + +
+ +<%= table('e8e8e8') %> + + + + + + <% foreach my $column ( @{$data->{label}} ) { + #$column =~ s/^(\d+)\//$mon[$1-1]
/e; + $column =~ s/^(\d+)\//$mon[$1-1]
/; + %> + <%= $column %> + <% } %> + + <% unless ( $opt{'nototal'} ) { %> + Total + <% } %> + + + +<% foreach my $row (@items) { + + my $color = shift( @{ $opt{'colors'} } ); +%> + + + + <%= shift( @{ $opt{'labels'} } ) %> + + <% my $link = exists($opt{'links'}{$row}) + ? qq( + <%= $link ? $link. 'begin='. shift(@speriod). ';end='. shift(@eperiod). '">' : '' %>$<%= sprintf("%.2f", $column) %><%= $link ? '' : '' %> + + <% $total += $column; %> + + <% } %> + + <% unless ( $opt{'nototal'} ) { %> + + + <%= $link ? $link. 'begin='. @{$data->{speriod}}[0]. ';end='. @{$data->{eperiod}}[-1]. '">' : '' %>$<%= sprintf("%.2f", $total) %><%= $link ? '' : '' %> + + + <% } %> + + + +<% } %> + + + +<%= include('/elements/footer.html') %> + +<% } %> -- cgit v1.2.1 From 896ef9b1a5302dc2d96d351702be94184825cc91 Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 8 May 2006 10:01:54 +0000 Subject: sales report per agent and package class looks good --- httemplate/graph/elements/monthly.html | 97 +++++++++++++++++++++++++--------- 1 file changed, 73 insertions(+), 24 deletions(-) (limited to 'httemplate/graph/elements') diff --git a/httemplate/graph/elements/monthly.html b/httemplate/graph/elements/monthly.html index c45113fa3..3b9f73aa1 100644 --- a/httemplate/graph/elements/monthly.html +++ b/httemplate/graph/elements/monthly.html @@ -5,10 +5,10 @@ # 'title' => 'Page title', # 'items' => \@items, # 'params' => \@params, # opt, - # 'labels' => \@labels, # or \%labels (keys are items) - # 'graph_labels' => \%graph_labels, - # 'colors' => \%colors, - # 'links => \%link, #opt + # 'labels' => \@labels, # or \%labels (keys are items) + # 'graph_labels' => \@graph_labels, # or \%graph_labels, + # 'colors' => \@colors, # or \%colors, + # 'links => \@links, # or \%link, #opt # 'start_month' => $smonth, # 'start_year' => $syear, # 'end_month' => $emonth, @@ -16,26 +16,38 @@ # 'agentnum' => $agentnum, #opt # 'nototal' => 1, #opt, # 'graph_type' => 'LinesPoints', #opt + # 'remove_empty' => 1, #opt, + # 'bottom_total' => 1, #opt, my(%opt) = @_; my @items = @{ $opt{'items'} }; - #foreach my $other (qw( labels graph_labels colors links )) { - foreach my $other (qw( labels graph_labels colors )) { + foreach my $other (qw( labels graph_labels colors links )) { + #foreach my $other (qw( labels graph_labels colors )) { if ( ref($opt{$other}) eq 'HASH' ) { $opt{$other} = [ map $opt{$other}{$_}, @items ]; } } my $report = new FS::Report::Table::Monthly ( + #'items' => $opt{'items'}, - 'items' => \@items, - 'params' => $opt{'params'}, - 'start_month' => $opt{'start_month'}, - 'start_year' => $opt{'start_year'}, - 'end_month' => $opt{'end_month'}, - 'end_year' => $opt{'end_year'}, - 'agentnum' => $opt{'agentnum'}, + 'items' => \@items, + 'params' => $opt{'params'}, + 'item_labels' => ( $cgi->param('_type') =~ /^(png)$/ + ? $opt{'graph_labels'} + : $opt{'labels'} + ), + 'colors' => $opt{'colors'}, + 'links' => $opt{'links'}, + + 'start_month' => $opt{'start_month'}, + 'start_year' => $opt{'start_year'}, + 'end_month' => $opt{'end_month'}, + 'end_year' => $opt{'end_year'}, + + 'agentnum' => $opt{'agentnum'}, + 'remove_empty' => $opt{'remove_empty'}, ); my $data = $report->data; @@ -61,14 +73,15 @@ 'dataset'.$d++ => [ map hex($_), unpack 'a2a2a2', $color ] } - @{ $opt{'colors'} } + #@{ $opt{'colors'} } + @{ $data->{'colors'} } ), #'grey_background' => [ 211, 211, 211 ], 'grey_background' => 'white', 'background' => [ 0xe8, 0xe8, 0xe8 ], #grey }, #'grey_background' => 'false', - 'legend_labels' => $opt{'graph_labels'}, + 'legend_labels' => $data->{'item_labels'}, 'brush_size' => 4, #'pt_size' => 12, ); @@ -112,36 +125,72 @@ -<% foreach my $row (@items) { +<% my @bottom_total = (); + foreach my $row ( @{ $data->{'items'} } ) { - my $color = shift( @{ $opt{'colors'} } ); + #my $color = shift( @{ $opt{'colors'} } ); + my $color = shift( @{ $data->{'colors'} } ); + my $link = shift( @{ $data->{'links'} } ); + $link = $link ? qq("><%= shift( @{ $opt{'labels'} } ) %> + <%= shift( @{ $data->{'item_labels'} } ) %> - <% my $link = exists($opt{'links'}{$row}) - ? qq({speriod}}; my @eperiod = @{$data->{eperiod}}; my $total = 0; %> - <% foreach my $column ( @{ shift( @{$data->{data}} ) } ) { # ( @{$data->{$row}} ) { + <% my $col = 0; + foreach my $column ( @{ shift( @{$data->{data}} ) } ) { # ( @{$data->{$row}} ) { %> <%= $link ? $link. 'begin='. shift(@speriod). ';end='. shift(@eperiod). '">' : '' %>$<%= sprintf("%.2f", $column) %><%= $link ? '' : '' %> - <% $total += $column; %> + <% + $total += $column; + $bottom_total[$col++] += $column; + %> <% } %> <% unless ( $opt{'nototal'} ) { %> - <%= $link ? $link. 'begin='. @{$data->{speriod}}[0]. ';end='. @{$data->{eperiod}}[-1]. '">' : '' %>$<%= sprintf("%.2f", $total) %><%= $link ? '' : '' %> + <%= $link ? $link. 'begin='. ${$data->{speriod}}[0]. ';end='. ${$data->{eperiod}}[-1]. '">' : '' %>$<%= sprintf("%.2f", $total) %><%= $link ? '' : '' %> + + + <% $bottom_total[$col++] += $total; %> + + <% } %> + + + +<% } %> + +<% if ( $opt{'bottom_total'} ) { + my @speriod = ( @{$data->{speriod}}, ${$data->{speriod}}[0] ); + my @eperiod = ( @{$data->{eperiod}}, ${$data->{eperiod}}[-1] ); +%> + + + Total + + <% foreach my $total ( @bottom_total ) { %> + + + <%= $opt{'bottom_link'} + ? '' + : '' + %>$<%= sprintf("%.2f", $total) %><%= $opt{'bottom_link'} ? '' : '' %> + <% } %> -- cgit v1.2.1 From 3ce7691203a7737406bf2d4442f7fd84b81f847e Mon Sep 17 00:00:00 2001 From: ivan Date: Wed, 23 Aug 2006 22:25:39 +0000 Subject: Will things ever be the same again? It's the final masonize --- httemplate/graph/elements/monthly.html | 319 +++++++++++++++++---------------- 1 file changed, 160 insertions(+), 159 deletions(-) (limited to 'httemplate/graph/elements') diff --git a/httemplate/graph/elements/monthly.html b/httemplate/graph/elements/monthly.html index 3b9f73aa1..f5789a2a2 100644 --- a/httemplate/graph/elements/monthly.html +++ b/httemplate/graph/elements/monthly.html @@ -1,206 +1,207 @@ -<% - - # options example... - # - # 'title' => 'Page title', - # 'items' => \@items, - # 'params' => \@params, # opt, - # 'labels' => \@labels, # or \%labels (keys are items) - # 'graph_labels' => \@graph_labels, # or \%graph_labels, - # 'colors' => \@colors, # or \%colors, - # 'links => \@links, # or \%link, #opt - # 'start_month' => $smonth, - # 'start_year' => $syear, - # 'end_month' => $emonth, - # 'end_year' => $eyear, - # 'agentnum' => $agentnum, #opt - # 'nototal' => 1, #opt, - # 'graph_type' => 'LinesPoints', #opt - # 'remove_empty' => 1, #opt, - # 'bottom_total' => 1, #opt, - - my(%opt) = @_; - my @items = @{ $opt{'items'} }; - - foreach my $other (qw( labels graph_labels colors links )) { - #foreach my $other (qw( labels graph_labels colors )) { - if ( ref($opt{$other}) eq 'HASH' ) { - $opt{$other} = [ map $opt{$other}{$_}, @items ]; - } - } - - my $report = new FS::Report::Table::Monthly ( - - #'items' => $opt{'items'}, - 'items' => \@items, - 'params' => $opt{'params'}, - 'item_labels' => ( $cgi->param('_type') =~ /^(png)$/ - ? $opt{'graph_labels'} - : $opt{'labels'} - ), - 'colors' => $opt{'colors'}, - 'links' => $opt{'links'}, - - 'start_month' => $opt{'start_month'}, - 'start_year' => $opt{'start_year'}, - 'end_month' => $opt{'end_month'}, - 'end_year' => $opt{'end_year'}, - - 'agentnum' => $opt{'agentnum'}, - 'remove_empty' => $opt{'remove_empty'}, - ); - my $data = $report->data; - - if ( $cgi->param('_type') =~ /^(png)$/ ) { - - #my $chart = Chart::LinesPoints->new(1024,480); - #my $chart = Chart::LinesPoints->new(768,480); - - my $graph_type = 'LinesPoints'; - if ( $opt{'graph_type'} =~ /^(LinesPoints|Mountain)$/ ) { - $graph_type = $1; - } - my $class = "Chart::$graph_type"; - - my $chart = $class->new(976,384); - - my $d = 0; - $chart->set( - #'min_val' => 0, - 'legend' => 'bottom', - 'colors' => { ( - map { my $color = $_; - 'dataset'.$d++ => - [ map hex($_), unpack 'a2a2a2', $color ] - } - #@{ $opt{'colors'} } - @{ $data->{'colors'} } - ), - #'grey_background' => [ 211, 211, 211 ], - 'grey_background' => 'white', - 'background' => [ 0xe8, 0xe8, 0xe8 ], #grey - }, - #'grey_background' => 'false', - 'legend_labels' => $data->{'item_labels'}, - 'brush_size' => 4, - #'pt_size' => 12, - ); - - #my @data = map { $data->{$_} } ( 'label', @items ); - my @data = @{ $data->{data} }; - unshift @data, $data->{'label'}; - - http_header('Content-Type' => 'image/png' ); - - $chart->_set_colors(); - - %><%= $chart->scalar_png(\@data) %><% - - } else { - - my @mon = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); - -%><%= include('/elements/header.html', $opt{'title'} ) %> - -<% $cgi->param('_type', 'png'); %> - +% +% +% # options example... +% # +% # 'title' => 'Page title', +% # 'items' => \@items, +% # 'params' => \@params, # opt, +% # 'labels' => \@labels, # or \%labels (keys are items) +% # 'graph_labels' => \@graph_labels, # or \%graph_labels, +% # 'colors' => \@colors, # or \%colors, +% # 'links => \@links, # or \%link, #opt +% # 'start_month' => $smonth, +% # 'start_year' => $syear, +% # 'end_month' => $emonth, +% # 'end_year' => $eyear, +% # 'agentnum' => $agentnum, #opt +% # 'nototal' => 1, #opt, +% # 'graph_type' => 'LinesPoints', #opt +% # 'remove_empty' => 1, #opt, +% # 'bottom_total' => 1, #opt, +% +% my(%opt) = @_; +% my @items = @{ $opt{'items'} }; +% +% foreach my $other (qw( labels graph_labels colors links )) { +% #foreach my $other (qw( labels graph_labels colors )) { +% if ( ref($opt{$other}) eq 'HASH' ) { +% $opt{$other} = [ map $opt{$other}{$_}, @items ]; +% } +% } +% +% my $report = new FS::Report::Table::Monthly ( +% +% #'items' => $opt{'items'}, +% 'items' => \@items, +% 'params' => $opt{'params'}, +% 'item_labels' => ( $cgi->param('_type') =~ /^(png)$/ +% ? $opt{'graph_labels'} +% : $opt{'labels'} +% ), +% 'colors' => $opt{'colors'}, +% 'links' => $opt{'links'}, +% +% 'start_month' => $opt{'start_month'}, +% 'start_year' => $opt{'start_year'}, +% 'end_month' => $opt{'end_month'}, +% 'end_year' => $opt{'end_year'}, +% +% 'agentnum' => $opt{'agentnum'}, +% 'remove_empty' => $opt{'remove_empty'}, +% ); +% my $data = $report->data; +% +% if ( $cgi->param('_type') =~ /^(png)$/ ) { +% +% #my $chart = Chart::LinesPoints->new(1024,480); +% #my $chart = Chart::LinesPoints->new(768,480); +% +% my $graph_type = 'LinesPoints'; +% if ( $opt{'graph_type'} =~ /^(LinesPoints|Mountain)$/ ) { +% $graph_type = $1; +% } +% my $class = "Chart::$graph_type"; +% +% my $chart = $class->new(976,384); +% +% my $d = 0; +% $chart->set( +% #'min_val' => 0, +% 'legend' => 'bottom', +% 'colors' => { ( +% map { my $color = $_; +% 'dataset'.$d++ => +% [ map hex($_), unpack 'a2a2a2', $color ] +% } +% #@{ $opt{'colors'} } +% @{ $data->{'colors'} } +% ), +% #'grey_background' => [ 211, 211, 211 ], +% 'grey_background' => 'white', +% 'background' => [ 0xe8, 0xe8, 0xe8 ], #grey +% }, +% #'grey_background' => 'false', +% 'legend_labels' => $data->{'item_labels'}, +% 'brush_size' => 4, +% #'pt_size' => 12, +% ); +% +% #my @data = map { $data->{$_} } ( 'label', @items ); +% my @data = @{ $data->{data} }; +% unshift @data, $data->{'label'}; +% +% http_header('Content-Type' => 'image/png' ); +% +% $chart->_set_colors(); +% +% +<% $chart->scalar_png(\@data) %> +% +% +% } else { +% +% my @mon = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); +% +% +<% include('/elements/header.html', $opt{'title'} ) %> +% $cgi->param('_type', 'png'); + +
-<%= table('e8e8e8') %> +<% table('e8e8e8') %> +% foreach my $column ( @{$data->{label}} ) { +% #$column =~ s/^(\d+)\//$mon[$1-1]
/e; +% $column =~ s/^(\d+)\//$mon[$1-1]
/; +% - <% foreach my $column ( @{$data->{label}} ) { - #$column =~ s/^(\d+)\//$mon[$1-1]
/e; - $column =~ s/^(\d+)\//$mon[$1-1]
/; - %> - <%= $column %> - <% } %> + <% $column %> +% } +% unless ( $opt{'nototal'} ) { - <% unless ( $opt{'nototal'} ) { %> Total - <% } %> +% } - -<% my @bottom_total = (); - foreach my $row ( @{ $data->{'items'} } ) { + +% my @bottom_total = (); +% foreach my $row ( @{ $data->{'items'} } ) { +% +% #my $color = shift( @{ $opt{'colors'} } ); +% my $color = shift( @{ $data->{'colors'} } ); +% my $link = shift( @{ $data->{'links'} } ); +% $link = $link ? qq( - <%= shift( @{ $data->{'item_labels'} } ) %> + <% shift( @{ $data->{'item_labels'} } ) %> +% #my $link = exists($opt{'links'}{$row}) +% # ? qq({speriod}}; - my @eperiod = @{$data->{eperiod}}; - my $total = 0; - %> - <% my $col = 0; - foreach my $column ( @{ shift( @{$data->{data}} ) } ) { # ( @{$data->{$row}} ) { - %> - <%= $link ? $link. 'begin='. shift(@speriod). ';end='. shift(@eperiod). '">' : '' %>$<%= sprintf("%.2f", $column) %><%= $link ? '' : '' %> + <% $link ? $link. 'begin='. shift(@speriod). ';end='. shift(@eperiod). '">' : '' %>$<% sprintf("%.2f", $column) %><% $link ? '' : '' %> - <% - $total += $column; - $bottom_total[$col++] += $column; - %> - - <% } %> +% +% $total += $column; +% $bottom_total[$col++] += $column; +% +% } +% unless ( $opt{'nototal'} ) { - <% unless ( $opt{'nototal'} ) { %> - <%= $link ? $link. 'begin='. ${$data->{speriod}}[0]. ';end='. ${$data->{eperiod}}[-1]. '">' : '' %>$<%= sprintf("%.2f", $total) %><%= $link ? '' : '' %> + <% $link ? $link. 'begin='. ${$data->{speriod}}[0]. ';end='. ${$data->{eperiod}}[-1]. '">' : '' %>$<% sprintf("%.2f", $total) %><% $link ? '' : '' %> +% $bottom_total[$col++] += $total; +% } - <% $bottom_total[$col++] += $total; %> - - <% } %> +% } +% if ( $opt{'bottom_total'} ) { +% my @speriod = ( @{$data->{speriod}}, ${$data->{speriod}}[0] ); +% my @eperiod = ( @{$data->{eperiod}}, ${$data->{eperiod}}[-1] ); +% -<% } %> - -<% if ( $opt{'bottom_total'} ) { - my @speriod = ( @{$data->{speriod}}, ${$data->{speriod}}[0] ); - my @eperiod = ( @{$data->{eperiod}}, ${$data->{eperiod}}[-1] ); -%> Total +% foreach my $total ( @bottom_total ) { - <% foreach my $total ( @bottom_total ) { %> - <%= $opt{'bottom_link'} + <% $opt{'bottom_link'} ? '' : '' - %>$<%= sprintf("%.2f", $total) %><%= $opt{'bottom_link'} ? '' : '' %> + %>$<% sprintf("%.2f", $total) %><% $opt{'bottom_link'} ? '' : '' %> +% } - <% } %> +% } -<% } %> -<%= include('/elements/footer.html') %> +<% include('/elements/footer.html') %> +% } -<% } %> -- cgit v1.2.1