mirror of
https://github.com/iNavFlight/inav-configurator.git
synced 2025-07-13 11:29:53 +03:00
Rate dynamics sliders
This commit is contained in:
parent
6b27637214
commit
a4aa4ee6f4
6 changed files with 190 additions and 82 deletions
84
js/gui.js
84
js/gui.js
|
@ -394,5 +394,89 @@ GUI_control.prototype.renderLogicConditionSelect = function ($container, logicCo
|
|||
$select.val(current).change(onChange);
|
||||
}
|
||||
|
||||
GUI_control.prototype.sliderize = function ($input, value, min, max) {
|
||||
let scaledMax;
|
||||
let scaledMin;
|
||||
let scalingThreshold;
|
||||
|
||||
if ($input.data('normal-max')) {
|
||||
scaledMax = max * 2;
|
||||
scalingThreshold = Math.round(scaledMax * 0.8);
|
||||
scaledMin = min *2;
|
||||
} else {
|
||||
scaledMax = max;
|
||||
scaledMin = min;
|
||||
scalingThreshold = scaledMax;
|
||||
}
|
||||
|
||||
let $range = $('<input type="range" min="' + scaledMin + '" max="' + scaledMax + '" value="' + value + '"/>');
|
||||
if ($input.data('step')) {
|
||||
$range.attr('step', $input.data('step'));
|
||||
}
|
||||
$range.css({
|
||||
'display': 'block',
|
||||
'flex-grow': 100,
|
||||
'margin-left': '1em',
|
||||
'margin-right': '1em',
|
||||
});
|
||||
|
||||
$input.attr('min', min);
|
||||
$input.attr('max', max);
|
||||
$input.val(parseInt(value));
|
||||
$input.css({
|
||||
'width': 'auto',
|
||||
'min-width': '75px',
|
||||
});
|
||||
|
||||
$input.parent().css({
|
||||
'display': 'flex',
|
||||
'width': '100%'
|
||||
});
|
||||
$range.insertAfter($input);
|
||||
|
||||
$input.parent().find('.helpicon').css({
|
||||
'top': '5px',
|
||||
'left': '-10px'
|
||||
});
|
||||
|
||||
/*
|
||||
* Update slider to input
|
||||
*/
|
||||
$range.on('input', function() {
|
||||
let val = $(this).val();
|
||||
let normalMax = parseInt($input.data('normal-max'));
|
||||
|
||||
if (normalMax) {
|
||||
if (val <= scalingThreshold) {
|
||||
val = scaleRangeInt(val, scaledMin, scalingThreshold, min, normalMax);
|
||||
} else {
|
||||
val = scaleRangeInt(val, scalingThreshold + 1, scaledMax, normalMax + 1, max);
|
||||
}
|
||||
}
|
||||
|
||||
$input.val(val);
|
||||
});
|
||||
|
||||
$input.on('change', function() {
|
||||
|
||||
let val = $(this).val();
|
||||
let newVal;
|
||||
let normalMax = parseInt($input.data('normal-max'));
|
||||
if (normalMax) {
|
||||
if (val <= normalMax) {
|
||||
newVal = scaleRangeInt(val, min, normalMax, scaledMin, scalingThreshold);
|
||||
} else {
|
||||
newVal = scaleRangeInt(val, normalMax + 1, max, scalingThreshold + 1, scaledMax);
|
||||
}
|
||||
} else {
|
||||
newVal = val;
|
||||
}
|
||||
|
||||
$range.val(newVal);
|
||||
});
|
||||
|
||||
$input.trigger('change');
|
||||
};
|
||||
|
||||
// initialize object into GUI variable
|
||||
var GUI = new GUI_control();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue