[WebHost] weighted-settings: Added basic validation before export
This commit is contained in:
parent
71c2db0829
commit
a0ade9ea31
|
@ -837,11 +837,17 @@ const updateGameSetting = (event) => {
|
||||||
|
|
||||||
const exportSettings = () => {
|
const exportSettings = () => {
|
||||||
const settings = JSON.parse(localStorage.getItem('weighted-settings'));
|
const settings = JSON.parse(localStorage.getItem('weighted-settings'));
|
||||||
if (!settings.name || settings.name.trim().length === 0 || settings.name.toLowerCase().trim() === 'player') {
|
|
||||||
const userMessage = document.getElementById('user-message');
|
const userMessage = document.getElementById('user-message');
|
||||||
|
let errorMessage = null;
|
||||||
|
|
||||||
|
// User must choose a name for their file
|
||||||
|
if (!settings.name || settings.name.trim().length === 0 || settings.name.toLowerCase().trim() === 'player') {
|
||||||
userMessage.innerText = 'You forgot to set your player name at the top of the page!';
|
userMessage.innerText = 'You forgot to set your player name at the top of the page!';
|
||||||
userMessage.classList.add('visible');
|
userMessage.classList.add('visible');
|
||||||
window.scrollTo(0, 0);
|
userMessage.scrollIntoView({
|
||||||
|
behavior: 'smooth',
|
||||||
|
block: 'start',
|
||||||
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -854,6 +860,10 @@ const exportSettings = () => {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Object.keys(settings.game).length === 0) {
|
||||||
|
errorMessage = 'You have not chosen a game to play!';
|
||||||
|
}
|
||||||
|
|
||||||
// Remove any disabled options
|
// Remove any disabled options
|
||||||
Object.keys(settings[game]).forEach((setting) => {
|
Object.keys(settings[game]).forEach((setting) => {
|
||||||
Object.keys(settings[game][setting]).forEach((option) => {
|
Object.keys(settings[game][setting]).forEach((option) => {
|
||||||
|
@ -861,9 +871,27 @@ const exportSettings = () => {
|
||||||
delete settings[game][setting][option];
|
delete settings[game][setting][option];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (Object.keys(settings[game][setting]).length === 0 && !Array.isArray(settings[game][setting])) {
|
||||||
|
errorMessage = `${game} // ${setting} has no values above zero!`;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// If an error occurred, alert the user and do not export the file
|
||||||
|
if (errorMessage) {
|
||||||
|
userMessage.innerText = errorMessage;
|
||||||
|
userMessage.classList.add('visible');
|
||||||
|
userMessage.scrollIntoView({
|
||||||
|
behavior: 'smooth',
|
||||||
|
block: 'start',
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If no error occurred, hide the user message if it is visible
|
||||||
|
userMessage.classList.remove('visible');
|
||||||
|
|
||||||
const yamlText = jsyaml.safeDump(settings, { noCompatMode: true }).replaceAll(/'(\d+)':/g, (x, y) => `${y}:`);
|
const yamlText = jsyaml.safeDump(settings, { noCompatMode: true }).replaceAll(/'(\d+)':/g, (x, y) => `${y}:`);
|
||||||
download(`${document.getElementById('player-name').value}.yaml`, yamlText);
|
download(`${document.getElementById('player-name').value}.yaml`, yamlText);
|
||||||
};
|
};
|
||||||
|
@ -894,7 +922,10 @@ const generateGame = (raceMode = false) => {
|
||||||
userMessage.innerText += ' ' + error.response.data.text;
|
userMessage.innerText += ' ' + error.response.data.text;
|
||||||
}
|
}
|
||||||
userMessage.classList.add('visible');
|
userMessage.classList.add('visible');
|
||||||
window.scrollTo(0, 0);
|
userMessage.scrollIntoView({
|
||||||
|
behavior: 'smooth',
|
||||||
|
block: 'start',
|
||||||
|
});
|
||||||
console.error(error);
|
console.error(error);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue