Skip to content

Commit 72eb619

Browse files
committed
Dynamically show hidden color slots for * palettes
Disable Blynk by default in release builds Single quote strings everywhere for classList
1 parent d7b5719 commit 72eb619

File tree

4 files changed

+1976
-1971
lines changed

4 files changed

+1976
-1971
lines changed

platformio.ini

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ platform = ${common.platform_wled_default}
285285
platform_packages = ${common.platform_packages}
286286
board_build.ldscript = ${common.ldscript_4m1m}
287287
build_unflags = ${common.build_unflags}
288-
build_flags = ${common.build_flags_esp8266} -D WLED_RELEASE_NAME=ESP8266 #-DWLED_DISABLE_2D
288+
build_flags = ${common.build_flags_esp8266} -D WLED_RELEASE_NAME=ESP8266 -D WLED_DISABLE_BLYNK #-DWLED_DISABLE_2D
289289
lib_deps = ${esp8266.lib_deps}
290290
monitor_filters = esp8266_exception_decoder
291291

@@ -295,7 +295,7 @@ platform = ${common.platform_wled_default}
295295
platform_packages = ${common.platform_packages}
296296
board_build.ldscript = ${common.ldscript_2m512k}
297297
build_unflags = ${common.build_unflags}
298-
build_flags = ${common.build_flags_esp8266} -D WLED_RELEASE_NAME=ESP02
298+
build_flags = ${common.build_flags_esp8266} -D WLED_RELEASE_NAME=ESP02 -D WLED_DISABLE_BLYNK
299299
lib_deps = ${esp8266.lib_deps}
300300

301301
[env:esp01_1m_full]
@@ -304,7 +304,7 @@ platform = ${common.platform_wled_default}
304304
platform_packages = ${common.platform_packages}
305305
board_build.ldscript = ${common.ldscript_1m128k}
306306
build_unflags = ${common.build_unflags}
307-
build_flags = ${common.build_flags_esp8266} -D WLED_RELEASE_NAME=ESP01 -D WLED_DISABLE_OTA
307+
build_flags = ${common.build_flags_esp8266} -D WLED_RELEASE_NAME=ESP01 -D WLED_DISABLE_OTA -D WLED_DISABLE_BLYNK
308308
lib_deps = ${esp8266.lib_deps}
309309

310310
[env:esp07]
@@ -350,7 +350,7 @@ board = esp32dev
350350
platform = ${esp32.platform}
351351
platform_packages = ${esp32.platform_packages}
352352
build_unflags = ${common.build_unflags}
353-
build_flags = ${common.build_flags_esp32} -D WLED_RELEASE_NAME=ESP32 #-D WLED_DISABLE_BLYNK #-D WLED_DISABLE_BROWNOUT_DET
353+
build_flags = ${common.build_flags_esp32} -D WLED_RELEASE_NAME=ESP32 -D WLED_DISABLE_BLYNK #-D WLED_DISABLE_BROWNOUT_DET
354354
lib_deps = ${esp32.lib_deps}
355355
monitor_filters = esp32_exception_decoder
356356
board_build.partitions = ${esp32.default_partitions}
@@ -360,7 +360,7 @@ board = esp32dev
360360
platform = ${esp32.platform}
361361
platform_packages = ${esp32.platform_packages}
362362
build_unflags = ${common.build_unflags}
363-
build_flags = ${common.build_flags_esp32} -D WLED_RELEASE_NAME=ESP32_qio80 #-D WLED_DISABLE_BLYNK #-D WLED_DISABLE_BROWNOUT_DET
363+
build_flags = ${common.build_flags_esp32} -D WLED_RELEASE_NAME=ESP32_qio80 -D WLED_DISABLE_BLYNK #-D WLED_DISABLE_BROWNOUT_DET
364364
lib_deps = ${esp32.lib_deps}
365365
monitor_filters = esp32_exception_decoder
366366
board_build.partitions = ${esp32.default_partitions}

wled00/data/index.js

Lines changed: 60 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -273,9 +273,9 @@ function onLoad()
273273
function updateTablinks(tabI)
274274
{
275275
var tablinks = gEBCN("tablinks");
276-
for (var i of tablinks) i.classList.remove("active");
276+
for (var i of tablinks) i.classList.remove('active');
277277
if (pcMode) return;
278-
tablinks[tabI].classList.add("active");
278+
tablinks[tabI].classList.add('active');
279279
}
280280

