Merge pull request #1437 from iNavFlight/MrD-Revise-mode-categories

Revised how modes are ordered
pull/1441/head
Paweł Spychalski 3 years ago committed by GitHub
commit bd970bb3e8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -36,32 +36,19 @@ TABS.auxiliary.initialize = function (callback) {
MSP.send_message(MSPCodes.MSP_BOXNAMES, false, false, get_mode_ranges);
// This object separates out the dividers. This is also used to order the modes
const modeSections = {};
modeSections["ARM"] = "Arming";
modeSections["ANGLE"] = "Flight Modes";
modeSections["NAV RTH"] = "Navigation Modes";
modeSections["NAV ALTHOLD"] = "Flight Mode Modifiers";
modeSections["AUTO TUNE"] = "Fixed Wing";
modeSections["FPV ANGLE MIX"] = "Multi-rotor";
modeSections["OSD OFF"] = "OSD Modes";
modeSections["CAMSTAB"] = "FPV Camera Modes";
modeSections["BEEPER"] = "Misc Modes";
modeSections["Arming"] = ["ARM", "PREARM"];
modeSections["Flight Modes"] = ["ANGLE", "HORIZON", "MANUAL"];
modeSections["Navigation Modes"] = ["NAV COURSE HOLD", "NAV CRUISE", "NAV POSHOLD", "NAV RTH", "NAV WP", "GCS NAV"];
modeSections["Flight Mode Modifiers"] = ["NAV ALTHOLD", "HEADING HOLD", "AIR MODE", "SOARING", "SURFACE"];
modeSections["Fixed Wing"] = ["AUTO TUNE", "SERVO AUTOTRIM", "AUTO LEVEL", "NAV LAUNCH", "LOITER CHANGE", "FLAPERON", "TURN ASSIST"];
modeSections["Multi-rotor"] = ["FPV ANGLE MIX", "TURTLE", "MC BRAKING", "HEADFREE", "HEADADJ"];
modeSections["OSD Modes"] = ["OSD OFF", "OSD ALT 1", "OSD ALT 2", "OSD ALT 3"];
modeSections["FPV Camera Modes"] = ["CAMSTAB", "CAMERA CONTROL 1", "CAMERA CONTROL 2", "CAMERA CONTROL 3"];
modeSections["Misc Modes"] = ["BEEPER", "LEDS OFF", "LIGHTS", "HOME RESET", "WP PLANNER", "BLACKBOX", "FAILSAFE", "KILLSWITCH", "TELEMETRY", "MSP RC OVERRIDE", "USER1", "USER2"];
function sort_modes_for_display() {
// This array defines the order that the modes are displayed in the configurator modes page
const configuratorBoxOrder = [
"ARM", "PREARM", // Arming
"ANGLE", "HORIZON", "MANUAL", // Flight modes
"NAV RTH", "NAV COURSE HOLD", "NAV CRUISE", "NAV POSHOLD", "NAV WP", "GCS NAV", // Navigation modes
"NAV ALTHOLD", "HEADING HOLD", "AIR MODE", "SOARING", "SURFACE", // Flight mode modifiers
"AUTO TUNE", "SERVO AUTOTRIM", "AUTO LEVEL", "NAV LAUNCH", "LOITER CHANGE", "FLAPERON", "TURN ASSIST", // Fixed wing specific
"FPV ANGLE MIX", "TURTLE", "MC BRAKING", "HEADFREE", "HEADADJ", // Multi-rotor specific
"OSD OFF", "OSD ALT 1", "OSD ALT 2", "OSD ALT 3", // OSD
"CAMSTAB", "CAMERA CONTROL 1", "CAMERA CONTROL 2", "CAMERA CONTROL 3", // FPV Camera
"BEEPER", "LEDS OFF", "LIGHTS", "HOME RESET", "WP PLANNER", "BLACKBOX", "FAILSAFE", "KILLSWITCH", // Misc
"TELEMETRY", "MSP RC OVERRIDE", "USER1", "USER2"
];
// Sort the modes
var tmpAUX_CONFIG = [];
var tmpAUX_CONFIG_IDS =[];
@ -76,19 +63,22 @@ TABS.auxiliary.initialize = function (callback) {
AUX_CONFIG = [];
AUX_CONFIG_IDS = [];
for (i=0; i<configuratorBoxOrder.length; i++) {
for(j=0; j<tmpAUX_CONFIG.length; j++) {
if (configuratorBoxOrder[i] === tmpAUX_CONFIG[j]) {
AUX_CONFIG[sortedID] = tmpAUX_CONFIG[j];
AUX_CONFIG_IDS[sortedID] = tmpAUX_CONFIG_IDS[j];
ORIG_AUX_CONFIG_IDS[sortedID++] = j;
break;
for (let categoryModesIndex in modeSections) {
let categoryModes = modeSections[categoryModesIndex];
for (cM=0; cM<categoryModes.length; cM++){
for(j=0; j<tmpAUX_CONFIG.length; j++) {
if (categoryModes[cM] === tmpAUX_CONFIG[j]) {
AUX_CONFIG[sortedID] = tmpAUX_CONFIG[j];
AUX_CONFIG_IDS[sortedID] = tmpAUX_CONFIG_IDS[j];
ORIG_AUX_CONFIG_IDS[sortedID++] = j;
break;
}
}
}
}
// There are modes that are missing from the configuratorBoxOrder array. Add them to the end until they are ordered correctly.
// There are modes that are missing from the modeSections object. Add them to the end until they are ordered correctly.
if (tmpAUX_CONFIG.length > AUX_CONFIG.length) {
for (i=0; i<tmpAUX_CONFIG.length; i++) {
found = false;
@ -214,11 +204,23 @@ TABS.auxiliary.initialize = function (callback) {
configureRangeTemplate(auxChannelCount);
var modeTableBodyElement = $('.tab-auxiliary .modes tbody')
var modeTableBodyElement = $('.tab-auxiliary .modes tbody');
let modeSelectionID = "";
let modeSelectionRange = "";
for (var modeIndex = 0; modeIndex < AUX_CONFIG.length; modeIndex++) {
if (AUX_CONFIG[modeIndex] in modeSections) {
var newSection = createModeSection(modeSections[AUX_CONFIG[modeIndex]]);
// Get current mode category
for (modeSelectionRange in modeSections) {
if (modeSections[modeSelectionRange].indexOf(AUX_CONFIG[modeIndex]) != -1) {
break;
}
}
// Create divider if needed
if (modeSelectionRange != modeSelectionID) {
modeSelectionID = modeSelectionRange;
var newSection = createModeSection(modeSelectionRange);
modeTableBodyElement.append(newSection);
}

Loading…
Cancel
Save