PATH:
var
/
www
/
vhosts
/
sandbox.dos-group.com
/
httpdocs
/
apilora
/* 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 polylinePath = []; var tracker = []; var markers = []; var PolylinePathGeodesic = true; var PolylinePathColors = '#ff6b6b'; var PolylinePathOpacity = 1; var PolylinePathStoke = 1.5; /* AJAX config */ var listTrackerRequest = ''; var trackerPositionRequest = ''; var lastPositionRequest = ''; /** RUNTIME */ // init dello script per la gestione della mappa una volta caricata la pagina $(document).ready(function () { /*getMissionDetail(); getLastPosition(); stopTimer();*/ getTrackerList(); $('#datetimepicker1').datetimepicker(); }); /** FUNCTION */ // 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 () { $("li").removeClass("active"); $(this).addClass("active"); id_user = $(this).attr("data-id"); resetAll(); stopTimer(); console.log(id_user); 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() { trackerPositionRequest = $.ajax({ "async": true, type: "GET", url: "api.php", data: {request: "getTarghePosition", id: id_user, interval: 'ever'}, dataType: 'json', success: function (data) { console.log(data); 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(); } } }); } // 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) { console.log(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) { resetPolinePath(); resetTrackerPosition(); 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 }); 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)); } // 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) { mapPolylinePath = new google.maps.Polyline({ path: mapPath, geodesic: PolylinePathGeodesic, strokeColor: PolylinePathColors, strokeOpacity: PolylinePathOpacity, strokeWeight: PolylinePathStoke }); mapPolylinePath.setMap(map); } // 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 resetPolinePath() { 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(); resetPolinePath(); 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); }
[+]
vendor
[+]
class
[-] missions-control.html
[open]
[-] map.html
[open]
[+]
css
[+]
log
[+]
..
[-] api.php
[open]
[-] seeder.html
[open]
[+]
js
[+]
media
[-] history.js
[open]
[-] index.html
[open]
[-] trackers-control.html
[open]
[-] agents-control.html
[open]
[+]
include
[-] index.html.old
[open]