new tower/sector UI, mapping features, and network monitoring, #37802
[freeside.git] / httemplate / browse / tower.html
index 660e924..555b8a3 100644 (file)
-<% include( 'elements/browse.html',
-                 'title'       => 'Towers',
-                 'name'        => 'towers',
-                 'menubar'     => [ 'Add a new tower' =>
-                                      $p.'edit/tower.html',
-                                  ],
-                 'query'       => { 'table' => 'tower', },
-                 'count_query' => 'SELECT COUNT(*) FROM tower',
-                 'disableable' => 1,
-                 'disabled_statuspos' => 1,
-                 'header'      => [ 'Name', 'Sectors', ],
-                 'fields'      => [ 'towername',
-                                    $sector_sub,
-                                  ],
-                 'links'       => [ $link,
-                                    '',
-                                  ],
-             )
-%>
+<& elements/browse.html,
+  'title'       => 'Towers',
+  'name'        => 'towers',
+  'menubar'     => [ 'Add a new tower' =>
+                      $p.'edit/tower.html',
+                     #'Sector coverage maps' =>
+                     # $p.'search/sector.html',
+                     'Tower map' =>
+                      $p.'search/tower-map.html',
+                     'Download CSV for towercoverage.com' =>
+                      $p.'misc/tower-export.html?format=tc'
+                  ],
+  'query'       => { 'table' => 'tower', },
+  'count_query' => 'SELECT COUNT(*) FROM tower',
+  'disableable' => 1,
+  'disabled_statuspos' => 1,
+  'header'      => [ 'Name', 'Location', 'Sectors', ],
+  'fields'      => [ $tower_sub,
+                    $coord_sub,
+                    $sector_sub,
+                  ],
+  'links'       => [ ],
+  'cell_style'    => [ $tagdesc_style ],
+&>
 <%init>
 
 die "access denied"
   unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
 
-my $link = [ "${p}edit/tower.html?", 'towernum' ];
+#false laziness w/ browse/part_tag.html
+my $tagdesc_style = sub { 'background-color:#'.shift->color };
 
-my $sector_sub = sub {
+my $num_svc_links = sub {
+  my ($query_string, $sectors) = @_;
+  return if !$sectors;
+  my $num_svc_broadband = FS::svc_broadband->count("sectornum IN($sectors)");
+  my $num_svc_acct =      FS::svc_acct->count("sectornum IN($sectors)");
+
+  {
+    'data' => $num_svc_broadband ? 
+                '<B>'.$num_svc_broadband.'</B>'.
+                ' broadband'
+                : '',
+    'link' => $p.'search/svc_broadband.cgi?'.$query_string,
+    'size' => '-1',
+    'align'=> 'right',
+    'colspan'=> 2,
+  },
+
+  {
+    'data' => $num_svc_acct ? 
+                '<B>'.$num_svc_acct.'</B>'.
+                ' login'
+                : '',
+    'link' => $p.'search/svc_acct.cgi?magic=advanced;'.$query_string,
+    'size' => '-1',
+    'align'=> 'right',
+    'colspan'=> 2,
+  },
+};
+
+my $coord_sub = sub {
   my $tower = shift;
-  
-  [ map {
 
-          [
-            { 'data' => $_->sectorname,
-              'link' => ( $_->ip_addr ? 'http://'. $_->ip_addr : '' ),
-            },
-          ],
+  my $coords = $m->scomp("/elements/coord-links.html", $tower->latitude, $tower->longitude, $tower->towername);
+
+  [
+    [
+      { 'data' => "Latitude: ".              $tower->latitude.
+                  "<br>Longitude: ".         $tower->longitude.
+                  "<br>Altitude: ".          $tower->altitude.
+                  "<br>Height: ".            $tower->height.
+                  "<br>Veg. height: ". $tower->veg_height,
+      },
+      { 'data' => $coords, 'link' => "Coordinates", },
+    ],
+  ]
+};
+
+my $tower_sub = sub {
+  my $tower = shift;
+  my $sectors = join(',', 
+    map { $_->sectornum } $tower->tower_sector, $tower->default_sector
+  );
+  [ #rows
+    [
+      { 'data' => $tower->towername. '&nbsp;', },
+      { 'data' => ' (edit) ', size => '-1', 
+        'link' => $p.'edit/tower.html?' . $tower->towernum },
+    ],
+    # turn these into rows
+    map { [ $_ ] } 
+      &{$num_svc_links}( 'towernum='.$tower->towernum, $sectors )
+  ] #rows
+};
 
-        }
-      $tower->tower_sector
-  ];
+my $sector_sub = sub {
+  my $tower = shift;
+  
+  [ #rows
+    map {
+      my $sector = $_;
+      my $sectornum = $sector->sectornum;
+      [
+        {
+          'data' => $sector->sectorname. '&nbsp;',
+          'link' => ( $sector->ip_addr ? 'http://'. $sector->ip_addr : '' ),
+        },
+        
+        &{$num_svc_links}( 'sectornum='.$sectornum, $sectornum )
+      ]
+    } $tower->tower_sector
+  ] #rows
 
 };