mirror of
https://github.com/iNavFlight/inav-configurator.git
synced 2025-07-18 22:05:12 +03:00
Resolve some settings issues on Tuning tab and make settings saving
a chain of MSP fames instead of flooding the MSP queue
This commit is contained in:
parent
f931341ceb
commit
a4c3490d38
4 changed files with 39 additions and 19 deletions
|
@ -3075,7 +3075,6 @@ var mspHelper = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
self._getSetting = function (name) {
|
self._getSetting = function (name) {
|
||||||
console.log("Getting setting " + name);
|
|
||||||
if (FC.SETTINGS[name]) {
|
if (FC.SETTINGS[name]) {
|
||||||
return Promise.resolve(FC.SETTINGS[name]);
|
return Promise.resolve(FC.SETTINGS[name]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,6 +53,16 @@ var Settings = (function () {
|
||||||
var settingName = input.data('setting');
|
var settingName = input.data('setting');
|
||||||
var inputUnit = input.data('unit');
|
var inputUnit = input.data('unit');
|
||||||
|
|
||||||
|
let elementId = input.attr('id');
|
||||||
|
if (elementId === undefined) {
|
||||||
|
|
||||||
|
// If the element ID is not defined, we need to create one
|
||||||
|
// based on the setting name. If this ID exists, we will not create it
|
||||||
|
if ($('#' + settingName).length === 0) {
|
||||||
|
input.attr('id', settingName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (globalSettings.showProfileParameters) {
|
if (globalSettings.showProfileParameters) {
|
||||||
if (FC.isBatteryProfileParameter(settingName)) {
|
if (FC.isBatteryProfileParameter(settingName)) {
|
||||||
input.css("background-color","#fef2d5");
|
input.css("background-color","#fef2d5");
|
||||||
|
@ -149,7 +159,8 @@ var Settings = (function () {
|
||||||
input.data('setting-info', s.setting);
|
input.data('setting-info', s.setting);
|
||||||
if (input.data('live')) {
|
if (input.data('live')) {
|
||||||
input.on('change', function () {
|
input.on('change', function () {
|
||||||
self.saveInput(input);
|
const settingPair = self.processInput(input);
|
||||||
|
return mspHelper.setSetting(settingPair.setting, settingPair.value);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -528,7 +539,7 @@ var Settings = (function () {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
self.saveInput = function(input) {
|
self.processInput = function(input) {
|
||||||
var settingName = input.data('setting');
|
var settingName = input.data('setting');
|
||||||
var setting = input.data('setting-info');
|
var setting = input.data('setting-info');
|
||||||
var value;
|
var value;
|
||||||
|
@ -536,7 +547,6 @@ var Settings = (function () {
|
||||||
if (typeof setting == 'undefined') {
|
if (typeof setting == 'undefined') {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (setting.table) {
|
if (setting.table) {
|
||||||
if (input.attr('type') == 'checkbox') {
|
if (input.attr('type') == 'checkbox') {
|
||||||
value = input.prop('checked') ? 1 : 0;
|
value = input.prop('checked') ? 1 : 0;
|
||||||
|
@ -585,8 +595,7 @@ var Settings = (function () {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return {setting: settingName, value: value};
|
||||||
return mspHelper.setSetting(settingName, value);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
self.countDecimals = function(value) {
|
self.countDecimals = function(value) {
|
||||||
|
@ -604,14 +613,26 @@ var Settings = (function () {
|
||||||
return 0;
|
return 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
self.saveInputs = function() {
|
self.pickAndSaveSingleInput = function(inputs, finalCallback) {
|
||||||
|
if (inputs.length > 0) {
|
||||||
|
var input = inputs.shift();
|
||||||
|
var settingPair = self.processInput(input);
|
||||||
|
return mspHelper.setSetting(settingPair.setting, settingPair.value, function() {
|
||||||
|
return self.pickAndSaveSingleInput(inputs);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
if (finalCallback) {
|
||||||
|
finalCallback();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
self.saveInputs = function(finalCallback) {
|
||||||
var inputs = [];
|
var inputs = [];
|
||||||
$('[data-setting!=""][data-setting]').each(function() {
|
$('[data-setting!=""][data-setting]').each(function() {
|
||||||
inputs.push($(this));
|
inputs.push($(this));
|
||||||
});
|
});
|
||||||
return mapSeries(inputs, function (input, ii) {
|
self.pickAndSaveSingleInput(inputs, finalCallback);
|
||||||
return self.saveInput(input);
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
self.processHtml = function(callback) {
|
self.processHtml = function(callback) {
|
||||||
|
|
|
@ -444,19 +444,19 @@
|
||||||
<tr class="not-for-ez-tune">
|
<tr class="not-for-ez-tune">
|
||||||
<th class="roll" data-i18n="pidTuning_RollRate"></th>
|
<th class="roll" data-i18n="pidTuning_RollRate"></th>
|
||||||
<td class="roll">
|
<td class="roll">
|
||||||
<div class="pidTuning_number"><input type="number" class="rate-tpa_input" data-setting="roll_rate" data-unit="decadegps" /></div>
|
<div class="pidTuning_number"><input id="rate-roll" type="number" class="rate-tpa_input" data-setting="roll_rate" data-unit="decadegps" /></div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="not-for-ez-tune">
|
<tr class="not-for-ez-tune">
|
||||||
<th class="pitch" data-i18n="pidTuning_PitchRate"></th>
|
<th class="pitch" data-i18n="pidTuning_PitchRate"></th>
|
||||||
<td class="pitch">
|
<td class="pitch">
|
||||||
<div class="pidTuning_number"><input type="number" class="rate-tpa_input" data-setting="pitch_rate" data-unit="decadegps" /></div>
|
<div class="pidTuning_number"><input id="rate-pitch" type="number" class="rate-tpa_input" data-setting="pitch_rate" data-unit="decadegps" /></div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="not-for-ez-tune">
|
<tr class="not-for-ez-tune">
|
||||||
<th class="yaw" data-i18n="pidTuning_YawRate"></th>
|
<th class="yaw" data-i18n="pidTuning_YawRate"></th>
|
||||||
<td class="yaw">
|
<td class="yaw">
|
||||||
<div class="pidTuning_number"><input type="number" class="rate-tpa_input" data-setting="yaw_rate" data-unit="decadegps" /></div>
|
<div class="pidTuning_number"><input id="rate-yaw" type="number" class="rate-tpa_input" data-setting="yaw_rate" data-unit="decadegps" /></div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="not-for-ez-tune">
|
<tr class="not-for-ez-tune">
|
||||||
|
@ -495,19 +495,19 @@
|
||||||
<tr>
|
<tr>
|
||||||
<th class="roll" data-i18n="pidTuning_ManualRollRate"></th>
|
<th class="roll" data-i18n="pidTuning_ManualRollRate"></th>
|
||||||
<td class="roll">
|
<td class="roll">
|
||||||
<div class="pidTuning_number"><input type="number" class="rate-tpa_input" data-setting="manual_roll_rate" data-unit="percent" /></div>
|
<div class="pidTuning_number"><input id="rate-manual-roll" type="number" class="rate-tpa_input" data-setting="manual_roll_rate" data-unit="percent" /></div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="pitch" data-i18n="pidTuning_ManualPitchRate"></th>
|
<th class="pitch" data-i18n="pidTuning_ManualPitchRate"></th>
|
||||||
<td class="pitch">
|
<td class="pitch">
|
||||||
<div class="pidTuning_number"><input type="number" class="rate-tpa_input" data-setting="manual_pitch_rate" data-unit="percent" /></div>
|
<div class="pidTuning_number"><input id="rate-manual-pitch" type="number" class="rate-tpa_input" data-setting="manual_pitch_rate" data-unit="percent" /></div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="yaw" data-i18n="pidTuning_ManualYawRate"></th>
|
<th class="yaw" data-i18n="pidTuning_ManualYawRate"></th>
|
||||||
<td class="yaw">
|
<td class="yaw">
|
||||||
<div class="pidTuning_number"><input type="number" class="rate-tpa_input" data-setting="manual_yaw_rate" data-unit="percent" /></div>
|
<div class="pidTuning_number"><input id="rate-manual-yaw" type="number" class="rate-tpa_input" data-setting="manual_yaw_rate" data-unit="percent" /></div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
|
@ -103,8 +103,8 @@ TABS.pid_tuning.initialize = function (callback) {
|
||||||
FC.RC_tuning.pitch_rate = parseFloat($('#rate-pitch').val());
|
FC.RC_tuning.pitch_rate = parseFloat($('#rate-pitch').val());
|
||||||
FC.RC_tuning.yaw_rate = parseFloat($('#rate-yaw').val());
|
FC.RC_tuning.yaw_rate = parseFloat($('#rate-yaw').val());
|
||||||
|
|
||||||
FC.RC_tuning.dynamic_THR_PID = parseInt($('#tpa').val());
|
FC.RC_tuning.dynamic_THR_PID = parseInt($('#tpaRate').val());
|
||||||
FC.RC_tuning.dynamic_THR_breakpoint = parseInt($('#tpa-breakpoint').val());
|
FC.RC_tuning.dynamic_THR_breakpoint = parseInt($('#tpaBreakpoint').val());
|
||||||
|
|
||||||
FC.RC_tuning.manual_roll_rate = $('#rate-manual-roll').val();
|
FC.RC_tuning.manual_roll_rate = $('#rate-manual-roll').val();
|
||||||
FC.RC_tuning.manual_pitch_rate = $('#rate-manual-pitch').val();
|
FC.RC_tuning.manual_pitch_rate = $('#rate-manual-pitch').val();
|
||||||
|
@ -350,7 +350,7 @@ TABS.pid_tuning.initialize = function (callback) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function saveSettings() {
|
function saveSettings() {
|
||||||
Settings.saveInputs().then(save_to_eeprom);
|
Settings.saveInputs(save_to_eeprom);
|
||||||
}
|
}
|
||||||
|
|
||||||
function save_to_eeprom() {
|
function save_to_eeprom() {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue