Reset number inputs to default value on focus loss

This commit is contained in:
Wuzzy 2023-10-28 08:56:01 +02:00
parent 6f55d3a67b
commit 8ba69fea5e

View File

@ -105,6 +105,9 @@ const MGV6_FREQ_SNOW = -0.4
const MGV6_FREQ_TAIGA = 0.5
const MGV6_FREQ_JUNGLE = 0.5
// For mgv6_freq_desert setting
const MGV6_FREQ_DESERT_DEFAULT = 0.45
/* Status variables for the diagram calculations */
// The current biome mode; which type of biome system
@ -1982,7 +1985,14 @@ function handleBiomeNumberInput(biomeValueName, element) {
}
onChangeBiomeValueWidget(biomeValueName, val);
}
function handleBiomeNumberBlur(biomeValueName, element, defaultValue) {
let val = +element.value;
if (element.value === "" || typeof val !== "number") {
val = defaultValue;
element.value = defaultValue;
}
onChangeBiomeValueWidget(biomeValueName, val);
}
inputHeat.oninput = function() {
handleBiomeNumberInput("heat", this);
}
@ -1998,6 +2008,18 @@ inputMaxY.oninput = function() {
inputBiomeName.oninput = function() {
onChangeBiomeValueWidget("name", this.value);
}
inputHeat.onblur = function() {
handleBiomeNumberBlur("heat", this, 0);
}
inputHumidity.onblur = function() {
handleBiomeNumberBlur("humidity", this, 0);
}
inputMinY.onblur = function() {
handleBiomeNumberBlur("min_y", this, -31000);
}
inputMaxY.onblur = function() {
handleBiomeNumberBlur("max_y", this, 31000);
}
/* Diagram view settings events */
@ -2010,6 +2032,16 @@ inputViewY.oninput = function() {
draw(true);
updateAltitudeText();
}
inputViewY.onblur = function() {
let y = +this.value;
if (y === null || this.value === "") {
this.value = 0;
viewY = 0;
draw(true);
updateAltitudeText();
}
}
inputCheckboxNames.onchange = function() {
showNames = this.checked;
draw(false);
@ -2047,6 +2079,14 @@ inputV6FreqDesert.oninput = function() {
v6_freq_desert = f;
draw(true);
}
inputV6FreqDesert.onblur = function() {
let f = +this.value;
if (f === null || this.value === "") {
v6_freq_desert = MGV6_FREQ_DESERT_DEFAULT;
this.value = v6_freq_desert;
draw(true);
}
}
/* Noise parameters events */
@ -2060,30 +2100,38 @@ function updateNoiseParam(noiseName, noiseValueName, element) {
updateAreaVars();
draw(true);
}
function blurNoiseParam(noiseName, noiseValueName, element, defaultValue) {
let val = +element.value;
if (element.value === "" || val === null) {
val = defaultValue;
element.value = val;
noises[noiseName][noiseValueName] = val;
clear();
updateAreaVars();
draw(true);
}
}
inputNoiseHeatScale.oninput = function() {
updateNoiseParam("heat", "scale", this);
}
inputNoiseHeatOffset.oninput = function() {
updateNoiseParam("heat", "offset", this);
}
inputNoiseHeatPersistence.oninput = function() {
updateNoiseParam("heat", "persistence", this);
}
inputNoiseHeatOctaves.oninput = function() {
updateNoiseParam("heat", "octaves", this);
}
inputNoiseHumidityScale.oninput = function() {
updateNoiseParam("humidity", "scale", this);
}
inputNoiseHumidityOffset.oninput = function() {
updateNoiseParam("humidity", "offset", this);
}
inputNoiseHumidityPersistence.oninput = function() {
updateNoiseParam("humidity", "persistence", this);
}
inputNoiseHumidityOctaves.oninput = function() {
updateNoiseParam("humidity", "octaves", this);
let noiseWidgetTable = [
{ elem: inputNoiseHeatScale, noise: "heat", noise_param: "scale", default_modern: NOISE_SCALE_DEFAULT, default_v6: NOISE_V6_HEAT_SCALE_DEFAULT },
{ elem: inputNoiseHeatOffset, noise: "heat", noise_param: "offset", default_modern: NOISE_OFFSET_DEFAULT, default_v6: NOISE_V6_HEAT_OFFSET_DEFAULT },
{ elem: inputNoiseHeatOctaves, noise: "heat", noise_param: "octaves", default_modern: NOISE_OCTAVES_DEFAULT, default_v6: NOISE_V6_HEAT_OCTAVES_DEFAULT },
{ elem: inputNoiseHeatPersistence, noise: "heat", noise_param: "persistence", default_modern: NOISE_PERSISTENCE_DEFAULT, default_v6: NOISE_V6_HEAT_PERSISTENCE_DEFAULT },
{ elem: inputNoiseHumidityScale, noise: "humidity", noise_param: "scale", default_modern: NOISE_SCALE_DEFAULT, default_v6: NOISE_V6_HUMIDITY_SCALE_DEFAULT },
{ elem: inputNoiseHumidityOffset, noise: "humidity", noise_param: "offset", default_modern: NOISE_OFFSET_DEFAULT, default_v6: NOISE_V6_HUMIDITY_OFFSET_DEFAULT },
{ elem: inputNoiseHumidityOctaves, noise: "humidity", noise_param: "octaves", default_modern: NOISE_OCTAVES_DEFAULT, default_v6: NOISE_V6_HUMIDITY_OCTAVES_DEFAULT },
{ elem: inputNoiseHumidityPersistence, noise: "humidity", noise_param: "persistence", default_modern: NOISE_PERSISTENCE_DEFAULT, default_v6: NOISE_V6_HUMIDITY_PERSISTENCE_DEFAULT },
]
for (let n of noiseWidgetTable) {
n.elem.oninput = function() {
updateNoiseParam(n.noise, n.noise_param, this);
}
n.elem.onblur = function() {
let noiseElem = n.noise + "_" + biomeMode;
let defaultValue = n["default_" + biomeMode];
blurNoiseParam(n.noise, n.noise_param, this, defaultValue);
}
}
inputNoiseReset.onclick = function() {