Merge pull request #456 from Struart88/patch-2
[FlightAirMap.git] / statistics-country.php
blob221f75706e0508725b68e9a964e76e2f70b960f1
1 <?php
2 require_once('require/class.Connection.php');
3 require_once('require/class.Stats.php');
4 require_once('require/class.Language.php');
5 $Stats = new Stats();
7 if (!isset($filter_name)) $filter_name = '';
8 $type = 'aircraft';
9 if (isset($_GET['marine'])) {
10 $type = 'marine';
11 $title = _("Statistics").' - '._("Most common Country a vessel was inside");
12 require_once('require/class.Marine.php');
13 $Marine = new Marine();
14 } elseif (isset($_GET['tracker'])) {
15 $type = 'tracker';
16 $title = _("Statistics").' - '._("Most common Country a tracker was inside");
17 require_once('require/class.Tracker.php');
18 $Tracker = new Tracker();
19 } else {
20 $title = _("Statistics").' - '._("Most common Country a flight was over");
22 $airline_icao = (string)filter_input(INPUT_GET,'airline',FILTER_SANITIZE_STRING);
23 if ($airline_icao == '' && isset($globalFilter)) {
24 if (isset($globalFilter['airline'])) $airline_icao = $globalFilter['airline'][0];
27 require_once('header.php');
28 include('statistics-sub-menu.php');
30 print '<script type="text/javascript" src="'.$globalURL.'/js/d3.min.js"></script>';
31 print '<script type="text/javascript" src="'.$globalURL.'/js/topojson.v2.min.js"></script>';
32 print '<script type="text/javascript" src="'.$globalURL.'/js/datamaps.world.min.js"></script>';
33 print '<div class="info">';
34 if ($type == 'aircraft') {
35 print '<h1>'._("Most common Country a flight was over").'</h1>';
36 } elseif ($type == 'marine') {
37 print '<h1>'._("Most common Country a vessel was inside").'</h1>';
38 } elseif ($type == 'tracker') {
39 print '<h1>'._("Most common Country a tracker was inside").'</h1>';
41 print '</div>';
42 if ($type == 'aircraft') {
43 print '<p>'._("Below are the <strong>Top 10</strong> most common country a flight was over.").'</p>';
44 } elseif ($type == 'marine') {
45 print '<p>'._("Below are the <strong>Top 10</strong> most common country a vessel was inside.").'</p>';
46 } elseif ($type == 'tracker') {
47 print '<p>'._("Below are the <strong>Top 10</strong> most common country a tracker was inside.").'</p>';
50 if ($type == 'aircraft') {
51 $flightover_array = $Stats->countAllFlightOverCountries(false,$airline_icao,$filter_name);
52 } elseif ($type == 'marine') {
53 $flightover_array = $Marine->countAllMarineOverCountries();
54 } elseif ($type == 'tracker') {
55 $flightover_array = $Tracker->countAllTrackerOverCountries();
58 require_once('require/class.Spotter.php');
59 $Spotter = new Spotter();
60 $flightover_array = $Spotter->countAllFlightOverCountries(true,$airline_icao,$filter_name);
62 print '<div id="chart" class="chart" width="100%"></div><script>';
63 print 'var series = [';
64 $flightover_data = '';
65 foreach($flightover_array as $flightover_item)
67 if ($type == 'aircraft') $flightover_data .= '[ "'.$flightover_item['flight_country_iso3'].'",'.$flightover_item['flight_count'].'],';
68 elseif ($type == 'marine') $flightover_data .= '[ "'.$flightover_item['marine_country_iso3'].'",'.$flightover_item['marine_count'].'],';
69 elseif ($type == 'tracker') $flightover_data .= '[ "'.$flightover_item['tracker_country_iso3'].'",'.$flightover_item['tracker_count'].'],';
71 $flightover_data = substr($flightover_data, 0, -1);
72 print $flightover_data;
73 print '];';
74 print 'var dataset = {};var onlyValues = series.map(function(obj){ return obj[1]; });var minValue = Math.min.apply(null, onlyValues), maxValue = Math.max.apply(null, onlyValues);';
75 print 'var paletteScale = d3.scale.log().domain([minValue,maxValue]).range(["#EFEFFF","#001830"]);';
76 print 'series.forEach(function(item){var iso = item[0], value = item[1]; dataset[iso] = { numberOfThings: value, fillColor: paletteScale(value) };});';
77 print 'new Datamap({
78 element: document.getElementById("chart"),
79 projection: "mercator", // big world map
80 fills: { defaultFill: "#F5F5F5" },
81 data: dataset,
82 responsive: true,
83 geographyConfig: {
84 borderColor: "#DEDEDE",
85 highlightBorderWidth: 2,
86 highlightFillColor: function(geo) {
87 return geo["fillColor"] || "#F5F5F5";
89 highlightBorderColor: "#B7B7B7",
90 done: function(datamap) {
91 datamap.svg.call(d3.behavior.zoom().on("zoom", redraw));
92 function redraw() {
93 datamap.svg.selectAll("g").attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
96 popupTemplate: function(geo, data) {
97 if (!data) { return ; }
98 return ['."'".'<div class="hoverinfo">'."','<strong>', geo.properties.name, '</strong>','<br>Count: <strong>', data.numberOfThings, '</strong>','</div>'].join('');
101 });";
103 print '</script>';
105 if (!empty($flightover_array))
107 print '<div class="table-responsive">';
108 print '<table class="common-countries table-striped">';
109 print '<thead>';
110 print '<th></th>';
111 print '<th>'._("Name").'</th>';
112 print '<th>'._("# of times").'</th>';
113 print '</thead>';
114 print '<tbody>';
115 $i = 1;
116 array_splice($flightover_array,10);
117 foreach($flightover_array as $flightover_item)
119 print '<tr>';
120 print '<td><strong>'.$i.'</strong></td>';
121 if ($type == 'aircraft') {
122 print '<td>'.$flightover_item['flight_country'].'</td>';
123 print '<td>'.$flightover_item['flight_count'].'</td>';
124 } elseif ($type == 'marine') {
125 print '<td>'.$flightover_item['marine_country'].'</td>';
126 print '<td>'.$flightover_item['marine_count'].'</td>';
127 } elseif ($type == 'tracker') {
128 print '<td>'.$flightover_item['tracker_country'].'</td>';
129 print '<td>'.$flightover_item['tracker_count'].'</td>';
131 print '</tr>';
132 $i++;
134 print '<tbody>';
135 print '</table>';
136 print '</div>';
139 require_once('footer.php');