Skip to content

Commit 1b19c35

Browse files
CopilotDedeHai
andcommitted
Add comprehensive UI error handling for empty segment lists
Co-authored-by: DedeHai <6280424+DedeHai@users.noreply.github.com>
1 parent 2dfea5c commit 1b19c35

File tree

1 file changed

+25
-5
lines changed

1 file changed

+25
-5
lines changed

wled00/data/index.js

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -923,12 +923,24 @@ function populateSegments(s)
923923
gId(`segr${i}`).classList.add("hide");
924924
}
925925
if (segCount < 2) {
926-
gId(`segd${lSeg}`).classList.add("hide"); // hide delete if only one segment
927-
if (parseInt(gId("seg0bri").value)==255) gId(`segp0`).classList.add("hide");
926+
// Add safety check for segment elements to prevent UI crashes
927+
const segdElement = gId(`segd${lSeg}`);
928+
if (segdElement) segdElement.classList.add("hide"); // hide delete if only one segment
929+
const seg0briElement = gId("seg0bri");
930+
const segp0Element = gId(`segp0`);
931+
if (seg0briElement && segp0Element && parseInt(seg0briElement.value)==255) segp0Element.classList.add("hide");
928932
// hide segment controls if there is only one segment in simplified UI
929933
if (simplifiedUI) gId("segcont").classList.add("hide");
930934
}
931-
if (!isM && !noNewSegs && (cfg.comp.seglen?parseInt(gId(`seg${lSeg}s`).value):0)+parseInt(gId(`seg${lSeg}e`).value)<ledCount) gId(`segr${lSeg}`).classList.remove("hide");
935+
// Add safety checks for segment control elements
936+
const segSElement = gId(`seg${lSeg}s`);
937+
const segEElement = gId(`seg${lSeg}e`);
938+
const segrElement = gId(`segr${lSeg}`);
939+
if (!isM && !noNewSegs && segSElement && segEElement && segrElement) {
940+
const segLen = cfg.comp.seglen ? parseInt(segSElement.value) : 0;
941+
const segEnd = parseInt(segEElement.value);
942+
if (segLen + segEnd < ledCount) segrElement.classList.remove("hide");
943+
}
932944
gId('segutil2').style.display = (segCount > 1) ? "block":"none"; // rsbtn parent
933945

934946
if (Array.isArray(li.maps) && li.maps.length>1) {
@@ -2264,7 +2276,9 @@ function rptSeg(s)
22642276
var rev = gId(`seg${s}rev`).checked;
22652277
var mi = gId(`seg${s}mi`).checked;
22662278
var sel = gId(`seg${s}sel`).checked;
2267-
var pwr = gId(`seg${s}pwr`).classList.contains('act');
2279+
// Add safety check for segment power element to prevent UI crashes
2280+
const segPwrElement = gId(`seg${s}pwr`);
2281+
var pwr = segPwrElement ? segPwrElement.classList.contains('act') : false;
22682282
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}};
22692283
if (gId(`seg${s}grp`)) {
22702284
var grp = parseInt(gId(`seg${s}grp`).value);
@@ -2391,7 +2405,13 @@ function setGrp(s, g)
23912405

23922406
function setSegPwr(s)
23932407
{
2394-
var pwr = gId(`seg${s}pwr`).classList.contains('act');
2408+
// Add safety check for segment power element to prevent UI crashes
2409+
const segPwrElement = gId(`seg${s}pwr`);
2410+
if (!segPwrElement) {
2411+
console.warn('Segment power element not found, skipping power toggle');
2412+
return;
2413+
}
2414+
var pwr = segPwrElement.classList.contains('act');
23952415
var obj = {"seg": {"id": s, "on": !pwr}};
23962416
requestJson(obj);
23972417
}

0 commit comments

Comments
 (0)