make a more generic ExponentialInput and use that for the sample_rate input

This commit is contained in:
Jakob Ketterl
2021-02-27 23:14:41 +01:00
parent 7a0c934af5
commit 0537e23e38
5 changed files with 22 additions and 19 deletions

View File

@ -0,0 +1,39 @@
$.fn.exponentialInput = function() {
var suffixes = {
"K": 3,
"M": 6,
"G": 9,
"T": 12
};
this.each(function(){
var $group = $(this);
var currentExponent = 0;
var $input = $group.find('input');
var setExponent = function() {
var newExponent = parseInt($exponent.val());
var delta = currentExponent - newExponent;
$input.val(parseFloat($input.val()) * 10 ** delta);
currentExponent = newExponent;
};
$input.on('keydown', function(e) {
var c = String.fromCharCode(e.which);
if (c in suffixes) {
currentExponent = suffixes[c];
$exponent.val(suffixes[c]);
}
});
var $exponent = $group.find('select.exponent');
$exponent.on('change', setExponent);
// calculate initial exponent
var value = parseFloat($input.val());
if (!Number.isNaN(value)) {
$exponent.val(Math.floor(Math.log10(value) / 3) * 3);
setExponent();
}
})
};