summaryrefslogtreecommitdiff
path: root/httemplate/browse/tower.html
blob: 16e44c6c0c15ec8859ddb7d86d78d72111779768 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<& elements/browse.html,
  'title'       => 'Towers',
  'name'        => 'towers',
  'menubar'     => [ 'Add a new tower' =>
                      $p.'edit/tower.html',
                     'Sector coverage maps' =>
                      $p.'search/sector.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 ? 
                '<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;

  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
};

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

};

</%init>