Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 15 additions & 5 deletions ui/mods/msu/mod_settings/range_setting.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
var RangeSetting = function (_mod, _page, _setting, _parentDiv)
{
if (_setting.value % 1 != 0) _setting.value = parseFloat(_setting.value.toPrecision(6)); // fix for JS/Squirrel float conversion weirdness
if (_setting.value % 1 != 0) _setting.value = parseFloat(_setting.value.toPrecision(6));
if (_setting.min % 1 != 0) _setting.min = parseFloat(_setting.min.toPrecision(6));
if (_setting.max % 1 != 0) _setting.max = parseFloat(_setting.max.toPrecision(6));
if (_setting.step % 1 != 0) _setting.step = parseFloat(_setting.step.toPrecision(6));

this.data = _setting;
var self = this;

// Calculate decimal places in step for formatting
var stepString = _setting.step.toString();
var decimalPlaces = stepString.indexOf('.') !== -1 ? stepString.split('.')[1].length : 0;

this.layout = $('<div class="setting-container range-container"/>');
_parentDiv.append(this.layout);

Expand All @@ -25,23 +30,27 @@ var RangeSetting = function (_mod, _page, _setting, _parentDiv)
this.slider = $('<input class="scale-slider" type="range"/>');
this.control.append(this.slider);

this.label = $('<div class="scale-label text-font-normal font-color-subtitle">' + _setting.value + '</div>');
// Initial label set with calculated precision
this.label = $('<div class="scale-label text-font-normal font-color-subtitle">' + _setting.value.toFixed(decimalPlaces) + '</div>');
this.control.append(this.label);

this.layout.on("change", function ()
{
_setting.value = parseFloat(self.slider.val());
self.label.text('' + _setting.value);
// Update label with fixed precision on change
self.label.text(_setting.value.toFixed(decimalPlaces));
});

if (_setting.locked)
{
this.slider.attr('disabled', true);
}

// Tooltip
this.control.bindTooltip({ contentType: 'msu-generic', modId: MSU.ID, elementId: "ModSettings.Element.Tooltip", elementModId: _mod.id, settingsElementId: _setting.id });
this.title.bindTooltip({ contentType: 'msu-generic', modId: MSU.ID, elementId: "ModSettings.Element.Tooltip", elementModId: _mod.id, settingsElementId: _setting.id });

// Store precision on the object so updateValue can access it
this.precision = decimalPlaces;
this.updateValue();
};

Expand All @@ -53,7 +62,8 @@ RangeSetting.prototype.updateValue = function()
step : this.data.step
});
this.slider.val(this.data.value);
this.label.text('' + this.data.value);
// Use the stored precision for the updateValue call
this.label.text(this.data.value.toFixed(this.precision));
}

RangeSetting.prototype.unbindTooltip = function ()
Expand Down