Add open source license viewer dialog
parent
e2556f27e4
commit
343a467b6f
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,355 +1,355 @@
|
|||||||
/* global PositionError */
|
///* global PositionError */
|
||||||
|
//
|
||||||
//////////////////////////////////////////////
|
////////////////////////////////////////////////
|
||||||
// GPS and terrain stuff
|
//// GPS and terrain stuff
|
||||||
//////////////////////////////////////////////
|
////////////////////////////////////////////////
|
||||||
|
//
|
||||||
/**
|
///**
|
||||||
* Handles GPS and terrain data.
|
// * Handles GPS and terrain data.
|
||||||
*/
|
// */
|
||||||
|
//
|
||||||
// Globals
|
//// Globals
|
||||||
lockGot = false;
|
//lockGot = false;
|
||||||
terrainGot = false;
|
//terrainGot = false;
|
||||||
latitude = 0.0000;
|
//latitude = 0.0000;
|
||||||
longitude = 0.0000;
|
//longitude = 0.0000;
|
||||||
gpsaccuracy = 9999;
|
//gpsaccuracy = 9999;
|
||||||
// End Globals
|
//// End Globals
|
||||||
|
//
|
||||||
var lastgpstime = 0;
|
//var lastgpstime = 0;
|
||||||
var terraintypeid = 0;
|
//var terraintypeid = 0;
|
||||||
var map = L.map('map');
|
//var map = L.map('map');
|
||||||
var tileurl = "http://tile.stamen.com/terrain/{z}/{x}/{y}.jpg";
|
//var tileurl = "http://tile.stamen.com/terrain/{z}/{x}/{y}.jpg";
|
||||||
map.setZoom(17);
|
//map.setZoom(17);
|
||||||
map.dragging.disable();
|
//map.dragging.disable();
|
||||||
//map.touchZoom.disable();
|
////map.touchZoom.disable();
|
||||||
//map.doubleClickZoom.disable();
|
////map.doubleClickZoom.disable();
|
||||||
//map.scrollWheelZoom.disable();
|
////map.scrollWheelZoom.disable();
|
||||||
map.keyboard.disable();
|
//map.keyboard.disable();
|
||||||
$(".leaflet-control-zoom").css("visibility", "hidden");
|
//$(".leaflet-control-zoom").css("visibility", "hidden");
|
||||||
// Disable tap handler, if present.
|
//// Disable tap handler, if present.
|
||||||
//if (map.tap) {
|
////if (map.tap) {
|
||||||
// map.tap.disable();
|
//// map.tap.disable();
|
||||||
|
////}
|
||||||
|
//
|
||||||
|
//// Tile layer
|
||||||
|
//map.addLayer(new L.tileLayer(tileurl, {minZoom: 17, maxZoom: 18}));
|
||||||
|
//// Places layer
|
||||||
|
//var placeLayer = L.geoJson(
|
||||||
|
// {"name": "Places", "type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Point", "coordinates": [0, 0]}, "properties": {"osm_id": -1, "name": null}}]},
|
||||||
|
// {
|
||||||
|
// onEachFeature: onPlaceTap,
|
||||||
|
// pointToLayer: function (feature, latlng) {
|
||||||
|
// return L.circleMarker(latlng, {
|
||||||
|
// radius: 14,
|
||||||
|
// fillColor: "#ff7800",
|
||||||
|
// color: "#000",
|
||||||
|
// weight: 1,
|
||||||
|
// opacity: 1,
|
||||||
|
// fillOpacity: 0.6
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// }).addTo(map);
|
||||||
|
//
|
||||||
|
//var lc = L.control.locate({
|
||||||
|
// position: 'topleft', // set the location of the control
|
||||||
|
// layer: undefined, // use your own layer for the location marker, creates a new layer by default
|
||||||
|
// drawCircle: false, // controls whether a circle is drawn that shows the uncertainty about the location
|
||||||
|
// follow: true, // follow the user's location
|
||||||
|
// setView: true, // automatically sets the map view to the user's location, enabled if `follow` is true
|
||||||
|
// keepCurrentZoomLevel: true, // keep the current map zoom level when displaying the user's location. (if `false`, use maxZoom)
|
||||||
|
// stopFollowingOnDrag: false, // stop following when the map is dragged if `follow` is true (deprecated, see below)
|
||||||
|
// remainActive: true, // if true locate control remains active on click even if the user's location is in view.
|
||||||
|
// markerClass: L.circleMarker, // L.circleMarker or L.marker
|
||||||
|
// circleStyle: {}, // change the style of the circle around the user's location
|
||||||
|
// markerStyle: {},
|
||||||
|
// followCircleStyle: {}, // set difference for the style of the circle around the user's location while following
|
||||||
|
// followMarkerStyle: {},
|
||||||
|
// icon: 'fa fa-map-marker', // class for icon, fa-location-arrow or fa-map-marker
|
||||||
|
// iconLoading: 'fa fa-spinner fa-pulse', // class for loading icon
|
||||||
|
// iconElementTag: 'span', // tag for the icon element, span or i
|
||||||
|
// circlePadding: [0, 0], // padding around accuracy circle, value is passed to setBounds
|
||||||
|
// metric: true, // use metric or imperial units
|
||||||
|
// onLocationError: function (err) {
|
||||||
|
// }, // define an error callback function
|
||||||
|
// onLocationOutsideMapBounds: function (context) { // called when outside map boundaries
|
||||||
|
// },
|
||||||
|
// showPopup: false, // display a popup when the user click on the inner marker
|
||||||
|
// strings: {
|
||||||
|
// title: ".", // title of the locate control
|
||||||
|
// metersUnit: "meters", // string for metric units
|
||||||
|
// feetUnit: "feet", // string for imperial units
|
||||||
|
// popup: "You are within {distance} {unit} from this point", // text to appear if user clicks on circle
|
||||||
|
// outsideMapBoundsMsg: "You seem located outside the boundaries of the map" // default message for onLocationOutsideMapBounds
|
||||||
|
// },
|
||||||
|
// locateOptions: {} // define location options e.g enableHighAccuracy: true or maxZoom: 10
|
||||||
|
//}).addTo(map);
|
||||||
|
//lc.start();
|
||||||
|
//function mapPos(lat, lon) {
|
||||||
|
// lockGot = true;
|
||||||
|
// hideLoading();
|
||||||
|
// loadPlaces(latitude, longitude);
|
||||||
|
// //map.setView(new L.LatLng(lat, lon), 16, {animate: true});
|
||||||
|
// //map.panTo(new L.LatLng(lat, lon));
|
||||||
|
// //map.invalidateSize();
|
||||||
|
// //redraw('.leaflet-map-pane');
|
||||||
|
//// $('.leaflet-map-plane').css('height', '90%');
|
||||||
|
//// setTimeout(function () {
|
||||||
|
//// $('#map').css('width', '100%');
|
||||||
|
//// $('#map').css('height', '100%');
|
||||||
|
//// }, 100);
|
||||||
//}
|
//}
|
||||||
|
//
|
||||||
// Tile layer
|
//function onPlaceTap(feature, layer) {
|
||||||
map.addLayer(new L.tileLayer(tileurl, {minZoom: 17, maxZoom: 18}));
|
// layer.on('click', function (e) {
|
||||||
// Places layer
|
// openPlace(feature);
|
||||||
var placeLayer = L.geoJson(
|
// });
|
||||||
{"name": "Places", "type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Point", "coordinates": [0, 0]}, "properties": {"osm_id": -1, "name": null}}]},
|
//}
|
||||||
{
|
//
|
||||||
onEachFeature: onPlaceTap,
|
//function loadPlaces(lat, long) {
|
||||||
pointToLayer: function (feature, latlng) {
|
// $.getJSON(
|
||||||
return L.circleMarker(latlng, {
|
// "http://earth.apis.netsyms.net/places.php?format=geojson&lat=" + lat + "&long=" + long + "&radius=.25&names=1",
|
||||||
radius: 14,
|
// function (data) {
|
||||||
fillColor: "#ff7800",
|
// if (data.type === 'FeatureCollection') {
|
||||||
color: "#000",
|
// placeLayer.clearLayers();
|
||||||
weight: 1,
|
// data.features.forEach(function (item) {
|
||||||
opacity: 1,
|
// item.properties.popupContent = "<span class='marker-popup-text' onclick='openplace(" + item.properties.osm_id + ")'>" + item.properties.name + "</span>";
|
||||||
fillOpacity: 0.6
|
// placeLayer.addData(item);
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
}).addTo(map);
|
// });
|
||||||
|
//}
|
||||||
var lc = L.control.locate({
|
//
|
||||||
position: 'topleft', // set the location of the control
|
//function openPlace(feature) {
|
||||||
layer: undefined, // use your own layer for the location marker, creates a new layer by default
|
// $('#main-content').load("screens/place.html", null, function () {
|
||||||
drawCircle: false, // controls whether a circle is drawn that shows the uncertainty about the location
|
// loadPlace(feature);
|
||||||
follow: true, // follow the user's location
|
// $('#overlay-main').css('display', 'block');
|
||||||
setView: true, // automatically sets the map view to the user's location, enabled if `follow` is true
|
// });
|
||||||
keepCurrentZoomLevel: true, // keep the current map zoom level when displaying the user's location. (if `false`, use maxZoom)
|
//}
|
||||||
stopFollowingOnDrag: false, // stop following when the map is dragged if `follow` is true (deprecated, see below)
|
//
|
||||||
remainActive: true, // if true locate control remains active on click even if the user's location is in view.
|
///**
|
||||||
markerClass: L.circleMarker, // L.circleMarker or L.marker
|
// * Hide the loading overlay if everything is loaded, otherwise do nothing
|
||||||
circleStyle: {}, // change the style of the circle around the user's location
|
// */
|
||||||
markerStyle: {},
|
//function hideLoading() {
|
||||||
followCircleStyle: {}, // set difference for the style of the circle around the user's location while following
|
// if (lockGot && terrainGot && gpsaccuracy < 30 && $('#loading').css('display') !== 'none') {
|
||||||
followMarkerStyle: {},
|
// $('#loading').fadeOut('slow', function () {
|
||||||
icon: 'fa fa-map-marker', // class for icon, fa-location-arrow or fa-map-marker
|
// $('#loading').css('display', 'none');
|
||||||
iconLoading: 'fa fa-spinner fa-pulse', // class for loading icon
|
// });
|
||||||
iconElementTag: 'span', // tag for the icon element, span or i
|
// }
|
||||||
circlePadding: [0, 0], // padding around accuracy circle, value is passed to setBounds
|
//}
|
||||||
metric: true, // use metric or imperial units
|
//
|
||||||
onLocationError: function (err) {
|
//var updatePosition = function (position) {
|
||||||
}, // define an error callback function
|
// latitude = position.coords.latitude;
|
||||||
onLocationOutsideMapBounds: function (context) { // called when outside map boundaries
|
// longitude = position.coords.longitude;
|
||||||
},
|
// lastgpstime = position.timestamp;
|
||||||
showPopup: false, // display a popup when the user click on the inner marker
|
// gpsaccuracy = position.coords.accuracy;
|
||||||
strings: {
|
// if (gpsaccuracy > 30) {
|
||||||
title: ".", // title of the locate control
|
// $('#no-lock').css('display', 'block');
|
||||||
metersUnit: "meters", // string for metric units
|
// } else {
|
||||||
feetUnit: "feet", // string for imperial units
|
// $('#no-lock').css('display', 'none');
|
||||||
popup: "You are within {distance} {unit} from this point", // text to appear if user clicks on circle
|
// }
|
||||||
outsideMapBoundsMsg: "You seem located outside the boundaries of the map" // default message for onLocationOutsideMapBounds
|
// mapPos(latitude, longitude);
|
||||||
},
|
//};
|
||||||
locateOptions: {} // define location options e.g enableHighAccuracy: true or maxZoom: 10
|
//var updateTerrain = function (position) {
|
||||||
}).addTo(map);
|
// latitude = position.coords.latitude;
|
||||||
lc.start();
|
// longitude = position.coords.longitude;
|
||||||
function mapPos(lat, lon) {
|
// lastgpstime = position.timestamp;
|
||||||
lockGot = true;
|
// gpsaccuracy = position.coords.accuracy;
|
||||||
hideLoading();
|
// var rasterurl = "http://earth.apis.netsyms.net/terrain.php?format=json&lat="
|
||||||
loadPlaces(latitude, longitude);
|
// + latitude + "&long=" + longitude;
|
||||||
//map.setView(new L.LatLng(lat, lon), 16, {animate: true});
|
// $.get(rasterurl, function (data) {
|
||||||
//map.panTo(new L.LatLng(lat, lon));
|
// if (data.status === 'OK') {
|
||||||
//map.invalidateSize();
|
// terraintypeid = data.typeid;
|
||||||
//redraw('.leaflet-map-pane');
|
// terraintypename = data.typename;
|
||||||
// $('.leaflet-map-plane').css('height', '90%');
|
// $('#terrain-image').attr('src', 'assets/terrain/' + terraintypeid + '.png');
|
||||||
// setTimeout(function () {
|
// terrainGot = true;
|
||||||
// $('#map').css('width', '100%');
|
// hideLoading();
|
||||||
// $('#map').css('height', '100%');
|
// }
|
||||||
// }, 100);
|
// }, "json").fail(function (err) {
|
||||||
}
|
// $('#terrain-image').attr('src', 'assets/terrain/0.png');
|
||||||
|
// });
|
||||||
function onPlaceTap(feature, layer) {
|
//};
|
||||||
layer.on('click', function (e) {
|
//function pingServer() {
|
||||||
openPlace(feature);
|
// if (lockGot && gpsaccuracy < 30) {
|
||||||
});
|
// $.get(mkApiUrl('ping') + "?user=" + username + "&lat=" + latitude + "&long=" + longitude);
|
||||||
}
|
// }
|
||||||
|
//}
|
||||||
function loadPlaces(lat, long) {
|
//;
|
||||||
$.getJSON(
|
//function onError(error) {
|
||||||
"http://earth.apis.netsyms.net/places.php?format=geojson&lat=" + lat + "&long=" + long + "&radius=.25&names=1",
|
// $('#loading-error').text("Check your device's network and location settings, and ensure a clear view of the sky.");
|
||||||
function (data) {
|
//}
|
||||||
if (data.type === 'FeatureCollection') {
|
//
|
||||||
placeLayer.clearLayers();
|
//function popGPS() {
|
||||||
data.features.forEach(function (item) {
|
// navigator.notification.alert("Latitude: " + latitude +
|
||||||
item.properties.popupContent = "<span class='marker-popup-text' onclick='openplace(" + item.properties.osm_id + ")'>" + item.properties.name + "</span>";
|
// "\nLongitude: " + longitude +
|
||||||
placeLayer.addData(item);
|
// "\nAccuracy: " + gpsaccuracy +
|
||||||
});
|
// "\nTerrain: " + terraintypename + " (" + terraintypeid + ")",
|
||||||
}
|
// null,
|
||||||
});
|
// "GPS Information",
|
||||||
}
|
// "Close");
|
||||||
|
//}
|
||||||
function openPlace(feature) {
|
//$('#terrain-image').click(function () {
|
||||||
$('#main-content').load("screens/place.html", null, function () {
|
// popGPS();
|
||||||
loadPlace(feature);
|
//});
|
||||||
$('#overlay-main').css('display', 'block');
|
//// Initial GPS position and stuff
|
||||||
});
|
//navigator.geolocation.getCurrentPosition(updateTerrain, onError, {timeout: 10000, enableHighAccuracy: true});
|
||||||
}
|
//// Update position
|
||||||
|
//setInterval(function () {
|
||||||
/**
|
// navigator.geolocation.getCurrentPosition(updatePosition, onError, {timeout: 10000, enableHighAccuracy: true});
|
||||||
* Hide the loading overlay if everything is loaded, otherwise do nothing
|
//}, 1000);
|
||||||
*/
|
//// Update position + terrain
|
||||||
function hideLoading() {
|
//setInterval(function () {
|
||||||
if (lockGot && terrainGot && gpsaccuracy < 30 && $('#loading').css('display') !== 'none') {
|
// navigator.geolocation.getCurrentPosition(updateTerrain, onError, {timeout: 10000, enableHighAccuracy: true});
|
||||||
$('#loading').fadeOut('slow', function () {
|
// loadPlaces(latitude, longitude);
|
||||||
$('#loading').css('display', 'none');
|
//}, 1000 * 20);
|
||||||
});
|
//// Ping the server with coordinates
|
||||||
}
|
//setInterval(pingServer, 5000);
|
||||||
}
|
//// Show error if it's taking too long
|
||||||
|
//setTimeout(function () {
|
||||||
var updatePosition = function (position) {
|
// onError();
|
||||||
latitude = position.coords.latitude;
|
//}, 15 * 1000);
|
||||||
longitude = position.coords.longitude;
|
//
|
||||||
lastgpstime = position.timestamp;
|
//
|
||||||
gpsaccuracy = position.coords.accuracy;
|
////////////////////////////////////////////////
|
||||||
if (gpsaccuracy > 30) {
|
//// Profile, stats, and chat stuff
|
||||||
$('#no-lock').css('display', 'block');
|
////////////////////////////////////////////////
|
||||||
} else {
|
//
|
||||||
$('#no-lock').css('display', 'none');
|
//
|
||||||
}
|
///*
|
||||||
mapPos(latitude, longitude);
|
// * Handles general server communication.
|
||||||
};
|
// */
|
||||||
var updateTerrain = function (position) {
|
//
|
||||||
latitude = position.coords.latitude;
|
///**
|
||||||
longitude = position.coords.longitude;
|
// * Syncs the user's stats with the server and calls refreshStats().
|
||||||
lastgpstime = position.timestamp;
|
// */
|
||||||
gpsaccuracy = position.coords.accuracy;
|
//function syncStats() {
|
||||||
var rasterurl = "http://earth.apis.netsyms.net/terrain.php?format=json&lat="
|
// $.getJSON(mkApiUrl('getstats'), {
|
||||||
+ latitude + "&long=" + longitude;
|
// user: username
|
||||||
$.get(rasterurl, function (data) {
|
// }, function (data) {
|
||||||
if (data.status === 'OK') {
|
// if (data.status === 'OK') {
|
||||||
terraintypeid = data.typeid;
|
// maxenergy = data.stats.maxenergy;
|
||||||
terraintypename = data.typename;
|
// energy = data.stats.energy;
|
||||||
$('#terrain-image').attr('src', 'assets/terrain/' + terraintypeid + '.png');
|
// level = data.stats.level;
|
||||||
terrainGot = true;
|
// refreshStats();
|
||||||
hideLoading();
|
// }
|
||||||
}
|
// });
|
||||||
}, "json").fail(function (err) {
|
//}
|
||||||
$('#terrain-image').attr('src', 'assets/terrain/0.png');
|
//
|
||||||
});
|
///**
|
||||||
};
|
// * Display the current stats on the home screen.
|
||||||
function pingServer() {
|
// */
|
||||||
if (lockGot && gpsaccuracy < 30) {
|
//function refreshStats() {
|
||||||
$.get(mkApiUrl('ping') + "?user=" + username + "&lat=" + latitude + "&long=" + longitude);
|
// energypercent = (energy * 1.0 / maxenergy * 1.0) * 100.0;
|
||||||
}
|
// $('#energybar').css('width', String(energypercent) + '%');
|
||||||
}
|
//}
|
||||||
;
|
//
|
||||||
function onError(error) {
|
//function getChat() {
|
||||||
$('#loading-error').text("Check your device's network and location settings, and ensure a clear view of the sky.");
|
// if (lockGot) {
|
||||||
}
|
// $.getJSON(mkApiUrl('chat', 'cs'), {
|
||||||
|
// lat: latitude,
|
||||||
function popGPS() {
|
// long: longitude
|
||||||
navigator.notification.alert("Latitude: " + latitude +
|
// }, function (data) {
|
||||||
"\nLongitude: " + longitude +
|
// data = sortResults(data, 'time', true);
|
||||||
"\nAccuracy: " + gpsaccuracy +
|
// var content = "";
|
||||||
"\nTerrain: " + terraintypename + " (" + terraintypeid + ")",
|
// data.forEach(function (msg) {
|
||||||
null,
|
// content += "<span class='chat-username' onclick='openProfile(\"" + msg.username + "\");'>" + msg.username + "</span> " + msg.message + "<br />";
|
||||||
"GPS Information",
|
// });
|
||||||
"Close");
|
// $('#chatmsgs').html(content);
|
||||||
}
|
// });
|
||||||
$('#terrain-image').click(function () {
|
// }
|
||||||
popGPS();
|
//}
|
||||||
});
|
//
|
||||||
// Initial GPS position and stuff
|
//
|
||||||
navigator.geolocation.getCurrentPosition(updateTerrain, onError, {timeout: 10000, enableHighAccuracy: true});
|
//syncStats();
|
||||||
// Update position
|
//setInterval(function () {
|
||||||
setInterval(function () {
|
// syncStats();
|
||||||
navigator.geolocation.getCurrentPosition(updatePosition, onError, {timeout: 10000, enableHighAccuracy: true});
|
//}, 10 * 1000);
|
||||||
}, 1000);
|
//setInterval(function () {
|
||||||
// Update position + terrain
|
// getChat();
|
||||||
setInterval(function () {
|
//}, 2000);
|
||||||
navigator.geolocation.getCurrentPosition(updateTerrain, onError, {timeout: 10000, enableHighAccuracy: true});
|
//// Send chat messages
|
||||||
loadPlaces(latitude, longitude);
|
//$("#chatsendform").submit(function (event) {
|
||||||
}, 1000 * 20);
|
// message = $('#chatbox-input').val();
|
||||||
// Ping the server with coordinates
|
// if (message !== '') {
|
||||||
setInterval(pingServer, 5000);
|
// $.post(mkApiUrl('chat', 'cs'), {
|
||||||
// Show error if it's taking too long
|
// user: username,
|
||||||
setTimeout(function () {
|
// lat: latitude,
|
||||||
onError();
|
// long: longitude,
|
||||||
}, 15 * 1000);
|
// msg: message
|
||||||
|
// }, function (data) {
|
||||||
|
// if (data.status === 'OK') {
|
||||||
//////////////////////////////////////////////
|
// $('#chatbox-input').val("");
|
||||||
// Profile, stats, and chat stuff
|
// $("#chatmsgs").animate({scrollTop: $('#chatmsgs').prop("scrollHeight")}, 1000);
|
||||||
//////////////////////////////////////////////
|
// }
|
||||||
|
// }, "json");
|
||||||
|
// }
|
||||||
/*
|
// event.preventDefault();
|
||||||
* Handles general server communication.
|
// return false;
|
||||||
*/
|
//});
|
||||||
|
//function toggleChat() {
|
||||||
/**
|
// if ($('#chatmsgs').css('display') === 'none') {
|
||||||
* Syncs the user's stats with the server and calls refreshStats().
|
// openChat();
|
||||||
*/
|
// } else {
|
||||||
function syncStats() {
|
// closeChat();
|
||||||
$.getJSON(mkApiUrl('getstats'), {
|
// }
|
||||||
user: username
|
//}
|
||||||
}, function (data) {
|
//
|
||||||
if (data.status === 'OK') {
|
//function closeChat() {
|
||||||
maxenergy = data.stats.maxenergy;
|
// $('#chatmsgs').css('display', 'none');
|
||||||
energy = data.stats.energy;
|
// $('#chatbox').css('height', 'auto');
|
||||||
level = data.stats.level;
|
//}
|
||||||
refreshStats();
|
//
|
||||||
}
|
//function openChat() {
|
||||||
});
|
// $('#chatbox').css('height', '50%');
|
||||||
}
|
// $('#chatmsgs').css('display', 'block');
|
||||||
|
// $("#chatmsgs").animate({scrollTop: $('#chatmsgs').prop("scrollHeight")}, 1000);
|
||||||
/**
|
//}
|
||||||
* Display the current stats on the home screen.
|
//
|
||||||
*/
|
//function openProfile(user) {
|
||||||
function refreshStats() {
|
// user = typeof user !== 'undefined' ? user : username;
|
||||||
energypercent = (energy * 1.0 / maxenergy * 1.0) * 100.0;
|
// $('#main-content').load("screens/profile.html", null, function (x) {
|
||||||
$('#energybar').css('width', String(energypercent) + '%');
|
// $('#overlay-main').css('display', 'block');
|
||||||
}
|
// loadProfile(user);
|
||||||
|
// });
|
||||||
function getChat() {
|
//}
|
||||||
if (lockGot) {
|
//
|
||||||
$.getJSON(mkApiUrl('chat', 'cs'), {
|
//function openRules() {
|
||||||
lat: latitude,
|
// openmodal('rules', '#rules-modal');
|
||||||
long: longitude
|
//}
|
||||||
}, function (data) {
|
//
|
||||||
data = sortResults(data, 'time', true);
|
//function openMenu(topage) {
|
||||||
var content = "";
|
// topage = typeof topage !== 'undefined' ? topage : "";
|
||||||
data.forEach(function (msg) {
|
// $('#main-content').load("screens/menu.html", null, function (x) {
|
||||||
content += "<span class='chat-username' onclick='openProfile(\"" + msg.username + "\");'>" + msg.username + "</span> " + msg.message + "<br />";
|
// $('#overlay-main').css('display', 'block');
|
||||||
});
|
// if (topage !== '') {
|
||||||
$('#chatmsgs').html(content);
|
// $('#' + topage + '-tab').tab('show');
|
||||||
});
|
// }
|
||||||
}
|
// });
|
||||||
}
|
//}
|
||||||
|
//
|
||||||
|
//
|
||||||
syncStats();
|
//
|
||||||
setInterval(function () {
|
////////////////////////////////////////////////
|
||||||
syncStats();
|
//// Other things
|
||||||
}, 10 * 1000);
|
////////////////////////////////////////////////
|
||||||
setInterval(function () {
|
//
|
||||||
getChat();
|
//function closeMain() {
|
||||||
}, 2000);
|
// $('#overlay-main').slideDown(100, function () {
|
||||||
// Send chat messages
|
// $('#overlay-main').css('display', 'none');
|
||||||
$("#chatsendform").submit(function (event) {
|
// $('#main-content').html("");
|
||||||
message = $('#chatbox-input').val();
|
// });
|
||||||
if (message !== '') {
|
//}
|
||||||
$.post(mkApiUrl('chat', 'cs'), {
|
//
|
||||||
user: username,
|
//// Handle back button to close things
|
||||||
lat: latitude,
|
//document.addEventListener("backbutton", function (event) {
|
||||||
long: longitude,
|
// if ($('#overlay-main').css('display') !== 'none') {
|
||||||
msg: message
|
// closeMain();
|
||||||
}, function (data) {
|
// } else if ($('#chatmsgs').css('display') !== 'none') {
|
||||||
if (data.status === 'OK') {
|
// toggleChat();
|
||||||
$('#chatbox-input').val("");
|
// }
|
||||||
$("#chatmsgs").animate({scrollTop: $('#chatmsgs').prop("scrollHeight")}, 1000);
|
//}, false);
|
||||||
}
|
//// Show the rules
|
||||||
}, "json");
|
//if (localStorage.getItem("seenrules") !== 'yes') {
|
||||||
}
|
// openRules();
|
||||||
event.preventDefault();
|
// localStorage.setItem("seenrules", 'yes');
|
||||||
return false;
|
//}
|
||||||
});
|
|
||||||
function toggleChat() {
|
|
||||||
if ($('#chatmsgs').css('display') === 'none') {
|
|
||||||
openChat();
|
|
||||||
} else {
|
|
||||||
closeChat();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function closeChat() {
|
|
||||||
$('#chatmsgs').css('display', 'none');
|
|
||||||
$('#chatbox').css('height', 'auto');
|
|
||||||
}
|
|
||||||
|
|
||||||
function openChat() {
|
|
||||||
$('#chatbox').css('height', '50%');
|
|
||||||
$('#chatmsgs').css('display', 'block');
|
|
||||||
$("#chatmsgs").animate({scrollTop: $('#chatmsgs').prop("scrollHeight")}, 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
function openProfile(user) {
|
|
||||||
user = typeof user !== 'undefined' ? user : username;
|
|
||||||
$('#main-content').load("screens/profile.html", null, function (x) {
|
|
||||||
$('#overlay-main').css('display', 'block');
|
|
||||||
loadProfile(user);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function openRules() {
|
|
||||||
openmodal('rules', '#rules-modal');
|
|
||||||
}
|
|
||||||
|
|
||||||
function openMenu(topage) {
|
|
||||||
topage = typeof topage !== 'undefined' ? topage : "";
|
|
||||||
$('#main-content').load("screens/menu.html", null, function (x) {
|
|
||||||
$('#overlay-main').css('display', 'block');
|
|
||||||
if (topage !== '') {
|
|
||||||
$('#' + topage + '-tab').tab('show');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////
|
|
||||||
// Other things
|
|
||||||
//////////////////////////////////////////////
|
|
||||||
|
|
||||||
function closeMain() {
|
|
||||||
$('#overlay-main').slideDown(100, function () {
|
|
||||||
$('#overlay-main').css('display', 'none');
|
|
||||||
$('#main-content').html("");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle back button to close things
|
|
||||||
document.addEventListener("backbutton", function (event) {
|
|
||||||
if ($('#overlay-main').css('display') !== 'none') {
|
|
||||||
closeMain();
|
|
||||||
} else if ($('#chatmsgs').css('display') !== 'none') {
|
|
||||||
toggleChat();
|
|
||||||
}
|
|
||||||
}, false);
|
|
||||||
// Show the rules
|
|
||||||
if (localStorage.getItem("seenrules") !== 'yes') {
|
|
||||||
openRules();
|
|
||||||
localStorage.setItem("seenrules", 'yes');
|
|
||||||
}
|
|
@ -1,355 +1,355 @@
|
|||||||
/* global PositionError */
|
///* global PositionError */
|
||||||
|
//
|
||||||
//////////////////////////////////////////////
|
////////////////////////////////////////////////
|
||||||
// GPS and terrain stuff
|
//// GPS and terrain stuff
|
||||||
//////////////////////////////////////////////
|
////////////////////////////////////////////////
|
||||||
|
//
|
||||||
/**
|
///**
|
||||||
* Handles GPS and terrain data.
|
// * Handles GPS and terrain data.
|
||||||
*/
|
// */
|
||||||
|
//
|
||||||
// Globals
|
//// Globals
|
||||||
lockGot = false;
|
//lockGot = false;
|
||||||
terrainGot = false;
|
//terrainGot = false;
|
||||||
latitude = 0.0000;
|
//latitude = 0.0000;
|
||||||
longitude = 0.0000;
|
//longitude = 0.0000;
|
||||||
gpsaccuracy = 9999;
|
//gpsaccuracy = 9999;
|
||||||
// End Globals
|
//// End Globals
|
||||||
|
//
|
||||||
var lastgpstime = 0;
|
//var lastgpstime = 0;
|
||||||
var terraintypeid = 0;
|
//var terraintypeid = 0;
|
||||||
var map = L.map('map');
|
//var map = L.map('map');
|
||||||
var tileurl = "http://tile.stamen.com/terrain/{z}/{x}/{y}.jpg";
|
//var tileurl = "http://tile.stamen.com/terrain/{z}/{x}/{y}.jpg";
|
||||||
map.setZoom(17);
|
//map.setZoom(17);
|
||||||
map.dragging.disable();
|
//map.dragging.disable();
|
||||||
//map.touchZoom.disable();
|
////map.touchZoom.disable();
|
||||||
//map.doubleClickZoom.disable();
|
////map.doubleClickZoom.disable();
|
||||||
//map.scrollWheelZoom.disable();
|
////map.scrollWheelZoom.disable();
|
||||||
map.keyboard.disable();
|
//map.keyboard.disable();
|
||||||
$(".leaflet-control-zoom").css("visibility", "hidden");
|
//$(".leaflet-control-zoom").css("visibility", "hidden");
|
||||||
// Disable tap handler, if present.
|
//// Disable tap handler, if present.
|
||||||
//if (map.tap) {
|
////if (map.tap) {
|
||||||
// map.tap.disable();
|
//// map.tap.disable();
|
||||||
|
////}
|
||||||
|
//
|
||||||
|
//// Tile layer
|
||||||
|
//map.addLayer(new L.tileLayer(tileurl, {minZoom: 17, maxZoom: 18}));
|
||||||
|
//// Places layer
|
||||||
|
//var placeLayer = L.geoJson(
|
||||||
|
// {"name": "Places", "type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Point", "coordinates": [0, 0]}, "properties": {"osm_id": -1, "name": null}}]},
|
||||||
|
// {
|
||||||
|
// onEachFeature: onPlaceTap,
|
||||||
|
// pointToLayer: function (feature, latlng) {
|
||||||
|
// return L.circleMarker(latlng, {
|
||||||
|
// radius: 14,
|
||||||
|
// fillColor: "#ff7800",
|
||||||
|
// color: "#000",
|
||||||
|
// weight: 1,
|
||||||
|
// opacity: 1,
|
||||||
|
// fillOpacity: 0.6
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// }).addTo(map);
|
||||||
|
//
|
||||||
|
//var lc = L.control.locate({
|
||||||
|
// position: 'topleft', // set the location of the control
|
||||||
|
// layer: undefined, // use your own layer for the location marker, creates a new layer by default
|
||||||
|
// drawCircle: false, // controls whether a circle is drawn that shows the uncertainty about the location
|
||||||
|
// follow: true, // follow the user's location
|
||||||
|
// setView: true, // automatically sets the map view to the user's location, enabled if `follow` is true
|
||||||
|
// keepCurrentZoomLevel: true, // keep the current map zoom level when displaying the user's location. (if `false`, use maxZoom)
|
||||||
|
// stopFollowingOnDrag: false, // stop following when the map is dragged if `follow` is true (deprecated, see below)
|
||||||
|
// remainActive: true, // if true locate control remains active on click even if the user's location is in view.
|
||||||
|
// markerClass: L.circleMarker, // L.circleMarker or L.marker
|
||||||
|
// circleStyle: {}, // change the style of the circle around the user's location
|
||||||
|
// markerStyle: {},
|
||||||
|
// followCircleStyle: {}, // set difference for the style of the circle around the user's location while following
|
||||||
|
// followMarkerStyle: {},
|
||||||
|
// icon: 'fa fa-map-marker', // class for icon, fa-location-arrow or fa-map-marker
|
||||||
|
// iconLoading: 'fa fa-spinner fa-pulse', // class for loading icon
|
||||||
|
// iconElementTag: 'span', // tag for the icon element, span or i
|
||||||
|
// circlePadding: [0, 0], // padding around accuracy circle, value is passed to setBounds
|
||||||
|
// metric: true, // use metric or imperial units
|
||||||
|
// onLocationError: function (err) {
|
||||||
|
// }, // define an error callback function
|
||||||
|
// onLocationOutsideMapBounds: function (context) { // called when outside map boundaries
|
||||||
|
// },
|
||||||
|
// showPopup: false, // display a popup when the user click on the inner marker
|
||||||
|
// strings: {
|
||||||
|
// title: ".", // title of the locate control
|
||||||
|
// metersUnit: "meters", // string for metric units
|
||||||
|
// feetUnit: "feet", // string for imperial units
|
||||||
|
// popup: "You are within {distance} {unit} from this point", // text to appear if user clicks on circle
|
||||||
|
// outsideMapBoundsMsg: "You seem located outside the boundaries of the map" // default message for onLocationOutsideMapBounds
|
||||||
|
// },
|
||||||
|
// locateOptions: {} // define location options e.g enableHighAccuracy: true or maxZoom: 10
|
||||||
|
//}).addTo(map);
|
||||||
|
//lc.start();
|
||||||
|
//function mapPos(lat, lon) {
|
||||||
|
// lockGot = true;
|
||||||
|
// hideLoading();
|
||||||
|
// loadPlaces(latitude, longitude);
|
||||||
|
// //map.setView(new L.LatLng(lat, lon), 16, {animate: true});
|
||||||
|
// //map.panTo(new L.LatLng(lat, lon));
|
||||||
|
// //map.invalidateSize();
|
||||||
|
// //redraw('.leaflet-map-pane');
|
||||||
|
//// $('.leaflet-map-plane').css('height', '90%');
|
||||||
|
//// setTimeout(function () {
|
||||||
|
//// $('#map').css('width', '100%');
|
||||||
|
//// $('#map').css('height', '100%');
|
||||||
|
//// }, 100);
|
||||||
//}
|
//}
|
||||||
|
//
|
||||||
// Tile layer
|
//function onPlaceTap(feature, layer) {
|
||||||
map.addLayer(new L.tileLayer(tileurl, {minZoom: 17, maxZoom: 18}));
|
// layer.on('click', function (e) {
|
||||||
// Places layer
|
// openPlace(feature);
|
||||||
var placeLayer = L.geoJson(
|
// });
|
||||||
{"name": "Places", "type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Point", "coordinates": [0, 0]}, "properties": {"osm_id": -1, "name": null}}]},
|
//}
|
||||||
{
|
//
|
||||||
onEachFeature: onPlaceTap,
|
//function loadPlaces(lat, long) {
|
||||||
pointToLayer: function (feature, latlng) {
|
// $.getJSON(
|
||||||
return L.circleMarker(latlng, {
|
// "http://earth.apis.netsyms.net/places.php?format=geojson&lat=" + lat + "&long=" + long + "&radius=.25&names=1",
|
||||||
radius: 14,
|
// function (data) {
|
||||||
fillColor: "#ff7800",
|
// if (data.type === 'FeatureCollection') {
|
||||||
color: "#000",
|
// placeLayer.clearLayers();
|
||||||
weight: 1,
|
// data.features.forEach(function (item) {
|
||||||
opacity: 1,
|
// item.properties.popupContent = "<span class='marker-popup-text' onclick='openplace(" + item.properties.osm_id + ")'>" + item.properties.name + "</span>";
|
||||||
fillOpacity: 0.6
|
// placeLayer.addData(item);
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
}).addTo(map);
|
// });
|
||||||
|
//}
|
||||||
var lc = L.control.locate({
|
//
|
||||||
position: 'topleft', // set the location of the control
|
//function openPlace(feature) {
|
||||||
layer: undefined, // use your own layer for the location marker, creates a new layer by default
|
// $('#main-content').load("screens/place.html", null, function () {
|
||||||
drawCircle: false, // controls whether a circle is drawn that shows the uncertainty about the location
|
// loadPlace(feature);
|
||||||
follow: true, // follow the user's location
|
// $('#overlay-main').css('display', 'block');
|
||||||
setView: true, // automatically sets the map view to the user's location, enabled if `follow` is true
|
// });
|
||||||
keepCurrentZoomLevel: true, // keep the current map zoom level when displaying the user's location. (if `false`, use maxZoom)
|
//}
|
||||||
stopFollowingOnDrag: false, // stop following when the map is dragged if `follow` is true (deprecated, see below)
|
//
|
||||||
remainActive: true, // if true locate control remains active on click even if the user's location is in view.
|
///**
|
||||||
markerClass: L.circleMarker, // L.circleMarker or L.marker
|
// * Hide the loading overlay if everything is loaded, otherwise do nothing
|
||||||
circleStyle: {}, // change the style of the circle around the user's location
|
// */
|
||||||
markerStyle: {},
|
//function hideLoading() {
|
||||||
followCircleStyle: {}, // set difference for the style of the circle around the user's location while following
|
// if (lockGot && terrainGot && gpsaccuracy < 30 && $('#loading').css('display') !== 'none') {
|
||||||
followMarkerStyle: {},
|
// $('#loading').fadeOut('slow', function () {
|
||||||
icon: 'fa fa-map-marker', // class for icon, fa-location-arrow or fa-map-marker
|
// $('#loading').css('display', 'none');
|
||||||
iconLoading: 'fa fa-spinner fa-pulse', // class for loading icon
|
// });
|
||||||
iconElementTag: 'span', // tag for the icon element, span or i
|
// }
|
||||||
circlePadding: [0, 0], // padding around accuracy circle, value is passed to setBounds
|
//}
|
||||||
metric: true, // use metric or imperial units
|
//
|
||||||
onLocationError: function (err) {
|
//var updatePosition = function (position) {
|
||||||
}, // define an error callback function
|
// latitude = position.coords.latitude;
|
||||||
onLocationOutsideMapBounds: function (context) { // called when outside map boundaries
|
// longitude = position.coords.longitude;
|
||||||
},
|
// lastgpstime = position.timestamp;
|
||||||
showPopup: false, // display a popup when the user click on the inner marker
|
// gpsaccuracy = position.coords.accuracy;
|
||||||
strings: {
|
// if (gpsaccuracy > 30) {
|
||||||
title: ".", // title of the locate control
|
// $('#no-lock').css('display', 'block');
|
||||||
metersUnit: "meters", // string for metric units
|
// } else {
|
||||||
feetUnit: "feet", // string for imperial units
|
// $('#no-lock').css('display', 'none');
|
||||||
popup: "You are within {distance} {unit} from this point", // text to appear if user clicks on circle
|
// }
|
||||||
outsideMapBoundsMsg: "You seem located outside the boundaries of the map" // default message for onLocationOutsideMapBounds
|
// mapPos(latitude, longitude);
|
||||||
},
|
//};
|
||||||
locateOptions: {} // define location options e.g enableHighAccuracy: true or maxZoom: 10
|
//var updateTerrain = function (position) {
|
||||||
}).addTo(map);
|
// latitude = position.coords.latitude;
|
||||||
lc.start();
|
// longitude = position.coords.longitude;
|
||||||
function mapPos(lat, lon) {
|
// lastgpstime = position.timestamp;
|
||||||
lockGot = true;
|
// gpsaccuracy = position.coords.accuracy;
|
||||||
hideLoading();
|
// var rasterurl = "http://earth.apis.netsyms.net/terrain.php?format=json&lat="
|
||||||
loadPlaces(latitude, longitude);
|
// + latitude + "&long=" + longitude;
|
||||||
//map.setView(new L.LatLng(lat, lon), 16, {animate: true});
|
// $.get(rasterurl, function (data) {
|
||||||
//map.panTo(new L.LatLng(lat, lon));
|
// if (data.status === 'OK') {
|
||||||
//map.invalidateSize();
|
// terraintypeid = data.typeid;
|
||||||
//redraw('.leaflet-map-pane');
|
// terraintypename = data.typename;
|
||||||
// $('.leaflet-map-plane').css('height', '90%');
|
// $('#terrain-image').attr('src', 'assets/terrain/' + terraintypeid + '.png');
|
||||||
// setTimeout(function () {
|
// terrainGot = true;
|
||||||
// $('#map').css('width', '100%');
|
// hideLoading();
|
||||||
// $('#map').css('height', '100%');
|
// }
|
||||||
// }, 100);
|
// }, "json").fail(function (err) {
|
||||||
}
|
// $('#terrain-image').attr('src', 'assets/terrain/0.png');
|
||||||
|
// });
|
||||||
function onPlaceTap(feature, layer) {
|
//};
|
||||||
layer.on('click', function (e) {
|
//function pingServer() {
|
||||||
openPlace(feature);
|
// if (lockGot && gpsaccuracy < 30) {
|
||||||
});
|
// $.get(mkApiUrl('ping') + "?user=" + username + "&lat=" + latitude + "&long=" + longitude);
|
||||||
}
|
// }
|
||||||
|
//}
|
||||||
function loadPlaces(lat, long) {
|
//;
|
||||||
$.getJSON(
|
//function onError(error) {
|
||||||
"http://earth.apis.netsyms.net/places.php?format=geojson&lat=" + lat + "&long=" + long + "&radius=.25&names=1",
|
// $('#loading-error').text("Check your device's network and location settings, and ensure a clear view of the sky.");
|
||||||
function (data) {
|
//}
|
||||||
if (data.type === 'FeatureCollection') {
|
//
|
||||||
placeLayer.clearLayers();
|
//function popGPS() {
|
||||||
data.features.forEach(function (item) {
|
// navigator.notification.alert("Latitude: " + latitude +
|
||||||
item.properties.popupContent = "<span class='marker-popup-text' onclick='openplace(" + item.properties.osm_id + ")'>" + item.properties.name + "</span>";
|
// "\nLongitude: " + longitude +
|
||||||
placeLayer.addData(item);
|
// "\nAccuracy: " + gpsaccuracy +
|
||||||
});
|
// "\nTerrain: " + terraintypename + " (" + terraintypeid + ")",
|
||||||
}
|
// null,
|
||||||
});
|
// "GPS Information",
|
||||||
}
|
// "Close");
|
||||||
|
//}
|
||||||
function openPlace(feature) {
|
//$('#terrain-image').click(function () {
|
||||||
$('#main-content').load("screens/place.html", null, function () {
|
// popGPS();
|
||||||
loadPlace(feature);
|
//});
|
||||||
$('#overlay-main').css('display', 'block');
|
//// Initial GPS position and stuff
|
||||||
});
|
//navigator.geolocation.getCurrentPosition(updateTerrain, onError, {timeout: 10000, enableHighAccuracy: true});
|
||||||
}
|
//// Update position
|
||||||
|
//setInterval(function () {
|
||||||
/**
|
// navigator.geolocation.getCurrentPosition(updatePosition, onError, {timeout: 10000, enableHighAccuracy: true});
|
||||||
* Hide the loading overlay if everything is loaded, otherwise do nothing
|
//}, 1000);
|
||||||
*/
|
//// Update position + terrain
|
||||||
function hideLoading() {
|
//setInterval(function () {
|
||||||
if (lockGot && terrainGot && gpsaccuracy < 30 && $('#loading').css('display') !== 'none') {
|
// navigator.geolocation.getCurrentPosition(updateTerrain, onError, {timeout: 10000, enableHighAccuracy: true});
|
||||||
$('#loading').fadeOut('slow', function () {
|
// loadPlaces(latitude, longitude);
|
||||||
$('#loading').css('display', 'none');
|
//}, 1000 * 20);
|
||||||
});
|
//// Ping the server with coordinates
|
||||||
}
|
//setInterval(pingServer, 5000);
|
||||||
}
|
//// Show error if it's taking too long
|
||||||
|
//setTimeout(function () {
|
||||||
var updatePosition = function (position) {
|
// onError();
|
||||||
latitude = position.coords.latitude;
|
//}, 15 * 1000);
|
||||||
longitude = position.coords.longitude;
|
//
|
||||||
lastgpstime = position.timestamp;
|
//
|
||||||
gpsaccuracy = position.coords.accuracy;
|
////////////////////////////////////////////////
|
||||||
if (gpsaccuracy > 30) {
|
//// Profile, stats, and chat stuff
|
||||||
$('#no-lock').css('display', 'block');
|
////////////////////////////////////////////////
|
||||||
} else {
|
//
|
||||||
$('#no-lock').css('display', 'none');
|
//
|
||||||
}
|
///*
|
||||||
mapPos(latitude, longitude);
|
// * Handles general server communication.
|
||||||
};
|
// */
|
||||||
var updateTerrain = function (position) {
|
//
|
||||||
latitude = position.coords.latitude;
|
///**
|
||||||
longitude = position.coords.longitude;
|
// * Syncs the user's stats with the server and calls refreshStats().
|
||||||
lastgpstime = position.timestamp;
|
// */
|
||||||
gpsaccuracy = position.coords.accuracy;
|
//function syncStats() {
|
||||||
var rasterurl = "http://earth.apis.netsyms.net/terrain.php?format=json&lat="
|
// $.getJSON(mkApiUrl('getstats'), {
|
||||||
+ latitude + "&long=" + longitude;
|
// user: username
|
||||||
$.get(rasterurl, function (data) {
|
// }, function (data) {
|
||||||
if (data.status === 'OK') {
|
// if (data.status === 'OK') {
|
||||||
terraintypeid = data.typeid;
|
// maxenergy = data.stats.maxenergy;
|
||||||
terraintypename = data.typename;
|
// energy = data.stats.energy;
|
||||||
$('#terrain-image').attr('src', 'assets/terrain/' + terraintypeid + '.png');
|
// level = data.stats.level;
|
||||||
terrainGot = true;
|
// refreshStats();
|
||||||
hideLoading();
|
// }
|
||||||
}
|
// });
|
||||||
}, "json").fail(function (err) {
|
//}
|
||||||
$('#terrain-image').attr('src', 'assets/terrain/0.png');
|
//
|
||||||
});
|
///**
|
||||||
};
|
// * Display the current stats on the home screen.
|
||||||
function pingServer() {
|
// */
|
||||||
if (lockGot && gpsaccuracy < 30) {
|
//function refreshStats() {
|
||||||
$.get(mkApiUrl('ping') + "?user=" + username + "&lat=" + latitude + "&long=" + longitude);
|
// energypercent = (energy * 1.0 / maxenergy * 1.0) * 100.0;
|
||||||
}
|
// $('#energybar').css('width', String(energypercent) + '%');
|
||||||
}
|
//}
|
||||||
;
|
//
|
||||||
function onError(error) {
|
//function getChat() {
|
||||||
$('#loading-error').text("Check your device's network and location settings, and ensure a clear view of the sky.");
|
// if (lockGot) {
|
||||||
}
|
// $.getJSON(mkApiUrl('chat', 'cs'), {
|
||||||
|
// lat: latitude,
|
||||||
function popGPS() {
|
// long: longitude
|
||||||
navigator.notification.alert("Latitude: " + latitude +
|
// }, function (data) {
|
||||||
"\nLongitude: " + longitude +
|
// data = sortResults(data, 'time', true);
|
||||||
"\nAccuracy: " + gpsaccuracy +
|
// var content = "";
|
||||||
"\nTerrain: " + terraintypename + " (" + terraintypeid + ")",
|
// data.forEach(function (msg) {
|
||||||
null,
|
// content += "<span class='chat-username' onclick='openProfile(\"" + msg.username + "\");'>" + msg.username + "</span> " + msg.message + "<br />";
|
||||||
"GPS Information",
|
// });
|
||||||
"Close");
|
// $('#chatmsgs').html(content);
|
||||||
}
|
// });
|
||||||
$('#terrain-image').click(function () {
|
// }
|
||||||
popGPS();
|
//}
|
||||||
});
|
//
|
||||||
// Initial GPS position and stuff
|
//
|
||||||
navigator.geolocation.getCurrentPosition(updateTerrain, onError, {timeout: 10000, enableHighAccuracy: true});
|
//syncStats();
|
||||||
// Update position
|
//setInterval(function () {
|
||||||
setInterval(function () {
|
// syncStats();
|
||||||
navigator.geolocation.getCurrentPosition(updatePosition, onError, {timeout: 10000, enableHighAccuracy: true});
|
//}, 10 * 1000);
|
||||||
}, 1000);
|
//setInterval(function () {
|
||||||
// Update position + terrain
|
// getChat();
|
||||||
setInterval(function () {
|
//}, 2000);
|
||||||
navigator.geolocation.getCurrentPosition(updateTerrain, onError, {timeout: 10000, enableHighAccuracy: true});
|
//// Send chat messages
|
||||||
loadPlaces(latitude, longitude);
|
//$("#chatsendform").submit(function (event) {
|
||||||
}, 1000 * 20);
|
// message = $('#chatbox-input').val();
|
||||||
// Ping the server with coordinates
|
// if (message !== '') {
|
||||||
setInterval(pingServer, 5000);
|
// $.post(mkApiUrl('chat', 'cs'), {
|
||||||
// Show error if it's taking too long
|
// user: username,
|
||||||
setTimeout(function () {
|
// lat: latitude,
|
||||||
onError();
|
// long: longitude,
|
||||||
}, 15 * 1000);
|
// msg: message
|
||||||
|
// }, function (data) {
|
||||||
|
// if (data.status === 'OK') {
|
||||||
//////////////////////////////////////////////
|
// $('#chatbox-input').val("");
|
||||||
// Profile, stats, and chat stuff
|
// $("#chatmsgs").animate({scrollTop: $('#chatmsgs').prop("scrollHeight")}, 1000);
|
||||||
//////////////////////////////////////////////
|
// }
|
||||||
|
// }, "json");
|
||||||
|
// }
|
||||||
/*
|
// event.preventDefault();
|
||||||
* Handles general server communication.
|
// return false;
|
||||||
*/
|
//});
|
||||||
|
//function toggleChat() {
|
||||||
/**
|
// if ($('#chatmsgs').css('display') === 'none') {
|
||||||
* Syncs the user's stats with the server and calls refreshStats().
|
// openChat();
|
||||||
*/
|
// } else {
|
||||||
function syncStats() {
|
// closeChat();
|
||||||
$.getJSON(mkApiUrl('getstats'), {
|
// }
|
||||||
user: username
|
//}
|
||||||
}, function (data) {
|
//
|
||||||
if (data.status === 'OK') {
|
//function closeChat() {
|
||||||
maxenergy = data.stats.maxenergy;
|
// $('#chatmsgs').css('display', 'none');
|
||||||
energy = data.stats.energy;
|
// $('#chatbox').css('height', 'auto');
|
||||||
level = data.stats.level;
|
//}
|
||||||
refreshStats();
|
//
|
||||||
}
|
//function openChat() {
|
||||||
});
|
// $('#chatbox').css('height', '50%');
|
||||||
}
|
// $('#chatmsgs').css('display', 'block');
|
||||||
|
// $("#chatmsgs").animate({scrollTop: $('#chatmsgs').prop("scrollHeight")}, 1000);
|
||||||
/**
|
//}
|
||||||
* Display the current stats on the home screen.
|
//
|
||||||
*/
|
//function openProfile(user) {
|
||||||
function refreshStats() {
|
// user = typeof user !== 'undefined' ? user : username;
|
||||||
energypercent = (energy * 1.0 / maxenergy * 1.0) * 100.0;
|
// $('#main-content').load("screens/profile.html", null, function (x) {
|
||||||
$('#energybar').css('width', String(energypercent) + '%');
|
// $('#overlay-main').css('display', 'block');
|
||||||
}
|
// loadProfile(user);
|
||||||
|
// });
|
||||||
function getChat() {
|
//}
|
||||||
if (lockGot) {
|
//
|
||||||
$.getJSON(mkApiUrl('chat', 'cs'), {
|
//function openRules() {
|
||||||
lat: latitude,
|
// openmodal('rules', '#rules-modal');
|
||||||
long: longitude
|
//}
|
||||||
}, function (data) {
|
//
|
||||||
data = sortResults(data, 'time', true);
|
//function openMenu(topage) {
|
||||||
var content = "";
|
// topage = typeof topage !== 'undefined' ? topage : "";
|
||||||
data.forEach(function (msg) {
|
// $('#main-content').load("screens/menu.html", null, function (x) {
|
||||||
content += "<span class='chat-username' onclick='openProfile(\"" + msg.username + "\");'>" + msg.username + "</span> " + msg.message + "<br />";
|
// $('#overlay-main').css('display', 'block');
|
||||||
});
|
// if (topage !== '') {
|
||||||
$('#chatmsgs').html(content);
|
// $('#' + topage + '-tab').tab('show');
|
||||||
});
|
// }
|
||||||
}
|
// });
|
||||||
}
|
//}
|
||||||
|
//
|
||||||
|
//
|
||||||
syncStats();
|
//
|
||||||
setInterval(function () {
|
////////////////////////////////////////////////
|
||||||
syncStats();
|
//// Other things
|
||||||
}, 10 * 1000);
|
////////////////////////////////////////////////
|
||||||
setInterval(function () {
|
//
|
||||||
getChat();
|
//function closeMain() {
|
||||||
}, 2000);
|
// $('#overlay-main').slideDown(100, function () {
|
||||||
// Send chat messages
|
// $('#overlay-main').css('display', 'none');
|
||||||
$("#chatsendform").submit(function (event) {
|
// $('#main-content').html("");
|
||||||
message = $('#chatbox-input').val();
|
// });
|
||||||
if (message !== '') {
|
//}
|
||||||
$.post(mkApiUrl('chat', 'cs'), {
|
//
|
||||||
user: username,
|
//// Handle back button to close things
|
||||||
lat: latitude,
|
//document.addEventListener("backbutton", function (event) {
|
||||||
long: longitude,
|
// if ($('#overlay-main').css('display') !== 'none') {
|
||||||
msg: message
|
// closeMain();
|
||||||
}, function (data) {
|
// } else if ($('#chatmsgs').css('display') !== 'none') {
|
||||||
if (data.status === 'OK') {
|
// toggleChat();
|
||||||
$('#chatbox-input').val("");
|
// }
|
||||||
$("#chatmsgs").animate({scrollTop: $('#chatmsgs').prop("scrollHeight")}, 1000);
|
//}, false);
|
||||||
}
|
//// Show the rules
|
||||||
}, "json");
|
//if (localStorage.getItem("seenrules") !== 'yes') {
|
||||||
}
|
// openRules();
|
||||||
event.preventDefault();
|
// localStorage.setItem("seenrules", 'yes');
|
||||||
return false;
|
//}
|
||||||
});
|
|
||||||
function toggleChat() {
|
|
||||||
if ($('#chatmsgs').css('display') === 'none') {
|
|
||||||
openChat();
|
|
||||||
} else {
|
|
||||||
closeChat();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function closeChat() {
|
|
||||||
$('#chatmsgs').css('display', 'none');
|
|
||||||
$('#chatbox').css('height', 'auto');
|
|
||||||
}
|
|
||||||
|
|
||||||
function openChat() {
|
|
||||||
$('#chatbox').css('height', '50%');
|
|
||||||
$('#chatmsgs').css('display', 'block');
|
|
||||||
$("#chatmsgs").animate({scrollTop: $('#chatmsgs').prop("scrollHeight")}, 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
function openProfile(user) {
|
|
||||||
user = typeof user !== 'undefined' ? user : username;
|
|
||||||
$('#main-content').load("screens/profile.html", null, function (x) {
|
|
||||||
$('#overlay-main').css('display', 'block');
|
|
||||||
loadProfile(user);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function openRules() {
|
|
||||||
openmodal('rules', '#rules-modal');
|
|
||||||
}
|
|
||||||
|
|
||||||
function openMenu(topage) {
|
|
||||||
topage = typeof topage !== 'undefined' ? topage : "";
|
|
||||||
$('#main-content').load("screens/menu.html", null, function (x) {
|
|
||||||
$('#overlay-main').css('display', 'block');
|
|
||||||
if (topage !== '') {
|
|
||||||
$('#' + topage + '-tab').tab('show');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////
|
|
||||||
// Other things
|
|
||||||
//////////////////////////////////////////////
|
|
||||||
|
|
||||||
function closeMain() {
|
|
||||||
$('#overlay-main').slideDown(100, function () {
|
|
||||||
$('#overlay-main').css('display', 'none');
|
|
||||||
$('#main-content').html("");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle back button to close things
|
|
||||||
document.addEventListener("backbutton", function (event) {
|
|
||||||
if ($('#overlay-main').css('display') !== 'none') {
|
|
||||||
closeMain();
|
|
||||||
} else if ($('#chatmsgs').css('display') !== 'none') {
|
|
||||||
toggleChat();
|
|
||||||
}
|
|
||||||
}, false);
|
|
||||||
// Show the rules
|
|
||||||
if (localStorage.getItem("seenrules") !== 'yes') {
|
|
||||||
openRules();
|
|
||||||
localStorage.setItem("seenrules", 'yes');
|
|
||||||
}
|
|
Reference in New Issue