var CORE_HOST = 'http://core.skystats'; $(document).ready(function() { // resize $( window ).resize(resize); resize(); // map drawMap(); // chart google.charts.load('current', {'packages':['corechart']}); google.charts.setOnLoadCallback(drawChart); $('body') .on('click', '[clickFn=changeVisibility]', function() { $($(this).attr('show')).show(); $($(this).attr('hide')).hide(); }) ; // typeahead $.typeahead({ input: '.js-typeahead', minLength: 2, maxItem: 10, order: "desc", filter: false, dynamic: true, source: { results: { display: 'txt', ajax: { type: "GET", url: "/search", data: { q: "{{query}}" } } } }, callback: { onClickAfter: function (node, a, item, event) { event.preventDefault(); window.location=item.url; $('#result-container').text(''); } } }); }); function resize() { // viewport var width = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); if (width<576) { document.querySelector("meta[name=viewport]").setAttribute('content', 'width=576'); } if (width<700) { $('.min700').hide(); } else { $('.min700').show(); } if (width<800) { $('.min800').hide(); } else { $('.min800').show(); } if (width<950) { $('.min950').hide(); } else { $('.min950').show(); } if (width<1050) { $('.min1050').hide(); } else { $('.min1050').show(); } drawChart(); }; function drawMap() { if ($('#map').length && mapConfig!=undefined) { // prepare colors var cicrcleColor = '#333333'; var cicrcleFillColor = '#d37f00'; var pathColor = '#999999'; // calculate airport anchors var depAnchor = {}; var arrAnchor = {}; if (mapConfig.direction>=0 && mapConfig.direction<=180) { // -> depAnchor = L.point(45, 11); arrAnchor = L.point(-10, 11) } else { // <- depAnchor = L.point(-10, 11); arrAnchor = L.point(45, 11) } // draw map var map = L.map('map', {scrollWheelZoom: false, dragging: false}); L.tileLayer('https://tiles.turtella.ru/v1/{z}/{y}/{x}', { attribution: '', minZoom: 2, maxZoom: 9 }).addTo(map); map.fitBounds([mapConfig.depPos, mapConfig.arrPos]); var tracks = [mapConfig.depPos].concat(mapConfig.tracks).concat([mapConfig.arrPos]); var polyline = L.polyline(tracks, {color: pathColor, opacity: 1, weight: 2.5}).addTo(map); var dep = L.marker(mapConfig.depPos, {icon: L.divIcon({iconAnchor: depAnchor, className: 'airport-map-icon', iconSize:L.point(35, 22), html:mapConfig.depIata})}).addTo(map); var dep2 = L.circleMarker(mapConfig.depPos, {radius: 6, color: cicrcleColor, weight: .5, fillOpacity: 1, fillColor: cicrcleFillColor}).addTo(map); var arr = L.marker(mapConfig.arrPos, {icon: L.divIcon({iconAnchor: arrAnchor, className: 'airport-map-icon', iconSize:L.point(35, 22), html:mapConfig.arrIata})}).addTo(map); var arr2 = L.circleMarker(mapConfig.arrPos, {radius: 6, color: cicrcleColor, weight: .5, fillOpacity: 1, fillColor: cicrcleFillColor}).addTo(map); var plane = L.marker(mapConfig.planePos, {icon: L.divIcon({className: 'plane', iconSize:L.point(30, 30), html:'
'})}).addTo(map); if(isCloseToBorder(map, mapConfig.depPos, mapConfig.arrPos)) { map.setZoom(map.getZoom()-1, {animate: false}); } // rotate plane icon var rotateVal = 'rotate('+mapConfig.rotation+'deg)'; $('.rotatablePlane').css({ '-webkit-transform': rotateVal, '-moz-transform': rotateVal, '-o-transform': rotateVal, '-ms-transform': rotateVal, 'transform': rotateVal }); // ignore manual zooms setTimeout(function() { map.on('zoomend', function() { map.dragging.enable(); }); },1000) } }; function isCloseToBorder(map, point1, point2) { var pointsLatDiff = getDiff(point1[0], point2[0]); var mapLatDiff = getDiff(map.getBounds().getSouthWest().lat, map.getBounds().getNorthEast().lat); if ((pointsLatDiff/mapLatDiff)>0.9) return true; var pointsLngDiff = getDiff(point1[1], point2[1]); var mapLngDiff = getDiff(map.getBounds().getSouthWest().lng, map.getBounds().getNorthEast().lng); if ((pointsLngDiff/mapLngDiff)>0.9) return true; return false; } function getDiff(val1, val2) { var val = Math.abs(val1-val2); return val>180?(360-val):val; } var chart = undefined; function drawChart() { if (typeof google !== 'undefined' && google.visualization!=undefined && typeof delaysConfig !== 'undefined') { // clear if (chart!=undefined) chart.clearChart(); // draw var data = google.visualization.arrayToDataTable([ ['', '', { role: 'annotation' }], ['вовремя', delaysConfig.d0, ''+delaysConfig.d0+'%'], ['до 15 мин.', delaysConfig.d15, ''+delaysConfig.d15+'%'], ['15-30 мин.', delaysConfig.d30, ''+delaysConfig.d30+'%'], ['30-60 мин.', delaysConfig.d60, ''+delaysConfig.d60+'%'], ['> 60 мин.', delaysConfig.d999, ''+delaysConfig.d999+'%'] ]); var view = new google.visualization.DataView(data); var options = { colors: ['#21af21'], chartArea: {left: 25, top: 10, right: 0, bottom: 20}, bar: {groupWidth: "75%"}, legend: { position: "none" } }; chart = new google.visualization.ColumnChart(document.getElementById("delayChart")); chart.draw(view, options); } };