|
|
|
@@ -4362,7 +4362,10 @@ function grabFormData(form, warnings, panels, buttons, stats, parts) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
function generateSettings() { |
|
|
|
// if diff is true, only record settings that are |
|
|
|
// different from the defaults! |
|
|
|
|
|
|
|
function generateSettings(diff=false) { |
|
|
|
let form = document.forms.namedItem("custom-species-form"); |
|
|
|
let settings = {}; |
|
|
|
|
|
|
|
@@ -4397,6 +4400,13 @@ function generateSettings() { |
|
|
|
settings[form[i].name] = form[i][form[i].selectedIndex].value; |
|
|
|
grabFormData(form[i][form[i].selectedIndex], warnings, panels, buttons, stats, parts); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (diff) { |
|
|
|
options.forEach(panel => { |
|
|
|
recurseDeletePanel(settings, panel); |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
return { |
|
|
|
@@ -4409,18 +4419,46 @@ function generateSettings() { |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
function recurseDeletePanel(settings, panel) { |
|
|
|
if (panel.id && panel.optional && !settings[panel.id]) { |
|
|
|
delete settings[panel.id]; |
|
|
|
} |
|
|
|
panel.entries.forEach(option => { |
|
|
|
if (option.type == "subcategory") { |
|
|
|
if (!settings[option.id]) { |
|
|
|
delete settings[option.id]; |
|
|
|
} |
|
|
|
recurseDeletePanel(settings, option); |
|
|
|
} else if (settings[option.id] == undefined) { |
|
|
|
delete settings[option.id]; |
|
|
|
} else if (option.type == "checkbox" && !settings[option.id]) { |
|
|
|
delete settings[option.id]; |
|
|
|
} else if (settings[option.id] == option.default && option.id != "name") { |
|
|
|
delete settings[option.id]; |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
} |
|
|
|
function clearExport() { |
|
|
|
document.getElementById("export-area").value = ""; |
|
|
|
} |
|
|
|
|
|
|
|
function exportSettings() { |
|
|
|
let settings = generateSettings()["settings"]; |
|
|
|
let settings = generateSettings(true)["settings"]; |
|
|
|
|
|
|
|
document.getElementById("export-area").value = JSON.stringify(settings); |
|
|
|
} |
|
|
|
|
|
|
|
function importSettings() { |
|
|
|
let settings = JSON.parse(document.getElementById("export-area").value); |
|
|
|
let imported = JSON.parse(document.getElementById("export-area").value); |
|
|
|
|
|
|
|
resetSettings(); |
|
|
|
|
|
|
|
let settings = generateSettings(); |
|
|
|
|
|
|
|
Object.entries(imported).forEach(([key, value]) => { |
|
|
|
settings[key] = imported[key] |
|
|
|
}); |
|
|
|
|
|
|
|
loadSettings(settings); |
|
|
|
} |
|
|
|
|