diff options
author | Mark Wells <mark@freeside.biz> | 2016-04-21 12:07:29 -0700 |
---|---|---|
committer | Mark Wells <mark@freeside.biz> | 2016-04-27 13:07:36 -0700 |
commit | 1d2db1a7412b886a6120ebd527d6632bff27551d (patch) | |
tree | 71d0b1dfca8d2bfefac19b2b9f33505fb9a1f1fc /httemplate | |
parent | 391be944b451419e2683dcd0471e3532d728d8d5 (diff) |
generate sector coverage maps with Splat, checkpoint, #37802
Conflicts:
FS/FS/Schema.pm
FS/FS/tower_sector.pm
Diffstat (limited to 'httemplate')
-rw-r--r-- | httemplate/edit/process/tower.html | 1 | ||||
-rw-r--r-- | httemplate/edit/tower.html | 2 | ||||
-rw-r--r-- | httemplate/elements/tower_sector.html | 5 | ||||
-rw-r--r-- | httemplate/misc/sector-create_map.html | 10 | ||||
-rw-r--r-- | httemplate/search/elements/gmap.html | 19 | ||||
-rw-r--r-- | httemplate/search/sector.html | 85 | ||||
-rwxr-xr-x | httemplate/search/svc_broadband-map.html | 16 | ||||
-rw-r--r-- | httemplate/view/sector_map-png.cgi | 8 |
8 files changed, 142 insertions, 4 deletions
diff --git a/httemplate/edit/process/tower.html b/httemplate/edit/process/tower.html index 02362db6a..d14ac56f8 100644 --- a/httemplate/edit/process/tower.html +++ b/httemplate/edit/process/tower.html @@ -4,6 +4,7 @@ process_o2m => { 'table' => 'tower_sector', 'fields' => [qw( sectorname ip_addr height freq_mhz direction width + downtilt v_width margin sector_range )], }, diff --git a/httemplate/edit/tower.html b/httemplate/edit/tower.html index fa3838dcf..f27f6accc 100644 --- a/httemplate/edit/tower.html +++ b/httemplate/edit/tower.html @@ -38,7 +38,7 @@ my $m2_error_callback = sub { # reconstruct the list my ($cgi, $object) = @_; my @fields = qw( - sectorname ip_addr height freq_mhz direction width sector_range + sectorname ip_addr height freq_mhz direction width tilt v_width margin sector_range ); map { diff --git a/httemplate/elements/tower_sector.html b/httemplate/elements/tower_sector.html index 151d3ba65..987177582 100644 --- a/httemplate/elements/tower_sector.html +++ b/httemplate/elements/tower_sector.html @@ -56,8 +56,11 @@ tie my %label, 'Tie::IxHash', 'height' => 'Height', 'freq_mhz' => 'Freq. (MHz)', 'direction' => 'Direction', # or a button to set these to 0 for omni - 'width' => 'Width', # + 'downtilt' => 'Downtilt', + 'width' => 'Horiz. width', + 'v_width' => 'Vert. width', 'sector_range' => 'Range', + 'margin' => 'Signal margin (dB)', ; my @fields = keys %label; diff --git a/httemplate/misc/sector-create_map.html b/httemplate/misc/sector-create_map.html new file mode 100644 index 000000000..6af5fddbe --- /dev/null +++ b/httemplate/misc/sector-create_map.html @@ -0,0 +1,10 @@ +<% $server->process %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); # ??? + +my $server = + new FS::UI::Web::JSRPC 'FS::tower_sector::process_generate_coverage', $cgi; + +</%init> diff --git a/httemplate/search/elements/gmap.html b/httemplate/search/elements/gmap.html index 8b070ebf9..632a32338 100644 --- a/httemplate/search/elements/gmap.html +++ b/httemplate/search/elements/gmap.html @@ -1,5 +1,6 @@ <%args> @features +@overlays </%args> <%doc> Generic Google Maps front end. @@ -24,6 +25,14 @@ Generic Google Maps front end. } }, # end of feature ], + overlays => [ + { url => 'https://localhost/freeside/view/sector_overlay-png.html?102', + west => -130.0, + east => -128.0, + south => 10.0, + north => 12.0, + }, # make a ground overlay + ], &> </%doc> @@ -54,6 +63,7 @@ body { height: 100%; margin: 0px; padding: 0px } <script type="text/javascript"> var data_geojson = <% encode_json($tree) %>; +var data_overlays = <% encode_json(\@overlays) %>; var baseStyle = { clickable: true, @@ -75,6 +85,7 @@ var featureStyle = function(feature) { }; var map; +var overlays; function initMap() { var canvas = $('#map_canvas'); map = new google.maps.Map(canvas[0], { zoom: 6 }); @@ -116,6 +127,14 @@ function initMap() { } }); // addListener() + + data_overlays.forEach(function(x) { + var url = x.url; + delete x.url; + var overlay = new google.maps.GroundOverlay( url, x ); + overlay.setMap(map); + overlays.push(overlay); + }); } $().ready( initMap ); diff --git a/httemplate/search/sector.html b/httemplate/search/sector.html new file mode 100644 index 000000000..d03963237 --- /dev/null +++ b/httemplate/search/sector.html @@ -0,0 +1,85 @@ +<& /elements/header.html, { + 'title' => 'Sector coverage maps', + } +&> +<style> + a.createmap { + font-weight: bold; + color: blue; + } + a.viewmap { + font-weight: bold; + color: green; + } +</style> +<table class="grid"> + <thead> + <tr> + <th>Tower / sector</th> + <th colspan=3> + </tr> + </thead> + <tbody> +% foreach my $sector (@sectors) { +% my $sectornum = $sector->sectornum; + <tr> + <td> + <a href="<% $fsurl %>edit/tower.html?<% $sector->towernum |h %>"> + <% $sector->description |h %> + </a> + </td> + +% my @need_fields = $sector->need_fields_for_coverage; +% if ( @need_fields ) { + <td>Need fields:</td> + <td> + <% join('<br>', @need_fields) %> + </td> +% } else { + <td colspan="2" style="text-align: center"> +% my $text = 'Create map'; +% if ( length($sector->image) > 0 ) { +% $text = 'Reprocess'; +% } + <form name="create_<% $sectornum |h %>"> + <input type="hidden" name="sectornum" value="<% $sectornum |h %>"> + <& /elements/progress-init.html, + 'create_'.$sectornum, + [ 'sectornum' ], + $fsurl.'misc/sector-create_map.html', + { 'message' => 'Map generated' }, + "sector$sectornum" + &> + <a class="createmap" href="#" onclick="sector<% $sectornum %>process()"> + <% $text %> + </a> +% } + </td> + <td> +% if ( length($sector->image) > 0 ) { + <a class="viewmap" href="<% $fsurl %>search/svc_broadband-map.html?sectornum=<% $sectornum %>"> + View map + </a> +% } + </td> + </tr> +% } # foreach $sector + </tbody> +</table> +<& /elements/footer.html &> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my $query = { + table => 'tower_sector', + select => 'tower_sector.*, + tower.latitude, tower.longitude, tower.color, tower.towername', + extra_sql => ' WHERE tower.disabled is null', + addl_from => ' JOIN tower USING (towernum)', + order_by => ' ORDER BY towername, sectorname', +}; + +my @sectors = qsearch($query); +</%init> diff --git a/httemplate/search/svc_broadband-map.html b/httemplate/search/svc_broadband-map.html index 4c660b016..64a7f98de 100755 --- a/httemplate/search/svc_broadband-map.html +++ b/httemplate/search/svc_broadband-map.html @@ -1,6 +1,6 @@ <& /elements/header.html, 'Broadband Search Results' &> -<& elements/gmap.html, features => \@features &> +<& elements/gmap.html, features => \@features, overlays => \@overlays &> <& /elements/footer.html &> <%init> @@ -76,7 +76,6 @@ foreach my $svc_broadband (@rows) { } - my $tower = $towers{$towernum}; if ( $tower->latitude and $tower->longitude ) { push @features, { @@ -146,6 +145,19 @@ foreach my $tower (values(%towers)) { }; } +my @overlays; +foreach my $sector (values %sectors) { + if ( length($sector->image) > 0 ) { + push @overlays, + { url => $fsurl.'view/sector_map-png.cgi?' . $sector->sectornum, + west => $sector->west, + east => $sector->east, + south => $sector->south, + north => $sector->north, + }; + }; +}; + </%init> <%def .svc_broadband> % my $svc = shift; diff --git a/httemplate/view/sector_map-png.cgi b/httemplate/view/sector_map-png.cgi new file mode 100644 index 000000000..7e7e799a8 --- /dev/null +++ b/httemplate/view/sector_map-png.cgi @@ -0,0 +1,8 @@ +<%init> +my ($sectornum) = $cgi->keywords; +my $sector = FS::tower_sector->by_key($sectornum); +if ( $sector and length($sector->image) > 0 ) { + http_header('Content-Type', 'image/png'); + $m->print($sector->image); +} +</%init> |