mirror of
https://github.com/betaflight/betaflight-configurator.git
synced 2025-07-16 12:55:14 +03:00
Trimmed down RX settings display to save some space on the configuration
tab.
This commit is contained in:
parent
433cc04c0e
commit
d05ded8d0e
5 changed files with 79 additions and 100 deletions
|
@ -4,10 +4,10 @@ var Features = function (config) {
|
|||
var self = this;
|
||||
|
||||
var features = [
|
||||
{bit: 0, group: 'rxMode', mode: 'group', name: 'RX_PPM'},
|
||||
{bit: 0, group: 'rxMode', mode: 'select', name: 'RX_PPM'},
|
||||
{bit: 1, group: 'batteryVoltage', name: 'VBAT'},
|
||||
{bit: 2, group: 'other', name: 'INFLIGHT_ACC_CAL'},
|
||||
{bit: 3, group: 'rxMode', mode: 'group', name: 'RX_SERIAL'},
|
||||
{bit: 3, group: 'rxMode', mode: 'select', name: 'RX_SERIAL'},
|
||||
{bit: 4, group: 'esc', name: 'MOTOR_STOP'},
|
||||
{bit: 5, group: 'other', name: 'SERVO_TILT'},
|
||||
{bit: 6, group: 'other', name: 'SOFTSERIAL', haveTip: true},
|
||||
|
@ -16,8 +16,8 @@ var Features = function (config) {
|
|||
{bit: 10, group: 'other', name: 'TELEMETRY'},
|
||||
{bit: 11, group: 'batteryCurrent', name: 'CURRENT_METER'},
|
||||
{bit: 12, group: 'other', name: '3D'},
|
||||
{bit: 13, group: 'rxMode', mode: 'group', name: 'RX_PARALLEL_PWM'},
|
||||
{bit: 14, group: 'rxMode', mode: 'group', name: 'RX_MSP'},
|
||||
{bit: 13, group: 'rxMode', mode: 'select', name: 'RX_PARALLEL_PWM'},
|
||||
{bit: 14, group: 'rxMode', mode: 'select', name: 'RX_MSP'},
|
||||
{bit: 15, group: 'rssi', name: 'RSSI_ADC'},
|
||||
{bit: 16, group: 'other', name: 'LED_STRIP'},
|
||||
{bit: 17, group: 'other', name: 'DISPLAY'},
|
||||
|
@ -96,7 +96,7 @@ Features.prototype.isEnabled = function (featureName) {
|
|||
Features.prototype.generateElements = function (featuresElements) {
|
||||
var self = this;
|
||||
|
||||
var radioGroups = [];
|
||||
var listElements = [];
|
||||
|
||||
for (var i = 0; i < self._features.length; i++) {
|
||||
var row_e;
|
||||
|
@ -106,22 +106,16 @@ Features.prototype.generateElements = function (featuresElements) {
|
|||
feature_tip_html = '<div class="helpicon cf_tip" i18n_title="feature' + self._features[i].name + 'Tip"></div>';
|
||||
}
|
||||
|
||||
if (self._features[i].mode === 'group') {
|
||||
row_e = $('<tr><td style="width: 15px;"><input style="width: 13px;" class="feature" id="feature-'
|
||||
+ i
|
||||
+ '" value="'
|
||||
+ self._features[i].bit
|
||||
+ '" title="'
|
||||
+ self._features[i].name
|
||||
+ '" type="radio" name="'
|
||||
+ self._features[i].group
|
||||
+ '" /></td><td><label for="feature-'
|
||||
+ i
|
||||
+ '">'
|
||||
+ self._features[i].name
|
||||
+ '</label></td><td><span i18n="feature' + self._features[i].name + '"></span>'
|
||||
+ feature_tip_html + '</td></tr>');
|
||||
radioGroups.push(self._features[i].group);
|
||||
if (self._features[i].mode === 'select') {
|
||||
row_e = $('<option class="feature" id="feature-'
|
||||
+ i
|
||||
+ '" name="'
|
||||
+ self._features[i].name
|
||||
+ '" value="'
|
||||
+ self._features[i].bit
|
||||
+ '" i18n="feature' + self._features[i].name + '" />');
|
||||
|
||||
listElements.push(row_e);
|
||||
} else {
|
||||
row_e = $('<tr><td><input class="feature toggle" id="feature-'
|
||||
+ i
|
||||
|
@ -149,46 +143,36 @@ Features.prototype.generateElements = function (featuresElements) {
|
|||
});
|
||||
}
|
||||
|
||||
for (var i = 0; i < radioGroups.length; i++) {
|
||||
var group = radioGroups[i];
|
||||
var controlElements = $('input[name="' + group + '"].feature');
|
||||
for (var i = 0; i < listElements.length; i++) {
|
||||
var element = listElements[i];
|
||||
var bit = parseInt(element.attr('value'));
|
||||
var state = bit_check(self._featureMask, bit);
|
||||
|
||||
controlElements.each(function() {
|
||||
var bit = parseInt($(this).attr('value'));
|
||||
var state = bit_check(self._featureMask, bit);
|
||||
|
||||
$(this).prop('checked', state);
|
||||
});
|
||||
element.prop('selected', state);
|
||||
}
|
||||
}
|
||||
|
||||
Features.prototype.updateData = function (featureElement) {
|
||||
var self = this;
|
||||
|
||||
switch (featureElement.attr('type')) {
|
||||
case 'checkbox':
|
||||
var bit = featureElement.data('bit');
|
||||
if (featureElement.attr('type') === 'checkbox') {
|
||||
var bit = featureElement.data('bit');
|
||||
|
||||
if (featureElement.is(':checked')) {
|
||||
if (featureElement.is(':checked')) {
|
||||
self._featureMask = bit_set(self._featureMask, bit);
|
||||
} else {
|
||||
self._featureMask = bit_clear(self._featureMask, bit);
|
||||
}
|
||||
} else if (featureElement.prop('localName') === 'select') {
|
||||
var controlElements = featureElement.children();
|
||||
var selectedBit = featureElement.val();
|
||||
for (var i = 0; i < controlElements.length; i++) {
|
||||
var bit = controlElements[i].value;
|
||||
if (selectedBit === bit) {
|
||||
self._featureMask = bit_set(self._featureMask, bit);
|
||||
} else {
|
||||
self._featureMask = bit_clear(self._featureMask, bit);
|
||||
}
|
||||
|
||||
break;
|
||||
case 'radio':
|
||||
var group = featureElement.attr('name');
|
||||
var controlElements = $('input[name="' + group + '"]');
|
||||
var selectedBit = controlElements.filter(':checked').val();
|
||||
controlElements.each(function() {
|
||||
var bit = $(this).val();
|
||||
if (selectedBit === bit) {
|
||||
self._featureMask = bit_set(self._featureMask, bit);
|
||||
} else {
|
||||
self._featureMask = bit_clear(self._featureMask, bit);
|
||||
}
|
||||
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue