diff options
| -rw-r--r-- | FS/FS/ClientAPI/MyAccount.pm | 19 | ||||
| -rw-r--r-- | FS/FS/svc_port.pm | 21 | ||||
| -rw-r--r-- | fs_selfservice/FS-SelfService/SelfService.pm | 1 | ||||
| -rw-r--r-- | fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 30 | ||||
| -rw-r--r-- | fs_selfservice/FS-SelfService/cgi/view_usage.html | 57 | ||||
| -rw-r--r-- | httemplate/misc/nms-add_iface.html | 2 | ||||
| -rw-r--r-- | httemplate/view/svc_port.cgi | 1 | ||||
| -rw-r--r-- | torrus/templates/default-dir.html | 2 | 
8 files changed, 121 insertions, 12 deletions
| 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) ? '</TABLE><BR><BR>' : '' %> +<%= if ( @svc_port ) { +      $OUT.= '<FONT SIZE="4">Bandwidth Graphs</FONT><BR><BR> +		<script type="text/javascript"> +		    function preset_range(start,end,prefix){ +			document.getElementById(prefix+\'_start\').value = start; +			document.getElementById(prefix+\'_end\').value = end; +		    } +		  </script> +              <TABLE BGCOLOR="#cccccc"> +                <TR> +                  <TH ALIGN="left">Service</TH> +		  <TH ALIGN="right"> +		  </TH> +		</TR>'; +    }  +    $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 '<A HREF="javascript:void(0);" onclick="preset_range(\'' +	    .$start.'\',\''.$end.'\',\''.$prefix.'\')">'.$label.'</A>'; +} + +foreach my $svc_port ( @svc_port ) { +  $svcnum = $svc_port->{'svcnum'};  +  $default_end = time; +  $default_start = $default_end-86400; + +  $OUT .= '<TR><TD>'. $svc_port->{'label'}. ': '. $svc_port->{'value'}.'</TD>'; +  $OUT .= qq! <TD><FORM ACTION="$url" METHOD="GET"> +		<INPUT TYPE="hidden" name="svcnum" value="$svcnum"> +		<INPUT TYPE="hidden" name="action" value="view_usage_details">   +		<INPUT TYPE="hidden" name="session" value="$session_id">  !; +  $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! <BR> +	    Start Date <INPUT TYPE="TEXT" id="${svcnum}_start" name="${svcnum}_start" SIZE="10" MAXLENGTH="10"> +	    End Date <INPUT TYPE="TEXT" id="${svcnum}_end" name="${svcnum}_end" SIZE="10" MAXLENGTH="10"> +	    <BR> +	    <INPUT TYPE="submit" value="Display"> !; + +  $OUT .= '</FORM></TD></TR>'; +} +%> + +<%= scalar(@svc_port) ? '</TABLE><BR><BR>' : '' %> + +  </TD></TR></TABLE>  <%= 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_\-.\\\/ ]+$/;  </%init> 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 '<A HREF="javascript:void(0);" onclick="preset_range(\'' diff --git a/torrus/templates/default-dir.html b/torrus/templates/default-dir.html index fe13a9bbe..91e6e4425 100644 --- a/torrus/templates/default-dir.html +++ b/torrus/templates/default-dir.html @@ -45,7 +45,9 @@        [% hidden ? '</EM>':'';           thisIsAlias ? '</EM>':''; %]        [% IF matches(thepath,'Interface_Counters/$') %] +	<FONT SIZE="-1">          [% popup_link('nms-add_iface.html',nodeName(parent(token)),uri_escape(nodeName(child))) %] +	</FONT>        [% END %]      </SPAN>         [% IF comment %] | 
