1
0
Fork 0
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:
Pawel Spychalski (DzikuVx) 2023-10-04 16:17:11 +02:00
parent 6b27637214
commit a4aa4ee6f4
6 changed files with 190 additions and 82 deletions

View file

@ -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();