PATH:
var
/
www
/
vhosts
/
sandbox.dos-group.com
/
httpdocs
/
apilora-sdoppio
/
js
/* user selection */ var lastPositionActive; var trackerActive; var id_user; var id_agent; var interval; var userSelection; /* timer config */ var refreshTimeout = 2000; var refreshTimerList = 5000; var refreshCnt = 0; var timerList; var timerLastPosition; var timerPosition; /* map Config */ var mapPolylinePath = []; var mapPolylinePath2 = []; var polylinePath = []; var polylinePath2 = []; var tracker = []; var markers = []; var startEndMarkers = []; var pathMarkers = []; var pathMarkers2 = []; var PolylinePathGeodesic = true; var PolylinePathColors = '#ff6b6b'; var PolylinePathColors2 = '#337AB7'; var PolylinePathOpacity = 1; var PolylinePathStoke = 3.0; /* AJAX config */ var listTrackerRequest = ''; var trackerPositionRequest = ''; var lastPositionRequest = ''; var highlightRequest = ''; var liveTracking = false; /** RUNTIME */ // init dello script per la gestione della mappa una volta caricata la pagina $(document).ready(function () { /*getMissionDetail(); getLastPosition(); stopTimer();*/ getTrackerList(); }); /** FUNCTION */ var refreshId =''; // AJAX REQUEST - estrae la lista di tracker e li inserisce nella lista html aggiungendo un listener su ognuno di loro function getTrackerList() { listTrackerRequest = $.ajax({ "async": true, type: "GET", url: "api.php", data: {request: "getAllTarghe"}, dataType: 'json', success: function (data) { printTargheFromJson(data); $('.tracker-button').on('click', function () { resetPathMarkers(); clearInterval(refreshId); $("li").removeClass("active"); $(this).addClass("active"); id_user = $(this).attr("data-id"); resetStartEndMarkers(); resetAll(); stopTimer(); if($('#checkLive').prop('checked')){ refreshId = setInterval(function() { getPath(interval, id_user); }, 5000); }else{ clearInterval(refreshId); } getPath(interval, id_user); }); }, error: function (request, status, error) { if (status !== 'abort') { alert(error + ' - Errore incontrato durante l\'elaborazione dei dati, la pagina verrà ricaricata.'); location.reload(); } } }); } // AJAX REQUEST - estrae lo storico della posizione del tracker e lo trasmette alla gmaps per creare un tracciato function getPath() { var start_timeVal = $('#start-time').val(); var end_timeVal = $('#end-time').val(); trackerPositionRequest = $.ajax({ "async": true, type: "GET", url: "api.php", data: {request: "getTarghePosition", id: id_user, interval: pickedDate, start_time: start_timeVal, end_time: end_timeVal}, dataType: 'json', success: function (data) { var startTimeTracking = new Date(data[data.length-1].timestamp); console.log(startTimeTracking.toLocaleString('it-IT', { timeZone: 'Europe/Rome' })); var endTimeTracking = new Date(data[0].timestamp); console.log(endTimeTracking.toLocaleString('it-IT', { timeZone: 'Europe/Rome' })); setPath(data); }, error: function (request, status, error) { if (status !== 'abort') { alert(error + ' - Errore incontrato durante l\'elaborazione dei dati, la pagina verrà ricaricata.'); location.reload(); } } }); trackerPositionRequest = $.ajax({ "async": true, type: "GET", url: "api.php", data: {request: "getTarghePosition", id: id_user, interval: "2018/6/25", start_time: '00:01', end_time: '23:59'}, dataType: 'json', success: function (data) { setPath2(data); }, error: function (request, status, error) { if (status !== 'abort') { alert(error + ' - Errore incontrato durante l\'elaborazione dei dati, la pagina verrà ricaricata.'); location.reload(); } } }); } // AJAX REQUEST - estrae l'ultima posizione dei dispositivi tramite una chiama AJAX e richiama le funzioni per mostrarle function getLastPosition() { id_tracker = -1; lastPositionRequest = $.ajax({ "async": true, type: "GET", url: "api.php", data: {request: "getLastPosition", id: id_mission}, dataType: 'json', success: function (data) { (refreshCnt === 0) ? map.setCenter(new google.maps.LatLng(defaultPosition.lat, defaultPosition.lng)) : ''; getMarkersFromJson(data); refreshLastPositionTimer(); }, error: function (request, status, error) { if (status !== 'abort') { alert(error + ' - Errore incontrato durante l\'elaborazione dei dati, la pagina verrà ricaricata.'); location.reload(); } } }); } //stampa tutte le targhe nella pagina History function printTargheFromJson(data) { $.each(data, function (i, item) { $('#trackerList').append("<li data-id='" + item.id_user + "' class='list-group-item list-group-item-action tracker-button'>" + item.identification_number + "</li>"); }); } // estra i dati in formato json relativi all'ultima posizione di tutti i tracker's e richiama la funzione per aggiungerli function getMarkersFromJson(data) { $.each(data, function (i, mark) { tracker = []; var lat = parseFloat(mark.lat); var lng = parseFloat(mark.lng); tracker.lat = lat; tracker.lng = lng; tracker.name = mark.id_tracker; tracker.id_tracker = mark.id_tracker; tracker.timestap = mark.created_at; tracker.id_position = mark.id_position; setMarker(tracker); }); } // estrae i dati in formato json relativi al tracciato del tracker e li salva in un array function setPath(data, recenter) { resetPolylinePath(); resetTrackerPosition(); resetPathMarkers(); var markerImage = new google.maps.MarkerImage('media/dot.png', new google.maps.Size(9, 9), new google.maps.Point(0, 0), new google.maps.Point(4.5, 4.5)); if (typeof data !== 'undefined' && data.length === 0) { return false; } $.each(data, function (i, mark) { var lat = parseFloat(mark.lat); var lng = parseFloat(mark.lng); polylinePath.push({ lat: lat, lng: lng }); //var newTimestamp = new Date(mark.timestamp); //newTimestamp = newTimestamp.toLocaleString('it-IT', { timeZone: 'Asia/Baku' }); /*var infowindow = new google.maps.InfoWindow({ content: "Test"//newTimestamp.split(' ')[1] });*/ /* var marker = new google.maps.Marker({ position: {lat: lat, lng: lng}, map: map, title: "Test",//newTimestamp.split(' ')[1], icon: markerImage }); /*marker.addListener('click', function() { //infowindow.open(map, marker); console.log("test-click"); }); pathMarkers.push(marker); //marker.setMap(map); if (i === 0) { tracker.lat = lat; tracker.lng = lng; tracker.name = mark.id_tracker; tracker.id_tracker = mark.id_tracker; tracker.timestap = mark.created_at; tracker.id_position = mark.id_position; }*/ }); if (refreshCnt !== 0 && markers[0].id_position === tracker.id_position) { //setMarker(tracker); addPath(polylinePath) } else { // setMarker(tracker); addPath(polylinePath) } map.setCenter(new google.maps.LatLng(tracker.lat, tracker.lng)); } // estrae i dati in formato json relativi al tracciato del tracker e li salva in un array function setPath2(data, recenter) { var markerImage = new google.maps.MarkerImage('media/dot.png', new google.maps.Size(9, 9), new google.maps.Point(0, 0), new google.maps.Point(4.5, 4.5)); if (typeof data !== 'undefined' && data.length === 0) { return false; } $.each(data, function (i, mark) { var lat = parseFloat(mark.lat); var lng = parseFloat(mark.lng); polylinePath2.push({ lat: lat, lng: lng }); //var newTimestamp = new Date(mark.timestamp); //newTimestamp = newTimestamp.toLocaleString('it-IT', { timeZone: 'Asia/Baku' }); /*var infowindow = new google.maps.InfoWindow({ content: "Test"//newTimestamp.split(' ')[1] });*/ /* var marker = new google.maps.Marker({ position: {lat: lat, lng: lng}, map: map, title: "test",//newTimestamp.split(' ')[1], icon: markerImage }); /*marker.addListener('click', function() { //infowindow.open(map, marker); console.log("test-click"); }); pathMarkers2.push(marker); //marker.setMap(map); if (i === 0) { tracker.lat = lat; tracker.lng = lng; tracker.name = mark.id_tracker; tracker.id_tracker = mark.id_tracker; tracker.timestap = mark.created_at; tracker.id_position = mark.id_position; }*/ }); if (refreshCnt !== 0 && markers[0].id_position === tracker.id_position) { //setMarker(tracker); addPath2(polylinePath2) } else { //setMarker(tracker); addPath2(polylinePath2) } map.setCenter(new google.maps.LatLng(tracker.lat, tracker.lng)); } // prepara il marker per essere aggiunto alla mappa, controllando l'esistenza sulla mappa e la posizione function setMarker(tracker) { /*var index = markers.map(function (mark) { return mark.id_tracker }).indexOf(tracker.id_tracker); if (index !== -1) { if (tracker.id_position !== markers[index].id_position) { markers[index].setMap(null); markers.splice(index, 1); addMarker(tracker); } } else { addMarker(tracker); }*/ } // crea il tracciato sulla gMaps basandosi sull'array polylinePath function addPath(mapPath) { resetStartEndMarkers(); mapPolylinePath = new google.maps.Polyline({ path: mapPath, geodesic: PolylinePathGeodesic, strokeColor: PolylinePathColors, strokeOpacity: PolylinePathOpacity, strokeWeight: PolylinePathStoke, icons: [{ icon: {path: google.maps.SymbolPath.BACKWARD_CLOSED_ARROW}, offset: '100%', repeat: '200px' }] }); mapPolylinePath.setMap(map); var markerStart = new google.maps.Marker({ id_tracker: tracker.id_tracker, //identificativo del marker id_position: "Start", position: mapPath[mapPath.length-1], timestamp: tracker.timestap, map: map, //icon: "http://www.googlemapsmarkers.com/v1/S/0099FF/" icon: 'media/startflag.png' }); var markerEnd = new google.maps.Marker({ id_tracker: tracker.id_tracker, //identificativo del marker id_position: "End", position: mapPath[0], timestamp: tracker.timestap, map: map, //icon: "https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png" icon: 'media/finishflag.png' }); startEndMarkers.push(markerStart); startEndMarkers.push(markerEnd); markerStart.setMap(map); markerEnd.setMap(map); } function addPath2(mapPath) { mapPolylinePath2 = new google.maps.Polyline({ path: mapPath, geodesic: PolylinePathGeodesic, strokeColor: PolylinePathColors2, strokeOpacity: PolylinePathOpacity, strokeWeight: PolylinePathStoke, icons: [{ icon: {path: google.maps.SymbolPath.BACKWARD_CLOSED_ARROW}, offset: '100%', repeat: '200px' }] }); mapPolylinePath2.setMap(map); var markerStart = new google.maps.Marker({ id_tracker: tracker.id_tracker, //identificativo del marker id_position: "Start", position: mapPath[mapPath.length-1], timestamp: tracker.timestap, map: map, //icon: "http://www.googlemapsmarkers.com/v1/S/0099FF/" icon: 'media/startflag.png' }); var markerEnd = new google.maps.Marker({ id_tracker: tracker.id_tracker, //identificativo del marker id_position: "End", position: mapPath[0], timestamp: tracker.timestap, map: map, //icon: "https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png" icon: 'media/finishflag.png' }); startEndMarkers.push(markerStart); startEndMarkers.push(markerEnd); markerStart.setMap(map); markerEnd.setMap(map); } function resetStartEndMarkers(){ //RESET MARKERS START-END for (var i = 0; i < startEndMarkers.length; i++) { startEndMarkers[i].setMap(null); } startEndMarkers=[]; } function resetPathMarkers(){ //RESET MARKERS START-END for (var i = 0; i < pathMarkers.length; i++) { pathMarkers[i].setMap(null); } pathMarkers=[]; } // estrae un colore in base all'id del tracker, assegna le informazioni al marker e lo aggiunge alla mappa function addMarker(tracker) { var color = colorFromSeed(tracker.id_tracker); var marker = new google.maps.Marker({ id_tracker: tracker.id_tracker, //identificativo del marker label: tracker.name, id_position: tracker.id_position, position: tracker, timestamp: tracker.timestap, map: map, icon: "http://www.googlemapsmarkers.com/v1/" + color }); markers.push(marker); marker.setMap(map); } // aggiorna la lista in base alla variabile refreshTimeout function refreshListTimer() { timerList = setTimeout(function () { clearList(); getTrackerList(); }, refreshTimerList); } function refreshLastPositionTimer() { timerLastPosition = setTimeout(function () { getLastPosition(); refreshCnt++; }, refreshTimeout); } function refreshPositionTimer() { timerPosition = setTimeout(function () { getPath(); refreshCnt++; }, refreshTimeout); } // ferma il timerList per l'aggiornamento della lista function stopTimer() { clearTimeout(timerLastPosition); clearTimeout(timerPosition); } // svuola la lista per inserire i dati aggiornati function clearList() { $('#trackerList').empty(); } function resetPolylinePath() { if (mapPolylinePath.length !== 0) { mapPolylinePath.setMap(null); mapPolylinePath = []; polylinePath = []; } } // resetta l'array contenente le informazioni del tracker function resetTrackerPosition() { tracker = []; } // elimina tutti i marker presenti sulla gmap e resetta l'array "markers" function resetMarkers() { for (var i = 0; i < markers.length; i++) { markers[i].setMap(null); } markers = []; } // blocca le richieste AJAX attive function StopAllRequest() { if (lastPositionRequest !== '') { lastPositionRequest.abort(); } if (trackerPositionRequest !== '') { trackerPositionRequest.abort(); } if (listTrackerRequest !== '') { listTrackerRequest.abort(); } } // resetta le chiamate ajax attive, markers e linee della gmap function resetAll() { StopAllRequest(); resetPolylinePath(); resetTrackerPosition(); resetMarkers(); refreshCnt = 0; } // crea un colore in base ad un seed (int) in formazo HEX function colorFromSeed(seed) { var color = Math.floor((Math.abs(Math.sin(seed) * 16777215)) % 16777215); return color.toString(16); } var lastActiveTD = null; var pickedDate = new Date().toISOString().slice(0, 10); var calendar = new niceDatePicker({ dom:document.getElementById('calendar-demo-wrapper'), mode:'en', onClickDate:function(date, targ){ if(lastActiveTD != null){ lastActiveTD.classList.remove("nice-current"); } //var event = eve || window.event; //lastActiveTD = event.target; lastActiveTD = targ; //event.target.classList.add("nice-current"); targ.classList.add("nice-current"); pickedDate = date; if(id_user!=null) getPath(); resetStartEndMarkers(); resetMarkers(); highlightTrackers(); } }); $('#start-time').timepicker(); $('#end-time').timepicker(); //$('#start-time').val(new Date().toString().slice(16,21)); function clearTime(time){ $('#' + time).val(''); } function highlightTrackers(){ $('#trackerList > li').each(function() { $(this).html($(this).text()); }); highlightRequest = $.ajax({ "async": true, type: "GET", url: "api.php", data: {request: "getTrackersWithData", date_to_check: pickedDate.replace("/","-").replace("/","-")}, dataType: 'json', success: function (data) { $('#trackerList > li').each(function() { for( var i=0; i<data.length; i++){ if($(this).text()==data[i].identification_number) $(this).html('<b>'+$(this).text()+'</b>'+'<i class="fa fa-car" style="float: right;"></i>'); } }); }, error: function (request, status, error) { if (status !== 'abort') { } } }); } function hideDrawer(){ if($('#deviceListContainer').is(":visible")){ $('.button_drawer').html('<i class="fa fa-angle-right"></i>'); $('#deviceListContainer').hide(); $('#deviceMap').attr('style', 'width: 99% !important;'); }else{ $('.button_drawer').html('<i class="fa fa-angle-left"></i>'); $('#deviceListContainer').show(); if(screen.width <= 1200){ $('#deviceMap').attr('style', 'width: 100% !important; overflow:hidden; position: relative;'); }else{ $('#deviceMap').attr('style', 'width: 80% !important; overflow:hidden; position: relative;'); } } }
[-] timepicker.js
[open]
[-] trackers-control.js
[open]
[-] track.js
[open]
[+]
..
[-] assign_mission.js
[open]
[-] history.js
[open]
[-] old_from-submit.js
[open]
[-] agents-control.js
[open]
[-] nice-date-picker.js
[open]
[-] mission_control.js
[open]
[-] seed.js
[open]