16e44c6c0c15ec8859ddb7d86d78d72111779768
[freeside.git] / httemplate / browse / tower.html
1 <& elements/browse.html,
2   'title'       => 'Towers',
3   'name'        => 'towers',
4   'menubar'     => [ 'Add a new tower' =>
5                       $p.'edit/tower.html',
6                      'Sector coverage maps' =>
7                       $p.'search/sector.html',
8                      'Download CSV for towercoverage.com' =>
9                       $p.'misc/tower-export.html?format=tc'
10                   ],
11   'query'       => { 'table' => 'tower', },
12   'count_query' => 'SELECT COUNT(*) FROM tower',
13   'disableable' => 1,
14   'disabled_statuspos' => 1,
15   'header'      => [ 'Name', 'Location', 'Sectors', ],
16   'fields'      => [ $tower_sub,
17                     $coord_sub,
18                     $sector_sub,
19                   ],
20   'links'       => [ ],
21   'cell_style'    => [ $tagdesc_style ],
22 &>
23 <%init>
24
25 die "access denied"
26   unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
27
28 #false laziness w/ browse/part_tag.html
29 my $tagdesc_style = sub { 'background-color:#'.shift->color };
30
31 my $num_svc_links = sub {
32   my ($query_string, $sectors) = @_;
33   return if !$sectors;
34   my $num_svc_broadband = FS::svc_broadband->count("sectornum IN($sectors)");
35   my $num_svc_acct =      FS::svc_acct->count("sectornum IN($sectors)");
36
37   {
38     'data' => $num_svc_broadband ? 
39                 '<B>'.$num_svc_broadband.'</B>'.
40                 ' broadband'
41                 : '',
42     'link' => $p.'search/svc_broadband.cgi?'.$query_string,
43     'size' => '-1',
44     'align'=> 'right',
45     'colspan'=> 2,
46   },
47
48   {
49     'data' => $num_svc_acct ? 
50                 '<B>'.$num_svc_acct.'</B>'.
51                 ' login'
52                 : '',
53     'link' => $p.'search/svc_acct.cgi?magic=advanced;'.$query_string,
54     'size' => '-1',
55     'align'=> 'right',
56     'colspan'=> 2,
57   },
58 };
59
60 my $coord_sub = sub {
61   my $tower = shift;
62
63   my $coords = $m->scomp("/elements/coord-links.html", $tower->latitude, $tower->longitude, $tower->towername);
64
65   [
66     [
67       { 'data' => "Latitude: ".              $tower->latitude.
68                   "<br>Longitude: ".         $tower->longitude.
69                   "<br>Altitude: ".          $tower->altitude.
70                   "<br>Height: ".            $tower->height.
71                   "<br>Veg. height: ". $tower->veg_height,
72       },
73       { 'data' => $coords, 'link' => "Coordinates", },
74     ],
75   ]
76 };
77
78 my $tower_sub = sub {
79   my $tower = shift;
80   my $sectors = join(',', 
81     map { $_->sectornum } $tower->tower_sector, $tower->default_sector
82   );
83   [ #rows
84     [
85       { 'data' => $tower->towername. '&nbsp;', },
86       { 'data' => ' (edit) ', size => '-1', 
87         'link' => $p.'edit/tower.html?' . $tower->towernum },
88     ],
89     # turn these into rows
90     map { [ $_ ] } 
91       &{$num_svc_links}( 'towernum='.$tower->towernum, $sectors )
92   ] #rows
93 };
94
95 my $sector_sub = sub {
96   my $tower = shift;
97   
98   [ #rows
99     map {
100       my $sector = $_;
101       my $sectornum = $sector->sectornum;
102       [
103         {
104           'data' => $sector->sectorname. '&nbsp;',
105           'link' => ( $sector->ip_addr ? 'http://'. $sector->ip_addr : '' ),
106         },
107         
108         &{$num_svc_links}( 'sectornum='.$sectornum, $sectornum )
109       ]
110     } $tower->tower_sector
111   ] #rows
112
113 };
114
115 </%init>