From 8bd159590e349d9d49855333bb770be3c2ba64c1 Mon Sep 17 00:00:00 2001 From: Mark Wells Date: Thu, 6 Oct 2016 16:30:28 -0700 Subject: [PATCH] tower location CSV download, #39776 Conflicts: httemplate/browse/tower.html --- httemplate/browse/tower.html | 2 ++ httemplate/edit/tower.html | 6 +++--- httemplate/misc/tower-export.html | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 httemplate/misc/tower-export.html diff --git a/httemplate/browse/tower.html b/httemplate/browse/tower.html index ab6be3082..16e44c6c0 100644 --- a/httemplate/browse/tower.html +++ b/httemplate/browse/tower.html @@ -5,6 +5,8 @@ $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', diff --git a/httemplate/edit/tower.html b/httemplate/edit/tower.html index f27f6accc..377a33e9b 100644 --- a/httemplate/edit/tower.html +++ b/httemplate/edit/tower.html @@ -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 index 000000000..d359a97a5 --- /dev/null +++ b/httemplate/misc/tower-export.html @@ -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')); +} + -- 2.11.0