btadv: incomplete menu tweaks

master
Rob Pilling 2023-01-26 23:03:21 +00:00
parent fab41e0bb5
commit 1fbba23b1a
1 changed files with 30 additions and 22 deletions

View File

@ -84,14 +84,10 @@ let bar: undefined | PressureData;
let gps: undefined | GPSFix; let gps: undefined | GPSFix;
let hrm: undefined | Hrm; let hrm: undefined | Hrm;
let mag: undefined | CompassData; let mag: undefined | CompassData;
let haveNewAcc = false;
let haveNewBar = false;
let haveNewGps = false;
let haveNewHrm = false;
let haveNewMag = false;
type BtAdvMenu = "acc" | "bar" | "gps" | "hrm" | "mag" | "main"; type BtAdvMenu = "acc" | "bar" | "gps" | "hrm" | "mag" | "main";
let curMenu: BtAdvMenu = "main"; let curMenuName: BtAdvMenu = "main";
let curMenu: MenuInstance;
let mainMenuScroll = 0; let mainMenuScroll = 0;
const settings = { const settings = {
barEnabled: false, barEnabled: false,
@ -105,9 +101,11 @@ const showMainMenu = () => {
const mainMenu: Menu = {}; const mainMenu: Menu = {};
const showMenu = (menu: Menu, scroll: number, cur: BtAdvMenu) => () => { const showMenu = (menu: Menu, scroll: number, cur: BtAdvMenu) => () => {
E.showMenu(menu); mainMenuScroll = scroll; // int
mainMenuScroll = scroll;
curMenu = cur; curMenu = E.showMenu(menu);
curMenuName = cur;
}; };
mainMenu[""] = { mainMenu[""] = {
@ -122,8 +120,8 @@ const showMainMenu = () => {
mainMenu["Magnetometer" + onOff(settings.magEnabled)] = showMenu(magMenu, 4, "mag"); mainMenu["Magnetometer" + onOff(settings.magEnabled)] = showMenu(magMenu, 4, "mag");
mainMenu["Exit"] = () => (load as any)(); // avoid `this` + typehack mainMenu["Exit"] = () => (load as any)(); // avoid `this` + typehack
E.showMenu(mainMenu); curMenu = E.showMenu(mainMenu);
curMenu = "main"; curMenuName = "main";
}; };
const optionsCommon = { const optionsCommon = {
@ -184,17 +182,27 @@ const magMenu = {
"Heading": { value: "" }, "Heading": { value: "" },
}; };
const redrawMenu = (newMenu: Menu) => {
const scroll = (curMenu as any).scroller.scroll;
curMenu = E.showMenu(newMenu);
// FIXME: doesn't work for promenu
(curMenu as any).scroller.scroll = scroll; // typehack
curMenu.draw();
};
const updateMenu = () => { const updateMenu = () => {
switch (curMenu) { switch (curMenuName) {
case "acc": case "acc":
if (acc) { if (acc) {
accMenu.x.value = acc.x.toFixed(2); accMenu.x.value = acc.x.toFixed(2);
accMenu.y.value = acc.y.toFixed(2); accMenu.y.value = acc.y.toFixed(2);
accMenu.z.value = acc.z.toFixed(2); accMenu.z.value = acc.z.toFixed(2);
E.showMenu(accMenu); redrawMenu(accMenu);
} else if (accMenu.x.value !== "...") { } else if (accMenu.x.value !== "...") {
accMenu.x.value = accMenu.y.value = accMenu.z.value = "..."; accMenu.x.value = accMenu.y.value = accMenu.z.value = "...";
E.showMenu(accMenu); redrawMenu(accMenu);
} }
break; break;
@ -203,10 +211,10 @@ const updateMenu = () => {
barMenu.Altitude.value = bar.altitude.toFixed(1) + 'm'; barMenu.Altitude.value = bar.altitude.toFixed(1) + 'm';
barMenu.Press.value = bar.pressure.toFixed(1) + 'mbar'; barMenu.Press.value = bar.pressure.toFixed(1) + 'mbar';
barMenu.Temp.value = bar.temperature.toFixed(1) + 'C'; barMenu.Temp.value = bar.temperature.toFixed(1) + 'C';
E.showMenu(barMenu); redrawMenu(barMenu);
} else if (barMenu.Altitude.value !== "...") { } else if (barMenu.Altitude.value !== "...") {
barMenu.Altitude.value = barMenu.Press.value = barMenu.Temp.value = "..."; barMenu.Altitude.value = barMenu.Press.value = barMenu.Temp.value = "...";
E.showMenu(accMenu); redrawMenu(accMenu);
} }
break; break;
@ -217,11 +225,11 @@ const updateMenu = () => {
gpsMenu.Altitude.value = gps.alt + 'm'; gpsMenu.Altitude.value = gps.alt + 'm';
gpsMenu.Satellites.value = "" + gps.satellites; gpsMenu.Satellites.value = "" + gps.satellites;
gpsMenu.HDOP.value = (gps.hdop * 5).toFixed(1) + 'm'; gpsMenu.HDOP.value = (gps.hdop * 5).toFixed(1) + 'm';
E.showMenu(gpsMenu); redrawMenu(gpsMenu);
} else if (gpsMenu.Lat.value !== "...") { } else if (gpsMenu.Lat.value !== "...") {
gpsMenu.Lat.value = gpsMenu.Lon.value = gpsMenu.Altitude.value = gpsMenu.Lat.value = gpsMenu.Lon.value = gpsMenu.Altitude.value =
gpsMenu.Satellites.value = gpsMenu.HDOP.value = "..."; gpsMenu.Satellites.value = gpsMenu.HDOP.value = "...";
E.showMenu(gpsMenu); redrawMenu(gpsMenu);
} }
break; break;
@ -229,10 +237,10 @@ const updateMenu = () => {
if (hrm) { if (hrm) {
hrmMenu.BPM.value = "" + hrm.bpm; hrmMenu.BPM.value = "" + hrm.bpm;
hrmMenu.Confidence.value = hrm.confidence + '%'; hrmMenu.Confidence.value = hrm.confidence + '%';
E.showMenu(hrmMenu); redrawMenu(hrmMenu);
} else if (hrmMenu.BPM.value !== "...") { } else if (hrmMenu.BPM.value !== "...") {
hrmMenu.BPM.value = hrmMenu.Confidence.value = "..."; hrmMenu.BPM.value = hrmMenu.Confidence.value = "...";
E.showMenu(hrmMenu); redrawMenu(hrmMenu);
} }
break; break;
@ -242,10 +250,10 @@ const updateMenu = () => {
magMenu.y.value = "" + mag.y; magMenu.y.value = "" + mag.y;
magMenu.z.value = "" + mag.z; magMenu.z.value = "" + mag.z;
magMenu.Heading.value = mag.heading.toFixed(1); magMenu.Heading.value = mag.heading.toFixed(1);
E.showMenu(magMenu); redrawMenu(magMenu);
} else if (magMenu.x.value !== "...") { } else if (magMenu.x.value !== "...") {
magMenu.x.value = magMenu.y.value = magMenu.z.value = magMenu.Heading.value = "..."; magMenu.x.value = magMenu.y.value = magMenu.z.value = magMenu.Heading.value = "...";
E.showMenu(magMenu); redrawMenu(magMenu);
} }
break; break;
} }