@@ -923,12 +923,24 @@ function populateSegments(s)
923
923
gId ( `segr${ i } ` ) . classList . add ( "hide" ) ;
924
924
}
925
925
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" ) ;
928
932
// hide segment controls if there is only one segment in simplified UI
929
933
if ( simplifiedUI ) gId ( "segcont" ) . classList . add ( "hide" ) ;
930
934
}
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
+ }
932
944
gId ( 'segutil2' ) . style . display = ( segCount > 1 ) ? "block" :"none" ; // rsbtn parent
933
945
934
946
if ( Array . isArray ( li . maps ) && li . maps . length > 1 ) {
@@ -2264,7 +2276,9 @@ function rptSeg(s)
2264
2276
var rev = gId ( `seg${ s } rev` ) . checked ;
2265
2277
var mi = gId ( `seg${ s } mi` ) . checked ;
2266
2278
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 ;
2268
2282
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 } } ;
2269
2283
if ( gId ( `seg${ s } grp` ) ) {
2270
2284
var grp = parseInt ( gId ( `seg${ s } grp` ) . value ) ;
@@ -2391,7 +2405,13 @@ function setGrp(s, g)
2391
2405
2392
2406
function setSegPwr ( s )
2393
2407
{
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' ) ;
2395
2415
var obj = { "seg" : { "id" : s , "on" : ! pwr } } ;
2396
2416
requestJson ( obj ) ;
2397
2417
}
0 commit comments