mirror of https://github.com/espruino/BangleApps
Update app.js
parent
8ea766de65
commit
7fe89b9b41
|
@ -8,8 +8,6 @@ To do:
|
||||||
getAltitude = (p,baseP) => (44330 * (1.0 - Math.pow(p/baseP, 0.1903)));
|
getAltitude = (p,baseP) => (44330 * (1.0 - Math.pow(p/baseP, 0.1903)));
|
||||||
getFL = () => (44330 * (1.0 - Math.pow(pressure/1013.25, 0.1903))).toFixed(0);
|
getFL = () => (44330 * (1.0 - Math.pow(pressure/1013.25, 0.1903))).toFixed(0);
|
||||||
getTimeString = () => (settings.localTime) ? (require("locale").time(Date(),1)):(Date().toUTCString().slice(Date().toUTCString().length-12,Date().toUTCString().length-7));
|
getTimeString = () => (settings.localTime) ? (require("locale").time(Date(),1)):(Date().toUTCString().slice(Date().toUTCString().length-12,Date().toUTCString().length-7));
|
||||||
takeoff = () => {takeoffTime=Date().getTime(); flying=true; landed=false;};
|
|
||||||
land = () => {landingTime=Date().getTime(); flying=false; landed=true;};
|
|
||||||
|
|
||||||
var fg=g.getColor();
|
var fg=g.getColor();
|
||||||
var bg=g.getBgColor();
|
var bg=g.getBgColor();
|
||||||
|
@ -27,7 +25,6 @@ const unitsRoc=[
|
||||||
{name:"kt", factor:1.9438444924406, precision:1, layoutCode:
|
{name:"kt", factor:1.9438444924406, precision:1, layoutCode:
|
||||||
{type:"txt", font:"12%", halign:0, filly:0, label:"kt"}}
|
{type:"txt", font:"12%", halign:0, filly:0, label:"kt"}}
|
||||||
];
|
];
|
||||||
|
|
||||||
const unitsGs=[
|
const unitsGs=[
|
||||||
{name:"km/h", factor:1, precision:1, layoutCode:{type:"v", halign:1, c: [
|
{name:"km/h", factor:1, precision:1, layoutCode:{type:"v", halign:1, c: [
|
||||||
{type:"txt", font:"12%", halign:0, filly:0, label:"km"},
|
{type:"txt", font:"12%", halign:0, filly:0, label:"km"},
|
||||||
|
@ -39,28 +36,28 @@ const unitsGs=[
|
||||||
{type:"", height:1,width:"20", bgCol:fg},
|
{type:"", height:1,width:"20", bgCol:fg},
|
||||||
{type:"txt", font:"12%", halign:0, filly:0, label:"s"}]}}
|
{type:"txt", font:"12%", halign:0, filly:0, label:"s"}]}}
|
||||||
];
|
];
|
||||||
|
|
||||||
const unitsAlt=[
|
const unitsAlt=[
|
||||||
{name:"m", factor:1, precision:0, layoutCode:{type:"txt", font:"12%", halign:0, filly:0, label:"m"}},
|
{name:"m", factor:1, precision:0, layoutCode:{type:"txt", font:"12%", halign:0, filly:0, label:"m"}},
|
||||||
{name:"ft", factor:3.280839895013123, precision:0, layoutCode:{type:"txt", font:"12%", halign:0, filly:0, label:"ft"}}
|
{name:"ft", factor:3.280839895013123, precision:0, layoutCode:{type:"txt", font:"12%", halign:0, filly:0, label:"ft"}}
|
||||||
];
|
];
|
||||||
|
|
||||||
const unitROC={type:"v", halign:1, c: [
|
const unitROC={type:"v", halign:1, c: [
|
||||||
{type:"txt", font:"12%", halign:0, filly:0, label:"m"},
|
{type:"txt", font:"12%", halign:0, filly:0, label:"m"},
|
||||||
{type:"", height:1,width:"20", bgCol:fg},
|
{type:"", height:1,width:"20", bgCol:fg},
|
||||||
{type:"txt", font:"12%", halign:0, filly:0, label:"s"}
|
{type:"txt", font:"12%", halign:0, filly:0, label:"s"}
|
||||||
]};
|
]};
|
||||||
|
|
||||||
|
const ground=0, flying=1, landed=2, maybeFlying=3, maybeLanded=4;
|
||||||
|
|
||||||
var settings = Object.assign({
|
var settings = Object.assign({
|
||||||
rocU: 0,
|
rocU: 0,
|
||||||
altU: 0,
|
altU: 0,
|
||||||
gsU:0,
|
gsU:0,
|
||||||
intTime:10,
|
intTime:10,
|
||||||
localTime:true,
|
localTime:true,
|
||||||
autoDetect:1
|
autoDetect:true,
|
||||||
}, require('Storage').readJSON("tinyVario.json", true) || {});
|
}, require('Storage').readJSON("tinyVario.json", true) || {});
|
||||||
|
|
||||||
var qnh=Math.floor(Bangle.getOptions().seaLevelPressure);
|
var qnh=Math.floor(Bangle.getOptions().seaLevelPressure) || 1013;
|
||||||
var pfdHandle;
|
var pfdHandle;
|
||||||
var rawP=0, samples=0;
|
var rawP=0, samples=0;
|
||||||
var altH = [];
|
var altH = [];
|
||||||
|
@ -69,12 +66,11 @@ var fastGain=0.5, slowGain=0.3;
|
||||||
var roc=0,rocAvg=0, gs;
|
var roc=0,rocAvg=0, gs;
|
||||||
var lastPressure = Date.now();
|
var lastPressure = Date.now();
|
||||||
var pressure = 1000;
|
var pressure = 1000;
|
||||||
var flying=false, landed=false;
|
var state=ground;
|
||||||
var takeoffTime, landingTime, flyingTime;
|
var takeoffTime=0, landingTime=0, flyingTime;
|
||||||
var Layout = require("Layout");
|
var Layout = require("Layout");
|
||||||
var oldSettings;
|
var oldSettings;
|
||||||
|
|
||||||
|
|
||||||
function updateText(t) {
|
function updateText(t) {
|
||||||
g.clearRect(t.x,t.y,t.x+t.w-1,t.y+t.h-1);
|
g.clearRect(t.x,t.y,t.x+t.w-1,t.y+t.h-1);
|
||||||
if (t.col) g.setColor(t.col);
|
if (t.col) g.setColor(t.col);
|
||||||
|
@ -91,9 +87,6 @@ function initPFD() {
|
||||||
Bangle.setUI();
|
Bangle.setUI();
|
||||||
var pfd = new Layout(
|
var pfd = new Layout(
|
||||||
{type:"v",c: [
|
{type:"v",c: [
|
||||||
/*{type:"h",c: [
|
|
||||||
{type:"", fillx:1, height:"1"}
|
|
||||||
]},*/
|
|
||||||
{type:"h",filly:1, c: [
|
{type:"h",filly:1, c: [
|
||||||
{type:"custom", width:"25", render:()=>{
|
{type:"custom", width:"25", render:()=>{
|
||||||
var p = pfd.vario;
|
var p = pfd.vario;
|
||||||
|
@ -132,10 +125,6 @@ function initPFD() {
|
||||||
);
|
);
|
||||||
g.clear();
|
g.clear();
|
||||||
pfd.render();
|
pfd.render();
|
||||||
//-------testing------
|
|
||||||
//rawP=1000;
|
|
||||||
//samples=1;
|
|
||||||
//--------------------
|
|
||||||
pfdHandle = setInterval(function() {
|
pfdHandle = setInterval(function() {
|
||||||
//process pressure readings
|
//process pressure readings
|
||||||
if (samples) {
|
if (samples) {
|
||||||
|
@ -152,24 +141,40 @@ function initPFD() {
|
||||||
altRaw=getAltitude(pressure,qnh);
|
altRaw=getAltitude(pressure,qnh);
|
||||||
altFast=altFast+(altRaw-altFast)*fastGain;
|
altFast=altFast+(altRaw-altFast)*fastGain;
|
||||||
altSlow=altSlow+(altRaw-altSlow)*slowGain;
|
altSlow=altSlow+(altRaw-altSlow)*slowGain;
|
||||||
altH.push(altRaw);
|
altH.push(altFast);
|
||||||
while (altH.length>settings.intTime*4+1) {
|
while (altH.length>settings.intTime*4) {
|
||||||
altH.shift();
|
|
||||||
rocAvg=(altH[altH.length-1]-altH[0])/settings.intTime;
|
rocAvg=(altH[altH.length-1]-altH[0])/settings.intTime;
|
||||||
|
altH.shift();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (settings.autoDetect)
|
if (settings.autoDetect==true) switch (state) {
|
||||||
if ((!flying) && (!landed) && ((rocAvg>1) || (rocAvg<-1) || (gs>10)))
|
case ground:
|
||||||
takeoff();
|
if ((gs>=5) || (roc>=1) || (roc<=-1)) {
|
||||||
else if ((flying) && ((rocAvg<1) && (rocAvg>-1) && (gs<10)))
|
state=maybeFlying;
|
||||||
land();
|
takeoffTime=Date().getTime();
|
||||||
|
}
|
||||||
if (flying) {
|
break;
|
||||||
|
case maybeFlying:
|
||||||
|
if (!(gs>=5)&& (roc<1) && (roc>-1)) state=ground;
|
||||||
|
else if (Date().getTime()-takeoffTime>60000) state=flying;
|
||||||
|
break;
|
||||||
|
case flying:
|
||||||
|
if (!(gs>=5) && (roc<1) && (roc>-1)) {
|
||||||
|
state=maybeLanded;
|
||||||
|
landingTime=Date().getTime();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case maybeLanded:
|
||||||
|
if ((gs>=5) || (roc>=1) || (roc<=-1)) state=flying;
|
||||||
|
else if (Date().getTime()-landingTime>60000) state=landed;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ((state==flying) || (state==maybeLanded)) {
|
||||||
flyingTime=Date().getTime()-takeoffTime;
|
flyingTime=Date().getTime()-takeoffTime;
|
||||||
pfd.flyingtime.label=(flyingTime / 3600000).toFixed(0)+":"+(flyingTime / 60000 % 60).toFixed(0).padStart(2,'0');
|
pfd.flyingtime.label=(flyingTime / 3600000).toFixed(0)+":"+(flyingTime / 60000 % 60).toFixed(0).padStart(2,'0');
|
||||||
pfd.flyingtime.col=fg;
|
pfd.flyingtime.col=fg;
|
||||||
updateText(pfd.flyingtime);
|
updateText(pfd.flyingtime);
|
||||||
} else if (landed) {
|
} else if (state==landed) {
|
||||||
flyingTime=landingTime-takeoffTime;
|
flyingTime=landingTime-takeoffTime;
|
||||||
pfd.flyingtime.label=(flyingTime / 3600000).toFixed(0)+":"+(flyingTime / 60000 % 60).toFixed(0).padStart(2,'0');
|
pfd.flyingtime.label=(flyingTime / 3600000).toFixed(0)+":"+(flyingTime / 60000 % 60).toFixed(0).padStart(2,'0');
|
||||||
pfd.flyingtime.col=green;
|
pfd.flyingtime.col=green;
|
||||||
|
@ -182,7 +187,7 @@ function initPFD() {
|
||||||
pfd.avg.label=(rocAvg*unitsRoc[settings.rocU].factor).toFixed(unitsRoc[settings.rocU].precision);
|
pfd.avg.label=(rocAvg*unitsRoc[settings.rocU].factor).toFixed(unitsRoc[settings.rocU].precision);
|
||||||
|
|
||||||
var gps = Bangle.getGPSFix();
|
var gps = Bangle.getGPSFix();
|
||||||
if (gps) {
|
if (gps!=undefined) {
|
||||||
pfd.gs.label=(gps.speed*unitsGs[settings.gsU].factor).toFixed(unitsGs[settings.gsU].precision);
|
pfd.gs.label=(gps.speed*unitsGs[settings.gsU].factor).toFixed(unitsGs[settings.gsU].precision);
|
||||||
updateText(pfd.gs);
|
updateText(pfd.gs);
|
||||||
gs=gps.speed;
|
gs=gps.speed;
|
||||||
|
@ -198,25 +203,47 @@ function initPFD() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function initAltMenu() {
|
function initAltMenu() {
|
||||||
|
var oldQnh=qnh;
|
||||||
|
function updateAltMenu() {
|
||||||
|
altMenu.clear();
|
||||||
|
altMenu.alt.label=
|
||||||
|
(getAltitude(pressure,qnh)*unitsAlt[settings.altU].factor).toFixed(unitsAlt[settings.altU].precision)
|
||||||
|
+unitsAlt[settings.altU].name;
|
||||||
|
altMenu.qnh.label=qnh;
|
||||||
|
altMenu.render();
|
||||||
|
}
|
||||||
oldSettings=Object.assign({},settings);
|
oldSettings=Object.assign({},settings);
|
||||||
clearInterval(pfdHandle);
|
clearInterval(pfdHandle);
|
||||||
var altMenu = new Layout ({
|
var altMenu = new Layout ({
|
||||||
type:"h", c: [{
|
type:"v", c: [{
|
||||||
type:"v", width:180, c: [
|
type:"v", width:180, c: [
|
||||||
{type:"btn", font:"12%", pad:2, fillx:1, filly:1, label:"set QNH", cb:()=>initQNHMenu()},
|
{type:"h", c: [
|
||||||
|
{type:"btn", font:"15%", pad:1, fillx:1, filly:1, label:"-", cb:l=>{qnh--; updateAltMenu();}},
|
||||||
|
{type:"btn", font:"15%", pad:1, fillx:1, filly:1, label:"+", cb:l=>{qnh++; updateAltMenu();}}
|
||||||
|
]},
|
||||||
|
{type:"v", c: [
|
||||||
|
{type:"h", c: [
|
||||||
|
{type:"txt", font:"13%", fillx:1, filly:1, label:"QNH: "},
|
||||||
|
{type:"txt", font:"13%", fillx:1, filly:1, id:"qnh", label:" "},
|
||||||
|
]},
|
||||||
|
{type:"h", c: [
|
||||||
|
{type:"txt", font:"13%", fillx:1, filly:1, label:"Alt: "},
|
||||||
|
{type:"txt", font:"13%", fillx:1, filly:1, id:"alt", label: " "},
|
||||||
|
]}
|
||||||
|
]},
|
||||||
{type:"btn", font:"12%", id:"units", pad:2, fillx:1, filly:1, label:"Units: "+unitsAlt[settings.altU].name, cb:()=>{
|
{type:"btn", font:"12%", id:"units", pad:2, fillx:1, filly:1, label:"Units: "+unitsAlt[settings.altU].name, cb:()=>{
|
||||||
settings.altU=(settings.altU+1)%unitsAlt.length;
|
settings.altU=(settings.altU+1)%unitsAlt.length;
|
||||||
altMenu.units.label="Units: "+unitsAlt[settings.altU].name;
|
altMenu.units.label="Units: "+unitsAlt[settings.altU].name;
|
||||||
altMenu.render();
|
altMenu.render();
|
||||||
}},
|
}},
|
||||||
]},
|
]},
|
||||||
{type:"v", c: [
|
{type:"h", c: [
|
||||||
{type:"btn", r:3, font:"12%", pad:2, filly:1, label:"BACK", cb: ()=>{
|
{type:"btn", font:"16%", pad:1, fillx:1, label:"BACK", cb: ()=>{
|
||||||
settings=Object.assign({},oldSettings);
|
settings=Object.assign({},oldSettings);
|
||||||
print("old settings restored");
|
print("old settings restored");
|
||||||
initPFD();
|
initPFD();
|
||||||
}},
|
}},
|
||||||
{type:"btn", r:3, font:"12%", pad:2, filly:1, label:"SAVE", cb: ()=>{
|
{type:"btn", font:"16%", pad:1, fillx:1, label:"SAVE", cb: ()=>{
|
||||||
require('Storage').writeJSON("tinyVario.json", settings);
|
require('Storage').writeJSON("tinyVario.json", settings);
|
||||||
initPFD();
|
initPFD();
|
||||||
}}
|
}}
|
||||||
|
@ -224,37 +251,42 @@ function initAltMenu() {
|
||||||
], lazy:true});
|
], lazy:true});
|
||||||
g.clear();
|
g.clear();
|
||||||
altMenu.render();
|
altMenu.render();
|
||||||
|
updateAltMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
function initAvgMenu() {
|
function initAvgMenu() {
|
||||||
oldSettings=Object.assign({},settings);
|
oldSettings=Object.assign({},settings);
|
||||||
clearInterval(pfdHandle);
|
clearInterval(pfdHandle);
|
||||||
var avgMenu = new Layout ({
|
var avgMenu = new Layout ({
|
||||||
type:"h", c: [{
|
type:"v", c: [{
|
||||||
type:"v", width:180, c: [
|
type:"v", width:180, c: [
|
||||||
{type:"btn", font:"12%", pad:2, fillx:1, filly:1, label:"+", cb:l=>{
|
{type:"h", c: [
|
||||||
settings.intTime=Math.clip(settings.intTime+1,1,60);
|
{type:"btn", font:"12%", pad:2, fillx:1, filly:1, label:"-", cb:l=>{
|
||||||
avgMenu.interval.label="Interval: "+settings.intTime+"s";
|
settings.intTime=Math.clip(settings.intTime-1,1,60);
|
||||||
avgMenu.render();
|
avgMenu.clear();
|
||||||
}},
|
avgMenu.interval.label="Interval: "+settings.intTime+"s";
|
||||||
{type:"btn", id:"interval", font:"10%", pad:2, fillx:1, filly:1, label:"Interval: "+settings.intTime+"s", cb:()=>{}},
|
avgMenu.render();
|
||||||
{type:"btn", font:"12%", pad:2, fillx:1, filly:1, label:"-", cb:l=>{
|
}},
|
||||||
settings.intTime=Math.clip(settings.intTime-1,1,60);
|
{type:"btn", font:"12%", pad:1, fillx:1, filly:1, label:"+", cb:l=>{
|
||||||
avgMenu.interval.label="Interval: "+settings.intTime+"s";
|
settings.intTime=Math.clip(settings.intTime+1,1,60);
|
||||||
avgMenu.render();
|
avgMenu.clear();
|
||||||
}},
|
avgMenu.interval.label="Interval: "+settings.intTime+"s";
|
||||||
{type:"btn", font:"12%", id:"units", pad:2, fillx:1, filly:1, label:"Units: "+unitsRoc[settings.rocU].name, cb:()=>{
|
avgMenu.render();
|
||||||
|
}}
|
||||||
|
]},
|
||||||
|
{type:"txt", id:"interval", font:"10%", pad:1, fillx:1, filly:1, label:"Interval: "+settings.intTime+"s"},
|
||||||
|
{type:"btn", font:"12%", id:"units", pad:1, fillx:1, filly:1, label:"Units: "+unitsRoc[settings.rocU].name, cb:()=>{
|
||||||
settings.rocU=(settings.rocU+1)%unitsRoc.length;
|
settings.rocU=(settings.rocU+1)%unitsRoc.length;
|
||||||
avgMenu.units.label="Units: "+unitsRoc[settings.rocU].name;
|
avgMenu.units.label="Units: "+unitsRoc[settings.rocU].name;
|
||||||
avgMenu.render();
|
avgMenu.render();
|
||||||
}},
|
}},
|
||||||
]},
|
]},
|
||||||
{type:"v", c: [
|
{type:"h", c: [
|
||||||
{type:"btn", r:3, font:"12%", pad:2, filly:1, label:"BACK", cb: ()=>{
|
{type:"btn", font:"16%", pad:1, fillx:1, label:"BACK", cb: ()=>{
|
||||||
settings=Object.assign({},oldSettings);
|
settings=Object.assign({},oldSettings);
|
||||||
initPFD();
|
initPFD();
|
||||||
}},
|
}},
|
||||||
{type:"btn", r:3, font:"12%", pad:2, filly:1, label:"SAVE", cb: ()=>{
|
{type:"btn", font:"16%", pad:1, fillx:1, label:"SAVE", cb: ()=>{
|
||||||
require('Storage').writeJSON("tinyVario.json", settings);
|
require('Storage').writeJSON("tinyVario.json", settings);
|
||||||
initPFD();
|
initPFD();
|
||||||
}}
|
}}
|
||||||
|
@ -264,67 +296,23 @@ function initAvgMenu() {
|
||||||
avgMenu.render();
|
avgMenu.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
function initQNHMenu() {
|
|
||||||
var oldQnh=qnh;
|
|
||||||
function updateQNHMenu() {
|
|
||||||
qnhMenu.clear();
|
|
||||||
qnhMenu.alt.label=
|
|
||||||
(getAltitude(pressure,qnh)*unitsAlt[settings.altU].factor).toFixed(unitsAlt[settings.altU].precision)
|
|
||||||
+unitsAlt[settings.altU].name;
|
|
||||||
qnhMenu.qnh.label=qnh;
|
|
||||||
qnhMenu.render();
|
|
||||||
}
|
|
||||||
var qnhMenu = new Layout ( {
|
|
||||||
type:"h", c: [{
|
|
||||||
type:"v", c: [
|
|
||||||
{type:"btn", font:"15%", fillx:1, filly:1, label:"+", cb:l=>{qnh++; updateQNHMenu();} },
|
|
||||||
{type:"v", c: [
|
|
||||||
{type:"h", c: [
|
|
||||||
{type:"txt", font:"13%", fillx:1, filly:1, label:"QNH: "},
|
|
||||||
{type:"txt", font:"13%", fillx:1, filly:1, id:"qnh", label:" "},
|
|
||||||
]},
|
|
||||||
{type:"h", c: [
|
|
||||||
{type:"txt", font:"13%", fillx:1, filly:1, label:"Alt: "},
|
|
||||||
{type:"txt", font:"13%", fillx:1, filly:1, id:"alt", label: " "},
|
|
||||||
]},
|
|
||||||
{type:"btn", font:"15%", fillx:1, filly:1, label:"-", cb:l=>{qnh--; updateQNHMenu();} }
|
|
||||||
]}
|
|
||||||
]},
|
|
||||||
{type:"v", c: [
|
|
||||||
{type:"btn", r:3, font:"12%", pad:2, filly:1, label:"BACK", cb: ()=>{
|
|
||||||
qnh=oldQnh;//=Object.assign({},oldSettings);
|
|
||||||
initAltMenu();
|
|
||||||
}},
|
|
||||||
{type:"btn", r:3, font:"12%", pad:2, filly:1, label:"SAVE", cb: ()=>{
|
|
||||||
var o=Bangle.getOptions();
|
|
||||||
o.seaLevelPressure=qnh;
|
|
||||||
Bangle.setOptions(o);
|
|
||||||
initAltMenu();
|
|
||||||
}}
|
|
||||||
]}
|
|
||||||
],lazy:true});
|
|
||||||
g.clear();
|
|
||||||
qnhMenu.render();
|
|
||||||
updateQNHMenu();
|
|
||||||
}
|
|
||||||
|
|
||||||
function initGsMenu() {
|
function initGsMenu() {
|
||||||
oldSettings=Object.assign({},settings);
|
oldSettings=Object.assign({},settings);
|
||||||
clearInterval(pfdHandle);
|
clearInterval(pfdHandle);
|
||||||
var gsMenu = new Layout ({
|
var gsMenu = new Layout ({
|
||||||
type:"h", c: [
|
type:"v", c: [
|
||||||
{type:"btn", font:"20%", id:"units", pad:2, fillx:1, filly:1, label:"Units:\n"+unitsGs[settings.gsU].name, cb:()=>{
|
{type:"btn", font:"20%", id:"units", pad:1, fillx:1, filly:1, label:"Units:\n"+unitsGs[settings.gsU].name, cb:()=>{
|
||||||
settings.gsU=(settings.gsU+1)%unitsGs.length;
|
settings.gsU=(settings.gsU+1)%unitsGs.length;
|
||||||
gsMenu.units.label="Units:\n"+unitsGs[settings.gsU].name;
|
gsMenu.units.label="Units:\n"+unitsGs[settings.gsU].name;
|
||||||
gsMenu.render();
|
gsMenu.render();
|
||||||
}},
|
}},
|
||||||
{type:"v", c: [
|
{type:"h", c: [
|
||||||
{type:"btn", r:3, font:"12%", pad:2, filly:1, label:"BACK", cb: ()=>{
|
{type:"btn", font:"16%", pad:1, fillx:1, label:"BACK", cb: ()=>{
|
||||||
settings=Object.assign({},oldSettings);
|
settings=Object.assign({},oldSettings);
|
||||||
print("old settings restored");
|
print("old settings restored");
|
||||||
initPFD();
|
initPFD();
|
||||||
}},
|
}},
|
||||||
{type:"btn", r:3, font:"12%", pad:2, filly:1, label:"SAVE", cb: ()=>{
|
{type:"btn", font:"16%", pad:1, fillx:1, label:"SAVE", cb: ()=>{
|
||||||
require('Storage').writeJSON("tinyVario.json", settings);
|
require('Storage').writeJSON("tinyVario.json", settings);
|
||||||
initPFD();
|
initPFD();
|
||||||
}}
|
}}
|
||||||
|
@ -338,43 +326,18 @@ function initTimeMenu() {
|
||||||
oldSettings=Object.assign({},settings);
|
oldSettings=Object.assign({},settings);
|
||||||
clearInterval(pfdHandle);
|
clearInterval(pfdHandle);
|
||||||
var timeMenu = new Layout ({
|
var timeMenu = new Layout ({
|
||||||
type:"h", c: [
|
type:"v", c: [
|
||||||
{type:"btn", font:"20%", id:"format", pad:2, fillx:1, filly:1, label:"Time:\n"+((settings.localTime==true) ? ("LCL") : ("UTC")), cb:()=>{
|
{type:"btn", font:"20%", id:"format", pad:1, fillx:1, filly:1, label:"Time:\n"+((settings.localTime==true) ? ("LCL") : ("UTC")), cb:()=>{
|
||||||
settings.localTime=!settings.localTime;
|
settings.localTime=!settings.localTime;
|
||||||
timeMenu.format.label="Time:\n"+((settings.localTime==true) ? ("LCL") : ("UTC"));
|
timeMenu.format.label="Time:\n"+((settings.localTime==true) ? ("LCL") : ("UTC"));
|
||||||
timeMenu.render();
|
timeMenu.render();
|
||||||
}},
|
}},
|
||||||
{type:"v", c: [
|
{type:"h", c: [
|
||||||
{type:"btn", r:3, font:"12%", pad:2, filly:1, label:"BACK", cb: ()=>{
|
{type:"btn", font:"16%", pad:1, fillx:1, label:"BACK", cb: ()=>{
|
||||||
settings=Object.assign({},oldSettings);
|
settings=Object.assign({},oldSettings);
|
||||||
initPFD();
|
initPFD();
|
||||||
}},
|
}},
|
||||||
{type:"btn", r:3, font:"12%", pad:2, filly:1, label:"SAVE", cb: ()=>{
|
{type:"btn", font:"16%", pad:1, fillx:1, label:"SAVE", cb: ()=>{
|
||||||
require('Storage').writeJSON("tinyVario.json", settings);
|
|
||||||
initPFD();
|
|
||||||
}}
|
|
||||||
]}
|
|
||||||
], lazy:true});
|
|
||||||
g.clear();
|
|
||||||
timeMenu.render();
|
|
||||||
}
|
|
||||||
|
|
||||||
function initTimeMenu() {
|
|
||||||
oldSettings=Object.assign({},settings);
|
|
||||||
clearInterval(pfdHandle);
|
|
||||||
var timeMenu = new Layout ({
|
|
||||||
type:"h", c: [
|
|
||||||
{type:"btn", font:"20%", id:"format", pad:2, fillx:1, filly:1, label:"Time:\n"+((settings.localTime==true) ? ("LCL") : ("UTC")), cb:()=>{
|
|
||||||
settings.localTime=!settings.localTime;
|
|
||||||
timeMenu.format.label="Time:\n"+((settings.localTime==true) ? ("LCL") : ("UTC"));
|
|
||||||
timeMenu.render();
|
|
||||||
}},
|
|
||||||
{type:"v", c: [
|
|
||||||
{type:"btn", r:3, font:"12%", pad:2, filly:1, label:"BACK", cb: ()=>{
|
|
||||||
settings=Object.assign({},oldSettings);
|
|
||||||
initPFD();
|
|
||||||
}},
|
|
||||||
{type:"btn", r:3, font:"12%", pad:2, filly:1, label:"SAVE", cb: ()=>{
|
|
||||||
require('Storage').writeJSON("tinyVario.json", settings);
|
require('Storage').writeJSON("tinyVario.json", settings);
|
||||||
initPFD();
|
initPFD();
|
||||||
}}
|
}}
|
||||||
|
@ -388,49 +351,52 @@ function initFlyingTimeMenu() {
|
||||||
oldSettings=Object.assign({},settings);
|
oldSettings=Object.assign({},settings);
|
||||||
clearInterval(pfdHandle);
|
clearInterval(pfdHandle);
|
||||||
var ftMenu = new Layout (
|
var ftMenu = new Layout (
|
||||||
{type:"h", c: [
|
{type:"v", c: [
|
||||||
{type:"v", c: [
|
{type:"v", c: [
|
||||||
{type:"btn", font:"12%", pad:2, fillx:1, filly:1, label:"Toggle\nAutodetect", cb:()=>{
|
{type:"h", c: [
|
||||||
settings.autodetect=!settings.autodetect;
|
{type:"btn", font:"12%", pad:1, fillx:1, filly:1, label:"Toggle\nAuto", cb:()=>{
|
||||||
ftMenu.manual.label= (settings.autodetect==true)?
|
settings.autoDetect=!settings.autoDetect;
|
||||||
("AUTO"):((flying) ? ("Manual\nLAND") : ("Manual\nTAKE OFF"));
|
ftMenu.manual.label= (settings.autoDetect==true)?
|
||||||
ftMenu.render();
|
("AUTO"):((state==flying) ? ("LAND") : ("TAKE\nOFF"));
|
||||||
}},
|
ftMenu.render();
|
||||||
{type:"btn", font:"12%", id:"manual", pad:2, fillx:1, filly:1, label:(settings.autodetect==true)?
|
}},
|
||||||
("AUTO"):((flying) ? ("Manual\nLAND") : ("Manual\nTAKE OFF")), cb:()=>{
|
{type:"btn", font:"12%", id:"manual", pad:1, fillx:1, filly:1, label:(settings.autoDetect==true)?
|
||||||
if (settings.autodetect==false) {
|
("AUTO"):((state==flying) ? ("LAND") : ("TAKE\nOFF")), cb:()=>{
|
||||||
if (!flying) {
|
if (settings.autoDetect==false) {
|
||||||
E.showPrompt("Take off now?").then((v)=> {
|
if (state!=flying) {
|
||||||
if (v) {
|
E.showPrompt("Take off now?").then((v)=> {
|
||||||
takeoff();
|
if (v) {
|
||||||
initPFD();
|
state=flying;
|
||||||
}
|
takeoffTime=Date().getTime();
|
||||||
});
|
initPFD();
|
||||||
} else {
|
}
|
||||||
E.showPrompt("Land now?").then((v)=> {
|
});
|
||||||
if (v) {
|
} else {
|
||||||
land();
|
E.showPrompt("Land now?").then((v)=> {
|
||||||
initPFD();
|
if (v) {
|
||||||
}
|
state=landed;
|
||||||
});
|
landingTime=Date().getTime();
|
||||||
|
initPFD();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
]},
|
||||||
{type:"btn", font:"12%", pad:2, fillx:1, filly:1, label:"Reset", cb:()=>{
|
{type:"btn", font:"12%", pad:1, fillx:1, filly:1, label:"Reset", cb:()=>{
|
||||||
E.showPrompt("Reset Flight?").then((v)=> {
|
E.showPrompt("Reset Flight?").then((v)=> {
|
||||||
flying=false;
|
state=ground;
|
||||||
landed=false;
|
|
||||||
initPFD();
|
initPFD();
|
||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
]},
|
]},
|
||||||
{type:"v", c: [
|
{type:"h", c: [
|
||||||
{type:"btn", r:3, font:"12%", pad:2, filly:1, label:"BACK", cb: ()=>{
|
{type:"btn", font:"16%", pad:1, fillx:1, label:"BACK", cb: ()=>{
|
||||||
settings=Object.assign({},oldSettings);
|
settings=Object.assign({},oldSettings);
|
||||||
initPFD();
|
initPFD();
|
||||||
}},
|
}},
|
||||||
{type:"btn", r:3, font:"12%", pad:2, filly:1, label:"SAVE", cb: ()=>{
|
{type:"btn", font:"16%", pad:1, fillx:1, label:"SAVE", cb: ()=>{
|
||||||
require('Storage').writeJSON("tinyVario.json", settings);
|
require('Storage').writeJSON("tinyVario.json", settings);
|
||||||
initPFD();
|
initPFD();
|
||||||
}}
|
}}
|
||||||
|
@ -451,4 +417,3 @@ Bangle.on('pressure', function(e) {
|
||||||
});
|
});
|
||||||
|
|
||||||
initPFD();
|
initPFD();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue