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