WebHost: Fix weighted-settings to not save full set of range options to localStorage (#1100)
This commit is contained in:
parent
265ee7098a
commit
47b4e2782b
|
@ -78,13 +78,16 @@ const createDefaultSettings = (settingData) => {
|
||||||
break;
|
break;
|
||||||
case 'range':
|
case 'range':
|
||||||
case 'special_range':
|
case 'special_range':
|
||||||
for (let i = setting.min; i <= setting.max; ++i){
|
newSettings[game][gameSetting][setting.min] = 0;
|
||||||
newSettings[game][gameSetting][i] =
|
newSettings[game][gameSetting][setting.max] = 0;
|
||||||
(setting.hasOwnProperty('defaultValue') && setting.defaultValue === i) ? 25 : 0;
|
|
||||||
}
|
|
||||||
newSettings[game][gameSetting]['random'] = 0;
|
newSettings[game][gameSetting]['random'] = 0;
|
||||||
newSettings[game][gameSetting]['random-low'] = 0;
|
newSettings[game][gameSetting]['random-low'] = 0;
|
||||||
newSettings[game][gameSetting]['random-high'] = 0;
|
newSettings[game][gameSetting]['random-high'] = 0;
|
||||||
|
if (setting.hasOwnProperty('defaultValue')) {
|
||||||
|
newSettings[game][gameSetting][setting.defaultValue] = 25;
|
||||||
|
} else {
|
||||||
|
newSettings[game][gameSetting][setting.min] = 25;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'items-list':
|
case 'items-list':
|
||||||
|
@ -401,11 +404,17 @@ const buildWeightedSettingsDiv = (game, settings) => {
|
||||||
tr.appendChild(tdDelete);
|
tr.appendChild(tdDelete);
|
||||||
|
|
||||||
rangeTbody.appendChild(tr);
|
rangeTbody.appendChild(tr);
|
||||||
|
|
||||||
|
// Save new option to settings
|
||||||
|
range.dispatchEvent(new Event('change'));
|
||||||
});
|
});
|
||||||
|
|
||||||
Object.keys(currentSettings[game][settingName]).forEach((option) => {
|
Object.keys(currentSettings[game][settingName]).forEach((option) => {
|
||||||
if (currentSettings[game][settingName][option] > 0) {
|
// These options are statically generated below, and should always appear even if they are deleted
|
||||||
const tr = document.createElement('tr');
|
// from localStorage
|
||||||
|
if (['random-low', 'random', 'random-high'].includes(option)) { return; }
|
||||||
|
|
||||||
|
const tr = document.createElement('tr');
|
||||||
const tdLeft = document.createElement('td');
|
const tdLeft = document.createElement('td');
|
||||||
tdLeft.classList.add('td-left');
|
tdLeft.classList.add('td-left');
|
||||||
tdLeft.innerText = option;
|
tdLeft.innerText = option;
|
||||||
|
@ -439,14 +448,15 @@ const buildWeightedSettingsDiv = (game, settings) => {
|
||||||
deleteButton.innerText = '❌';
|
deleteButton.innerText = '❌';
|
||||||
deleteButton.addEventListener('click', () => {
|
deleteButton.addEventListener('click', () => {
|
||||||
range.value = 0;
|
range.value = 0;
|
||||||
range.dispatchEvent(new Event('change'));
|
const changeEvent = new Event('change');
|
||||||
|
changeEvent.action = 'rangeDelete';
|
||||||
|
range.dispatchEvent(changeEvent);
|
||||||
rangeTbody.removeChild(tr);
|
rangeTbody.removeChild(tr);
|
||||||
});
|
});
|
||||||
tdDelete.appendChild(deleteButton);
|
tdDelete.appendChild(deleteButton);
|
||||||
tr.appendChild(tdDelete);
|
tr.appendChild(tdDelete);
|
||||||
|
|
||||||
rangeTbody.appendChild(tr);
|
rangeTbody.appendChild(tr);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -904,8 +914,12 @@ const updateGameSetting = (evt) => {
|
||||||
const setting = evt.target.getAttribute('data-setting');
|
const setting = evt.target.getAttribute('data-setting');
|
||||||
const option = evt.target.getAttribute('data-option');
|
const option = evt.target.getAttribute('data-option');
|
||||||
document.getElementById(`${game}-${setting}-${option}`).innerText = evt.target.value;
|
document.getElementById(`${game}-${setting}-${option}`).innerText = evt.target.value;
|
||||||
options[game][setting][option] = isNaN(evt.target.value) ?
|
console.log(event);
|
||||||
evt.target.value : parseInt(evt.target.value, 10);
|
if (evt.action && evt.action === 'rangeDelete') {
|
||||||
|
delete options[game][setting][option];
|
||||||
|
} else {
|
||||||
|
options[game][setting][option] = parseInt(evt.target.value, 10);
|
||||||
|
}
|
||||||
localStorage.setItem('weighted-settings', JSON.stringify(options));
|
localStorage.setItem('weighted-settings', JSON.stringify(options));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue