2023-08-06 13:53:20 +00:00
|
|
|
(function(back) {
|
|
|
|
const FILE="gpstrek.json";
|
|
|
|
let settings;
|
|
|
|
|
|
|
|
function writeSettings(key, value) {
|
|
|
|
var s = require('Storage').readJSON(FILE, true) || {};
|
|
|
|
s[key] = value;
|
|
|
|
require('Storage').writeJSON(FILE, s);
|
|
|
|
readSettings();
|
|
|
|
}
|
|
|
|
|
|
|
|
function readSettings(){
|
|
|
|
settings = Object.assign(
|
|
|
|
require('Storage').readJSON("gpstrek.default.json", true) || {},
|
|
|
|
require('Storage').readJSON(FILE, true) || {}
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function showMapMenu(){
|
|
|
|
var menu = {
|
|
|
|
'': { 'title': 'Map', back: showMainMenu },
|
|
|
|
'Show compass on map': {
|
|
|
|
value: !!settings.mapCompass,
|
|
|
|
onchange: v => {
|
|
|
|
writeSettings("mapCompass",v);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'Initial map scale': {
|
|
|
|
value: settings.mapScale,
|
|
|
|
min: 0.01,max: 2, step:0.01,
|
|
|
|
onchange: v => {
|
|
|
|
writeSettings("mapScale",v);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'Rendered waypoints': {
|
|
|
|
value: settings.mapChunkSize,
|
|
|
|
min: 5,max: 60, step:5,
|
|
|
|
onchange: v => {
|
|
|
|
writeSettings("mapChunkSize",v);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
'Overview scroll': {
|
|
|
|
value: settings.overviewScroll,
|
|
|
|
min: 10,max: 100, step:10,
|
|
|
|
format: v => v + "px",
|
|
|
|
onchange: v => {
|
|
|
|
writeSettings("overviewScroll",v);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
'Initial overview scale': {
|
|
|
|
value: settings.overviewScale,
|
|
|
|
min: 0.005,max: 0.1, step:0.005,
|
|
|
|
onchange: v => {
|
|
|
|
writeSettings("overviewScale",v);
|
|
|
|
}
|
2023-08-06 18:30:53 +00:00
|
|
|
},
|
|
|
|
'Show direction': {
|
|
|
|
value: !!settings.mapDirection,
|
|
|
|
onchange: v => {
|
|
|
|
writeSettings("mapDirection",v);
|
|
|
|
}
|
2023-08-06 13:53:20 +00:00
|
|
|
}
|
|
|
|
};
|
|
|
|
E.showMenu(menu);
|
|
|
|
}
|
|
|
|
|
|
|
|
function showRoutingMenu(){
|
|
|
|
var menu = {
|
|
|
|
'': { 'title': 'Routing', back: showMainMenu },
|
|
|
|
'Auto search closest waypoint': {
|
|
|
|
value: !!settings.autosearch,
|
|
|
|
onchange: v => {
|
|
|
|
writeSettings("autosearch",v);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'Auto search limit': {
|
|
|
|
value: settings.autosearchLimit,
|
|
|
|
onchange: v => {
|
|
|
|
writeSettings("autosearchLimit",v);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'Waypoint change distance': {
|
|
|
|
value: settings.waypointChangeDist,
|
|
|
|
format: v => v + "m",
|
|
|
|
min: 5,max: 200, step:5,
|
|
|
|
onchange: v => {
|
|
|
|
writeSettings("waypointChangeDist",v);
|
|
|
|
},
|
|
|
|
}
|
|
|
|
};
|
|
|
|
E.showMenu(menu);
|
|
|
|
}
|
|
|
|
|
|
|
|
function showRefreshMenu(){
|
|
|
|
var menu = {
|
|
|
|
'': { 'title': 'Refresh', back: showMainMenu },
|
|
|
|
'Unlocked refresh': {
|
|
|
|
value: settings.refresh,
|
|
|
|
format: v => v + "ms",
|
|
|
|
min: 250,max: 5000, step:250,
|
|
|
|
onchange: v => {
|
|
|
|
writeSettings("refresh",v);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
'Locked refresh': {
|
|
|
|
value: settings.refreshLocked,
|
|
|
|
min: 1000,max: 60000, step:1000,
|
|
|
|
format: v => v + "ms",
|
|
|
|
onchange: v => {
|
|
|
|
writeSettings("refreshLocked",v);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
'Minimum refresh': {
|
|
|
|
value: settings.mapRefresh,
|
|
|
|
format: v => v + "ms",
|
|
|
|
min: 250,max: 5000, step:250,
|
|
|
|
onchange: v => {
|
|
|
|
writeSettings("mapRefresh",v);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
'Minimum course change': {
|
|
|
|
value: settings.minCourseChange,
|
|
|
|
min: 0,max: 180, step:1,
|
|
|
|
format: v => v + "°",
|
|
|
|
onchange: v => {
|
|
|
|
writeSettings("minCourseChange",v);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
'Minimum position change': {
|
|
|
|
value: settings.minPosChange,
|
|
|
|
min: 0,max: 50, step:1,
|
|
|
|
format: v => v + "px",
|
|
|
|
onchange: v => {
|
|
|
|
writeSettings("minPosChange",v);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
E.showMenu(menu);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function showMainMenu(){
|
|
|
|
var mainmenu = {
|
|
|
|
'': { 'title': 'GPS Trekking', back: back },
|
|
|
|
'Map': showMapMenu,
|
|
|
|
'Routing': showRoutingMenu,
|
|
|
|
'Refresh': showRefreshMenu,
|
|
|
|
"Info rows" : {
|
|
|
|
value : settings.numberOfSlices,
|
|
|
|
min:1,max:6,step:1,
|
|
|
|
onchange : v => {
|
|
|
|
writeSettings("numberOfSlices",v);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
};
|
|
|
|
E.showMenu(mainmenu);
|
|
|
|
}
|
|
|
|
|
|
|
|
readSettings();
|
|
|
|
showMainMenu();
|
|
|
|
})
|