From 7c196c524e234f9c2192ff59152dd60d52a6c319 Mon Sep 17 00:00:00 2001 From: Will Tatam Date: Tue, 17 Jun 2025 19:37:04 +0100 Subject: [PATCH 1/4] Port from WLED-MM - author ewoudwijma@gmail.com --- wled00/data/index.htm | 3 + wled00/data/index.js | 128 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 131 insertions(+) diff --git a/wled00/data/index.htm b/wled00/data/index.htm index 3716f7ccd8..fc864641ef 100644 --- a/wled00/data/index.htm +++ b/wled00/data/index.htm @@ -331,6 +331,9 @@ + + +
Made with ❤︎ by Aircoookie and the WLED community diff --git a/wled00/data/index.js b/wled00/data/index.js index 295a3403b4..c2f13362f7 100644 --- a/wled00/data/index.js +++ b/wled00/data/index.js @@ -3306,6 +3306,134 @@ function simplifyUI() { gId("btns").style.display = "none"; } + +function genPresets() +{ + var result = ""; + var sep = "{"; + + var effects = eJson; + var playlistPS = JSON.parse("{}"); + var playlistSep = JSON.parse("{}"); + var playlistDur = JSON.parse("{}"); + var playlistTrans = JSON.parse("{}"); + var playlistQL = JSON.parse("{}"); + function addToPlaylist(m, id, ql = undefined) { + if (!playlistPS[m]) playlistPS[m] = ""; + if (!playlistDur[m]) playlistDur[m] = ""; + if (!playlistTrans[m]) playlistTrans[m] = ""; + if (!playlistSep[m]) playlistSep[m] = ""; + playlistPS[m] += playlistSep[m] + `${id}`; + playlistDur[m] += playlistSep[m] + "100"; + playlistTrans[m] += playlistSep[m] + "7"; + playlistSep[m] = ","; + if(ql) playlistQL[m] = `${ql}`; + } + var seq=230; //Playlist start here + for (let ef of effects) { + if (ef.name.indexOf("RSVD") < 0) { + if (Array.isArray(fxdata) && fxdata.length>ef.id) { + let fd = fxdata[ef.id]; + let eP = (fd == '')?[]:fd.split(";"); // effect parameters + let m = (eP.length<4 || eP[3]==='')?'1':eP[3]; // flags + // console.log(ef, eP); + //transform key values in json format + var defaultString = ""; + //if key/values defined, convert them to json in defaultString + if (eP.length>4) { + let defaults = (eP[4] == '')?[]:eP[4].split(","); + for (let i=0; i= 400)}); + req.addEventListener('error', function(e){showToast(e.stack,true);}); + req.open("POST", "/upload"); + var formData = new FormData(); + + var blob = new Blob([text], {type : 'application/text'}); + var fileOfBlob = new File([blob], name); + formData.append("upload", fileOfBlob); + + req.send(formData); +} + +function savePresetsGen() +{ + if (!confirm('Are you sure to (over)write presets.json?')) return; + + uploadFileWithText("/presets.json", gId("presetsGen").value); +} + +function savePresetsGen() +{ + if (!confirm('Are you sure to (over)write presets.json?')) return; + + uploadFileWithText("/presets.json", gId("presetsGen").value); +} + + size(); _C.style.setProperty('--n', N); From 64f4d14fc6937a0605ef71156e46a72e76a9d30c Mon Sep 17 00:00:00 2001 From: Will Tatam Date: Tue, 17 Jun 2025 19:44:39 +0100 Subject: [PATCH 2/4] Add Particle System playlist --- wled00/data/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/wled00/data/index.js b/wled00/data/index.js index c2f13362f7..a481acf29f 100644 --- a/wled00/data/index.js +++ b/wled00/data/index.js @@ -3375,6 +3375,7 @@ function genPresets() } addToPlaylist("All", ef.id, "ALL"); if(ef.name.startsWith("Y💡")) addToPlaylist("AnimARTrix", ef.id, "AM"); + if(ef.name.startsWith("PS ")) addToPlaylist("Particle System", ef.id, "PS"); if (m.includes("1")) addToPlaylist("All 1D", ef.id, "1D"); if (m.includes("2")) addToPlaylist("All 2D", ef.id, "2D"); From 0bc8be333caab40fd7e72f00dff7ad43912fc2b2 Mon Sep 17 00:00:00 2001 From: netmindz Date: Tue, 17 Jun 2025 19:06:24 +0000 Subject: [PATCH 3/4] Update wled00/data/index.js Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- wled00/data/index.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/wled00/data/index.js b/wled00/data/index.js index c2f13362f7..8f5277ba0b 100644 --- a/wled00/data/index.js +++ b/wled00/data/index.js @@ -3426,12 +3426,7 @@ function savePresetsGen() uploadFileWithText("/presets.json", gId("presetsGen").value); } -function savePresetsGen() -{ - if (!confirm('Are you sure to (over)write presets.json?')) return; - - uploadFileWithText("/presets.json", gId("presetsGen").value); -} +// (duplicate savePresetsGen removed) size(); From 57c94b5d755db078cf5746543c2b711a0320593d Mon Sep 17 00:00:00 2001 From: Will Tatam Date: Sun, 22 Jun 2025 16:39:43 +0100 Subject: [PATCH 4/4] refacor genPresets --- wled00/data/index.js | 168 +++++++++++++++++++------------------------ 1 file changed, 73 insertions(+), 95 deletions(-) diff --git a/wled00/data/index.js b/wled00/data/index.js index a481acf29f..d48adddb33 100644 --- a/wled00/data/index.js +++ b/wled00/data/index.js @@ -3307,101 +3307,79 @@ function simplifyUI() { } -function genPresets() -{ - var result = ""; - var sep = "{"; - - var effects = eJson; - var playlistPS = JSON.parse("{}"); - var playlistSep = JSON.parse("{}"); - var playlistDur = JSON.parse("{}"); - var playlistTrans = JSON.parse("{}"); - var playlistQL = JSON.parse("{}"); - function addToPlaylist(m, id, ql = undefined) { - if (!playlistPS[m]) playlistPS[m] = ""; - if (!playlistDur[m]) playlistDur[m] = ""; - if (!playlistTrans[m]) playlistTrans[m] = ""; - if (!playlistSep[m]) playlistSep[m] = ""; - playlistPS[m] += playlistSep[m] + `${id}`; - playlistDur[m] += playlistSep[m] + "100"; - playlistTrans[m] += playlistSep[m] + "7"; - playlistSep[m] = ","; - if(ql) playlistQL[m] = `${ql}`; - } - var seq=230; //Playlist start here - for (let ef of effects) { - if (ef.name.indexOf("RSVD") < 0) { - if (Array.isArray(fxdata) && fxdata.length>ef.id) { - let fd = fxdata[ef.id]; - let eP = (fd == '')?[]:fd.split(";"); // effect parameters - let m = (eP.length<4 || eP[3]==='')?'1':eP[3]; // flags - // console.log(ef, eP); - //transform key values in json format - var defaultString = ""; - //if key/values defined, convert them to json in defaultString - if (eP.length>4) { - let defaults = (eP[4] == '')?[]:eP[4].split(","); - for (let i=0; i ef.id) { + let fd = fxdata[ef.id]; + let eP = fd === '' ? [] : fd.split(";"); + let m = (eP.length < 4 || eP[3] === '') ? '1' : eP[3]; + + // Build defaultString + let defaultString = ""; + if (eP.length > 4) { + let defaults = eP[4] === '' ? [] : eP[4].split(","); + for (let d of defaults) { + if (!d) continue; + let [k, v] = d.split("="); + defaultString += `,"${k}":${v}`; + } + } + const defaults = [ + ["sx", 128], ["ix", 128], ["c1", 128], ["c2", 128], ["c3", 16], + ["o1", 0], ["o2", 0], ["o3", 0], ["pal", 11] + ]; + for (let [k, v] of defaults) { + if (!defaultString.includes(k)) defaultString += `,"${k}":${v}`; + } + if (!defaultString.includes("m12") && m.includes("1") && !m.includes("1.5") && !m.includes("12")) + defaultString += ',"rev":true,"mi":true,"rY":true,"mY":true,"m12":2'; + else { + for (let k of ["rev", "mi", "rY", "mY"]) + if (!defaultString.includes(k)) defaultString += `,"${k}":false`; + } + + result += `${sep}"${ef.id}":{"n":"${ef.name}","mainseg":0,"seg":[{"id":0,"fx":${ef.id}${defaultString}}]}`; + sep = "\n,"; + + if (m.length <= 3) addToPlaylist(m, ef.id, m); + else addToPlaylist(m, ef.id); + addToPlaylist("All", ef.id, "ALL"); + if (ef.name.startsWith("Y💡")) addToPlaylist("AnimARTrix", ef.id, "AM"); + if (ef.name.startsWith("PS ")) addToPlaylist("Particle System", ef.id, "PS"); + if (m.includes("1")) addToPlaylist("All 1D", ef.id, "1D"); + if (m.includes("2")) addToPlaylist("All 2D", ef.id, "2D"); + + seq = Math.max(seq, parseInt(ef.id) + 1); + } + } + + for (const m in playlistData) { + const pl = playlistData[m]; + const ql = pl.ql || seq; + result += `\n,"${seq}":{"n":"${m} Playlist","ql":"${ql}","on":true,"playlist":{"ps":[${pl.ps.join()}],"dur":[${pl.dur.join()}],"transition":[${pl.trans.join()}],"repeat":0,"end":0,"r":1}}`; + seq++; + } + + result += "}"; + + gId("genPresets").hidden = true; + gId("savePresetsGen").hidden = false; + gId("presetsGen").hidden = false; + gId("presetsGen").value = result; }