From: levinse Date: Mon, 31 Jan 2011 06:30:36 +0000 (+0000) Subject: torrus various changes, RT10574 X-Git-Tag: freeside_2_3_0~667 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=ec681a87b33fe272276f367aea4da3ed4d689605 torrus various changes, RT10574 --- diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm index c82d37043..be1146e47 100644 --- a/FS/FS/ClientAPI/MyAccount.pm +++ b/FS/FS/ClientAPI/MyAccount.pm @@ -1084,9 +1084,12 @@ sub list_svcs { #@svc_x = sort { $a->domain cmp $b->domain || $a->username cmp $b->username } # @svc_x; + my $conf = new FS::Conf; + { 'svcnum' => $session->{'svcnum'}, 'custnum' => $custnum, + 'date_format' => $conf->config('date_format') || '%m/%d/%Y', 'svcs' => [ map { my $svc_x = $_->svc_x; @@ -1122,7 +1125,7 @@ sub list_svcs { # more... ); - } elsif ( $svcdb eq 'svc_phone' ) { + } elsif ( $svcdb eq 'svc_phone' || $svcdb eq 'svc_port' ) { %hash = ( %hash, ); @@ -1136,6 +1139,20 @@ sub list_svcs { } +sub port_graph { + my $p = shift; + _usage_details( \&_port_graph, $p, + 'svcdb' => 'svc_port', + ); +} + +sub _port_graph { + my($svc_port, $begin, $end) = @_; + my @usage = (); + push @usage, 999; + (@usage); +} + sub _list_svc_usage { my($svc_acct, $begin, $end) = @_; my @usage = (); diff --git a/FS/FS/svc_port.pm b/FS/FS/svc_port.pm index db1f539b8..afd412e59 100644 --- a/FS/FS/svc_port.pm +++ b/FS/FS/svc_port.pm @@ -9,6 +9,7 @@ use FS::Record qw( qsearch qsearchs use FS::cust_svc; use GD::Graph; use GD::Graph::mixed; +use GD; use Date::Format qw(time2str); use Data::Dumper; @@ -344,7 +345,7 @@ sub graph_png { $graph->set( types => ['area','lines'], dclrs => ['green','blue'], - x_label => "(In Out) Current: $in_curr $out_curr Average: $in_avg $out_avg Maximum: $in_max $out_max Minimum: $in_min $out_min", + x_label => ' ', x_tick_number => 'auto', x_number_format => sub { my $value = shift; @@ -365,6 +366,7 @@ sub graph_png { }, y_label => 'bps', legend_placement => 'BR', + lg_cols => 1, title => $self->serviceid, ) or return "can't create graph: ".$graph->error; @@ -372,9 +374,26 @@ sub graph_png { or return "can't set text colour: ".$graph->error; $graph->set_legend(('In','Out')) or return "can't set legend: ".$graph->error; + $graph->set_title_font(['verdana', 'arial', gdGiantFont], 16) + or return "can't set title font: ".$graph->error; + $graph->set_legend_font(['verdana', 'arial', gdMediumBoldFont], 12) + or return "can't set legend font: ".$graph->error; + $graph->set_x_axis_font(['verdana', 'arial', gdMediumBoldFont], 12) + or return "can't set font: ".$graph->error; + $graph->set_y_axis_font(['verdana', 'arial', gdMediumBoldFont], 12) + or return "can't set font: ".$graph->error; + $graph->set_y_label_font(['verdana', 'arial', gdMediumBoldFont], 12) + or return "can't set font: ".$graph->error; my $gd = $graph->plot(\@data); return "graph error: ".$graph->error unless($gd); + + my $black = $gd->colorAllocate(0,0,0); + $gd->string(gdMediumBoldFont,50,285, + "Current: $in_curr Average: $in_avg Maximum: $in_max Minimum: $in_min",$black); + $gd->string(gdMediumBoldFont,50,305, + "Current: $out_curr Average: $out_avg Maximum: $out_max Minimum: $out_min",$black); + return $gd->png; } diff --git a/fs_selfservice/FS-SelfService/SelfService.pm b/fs_selfservice/FS-SelfService/SelfService.pm index fe2feb3c1..ec0329bd2 100644 --- a/fs_selfservice/FS-SelfService/SelfService.pm +++ b/fs_selfservice/FS-SelfService/SelfService.pm @@ -45,6 +45,7 @@ $socket .= '.'.$tag if defined $tag && length($tag); 'list_pkgs' => 'MyAccount/list_pkgs', #add to ss (added?) 'list_svcs' => 'MyAccount/list_svcs', #add to ss (added?) 'list_svc_usage' => 'MyAccount/list_svc_usage', + 'port_graph' => 'MyAccount/port_graph', 'list_cdr_usage' => 'MyAccount/list_cdr_usage', 'list_support_usage' => 'MyAccount/list_support_usage', 'order_pkg' => 'MyAccount/order_pkg', #add to ss cgi! diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index 5b2d2980c..1db0c585b 100644 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -8,6 +8,7 @@ use CGI::Carp qw(fatalsToBrowser); use Text::Template; use HTML::Entities; use Date::Format; +use Date::Parse 'str2time'; use Number::Format 1.50; use FS::SelfService qw( access_info login_info login customer_info edit_info invoice @@ -17,7 +18,7 @@ use FS::SelfService qw( unprovision_svc change_pkg suspend_pkg domainselector list_svcs list_svc_usage list_cdr_usage list_support_usage myaccount_passwd list_invoices create_ticket get_ticket did_report - mason_comp + mason_comp port_graph ); $template_dir = '.'; @@ -796,18 +797,31 @@ sub delete_svc { sub view_usage { list_svcs( 'session_id' => $session_id, - 'svcdb' => [ 'svc_acct', 'svc_phone' ], + 'svcdb' => [ 'svc_acct', 'svc_phone', 'svc_port', ], 'ncancelled' => 1, ); } sub view_usage_details { - list_svc_usage( - 'session_id' => $session_id, - 'svcnum' => $cgi->param('svcnum'), - 'beginning' => $cgi->param('beginning') || '', - 'ending' => $cgi->param('ending') || '', - ); + my $svcnum = $cgi->param('svcnum'); + + # for svc_port graphs + if($cgi->param($svcnum.'_start') && $cgi->param($svcnum.'_end')) { + return port_graph( + 'session_id' => $session_id, + 'svcnum' => $svcnum, + 'start' => str2time($cgi->param($svcnum.'_start')), + 'end' => str2time($cgi->param($svcnum.'_end')), + ); + } + else { + return list_svc_usage( + 'session_id' => $session_id, + 'svcnum' => $svcnum, + 'beginning' => $cgi->param('beginning') || '', + 'ending' => $cgi->param('ending') || '', + ); + } } sub view_cdr_details { diff --git a/fs_selfservice/FS-SelfService/cgi/view_usage.html b/fs_selfservice/FS-SelfService/cgi/view_usage.html index 69437632b..beb1c2e74 100644 --- a/fs_selfservice/FS-SelfService/cgi/view_usage.html +++ b/fs_selfservice/FS-SelfService/cgi/view_usage.html @@ -1,6 +1,7 @@ <%= $url = "$selfurl?session=$session_id;action="; @svc_acct = grep { $_->{svcdb} eq 'svc_acct' } @svcs; @svc_phone = grep { $_->{svcdb} eq 'svc_phone' } @svcs; + @svc_port = grep { $_->{svcdb} eq 'svc_port' } @svcs; ''; %> <%= include('header', 'Account usage') %> @@ -81,5 +82,61 @@ <%= scalar(@svc_phone) ? '

' : '' %> +<%= if ( @svc_port ) { + $OUT.= 'Bandwidth Graphs

+ + + + + + '; + } + $OUT .= ''; +%> + +<%= + +sub preset_range { + my($start,$end,$label,$date_format,$prefix) = (shift,shift,shift,shift,shift); + $start = Date::Format::time2str($date_format,$start); + $end = Date::Format::time2str($date_format,$end); + return ''.$label.''; +} + +foreach my $svc_port ( @svc_port ) { + $svcnum = $svc_port->{'svcnum'}; + $default_end = time; + $default_start = $default_end-86400; + + $OUT .= ''; + $OUT .= qq! '; +} +%> + +<%= scalar(@svc_port) ? '
Service +
'. $svc_port->{'label'}. ': '. $svc_port->{'value'}.'
+ + + !; + $OUT .= preset_range($default_start,$default_end,'Last Day',$date_format,$svcnum) + .' | '.preset_range($default_end-86400*7,$default_end,'Last Week',$date_format,$svcnum) + .' | '.preset_range($default_end-86400*30,$default_end,'Last Month',$date_format,$svcnum) + .' | '.preset_range($default_end-86400*365,$default_end,'Last Year',$date_format,$svcnum); + + $OUT .= qq!
+ Start Date + End Date +
+ !; + + $OUT .= '


