Files
factorio-clusterio/sharedPlugins/serverManager/static/index.js
T

60 lines
2.0 KiB
JavaScript

// Handle config editing
originalSettings = {};
let settings = document.querySelectorAll(".settingInput");
settings.forEach(setting => {
let entry = setting.children[0].innerText
originalSettings[setting.children[0].innerText] = {
entry: setting.children[0].innerText,
value: setting.children[1].value,
}
setting.children[1].addEventListener("input", ()=>{
let newValue = setting.children[1].value;
if(newValue != originalSettings[entry].value){
setting.children[1].style.backgroundColor = "lightgreen";
} else {
setting.children[1].style.backgroundColor = "";
}
});
});
let submitSettings = document.querySelector("#submitSettings");
submitSettings.addEventListener("click", async ()=>{
let settings = document.querySelectorAll(".settingInput");
for(let i = 0; i < settings.length; i++){
let setting = settings[i];
let entry = setting.children[0].innerText
if(setting.children[1].value != originalSettings[entry].value){
// upload new changes, display results somehow
let status = await postJSON("/api/serverManager/editConfig", {
entry,
value: setting.children[1].value,
instanceID: getParameterByName("instanceID"),
});
if(status.ok){
setting.children[1].style.backgroundColor = "";
}
}
}
});
// Handle plugin management
let pluginStatuses = document.querySelectorAll(".pluginStatus");
pluginStatuses.forEach(pluginStatus => {
pluginStatus.addEventListener("click", async ()=>{
if(pluginStatus.style.backgroundColor == "green"){
let status = await postJSON("/api/serverManager/disablePlugin", {
instanceID: getParameterByName("instanceID"),
pluginName: pluginStatus.parentElement.children[1].children[0].innerText,
});
if(status.ok){
pluginStatus.style.backgroundColor = "red";
}
} else {
let status = await postJSON("/api/serverManager/enablePlugin", {
instanceID: getParameterByName("instanceID"),
pluginName: pluginStatus.parentElement.children[1].children[0].innerText,
});
if(status.ok){
pluginStatus.style.backgroundColor = "green";
}
}
});
});