Allow user to choose units (m/km or ft/mi), close #9
This commit is contained in:
parent
46da8239b4
commit
87ee63efb5
@ -60,7 +60,7 @@ function updateDistances(latitude, longitude) {
|
|||||||
var distance = getDistance(latitude, longitude, packages[i].coords[0], packages[i].coords[1]).toFixed(0);
|
var distance = getDistance(latitude, longitude, packages[i].coords[0], packages[i].coords[1]).toFixed(0);
|
||||||
packages[i].distance = distance;
|
packages[i].distance = distance;
|
||||||
$("#addresslist .package-list-item[data-packageid=\"" + i + "\"] .item-content").data("distance", distance);
|
$("#addresslist .package-list-item[data-packageid=\"" + i + "\"] .item-content").data("distance", distance);
|
||||||
$("#addresslist .package-list-item[data-packageid=\"" + i + "\"] .item-content .distance").text(distance + " m");
|
$("#addresslist .package-list-item[data-packageid=\"" + i + "\"] .item-content .distance").text(getDisplayDistance(distance));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -140,7 +140,7 @@ function loadPackageList(sortType) {
|
|||||||
+ ' ' + sortedPackages[i].value.address
|
+ ' ' + sortedPackages[i].value.address
|
||||||
+ ' </div>'
|
+ ' </div>'
|
||||||
+ ' <div class="item-footer">'
|
+ ' <div class="item-footer">'
|
||||||
+ ' <span class="distance">' + (typeof sortedPackages[i].value.distance != 'undefined' ? sortedPackages[i].value.distance : '...') + ' m</span>'
|
+ ' <span class="distance">' + (typeof sortedPackages[i].value.distance != 'undefined' ? getDisplayDistance(sortedPackages[i].value.distance) : '...') + '</span>'
|
||||||
+ ' </div>'
|
+ ' </div>'
|
||||||
+ ' </div>'
|
+ ' </div>'
|
||||||
+ '</div>'
|
+ '</div>'
|
||||||
|
@ -140,4 +140,55 @@ function getDistance(lat1, lon1, lat2, lon2) {
|
|||||||
var deltaSigma = B * sinSigma * (cos2SigmaM + B / 4 * (cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM) - B / 6 * cos2SigmaM * (-3 + 4 * sinSigma * sinSigma) * (-3 + 4 * cos2SigmaM * cos2SigmaM)));
|
var deltaSigma = B * sinSigma * (cos2SigmaM + B / 4 * (cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM) - B / 6 * cos2SigmaM * (-3 + 4 * sinSigma * sinSigma) * (-3 + 4 * cos2SigmaM * cos2SigmaM)));
|
||||||
var s = b * A * (sigma - deltaSigma);
|
var s = b * A * (sigma - deltaSigma);
|
||||||
return s;
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a formatted string with units corresponding to a number of meters.
|
||||||
|
* Respects user "units" setting ("metric" or "imperial").
|
||||||
|
* @param number meters
|
||||||
|
* @param bool space Add a space between number and units. Default true.
|
||||||
|
* @returns string "1000 ft", "2 mi", "3 km",
|
||||||
|
*/
|
||||||
|
function getDisplayDistance(meters, space) {
|
||||||
|
if (typeof space == 'undefined') {
|
||||||
|
space = true;
|
||||||
|
}
|
||||||
|
var units = localStorage.getItem("units");
|
||||||
|
|
||||||
|
if (units == null) {
|
||||||
|
units = "metric";
|
||||||
|
}
|
||||||
|
|
||||||
|
var number = Math.round(meters);
|
||||||
|
var label = "m";
|
||||||
|
|
||||||
|
if (units == "imperial") {
|
||||||
|
// Convert to feet
|
||||||
|
number = Math.round(number * 3.28084);
|
||||||
|
label = "ft";
|
||||||
|
if (number >= 1320) { // 0.25 miles
|
||||||
|
number = (number / 5280);
|
||||||
|
if (number < 10) {
|
||||||
|
number = number.toFixed(2);
|
||||||
|
} else {
|
||||||
|
number = Math.round(number);
|
||||||
|
}
|
||||||
|
label = "mi";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (number >= 1000) {
|
||||||
|
number = (number / 1000);
|
||||||
|
if (number < 16) {
|
||||||
|
number = number.toFixed(1);
|
||||||
|
} else {
|
||||||
|
number = Math.round(number);
|
||||||
|
}
|
||||||
|
label = "km";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (space) {
|
||||||
|
return number + " " + label;
|
||||||
|
}
|
||||||
|
return number + "" + label;
|
||||||
}
|
}
|
@ -17,6 +17,12 @@ $('.item-content[data-setting=darktheme] .toggle input').on("change", function (
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('.item-content[data-setting=units] .toggle input').on("change", function () {
|
||||||
|
var checked = $(this).prop('checked');
|
||||||
|
console.log(checked);
|
||||||
|
localStorage.setItem("units", (checked ? "imperial" : "metric"));
|
||||||
|
});
|
||||||
|
|
||||||
$('.item-content[data-setting=wakelock] .toggle input').on("change", function () {
|
$('.item-content[data-setting=wakelock] .toggle input').on("change", function () {
|
||||||
var checked = $(this).prop('checked');
|
var checked = $(this).prop('checked');
|
||||||
console.log(checked);
|
console.log(checked);
|
||||||
|
@ -111,6 +111,14 @@ var routes = [
|
|||||||
checked: localStorage.getItem("darktheme") == "true",
|
checked: localStorage.getItem("darktheme") == "true",
|
||||||
onclick: ""
|
onclick: ""
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
setting: "units",
|
||||||
|
title: "Distance Units",
|
||||||
|
text: "Use feet and miles for showing distance",
|
||||||
|
toggle: true,
|
||||||
|
checked: localStorage.getItem("units") == "imperial",
|
||||||
|
onclick: ""
|
||||||
|
},
|
||||||
{
|
{
|
||||||
setting: "mapsource",
|
setting: "mapsource",
|
||||||
title: "Map",
|
title: "Map",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user