' : '' %> + + <%= include('footer') %> diff --git a/httemplate/misc/nms-add_iface.html b/httemplate/misc/nms-add_iface.html index ef4b4eb46..1de0249ef 100644 --- a/httemplate/misc/nms-add_iface.html +++ b/httemplate/misc/nms-add_iface.html @@ -19,6 +19,6 @@ my $host = $cgi->param('host'); die 'invalid host' unless $host =~ /^[0-9.a-zA-Z\-]+$/; my $iface = $cgi->param('iface'); -die 'invalid iface' unless $iface =~ /^[0-9A-Za-z_\-.]+$/; +die 'invalid iface' unless $iface =~ /^[0-9A-Za-z_\-.\\\/ ]+$/; diff --git a/httemplate/view/svc_port.cgi b/httemplate/view/svc_port.cgi index 84d0e49e3..0df826366 100644 --- a/httemplate/view/svc_port.cgi +++ b/httemplate/view/svc_port.cgi @@ -39,7 +39,6 @@ if ( $cgi->param('start') && $cgi->param('end') ) { sub preset_range { my($start,$end,$label,$date_format) = (shift,shift,shift,shift); - warn "$start $end $date_format"; $start = time2str($date_format,$start); $end = time2str($date_format,$end); return ' [% popup_link('nms-add_iface.html',nodeName(parent(token)),uri_escape(nodeName(child))) %] + [% END %] [% IF comment %]