281281
function openTab(tabI, force = false)
@@ -291,13 +291,13 @@ var timeout;
291291
function showToast(text, error = false)
292292
{
293293
if (error) gId('connind').style.backgroundColor = "var(--c-r)";
294-
var x = gId("toast");
294+
var x = gId('toast');
295295
//if (error) text += '<i class="icons btn-icon" style="transform:rotate(45deg);position:absolute;top:10px;right:0px;" onclick="clearErrorToast(100);">&#xe18a;</i>';
296296
x.innerHTML = text;
297-
x.classList.add(error ? "error":"show");
297+
x.classList.add(error ? 'error':'show');
298298
clearTimeout(timeout);
299299
x.style.animation = 'none';
300-
timeout = setTimeout(()=>{ x.classList.remove("show"); }, 2900);
300+
timeout = setTimeout(()=>{ x.classList.remove('show'); }, 2900);
301301
if (error) console.log(text);
302302
}
303303

@@ -308,12 +308,12 @@ function showErrorToast()
308308

309309
function clearErrorToast(n=5000)
310310
{
311-
var x = gId("toast");
312-
if (x.classList.contains("error")) {
311+
var x = gId('toast');
312+
if (x.classList.contains('error')) {
313313
clearTimeout(timeout);
314314
timeout = setTimeout(()=>{
315-
x.classList.remove("show");
316-
x.classList.remove("error");
315+
x.classList.remove('show');
316+
x.classList.remove('error');
317317
}, n);
318318
}
319319
}
@@ -544,8 +544,8 @@ function populateQL()
544544
for (var key of (pQL||[])) {
545545
cn += `<button class="btn btn-xs psts" id="p${key[0]}qlb" title="${key[2]?key[2]:''}" onclick="setPreset(${key[0]});">${key[1]}</button>`;
546546
}
547-
gId('pql').classList.add("expanded");
548-
} else gId('pql').classList.remove("expanded");
547+
gId('pql').classList.add('expanded');
548+
} else gId('pql').classList.remove('expanded');
549549
gId('pql').innerHTML = cn;
550550
}
551551

