diff --git a/wled00/data/settings_time.htm b/wled00/data/settings_time.htm index d8e94d634d..cc98fd1b1b 100644 --- a/wled00/data/settings_time.htm +++ b/wled00/data/settings_time.htm @@ -190,7 +190,7 @@ } } function pMP() { // populateMacroPresets - var presetOpts = '' + sortedPresetOptions; + var presetOpts = '' + sortedPresetOptions; var fields = ['A0','A1','MC','MN']; for (var f of fields) { var inp = gN(f); @@ -219,13 +219,38 @@ rPS(sel, presetOpts, "data-preset"); } } + function bAO() { // buildAnalogOptions: analog functions + per-segment opacity (segment 0 included; MD=0 => segment 0) + var o = ''; + return o; + } + function isAnalogBtn(t) { return t==7 || t==8; } // BTN_TYPE_ANALOG / BTN_TYPE_ANALOG_INVERTED + function isSwitchBtn(t) { return t==4 || t==5 || t==9; } // BTN_TYPE_SWITCH / BTN_TYPE_PIR_SENSOR / BTN_TYPE_TOUCH_SWITCH + function btnTypeName(t) { // mirrors the button type dropdown on the LED settings page + switch (+t) { + case 2: return 'Pushbutton'; + case 3: return 'Push inverted'; + case 4: return 'Switch'; + case 5: return 'PIR sensor'; + case 6: return 'Touch'; + case 7: return 'Analog'; + case 8: return 'Analog inverted'; + case 9: return 'Touch (switch)'; + default: return 'Disabled'; + } + } function rBPO() { // refreshButtonPresetOptions - var presetOpts = '' + sortedPresetOptions; + var presetOpts = '' + sortedPresetOptions; + var analogOpts = bAO(); var container = gId("macros"); if (!container) return; + // analog buttons only have an MD select (MP/ML are hidden 0 inputs); MD uses analog options, never presets var sels = container.querySelectorAll('select[name^="MP"],select[name^="ML"],select[name^="MD"]'); for (var sel of sels) { - rPS(sel, presetOpts, "data-preset"); + var bb = sel.closest ? sel.closest(".bb") : null; + var t = bb ? parseInt(bb.getAttribute("data-btype")||"0",10) : 0; + rPS(sel, isAnalogBtn(t) ? analogOpts : presetOpts, "data-preset"); } } function Wd() @@ -246,33 +271,73 @@ if (d.Sf.LTR.value==="S") { d.Sf.LT.value = -1*parseFloat(d.Sf.LT.value); } if (d.Sf.LNR.value==="W") { d.Sf.LN.value = -1*parseFloat(d.Sf.LN.value); } } - function addRow(i,p,l,d) { + function addRow(i,p,l,d,t) { + if (t===undefined) t = 0; var b = String.fromCharCode((i<10?48:55)+i); - var presetOpts = '' + sortedPresetOptions; + var presetOpts = '' + sortedPresetOptions; + var typeName = btnTypeName(t); var buttonBlock = document.createElement('div'); buttonBlock.className = 'bb'; - buttonBlock.innerHTML = ` -