Merge pull request #456 from Struart88/patch-2
[FlightAirMap.git] / ident-statistics-departure-airport.php
blobc65cf2c792679910d26456f0822029557dd57b53
1 <?php
2 require_once('require/class.Connection.php');
3 require_once('require/class.Spotter.php');
4 require_once('require/class.Language.php');
5 if (!isset($_GET['ident'])) {
6 header('Location: '.$globalURL.'/ident');
7 die();
9 $Spotter = new Spotter();
10 $sort = filter_input(INPUT_GET,'sort',FILTER_SANITIZE_STRING);
11 $ident = filter_input(INPUT_GET,'ident',FILTER_SANITIZE_STRING);
12 $spotter_array = $Spotter->getSpotterDataByIdent($ident,"0,1", $sort);
14 if (!empty($spotter_array))
16 $title = sprintf(_("Most Common Departure Airports of %s"),$spotter_array[0]['ident']);
17 require_once('header.php');
18 print '<div class="info column">';
19 print '<h1>'.$spotter_array[0]['ident'].'</h1>';
20 print '<div><span class="label">'._("Ident").'</span>'.$spotter_array[0]['ident'].'</div>';
21 print '<div><span class="label">'._("Airline").'</span><a href="'.$globalURL.'/airline/'.$spotter_array[0]['airline_icao'].'">'.$spotter_array[0]['airline_name'].'</a></div>';
22 print '</div>';
24 include('ident-sub-menu.php');
25 print '<div class="column">';
26 print '<h2>'._("Most Common Departure Airports").'</h2>';
27 print '<p>'.sprintf(_("The statistic below shows all departure airports of flights with the ident/callsign <strong>%s</strong>."),$spotter_array[0]['ident']).'</p>';
28 $airport_airport_array = $Spotter->countAllDepartureAirportsByIdent($ident);
29 print '<script type="text/javascript" src="'.$globalURL.'/js/d3.min.js"></script>';
30 print '<script type="text/javascript" src="'.$globalURL.'/js/topojson.v2.min.js"></script>';
31 print '<script type="text/javascript" src="'.$globalURL.'/js/datamaps.world.min.js"></script>';
32 print '<div id="chartAirport" class="chart" width="100%"></div>';
33 print '<script>';
34 print 'var series = [';
35 $airport_data = '';
36 foreach($airport_airport_array as $airport_item)
38 $airport_data .= '[ "'.$airport_item['airport_departure_icao_count'].'", "'.$airport_item['airport_departure_name'].' ('.$airport_item['airport_departure_icao'].')",'.$airport_item['airport_departure_latitude'].','.$airport_item['airport_departure_longitude'].'],';
40 $airport_data = substr($airport_data, 0, -1);
41 print $airport_data;
42 print '];'."\n";
43 print 'var onlyValues = series.map(function(obj){ return obj[0]; });var minValue = Math.min.apply(null, onlyValues), maxValue = Math.max.apply(null, onlyValues);'."\n";
44 print 'var paletteScale = d3.scale.log().domain([minValue,maxValue]).range(["#EFEFFF","#001830"]);'."\n";
45 print 'var radiusScale = d3.scale.log().domain([minValue,maxValue]).range([2,20]);'."\n";
46 print 'var dataset = [];'."\n";
47 print 'var colorset = [];'."\n";
48 print 'colorset["defaultFill"] = "#F5F5F5";';
49 print 'series.forEach(function(item){'."\n";
50 print 'var cnt = item[0], nm = item[1], lat = item[2], long = item[3];'."\n";
51 print 'colorset[nm] = paletteScale(cnt);';
52 print 'dataset.push({ count: cnt, name: nm, radius: Math.floor(radiusScale(cnt)), latitude: lat, longitude: long, fillKey: nm });'."\n";
53 print '});'."\n";
54 print 'var bbl = new Datamap({
55 element: document.getElementById("chartAirport"),
56 projection: "mercator", // big world map
57 fills: colorset,
58 responsive: true,
59 geographyConfig: {
60 borderColor: "#DEDEDE",
61 highlightBorderWidth: 2,
62 highlightFillColor: function(geo) {
63 return geo["fillColor"] || "#F5F5F5";
65 highlightBorderColor: "#B7B7B7"},
66 done: function(datamap) {
67 datamap.svg.call(d3.behavior.zoom().on("zoom", redraw));
68 function redraw() {
69 datamap.svg.selectAll("g").attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
72 });
73 bbl.bubbles(dataset,{
74 popupTemplate: function(geo, data) {
75 if (!data) { return ; }
76 return ['."'".'<div class="hoverinfo">'."','<strong>', data.name, '</strong>','<br>Count: <strong>', data.count, '</strong>','</div>'].join('');
78 });";
79 print '</script>';
80 print '<div class="table-responsive">';
81 print '<table class="common-airport table-striped">';
82 print '<thead>';
83 print '<th></th>';
84 print '<th>'._("Airport").'</th>';
85 print '<th>'._("Country").'</th>';
86 print '<th>'._("# of times").'</th>';
87 print '<th></th>';
88 print '</thead>';
89 print '<tbody>';
90 $i = 1;
91 foreach($airport_airport_array as $airport_item)
93 print '<tr>';
94 print '<td><strong>'.$i.'</strong></td>';
95 print '<td>';
96 print '<a href="'.$globalURL.'/airport/'.$airport_item['airport_departure_icao'].'">'.$airport_item['airport_departure_name'].', '.$airport_item['airport_departure_country'].' ('.$airport_item['airport_departure_icao'].')</a>';
97 print '</td>';
98 print '<td>';
99 print '<a href="'.$globalURL.'/country/'.strtolower(str_replace(" ", "-", $airport_item['airport_departure_country'])).'">'.$airport_item['airport_departure_country'].'</a>';
100 print '</td>';
101 print '<td>';
102 print $airport_item['airport_departure_icao_count'];
103 print '</td>';
104 print '<td><a href="'.$globalURL.'/search?departure_airport_route='.$airport_item['airport_departure_icao'].'&callsign='.$ident.'">'._("Search flights").'</a></td>';
105 print '</tr>';
106 $i++;
108 print '<tbody>';
109 print '</table>';
110 print '</div>';
111 print '</div>';
112 } else {
113 $title = "Ident";
114 require_once('header.php');
115 print '<h1>'._("Error").'</h1>';
116 print '<p>'._("Sorry, this ident/callsign is not in the database. :(").'</p>';
119 require_once('footer.php');