torrus various changes, RT10574
authorlevinse <levinse>
Mon, 31 Jan 2011 06:30:36 +0000 (06:30 +0000)
committerlevinse <levinse>
Mon, 31 Jan 2011 06:30:36 +0000 (06:30 +0000)
FS/FS/ClientAPI/MyAccount.pm
FS/FS/svc_port.pm
fs_selfservice/FS-SelfService/SelfService.pm
fs_selfservice/FS-SelfService/cgi/selfservice.cgi
fs_selfservice/FS-SelfService/cgi/view_usage.html
httemplate/misc/nms-add_iface.html
httemplate/view/svc_port.cgi
torrus/templates/default-dir.html

index c82d370..be1146e 100644 (file)
@@ -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 = ();
index db1f539..afd412e 100644 (file)
@@ -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;
   }
 
index fe2feb3..ec0329b 100644 (file)
@@ -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!
index 5b2d298..1db0c58 100644 (file)
@@ -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 {
index 6943763..beb1c2e 100644 (file)
@@ -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') %>
 
 <%= 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') %>
index ef4b4eb..1de0249 100644 (file)
@@ -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>
index 84d0e49..0df8263 100644 (file)
@@ -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(\''
index fe13a9b..91e6e44 100644 (file)
@@ -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 %]