@@ -273,9 +273,9 @@ function onLoad()
273273function 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
281281function openTab ( tabI , force = false )
@@ -291,13 +291,13 @@ var timeout;
291291function 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);"></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
309309function 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 } )"></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
11201120function 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
11751185function 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()"></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
14861490var 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
21032107function 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'></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