@@ -610,8 +610,8 @@ function parseInfo(i) {
610610
mh = i.leds.matrix ? i.leds.matrix.h : 0;
611611
isM = mw>0 && mh>0;
612612
if (!isM) {
613-
gId("filter1D").classList.add("hide");
614-
//gId("filter2D").classList.add("hide");
613+
gId("filter1D").classList.add('hide');
614+
//gId("filter2D").classList.add('hide');
615615
hideModes("2D");
616616
}
617617
// if (i.noaudio) {
@@ -697,7 +697,7 @@ function populateSegments(s)
697697
if (i > lSeg) lSeg = i;
698698

699699
let sg = gId(`seg${i}`);
700-
let exp = sg ? (sg.classList.contains("expanded") || (i===0 && cfg.comp.segexp)) : false;
700+
let exp = sg ? (sg.classList.contains('expanded') || (i===0 && cfg.comp.segexp)) : false;
701701

702702
let segp = `<div id="segp${i}" class="sbs">
703703
<i class="icons e-icon pwr ${inst.on ? "act":""}" id="seg${i}pwr" onclick="setSegPwr(${i})">&#xe08f;</i>
@@ -812,9 +812,9 @@ function populateSegments(s)
812812
for (const k of (li.maps||[])) cont += `<option value="${k}">${k==0?'Default':'ledmap'+k+'.json'}</option>`;
813813
cont += "</select></div>";
814814
gId("ledmap").innerHTML = cont;
815-
gId("ledmap").classList.remove("hide");
815+
gId("ledmap").classList.remove('hide');
816816
} else {
817-
gId("ledmap").classList.add("hide");
817+
gId("ledmap").classList.add('hide');
818818
}
819819
}
820820

@@ -1057,20 +1057,20 @@ function updateLen(s)
10571057
let tPL = gId(`seg${s}lbtm`);
10581058
if (stop-start>1 && stopY-startY>1) {
10591059
// 2D segment
1060-
if (tPL) tPL.classList.remove("hide"); // unhide transpose checkbox
1060+
if (tPL) tPL.classList.remove('hide'); // unhide transpose checkbox
10611061
let sE = gId('fxlist').querySelector(`.lstI[data-id="${selectedFx}"]`);
10621062
if (sE) {
10631063
let sN = sE.querySelector(".lstIname").innerText;
10641064
let seg = gId(`seg${s}map2D`);
10651065
if (seg) {
1066-
if(sN.indexOf("\u25A6")<0) seg.classList.remove("hide"); // unhide mapping for 1D effects (| in name)
1067-
else seg.classList.add("hide"); // hide mapping otherwise
1066+
if(sN.indexOf("\u25A6")<0) seg.classList.remove('hide'); // unhide mapping for 1D effects (| in name)
1067+
else seg.classList.add('hide'); // hide mapping otherwise
10681068
}
10691069
}
10701070
} else {
10711071
// 1D segment in 2D set-up
10721072
if (tPL) {
1073-
tPL.classList.add("hide"); // hide transpose checkbox
1073+
tPL.classList.add('hide'); // hide transpose checkbox
10741074
gId(`seg${s}tp`).checked = false; // and uncheck it
10751075
}
10761076
}
@@ -1102,7 +1102,7 @@ function updatePA()
11021102
ps = gEBCN("psts"); for (let p of ps) p.classList.remove('selected');
11031103
if (currentPreset > 0) {
11041104
var acv = gId(`p${currentPreset}o`);
1105-
if (acv /*&& !acv.classList.contains("expanded")*/) {
1105+
if (acv /*&& !acv.classList.contains('expanded')*/) {
11061106
acv.classList.add('selected');
11071107
/*
11081108
// scroll selected preset into view (on WS refresh)
@@ -1119,13 +1119,13 @@ function updatePA()
11191119

11201120
function updateUI()
11211121
{
1122-
gId('buttonPower').className = (isOn) ? "active":"";
1123-
gId('buttonNl').className = (nlA) ? "active":"";
1124-
gId('buttonSync').className = (syncSend) ? "active":"";
1122+
gId('buttonPower').className = (isOn) ? 'active':'';
1123+
gId('buttonNl').className = (nlA) ? 'active':'';
1124+
gId('buttonSync').className = (syncSend) ? 'active':'';
11251125
showNodes();
11261126

1127-
updateSelectedPalette();
11281127
updateSelectedFx();
1128+
updateSelectedPalette(selectedPal); // must be after updateSelectedFx() to un-hide color slots for * palettes
11291129

11301130
updateTrail(gId('sliderBri'));
11311131
updateTrail(gId('sliderSpeed'));
@@ -1159,17 +1159,27 @@ function updateUI()
11591159
updatePSliders();
11601160
}
11611161

1162-
function updateSelectedPalette()
1162+
function updateSelectedPalette(s)
11631163
{
11641164
var parent = gId('pallist');
1165-
var selPaletteInput = parent.querySelector(`input[name="palette"][value="${selectedPal}"]`);
1165+
var selPaletteInput = parent.querySelector(`input[name="palette"][value="${s}"]`);
11661166
if (selPaletteInput) selPaletteInput.checked = true;
11671167

11681168
var selElement = parent.querySelector('.selected');
11691169
if (selElement) selElement.classList.remove('selected');
11701170

1171-
var selectedPalette = parent.querySelector(`.lstI[data-id="${selectedPal}"]`);
1172-
if (selectedPalette) parent.querySelector(`.lstI[data-id="${selectedPal}"]`).classList.add('selected');
1171+
var selectedPalette = parent.querySelector(`.lstI[data-id="${s}"]`);
1172+
if (selectedPalette) parent.querySelector(`.lstI[data-id="${s}"]`).classList.add('selected');
1173+
1174+
// in case of special palettes (* Colors...), force show color selectors (if hidden by effect data)
1175+
let cd = gId('csl').children; // color selectors
1176+
if (s > 1 && s < 6) {
1177+
cd[0].classList.remove('hide'); // * Color 1
1178+
if (s > 2) cd[1].classList.remove('hide'); // * Color 1 & 2
1179+
if (s == 5) cd[2].classList.remove('hide'); // all colors
1180+
} else {
1181+
for (let i of cd) if (i.dataset.hide == '1') i.classList.add('hide');
1182+
}
11731183
}
11741184

11751185
function updateSelectedFx()
@@ -1191,9 +1201,9 @@ function updateSelectedFx()
11911201

11921202
var selectedName = selectedEffect.querySelector(".lstIname").innerText;
11931203
var segs = gId("segcont").querySelectorAll(`div[data-map="map2D"]`);
1194-
for (const seg of segs) if (selectedName.indexOf("\u25A6")<0) seg.classList.remove("hide"); else seg.classList.add("hide");
1204+
for (const seg of segs) if (selectedName.indexOf("\u25A6")<0) seg.classList.remove('hide'); else seg.classList.add('hide');
11951205
var segs = gId("segcont").querySelectorAll(`div[data-snd="si"]`);
1196-
for (const seg of segs) if (selectedName.indexOf("\u266A")<0 && selectedName.indexOf("\266B")<0) seg.classList.add("hide"); else seg.classList.remove("hide"); // also "♫ "?
1206+
for (const seg of segs) if (selectedName.indexOf("\u266A")<0 && selectedName.indexOf("\266B")<0) seg.classList.add('hide'); else seg.classList.remove('hide'); // also "♫ "?
11971207
}
11981208
}
11991209

@@ -1394,9 +1404,9 @@ function setEffectParameters(idx)
13941404
else if (i==0) label.innerHTML = "Effect speed";
13951405
else if (i==1) label.innerHTML = "Effect intensity";
13961406
else label.innerHTML = "Custom" + (i-1);
1397-
slider.classList.remove("hide");
1407+
slider.classList.remove('hide');
13981408
} else {
1399-
slider.classList.add("hide");
1409+
slider.classList.add('hide');
14001410
}
14011411
}
14021412
if (slOnOff.length>5) { // up to 3 checkboxes
@@ -1422,14 +1432,14 @@ function setEffectParameters(idx)
14221432
// set html color items on/off
14231433
var cslLabel = '';
14241434
var sep = '';
1425-
var hide = true;
14261435
var cslCnt = 0, oCsel = csel;
14271436
for (let i=0; i<gId("csl").children.length; i++) {
14281437
var btn = gId("csl" + i);
14291438
// if no controlDefined or coOnOff has a value
14301439
if (coOnOff.length>i && coOnOff[i] != "") {
1431-
btn.style.display = "inline";
1432-
if (coOnOff.length>i && coOnOff[i] != "!") {
1440+
btn.classList.remove('hide');
1441+
btn.dataset.hide = 0;
1442+
if (coOnOff[i] != "!") {
14331443
var abbreviation = coOnOff[i].substr(0,2);
14341444
btn.innerHTML = abbreviation;
14351445
if (abbreviation != coOnOff[i]) {
@@ -1440,17 +1450,18 @@ function setEffectParameters(idx)
14401450
else if (i==0) btn.innerHTML = "Fx";
14411451
else if (i==1) btn.innerHTML = "Bg";
14421452
else btn.innerHTML = "Cs";
1443-
hide = false;
14441453
if (!cslCnt || oCsel==i) selectSlot(i); // select 1st displayed slot or old one
14451454
cslCnt++;
14461455
} else if (!controlDefined) { // if no controls then all buttons should be shown for color 1..3
1447-
btn.style.display = "inline";
1456+
btn.classList.remove('hide');
1457+
btn.dataset.hide = 0;
14481458
btn.innerHTML = `${i+1}`;
1449-
hide = false;
14501459
if (!cslCnt || oCsel==i) selectSlot(i); // select 1st displayed slot or old one
14511460
cslCnt++;
14521461
} else {
1453-
btn.style.display = "none";
1462+
btn.classList.add('hide');
1463+
btn.dataset.hide = 1;
1464+
btn.innerHTML = `${i+1}`; // name hidden buttons 1..3 for * palettes
14541465
}
14551466
}
14561467
gId("cslLabel").innerHTML = cslLabel;
@@ -1474,13 +1485,6 @@ function setEffectParameters(idx)
14741485
pall.innerHTML = '<i class="icons sel-icon" onclick="tglHex()">&#xe2b3;</i> Color palette not used';
14751486
palw.style.display = "none";
14761487
}
1477-
// not all color selectors shown, hide palettes created from color selectors
1478-
for (let e of (gId('pallist').querySelectorAll('.lstI')||[])) {
1479-
let fltr = "* C";
1480-
if (cslCnt==1 && csel==0) fltr = "* Colors";
1481-
else if (cslCnt==2) fltr = "* Colors Only";
1482-
if (cslCnt < 3 && e.querySelector('.lstIname').innerText.indexOf(fltr)>=0) e.classList.add('hide'); else e.classList.remove('hide');
1483-
}
14841488
}
14851489

14861490
var jsonTimeout;
@@ -1949,7 +1953,7 @@ function tglSegn(s)
19491953
{
19501954
let t = gId(s<100?`seg${s}t`:`p${s-100}txt`);
19511955
if (t) {
1952-
t.classList.toggle("show");
1956+
t.classList.toggle('show');
19531957
t.focus();
19541958
t.select();
19551959
}
@@ -1991,7 +1995,7 @@ function rptSeg(s)
19911995
var rev = gId(`seg${s}rev`).checked;
19921996
var mi = gId(`seg${s}mi`).checked;
19931997
var sel = gId(`seg${s}sel`).checked;
1994-
var pwr = gId(`seg${s}pwr`).classList.contains("act");
1998+
var pwr = gId(`seg${s}pwr`).classList.contains('act');
19951999
var obj = {"seg": {"id": s, "n": name, "start": start, "stop": (cfg.comp.seglen?start:0)+stop, "rev": rev, "mi": mi, "on": pwr, "bri": parseInt(gId(`seg${s}bri`).value), "sel": sel}};
19962000
if (gId(`seg${s}grp`)) {
19972001
var grp = parseInt(gId(`seg${s}grp`).value);
@@ -2102,7 +2106,7 @@ function setTp(s)
21022106

21032107
function setSegPwr(s)
21042108
{
2105-
var pwr = gId(`seg${s}pwr`).classList.contains("act");
2109+
var pwr = gId(`seg${s}pwr`).classList.contains('act');
21062110
var obj = {"seg": {"id": s, "on": !pwr}};
21072111
requestJson(obj);
21082112
}
@@ -2296,7 +2300,7 @@ function delP(i) {
22962300
requestJson(obj);
22972301
delete pJson[i];
22982302
populatePresets();
2299-
gId('putil').classList.add("staybot");
2303+
gId('putil').classList.add('staybot');
23002304
} else {
23012305
bt.style.color = "var(--c-r)";
23022306
bt.innerHTML = "<i class='icons btn-icon'>&#xe037;</i>Delete!";
@@ -2571,7 +2575,7 @@ function hideModes(txt)
25712575
let f = false;
25722576
if (txt==="2D") f = iT.indexOf("\u25A6") >= 0 && iT.indexOf("\u22EE") < 0; // 2D && !1D
25732577
else f = iT.indexOf(txt) >= 0;
2574-
if (f) e.classList.add("hide"); //else e.classList.remove("hide");
2578+
if (f) e.classList.add('hide'); //else e.classList.remove('hide');
25752579
}
25762580
}
25772581

@@ -2642,9 +2646,9 @@ function expand(i)
26422646
{
26432647
var seg = i<100 ? gId('seg' +i) : gId(`p${i-100}o`);
26442648
let ps = gId("pcont").children; // preset wrapper
2645-
if (i>100) for (let p of ps) { p.classList.remove("selected"); if (p!==seg) p.classList.remove("expanded"); } // collapse all other presets & remove selected
2649+
if (i>100) for (let p of ps) { p.classList.remove('selected'); if (p!==seg) p.classList.remove('expanded'); } // collapse all other presets & remove selected
26462650

2647-
seg.classList.toggle("expanded");
2651+
seg.classList.toggle('expanded');
26482652

26492653
// presets
26502654
if (i >= 100) {
@@ -2666,11 +2670,11 @@ function expand(i)
26662670
gId(`p${p}api`).value = papi;
26672671
if (papi.indexOf("Please") == 0) gId(`p${p}cstgl`).checked = false;
26682672
tglCs(p);
2669-
gId('putil').classList.remove("staybot");
2673+
gId('putil').classList.remove('staybot');
26702674
} else {
26712675
updatePA();
26722676
gId('seg' +i).innerHTML = "";
2673-
gId('putil').classList.add("staybot");
2677+
gId('putil').classList.add('staybot');
26742678
}
26752679
}
26762680

0 commit comments

Comments
 (0)