PATH:
var
/
www
/
vhosts
/
sandbox.dos-group.com
/
httpdocs
/
apilora-sdoppio
/
js
/** variables declaration */ // var urlParams = new URLSearchParams(window.location.search); // var id_mission = urlParams.get('mission'); // params edge fixing function getUrlParameter(sParam) { var sPageURL = decodeURIComponent(window.location.search.substring(1)), sURLVariables = sPageURL.split('&'), sParameterName, i; for (i = 0; i < sURLVariables.length; i++) { sParameterName = sURLVariables[i].split('='); if (sParameterName[0] === sParam) { return sParameterName[1] === undefined ? true : sParameterName[1]; } } } var id_mission = getUrlParameter('mission'); console.log(id_mission); // variabile per attivare il seeder (true = attivo) var seeder = true; /* user selection */ var lastPositionActive; var trackerActive; var id_tracker; 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(); }); /** FUNCTION */ function getMissionDetail() { listTrackerRequest = $.ajax({ "async": true, type: "GET", url: "api.php", data: {request: "getMission", id: id_mission}, dataType: 'json', success: function (data) { $('#mission').text(data.name); $('#mission-description').text(data.description); $('#mission-start').text(data.mission_start); }, error: function (request, status, error) { if (status !== 'abort') { alert(error + ' - Errore incontrato durante l\'elaborazione dei dati, la pagina verrà ricaricata.'); location.reload(); } } }); } function getMissionAssignment() { getAgent(); } function getTracker() { listTrackerRequest = $.ajax({ "async": true, type: "GET", url: "api.php", data: {request: "getTracker", id: id_tracker}, dataType: 'json', success: function (data) { console.log(lastPositionActive); }, error: function (request, status, error) { if (status !== 'abort') { alert(error + ' - Errore incontrato durante l\'elaborazione dei dati, la pagina verrà ricaricata.'); location.reload(); } } }); } function getAgent() { $('#agent-detail').empty(); listTrackerRequest = $.ajax({ "async": true, type: "GET", url: "api.php", data: {request: "getAgent", id_agent: id_agent, id_mission: id_mission}, dataType: 'json', success: function (data) { if (!data) { $('#agent-detail').append('Nessun Informazione disponibile, si tratta di un nuovo agente.'); } else { $('#agent-detail').append('<p>Nome agente: ' + data.name + '</p><p>Numero identificativo: ' + data.identification_number + '</p><p>Ultima posizione: Lat: ' + data.lat + '; Lng: ' + data.lng + ';</p>'); } }, 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 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: "getTrackerByMission", id: id_mission}, dataType: 'json', success: function (data) { printTrackersListFromJson(data); // LISTENER per intercettare il click sul bottone della lista di tracker's $('.tracker-button').on('click', function () { $("li").removeClass("active"); $(this).addClass("active"); resetAll(); stopTimer(); interval = $('#intervalSelection option:selected').val(); userSelection = $(this).attr("data-tracker"); if (userSelection === 'tracker-position') { $('#mission-detail').show(); id_tracker = $(this).attr("data-id"); id_agent = $(this).attr("data-agent"); getMissionAssignment(); // richiamo la funzione per avviare la mappa gMaps con la posizione dell'utente getPath(interval, id_tracker); } else if (userSelection === 'all-tracker-position') { $('#mission-detail').hide(); // richiamo la funzione per avviare la mappa gMaps di tutti i tracker's getLastPosition(); } }); refreshListTimer(); }, 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: "getPosition", id: id_tracker, interval: interval}, dataType: 'json', success: function (data) { setPath(data); refreshPositionTimer(); }, 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(); } } }); } // estrae l'ultima posizione dei dispositivi tramite una chiama AJAX e richiama le funzioni per mostrarle function printTrackersListFromJson(data) { if (id_tracker === -1) { lastPositionActive = 'active'; } else { lastPositionActive = ''; } $('#trackerList').append("<li data-tracker='all-tracker-position' class='list-group-item list-group-item-action tracker-button " + lastPositionActive + "'>Ultima posizione di tutti i tracker's</li>"); // loop per estrarre i dati ricevuti dalla chiamata e richiamare le funzioni per generare la gMaps $.each(data, function (i, item) { if (item.id_tracker === id_tracker) { trackerActive = 'active'; } else { trackerActive = ''; } $('#trackerList').append("<li data-id='" + item.id_tracker + "' data-agent='" + item.id_user + "' data-tracker='tracker-position' class='list-group-item list-group-item-action tracker-button " + trackerActive + "'>Tracker: " + item.id_tracker + ", Agente: " + item.name + ", ID-" + item.id_user + "</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); }
[-] 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]