gpstrek - Create settings
parent
2e261b3a56
commit
f8e0baa7e1
|
|
@ -7,25 +7,12 @@ const MODE_SLICES = 2;
|
||||||
|
|
||||||
const STORAGE = require("Storage");
|
const STORAGE = require("Storage");
|
||||||
const BAT_FULL = require("Storage").readJSON("setting.json").batFullVoltage || 0.3144;
|
const BAT_FULL = require("Storage").readJSON("setting.json").batFullVoltage || 0.3144;
|
||||||
const SETTINGS = {
|
|
||||||
mapCompass: true,
|
|
||||||
mapScale:0.2, //initial value
|
const SETTINGS = Object.assign(
|
||||||
mapRefresh:1000, //minimum time in ms between refreshs of the map
|
require('Storage').readJSON("gpstrek.default.json", true) || {},
|
||||||
mapChunkSize: 5, //render this many waypoints at a time
|
require('Storage').readJSON("gpstrek.json", true) || {}
|
||||||
overviewScroll: 30, //scroll this amount on swipe in pixels
|
);
|
||||||
overviewScale: 0.02, //initial value
|
|
||||||
refresh:500, //general refresh interval in ms
|
|
||||||
refreshLocked:3000, //general refresh interval when Bangle is locked
|
|
||||||
cacheMinFreeMem:2000,
|
|
||||||
cacheMaxEntries:0,
|
|
||||||
minCourseChange: 5, //course change needed in degrees before redrawing the map
|
|
||||||
minPosChange: 5, //position change needed in pixels before redrawing the map
|
|
||||||
waypointChangeDist: 50, //distance in m to next waypoint before advancing automatically
|
|
||||||
queueWaitingTime: 5, // waiting time during processing of task queue items when running with timeouts
|
|
||||||
autosearch: true,
|
|
||||||
maxDistForAutosearch: 300,
|
|
||||||
autosearchLimit: 3
|
|
||||||
};
|
|
||||||
|
|
||||||
let init = function(){
|
let init = function(){
|
||||||
global.screen = 1;
|
global.screen = 1;
|
||||||
|
|
@ -38,7 +25,6 @@ let init = function(){
|
||||||
|
|
||||||
Bangle.loadWidgets();
|
Bangle.loadWidgets();
|
||||||
WIDGETS.gpstrek.start(false);
|
WIDGETS.gpstrek.start(false);
|
||||||
if (!WIDGETS.gpstrek.getState().numberOfSlices) WIDGETS.gpstrek.getState().numberOfSlices = 2;
|
|
||||||
if (!WIDGETS.gpstrek.getState().mode) WIDGETS.gpstrek.getState().mode = MODE_MENU;
|
if (!WIDGETS.gpstrek.getState().mode) WIDGETS.gpstrek.getState().mode = MODE_MENU;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -459,7 +445,7 @@ let getMapSlice = function(){
|
||||||
if (!isMapOverview){
|
if (!isMapOverview){
|
||||||
drawCurrentPos();
|
drawCurrentPos();
|
||||||
}
|
}
|
||||||
if (!isMapOverview && renderInTimeouts){
|
if (SETTINGS.mapCompass && !isMapOverview && renderInTimeouts){
|
||||||
drawMapCompass();
|
drawMapCompass();
|
||||||
}
|
}
|
||||||
if (renderInTimeouts) drawInterface();
|
if (renderInTimeouts) drawInterface();
|
||||||
|
|
@ -1254,11 +1240,6 @@ let showMenu = function(){
|
||||||
"Background" : showBackgroundMenu,
|
"Background" : showBackgroundMenu,
|
||||||
"Calibration": showCalibrationMenu,
|
"Calibration": showCalibrationMenu,
|
||||||
"Reset" : ()=>{ E.showPrompt("Do Reset?").then((v)=>{ if (v) {WIDGETS.gpstrek.resetState(); removeMenu();} else {E.showMenu(mainmenu);}}).catch(()=>{E.showMenu(mainmenu);});},
|
"Reset" : ()=>{ E.showPrompt("Do Reset?").then((v)=>{ if (v) {WIDGETS.gpstrek.resetState(); removeMenu();} else {E.showMenu(mainmenu);}}).catch(()=>{E.showMenu(mainmenu);});},
|
||||||
"Info rows" : {
|
|
||||||
value : WIDGETS.gpstrek.getState().numberOfSlices,
|
|
||||||
min:1,max:6,step:1,
|
|
||||||
onchange : v => { WIDGETS.gpstrek.getState().numberOfSlices = v; }
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
E.showMenu(mainmenu);
|
E.showMenu(mainmenu);
|
||||||
|
|
@ -1374,7 +1355,7 @@ const finishData = {
|
||||||
};
|
};
|
||||||
|
|
||||||
let getSliceHeight = function(number){
|
let getSliceHeight = function(number){
|
||||||
return Math.floor(Bangle.appRect.h/WIDGETS.gpstrek.getState().numberOfSlices);
|
return Math.floor(Bangle.appRect.h/SETTINGS.numberOfSlices);
|
||||||
};
|
};
|
||||||
|
|
||||||
let compassSlice = getCompassSlice();
|
let compassSlice = getCompassSlice();
|
||||||
|
|
@ -1455,7 +1436,6 @@ let updateRouting = function() {
|
||||||
lastSearch = Date.now();
|
lastSearch = Date.now();
|
||||||
autosearchCounter++;
|
autosearchCounter++;
|
||||||
}
|
}
|
||||||
let counter = 0;
|
|
||||||
while (hasNext(s.route) && distance(s.currentPos,get(s.route)) < SETTINGS.waypointChangeDist) {
|
while (hasNext(s.route) && distance(s.currentPos,get(s.route)) < SETTINGS.waypointChangeDist) {
|
||||||
next(s.route);
|
next(s.route);
|
||||||
minimumDistance = Number.MAX_VALUE;
|
minimumDistance = Number.MAX_VALUE;
|
||||||
|
|
@ -1479,7 +1459,7 @@ let updateSlices = function(){
|
||||||
slices.push(healthSlice);
|
slices.push(healthSlice);
|
||||||
slices.push(systemSlice);
|
slices.push(systemSlice);
|
||||||
slices.push(system2Slice);
|
slices.push(system2Slice);
|
||||||
maxSlicePages = Math.ceil(slices.length/s.numberOfSlices);
|
maxSlicePages = Math.ceil(slices.length/SETTINGS.numberOfSlices);
|
||||||
};
|
};
|
||||||
|
|
||||||
let page_slices = 0;
|
let page_slices = 0;
|
||||||
|
|
@ -1515,9 +1495,9 @@ let drawSlices = function(){
|
||||||
if (force){
|
if (force){
|
||||||
clear();
|
clear();
|
||||||
}
|
}
|
||||||
let firstSlice = page_slices*s.numberOfSlices;
|
let firstSlice = page_slices*SETTINGS.numberOfSlices;
|
||||||
let sliceHeight = getSliceHeight();
|
let sliceHeight = getSliceHeight();
|
||||||
let slicesToDraw = slices.slice(firstSlice,firstSlice + s.numberOfSlices);
|
let slicesToDraw = slices.slice(firstSlice,firstSlice + SETTINGS.numberOfSlices);
|
||||||
for (let slice of slicesToDraw) {
|
for (let slice of slicesToDraw) {
|
||||||
g.reset();
|
g.reset();
|
||||||
if (!slice.refresh || slice.refresh() || force)
|
if (!slice.refresh || slice.refresh() || force)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"mapCompass": true,
|
||||||
|
"mapScale":0.5,
|
||||||
|
"mapRefresh":1000,
|
||||||
|
"mapChunkSize": 15,
|
||||||
|
"overviewScroll": 30,
|
||||||
|
"overviewScale": 0.02,
|
||||||
|
"refresh":500,
|
||||||
|
"refreshLocked":3000,
|
||||||
|
"cacheMinFreeMem":2000,
|
||||||
|
"cacheMaxEntries":0,
|
||||||
|
"minCourseChange": 5,
|
||||||
|
"minPosChange": 5,
|
||||||
|
"waypointChangeDist": 50,
|
||||||
|
"queueWaitingTime": 5,
|
||||||
|
"autosearch": true,
|
||||||
|
"maxDistForAutosearch": 300,
|
||||||
|
"autosearchLimit": 3,
|
||||||
|
"numberOfSlices": 3
|
||||||
|
}
|
||||||
|
|
@ -12,8 +12,13 @@
|
||||||
"interface" : "interface.html",
|
"interface" : "interface.html",
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"gpstrek.app.js","url":"app.js"},
|
{"name":"gpstrek.app.js","url":"app.js"},
|
||||||
|
{"name":"gpstrek.settings.js","url":"settings.js"},
|
||||||
|
{"name":"gpstrek.default.json","url":"default.json"},
|
||||||
{"name":"gpstrek.wid.js","url":"widget.js"},
|
{"name":"gpstrek.wid.js","url":"widget.js"},
|
||||||
{"name":"gpstrek.img","url":"app-icon.js","evaluate":true}
|
{"name":"gpstrek.img","url":"app-icon.js","evaluate":true}
|
||||||
],
|
],
|
||||||
"data": [{"name":"gpstrek.state.json"}]
|
"data": [
|
||||||
|
{"name":"gpstrek.state.json"},
|
||||||
|
{"name":"gpstrek.json"}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,156 @@
|
||||||
|
(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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
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();
|
||||||
|
})
|
||||||
Loading…
Reference in New Issue