mirror of
https://github.com/iNavFlight/inav-configurator.git
synced 2025-07-15 12:25:13 +03:00
Fix colours and labels bug in the mixer
This commit is contained in:
parent
705c8fe88b
commit
1eb9ad6639
2 changed files with 48 additions and 21 deletions
16
js/model.js
16
js/model.js
|
@ -799,6 +799,22 @@ helper.mixer = (function (mixerList) {
|
|||
}
|
||||
}
|
||||
|
||||
publicScope.countSurfaceType = function(mixer, surface) {
|
||||
let count = 0;
|
||||
|
||||
for (const i in mixer.servoMixer) {
|
||||
if (mixer.servoMixer.hasOwnProperty(i)) {
|
||||
const s = mixer.servoMixer[i];
|
||||
|
||||
if (s.getInput() === surface) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
return publicScope;
|
||||
})(mixerList);
|
||||
|
||||
|
|
|
@ -111,10 +111,10 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
|
|||
let outputPad = 1;
|
||||
let outputArea = null;
|
||||
let inputBoxes = null;
|
||||
let surfaceSet = {
|
||||
aileron: false,
|
||||
elevator: false,
|
||||
rudder: false,
|
||||
let surfaces = {
|
||||
aileronSet: helper.mixer.countSurfaceType(currentMixerPreset, INPUT_STABILIZED_ROLL),
|
||||
elevatorSet: helper.mixer.countSurfaceType(currentMixerPreset, INPUT_STABILIZED_PITCH),
|
||||
rudderSet: helper.mixer.countSurfaceType(currentMixerPreset, INPUT_STABILIZED_YAW),
|
||||
};
|
||||
let motors = [];
|
||||
let servoRules = SERVO_RULES;
|
||||
|
@ -131,7 +131,7 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
|
|||
switch (parseInt(servo.getInput())) {
|
||||
case INPUT_STABILIZED_PITCH:
|
||||
case INPUT_RC_PITCH:
|
||||
outputArea = getOutputImageArea(currentMixerPreset.imageOutputsNumbers, INPUT_STABILIZED_PITCH, surfaceSet.elevator);
|
||||
outputArea = getOutputImageArea(currentMixerPreset.imageOutputsNumbers, INPUT_STABILIZED_PITCH, surfaces.elevatorSet);
|
||||
if (outputArea != null) {
|
||||
mixerPreview.append('<div id="' + divID + '" class="outputImageNumber">S' + outputPad + '</div>');
|
||||
|
||||
|
@ -148,12 +148,12 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
|
|||
});
|
||||
}
|
||||
|
||||
surfaceSet.elevator = true;
|
||||
surfaces.elevatorSet--;
|
||||
}
|
||||
break;
|
||||
case INPUT_STABILIZED_ROLL:
|
||||
case INPUT_RC_ROLL:
|
||||
outputArea = getOutputImageArea(currentMixerPreset.imageOutputsNumbers, INPUT_STABILIZED_ROLL, surfaceSet.aileron);
|
||||
outputArea = getOutputImageArea(currentMixerPreset.imageOutputsNumbers, INPUT_STABILIZED_ROLL, surfaces.aileronSet);
|
||||
if (outputArea != null) {
|
||||
mixerPreview.append('<div id="' + divID + '" class="outputImageNumber">S' + outputPad + '</div>');
|
||||
|
||||
|
@ -170,12 +170,12 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
|
|||
});
|
||||
}
|
||||
|
||||
surfaceSet.aileron = true;
|
||||
surfaces.aileronSet--;
|
||||
}
|
||||
break;
|
||||
case INPUT_STABILIZED_YAW:
|
||||
case INPUT_RC_YAW:
|
||||
outputArea = getOutputImageArea(currentMixerPreset.imageOutputsNumbers, INPUT_STABILIZED_YAW, surfaceSet.rudder);
|
||||
outputArea = getOutputImageArea(currentMixerPreset.imageOutputsNumbers, INPUT_STABILIZED_YAW, surfaces.rudderSet);
|
||||
if (outputArea != null) {
|
||||
mixerPreview.append('<div id="' + divID + '" class="outputImageNumber">S' + outputPad + '</div>');
|
||||
|
||||
|
@ -192,7 +192,7 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
|
|||
});
|
||||
}
|
||||
|
||||
surfaceSet.rudder = true;
|
||||
surfaces.rudderSet--;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -205,7 +205,7 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
|
|||
if (motors.length > 0) {
|
||||
mixerPreview.append('<div id="motorsPreview" class="outputImageNumber isMotor">S' + motors.join('/') + '</div>');
|
||||
|
||||
outputArea = getOutputImageArea(currentMixerPreset.imageOutputsNumbers, INPUT_STABILIZED_THROTTLE, false);
|
||||
outputArea = getOutputImageArea(currentMixerPreset.imageOutputsNumbers, INPUT_STABILIZED_THROTTLE, 0);
|
||||
if (outputArea != null) {
|
||||
$("#motorsPreview").css("top", outputArea.top + "px");
|
||||
$("#motorsPreview").css("left", outputArea.left + "px");
|
||||
|
@ -216,24 +216,35 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
|
|||
}
|
||||
}
|
||||
|
||||
function getOutputImageArea(outputImageAreas, input, secondSurface) {
|
||||
var lastRoll = -1;
|
||||
var lastPitch = -1;
|
||||
var lastYaw = -1;
|
||||
|
||||
function getOutputImageArea(outputImageAreas, input, surfacesSet) {
|
||||
let returnArea = null;
|
||||
let firstAileronFound = false;
|
||||
let firstRuddervatorFound = false;
|
||||
|
||||
for (let area of outputImageAreas) {
|
||||
if (area.input == input) {
|
||||
if ( input === INPUT_STABILIZED_THROTTLE
|
||||
|| (input === INPUT_STABILIZED_YAW && !secondSurface)
|
||||
|| ((input === INPUT_STABILIZED_ROLL && !secondSurface) || (input === INPUT_STABILIZED_ROLL && secondSurface && firstAileronFound))
|
||||
|| ((input === INPUT_STABILIZED_PITCH && !secondSurface) || (input === INPUT_STABILIZED_PITCH && secondSurface && firstRuddervatorFound))
|
||||
|| (surfacesSet > 0 &&
|
||||
((input === INPUT_STABILIZED_YAW && surfacesSet !== lastYaw)
|
||||
|| (input === INPUT_STABILIZED_ROLL && surfacesSet !== lastRoll)
|
||||
|| (input === INPUT_STABILIZED_PITCH && surfacesSet !== lastPitch))
|
||||
)
|
||||
) {
|
||||
returnArea = area;
|
||||
break;
|
||||
} else if (input === INPUT_STABILIZED_ROLL) {
|
||||
firstAileronFound = true;
|
||||
}
|
||||
|
||||
if (input === INPUT_STABILIZED_ROLL) {
|
||||
lastRoll = surfacesSet-1;
|
||||
} else if (input === INPUT_STABILIZED_PITCH) {
|
||||
firstRuddervatorFound = true;
|
||||
lastPitch = surfacesSet-1;
|
||||
} else if (input === INPUT_STABILIZED_YAW) {
|
||||
lastYaw = surfacesSet-1;
|
||||
}
|
||||
|
||||
if (returnArea !== null) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue