tower location CSV download, #39776
authorMark Wells <mark@freeside.biz>
Thu, 14 Apr 2016 02:18:34 +0000 (19:18 -0700)
committerMark Wells <mark@freeside.biz>
Thu, 14 Apr 2016 02:18:34 +0000 (19:18 -0700)
httemplate/browse/tower.html
httemplate/edit/tower.html
httemplate/misc/tower-export.html [new file with mode: 0644]

index e2f9fd0..c8812e5 100644 (file)
@@ -1,22 +1,23 @@
-<% 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', 'Location', 'Sectors', ],
-                 'fields'      => [ $tower_sub,
-                                    $coord_sub,
-                                    $sector_sub,
-                                  ],
-                 'links'       => [ ],
-                 'cell_style'    => [ $tagdesc_style ],
-             )
-%>
+<& elements/browse.html,
+  'title'       => 'Towers',
+  'name'        => 'towers',
+  'menubar'     => [ 'Add a new tower' =>
+                      $p.'edit/tower.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"
index fa3838d..4d8ad1e 100644 (file)
@@ -26,9 +26,9 @@
                         'default_ip_addr' => 'Tower IP address',
                         'latitude'        => 'Latitude',
                         'longitude'       => 'Longitude',
-                        'altitude'        => 'Altitude',
-                        'height'          => 'Height',
-                        'veg_height'      => 'Vegetation height',
+                        'altitude'        => 'Altitude (feet)',
+                        'height'          => 'Height (feet)',
+                        'veg_height'      => 'Vegetation height (feet)',
                         'color'           => 'Color',
                       },
 &>
diff --git a/httemplate/misc/tower-export.html b/httemplate/misc/tower-export.html
new file mode 100644 (file)
index 0000000..d359a97
--- /dev/null
@@ -0,0 +1,36 @@
+<%init>
+# currently, browse/tower just shows all towers, so do the same here
+my @towers = qsearch({ table => 'tower' });
+http_header('Content-Type' => 'text/csv');
+http_header('Content-Disposition' => 'attachment;filename=towers.csv');
+if ( $cgi->param('format') eq 'tc' ) {
+  # towercoverage.com format: not a true CSV, no quoting (so no way to include
+  # commas in any field, so we strip them)
+
+  # lat/long are signed decimals, northeast positive
+  # height is in meters
+  # Description/Group are not necessary
+  # sector/antenna information (orientation, beamwidth, gain, frequency,
+  # etc.) is in what TC calls a "Coverage", which can't be edited this way.
+  my $text = "SiteName,Latitude,Longitude,Description,Group,Height\n";
+
+  foreach my $tower (@towers) {
+    next if ( !$tower->latitude or !$tower->longitude );
+
+    my $name = $tower->towername;
+    my $height = ( ($tower->altitude || 0 ) + ($tower->height || 0) ) / 3.28;
+    $name =~ s(,)( )g;
+    $text .= join(',',
+      $name,
+      $tower->latitude,
+      $tower->longitude,
+      '',
+      '',
+      $height,
+    ) . "\n";
+  }
+  $m->print($text);
+} else {
+  die('unknown format '.$cgi->param('format'));
+}
+</%init>