<& 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'); #false laziness w/ browse/part_tag.html my $tagdesc_style = sub { 'background-color:#'.shift->color }; 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 ? ''.$num_svc_broadband.''. ' broadband' : '', 'link' => $p.'search/svc_broadband.cgi?'.$query_string, 'size' => '-1', 'align'=> 'right', 'colspan'=> 2, }, { 'data' => $num_svc_acct ? ''.$num_svc_acct.''. ' login' : '', 'link' => $p.'search/svc_acct.cgi?magic=advanced;'.$query_string, 'size' => '-1', 'align'=> 'right', 'colspan'=> 2, }, }; my $coord_sub = sub { my $tower = shift; my $coords = $m->scomp("/elements/coord-links.html", $tower->latitude, $tower->longitude, $tower->towername); [ [ { 'data' => "Latitude: ". $tower->latitude. "
Longitude: ". $tower->longitude. "
Altitude: ". $tower->altitude. "
Height: ". $tower->height. "
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. ' ', }, { 'data' => ' (edit) ', size => '-1', 'link' => $p.'edit/tower.html?' . $tower->towernum }, ], # turn these into rows map { [ $_ ] } &{$num_svc_links}( 'towernum='.$tower->towernum, $sectors ) ] #rows }; my $sector_sub = sub { my $tower = shift; [ #rows map { my $sector = $_; my $sectornum = $sector->sectornum; [ { 'data' => $sector->sectorname. ' ', 'link' => ( $sector->ip_addr ? 'http://'. $sector->ip_addr : '' ), }, &{$num_svc_links}( 'sectornum='.$sectornum, $sectornum ) ] } $tower->tower_sector ] #rows };