Merge branch 'usermod-setttings' into mdev

This commit is contained in:
Ewowi
2022-09-01 22:38:33 +02:00
3 changed files with 293 additions and 228 deletions

View File

@@ -26,6 +26,34 @@
alert("Loading of configuration script failed.\nIncomplete page data!");
});
}
function isO(i) { return (i && typeof i === 'object' && !Array.isArray(i)); }
// load settings and insert values into DOM
function ldS() {
var url = (loc?`http://${locip}`:'') + '/cfg.json';
fetch(url, {
method: 'get'
})
.then(res => {
if (!res.ok) gId('lserr').style.display = "inline";
return res.json();
})
.then(json => {
umCfg = json.um;
urows="";
if (isO(umCfg)) {
for (const [k,o] of Object.entries(umCfg)) {
urows += `<button type="submit" onclick="window.location=\'./settings/um?um=${k}\'">${k} (UM)</button>`;
}
}
gId("configMenu").innerHTML = urows;
var url = (loc?`http://${locip}`:'') + '/settings/s.js?p=0';
loadJS(url, false); // If we set async false, file is loaded and executed, then next statement is processed
})
.catch((error)=>{
gId('lserr').style.display = "inline";
console.log(error);
});
}
function S(){
if (window.location.protocol == "file:") {
loc = true;
@@ -35,8 +63,8 @@
localStorage.setItem('locIp', locip);
}
}
var url = (loc?`http://${locip}`:'') + '/settings/s.js?p=0';
loadJS(url, false); // If we set async false, file is loaded and executed, then next statement is processed
//WLEDSR: add ldS and move loadJS there (like in settings_um)
ldS();
}
</script>
<style>
@@ -69,6 +97,7 @@
<button type="submit" onclick="window.location='./settings/wifi'">WiFi Setup</button>
<button type="submit" onclick="window.location='./settings/leds'">LED Preferences</button>
<button type="submit" onclick="window.location='./settings/2D'">2D Configuration</button>
<div id="configMenu">Loading...</div>
<button type="submit" onclick="window.location='./settings/ui'">User Interface</button>
<button id="dmxbtn" style="display: none;" type="submit" onclick="window.location='./settings/dmx'">DMX Output</button>
<button type="submit" onclick="window.location='./settings/sync'">Sync Interfaces</button>

View File

@@ -45,7 +45,7 @@
}
}
ldS();
if (!numM) gId("um").innerHTML = "No Usermods installed.";
if (!numM) gId("um").innerHTML = ""; //WLEDSR: Do not display no usermods installed
}
// https://stackoverflow.com/questions/3885817/how-do-i-check-that-a-number-is-float-or-integer
function isF(n) { return n === +n && n !== (n|0); }
@@ -191,10 +191,21 @@
urows="";
if (isO(umCfg)) {
for (const [k,o] of Object.entries(umCfg)) {
urows += `<hr><h3>${k}</h3>`;
addField(k,'unknown',o);
//WLEDSR: read url parameter. e.g. um=AudioReactive and if set only add the usermod with the same name
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
const userMod = urlParams.get('um')
if (userMod == "" || userMod == k) {
urows += `<div id=${k}><hr><h3>${k}</h3>`;
addField(k,'unknown',o);
urows += `</div> <!--ewowi-->`;
}
}
}
//WLEDSR: only show globalGPIOs if no usermod info is shown (url without um parameter)
gId("globalGPIOs").style.display = urows===""?"block":"none";
if (urows==="") urows = "Usermods configuration not found.<br>Press <i>Save</i> to initialize defaults.";
gId("um").innerHTML = urows;
var url = (loc?`http://${locip}`:'') + '/settings/s.js?p=8';
@@ -219,8 +230,10 @@
<div class="helpB"><button type="button" onclick="H()">?</button></div>
<button type="button" onclick="B()">Back</button><button type="submit">Save</button><br>
<span id="lssuc" style="color:green; display:none">&#10004; Configuration saved!</span>
<span id="lserr" style="color:red; display:none">&#9888; Could not load configuration.</span><hr>
<span id="lserr" style="color:red; display:none">&#9888; Could not load configuration.</span>
</div>
<div id="globalGPIOs" style="display:none;"> <!--WLEDSR: show in ldS-->
<hr>
<h2>Usermod Setup</h2>
Global I<sup>2</sup>C GPIOs (HW)<br>
<i style="color: orange;">(only changable on ESP32, change requires reboot!)</i><br>
@@ -232,6 +245,7 @@
MOSI:<input type="number" min="-1" max="33" name="MOSI" onchange="check(this,'if')" class="s" placeholder="MOSI">
MISO:<input type="number" min="-1" max="33" name="MISO" onchange="check(this,'if')" class="s" placeholder="MISO">
SCLK:<input type="number" min="-1" max="33" name="SCLK" onchange="check(this,'if')" class="s" placeholder="SCLK">
</div>
<div id="um">Loading settings...</div>
<hr><button type="button" onclick="B()">Back</button><button type="submit">Save</button>
</form>