Как сделать логарифмическую шкалу для ionRangeSlider с контролируемым значением в центре шкалы? Просто с логарифмической шкалой разобралсяmin: 100000, max: 100000000, ... prettify: function (value) { var position = Math.floor(value / this.max * 100); var minPos = 0, maxPos = 100; var minLog = Math.log(this.min), maxLog = Math.log(this.max); // calculate adjustment factor var scale = (maxLog - minLog) / (maxPos - minPos); // round numbers var n = Math.floor(Math.exp(minLog + scale * (position - minPos))); var n = Math.log(value) / Math.log(100); console.log(n) return Math.floor(n / 100000) * 100000; }, onStart: function (data) { $("input[name=object_price]").val(data.from + " руб"); }, onChange: function (data) { $("input[name=object_price]").val(this.prettify(data.from) + " руб"); }, Но на 50% получаем 3.2млн. А нужно 5млн. Как сделать сдвиг?
Для того чтобы получить желаемое значение в центре шкалы, можно воспользоваться алгоритмом логарифмической шкалы и добавить нужное смещение.
Вы можете изменить вашу функцию prettify следующим образом, чтобы добавить смещение:
prettify: function (value) { var position = Math.log(value) / Math.log(this.max) * 100; var minPos = 0, maxPos = 100; var minLog = Math.log(this.min), maxLog = Math.log(this.max); // calculate adjustment factor var scale = (maxLog - minLog) / (maxPos - minPos); // round numbers var n = Math.exp(minLog + scale * (position - minPos)); // добавляем смещение var offset = 5000000; // желаемое значение в центре n = Math.floor(n / offset) * offset; return n; },
Здесь offset - это значение, которое вы добавляете для получения желаемого центрального значения. В данном случае, если вы хотите получить 5 млн в центре, то используйте offset = 5000000.
Теперь при использовании этой функции, вы должны получить значение близкое к 5 млн в центре логарифмической шкалы.
Для того чтобы получить желаемое значение в центре шкалы, можно воспользоваться алгоритмом логарифмической шкалы и добавить нужное смещение.
Вы можете изменить вашу функцию prettify следующим образом, чтобы добавить смещение:
prettify: function (value) {var position = Math.log(value) / Math.log(this.max) * 100;
var minPos = 0,
maxPos = 100;
var minLog = Math.log(this.min),
maxLog = Math.log(this.max);
// calculate adjustment factor
var scale = (maxLog - minLog) / (maxPos - minPos);
// round numbers
var n = Math.exp(minLog + scale * (position - minPos));
// добавляем смещение
var offset = 5000000; // желаемое значение в центре
n = Math.floor(n / offset) * offset;
return n;
},
Здесь offset - это значение, которое вы добавляете для получения желаемого центрального значения. В данном случае, если вы хотите получить 5 млн в центре, то используйте offset = 5000000.
Теперь при использовании этой функции, вы должны получить значение близкое к 5 млн в центре логарифмической шкалы.