Added Preset ID quick display option
This commit is contained in:
parent
faa4e7753c
commit
c53647cd18
@ -2,11 +2,16 @@
|
|||||||
|
|
||||||
### Development versions after 0.11.0 release
|
### Development versions after 0.11.0 release
|
||||||
|
|
||||||
|
#### Build 2012140
|
||||||
|
|
||||||
|
- Added Preset ID quick display option (PR #1462)
|
||||||
|
- Fixed LEDs not turning on when using gamma correct brightness and LEDPIN 2 (default)
|
||||||
|
- Fixed notifier applying main segment to selected segments on notification with FX/Col disabled
|
||||||
|
|
||||||
#### Build 2012130
|
#### Build 2012130
|
||||||
|
|
||||||
- Fixed RGBW mode not saved between reboots (fixes #1457)
|
- Fixed RGBW mode not saved between reboots (fixes #1457)
|
||||||
- Added brightness scaling in palette function for default (PR #1484)
|
- Added brightness scaling in palette function for default (PR #1484)
|
||||||
-
|
|
||||||
|
|
||||||
#### Build 2012101
|
#### Build 2012101
|
||||||
|
|
||||||
|
@ -404,16 +404,16 @@ void WS2812FX::setColor(uint8_t slot, uint32_t c) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void WS2812FX::setBrightness(uint8_t b) {
|
void WS2812FX::setBrightness(uint8_t b) {
|
||||||
|
if (gammaCorrectBri) b = gamma8(b);
|
||||||
if (_brightness == b) return;
|
if (_brightness == b) return;
|
||||||
_brightness = (gammaCorrectBri) ? gamma8(b) : b;
|
_brightness = b;
|
||||||
_segment_index = 0;
|
_segment_index = 0;
|
||||||
if (b == 0) { //unfreeze all segments on power off
|
if (_brightness == 0) { //unfreeze all segments on power off
|
||||||
for (uint8_t i = 0; i < MAX_NUM_SEGMENTS; i++)
|
for (uint8_t i = 0; i < MAX_NUM_SEGMENTS; i++)
|
||||||
{
|
{
|
||||||
_segments[i].setOption(SEG_OPTION_FREEZE, false);
|
_segments[i].setOption(SEG_OPTION_FREEZE, false);
|
||||||
}
|
}
|
||||||
#if LEDPIN == LED_BUILTIN
|
#if LEDPIN == LED_BUILTIN
|
||||||
if (!shouldStartBus)
|
|
||||||
shouldStartBus = true;
|
shouldStartBus = true;
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
|
@ -45,7 +45,7 @@
|
|||||||
//This can be useful if you want to chain multiple strings with incompatible color order
|
//This can be useful if you want to chain multiple strings with incompatible color order
|
||||||
//#define COLOR_ORDER_OVERRIDE
|
//#define COLOR_ORDER_OVERRIDE
|
||||||
#define COO_MIN 0
|
#define COO_MIN 0
|
||||||
#define COO_MAX 27 //not inclusive, this would set the override for LEDs 0-26
|
#define COO_MAX 35 //not inclusive, this would set the override for LEDs 0-26
|
||||||
#define COO_ORDER COL_ORDER_GRB
|
#define COO_ORDER COL_ORDER_GRB
|
||||||
|
|
||||||
//END CONFIGURATION
|
//END CONFIGURATION
|
||||||
|
@ -692,11 +692,11 @@ input[type=number]::-webkit-outer-spin-button {
|
|||||||
text-overflow: clip;
|
text-overflow: clip;
|
||||||
}
|
}
|
||||||
|
|
||||||
.segid {
|
.pid {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0px;
|
top: 0px;
|
||||||
left: 0px;
|
left: 0px;
|
||||||
padding: 10px 0px 0px 12px;
|
padding: 11px 0px 0px 11px;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
width: 20px;
|
width: 20px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@ -1164,7 +1164,7 @@ var pmt = 1, pmtLS = 0, pmtLast = 0;
|
|||||||
var lastinfo = {};
|
var lastinfo = {};
|
||||||
var cfg = {
|
var cfg = {
|
||||||
theme:{base:"dark", bg:{url:""}, alpha:{bg:0.6,tab:0.8}, color:{bg:""}},
|
theme:{base:"dark", bg:{url:""}, alpha:{bg:0.6,tab:0.8}, color:{bg:""}},
|
||||||
comp :{colors:{picker: true, rgb: false, quick: true, hex: false}, labels:true, pcmbot:false}
|
comp :{colors:{picker: true, rgb: false, quick: true, hex: false}, labels:true, pcmbot:false, pid:true}
|
||||||
};
|
};
|
||||||
|
|
||||||
var cpick = new iro.ColorPicker("#picker", {
|
var cpick = new iro.ColorPicker("#picker", {
|
||||||
@ -1559,9 +1559,9 @@ function populatePresets(fromls)
|
|||||||
if (qll) pQL.push([i, qll]);
|
if (qll) pQL.push([i, qll]);
|
||||||
is.push(i);
|
is.push(i);
|
||||||
|
|
||||||
cn += `<div class="seg pres" id="p${i}o">
|
cn += `<div class="seg pres" id="p${i}o">`;
|
||||||
<div class="segid">${i}</div>
|
if (cfg.comp.pid) cn += `<div class="pid">${i}</div>`;
|
||||||
<div class="segname pname" onclick="setPreset(${i})">${pName(i)}</div>
|
cn += `<div class="segname pname" onclick="setPreset(${i})">${pName(i)}</div>
|
||||||
<i class="icons e-icon flr ${expanded[i+100] ? "exp":""}" id="sege${i+100}" onclick="expand(${i+100})"></i>
|
<i class="icons e-icon flr ${expanded[i+100] ? "exp":""}" id="sege${i+100}" onclick="expand(${i+100})"></i>
|
||||||
<div class="segin" id="seg${i+100}"></div>
|
<div class="segin" id="seg${i+100}"></div>
|
||||||
</div><br>`;
|
</div><br>`;
|
||||||
|
@ -34,7 +34,7 @@ UDP Port: <input name="UP" type="number" min="1" max="65535" class="d5" required
|
|||||||
2nd Port: <input name="U2" type="number" min="1" max="65535" class="d5" required><br>
|
2nd Port: <input name="U2" type="number" min="1" max="65535" class="d5" required><br>
|
||||||
Receive <input type="checkbox" name="RB">Brightness, <input type="checkbox" name="RC">Color, and <input type="checkbox" name="RX">Effects<br>
|
Receive <input type="checkbox" name="RB">Brightness, <input type="checkbox" name="RC">Color, and <input type="checkbox" name="RX">Effects<br>
|
||||||
Send notifications on direct change: <input type="checkbox" name="SD"><br>
|
Send notifications on direct change: <input type="checkbox" name="SD"><br>
|
||||||
Send notifications on button press: <input type="checkbox" name="SB"><br>
|
Send notifications on button press or IR: <input type="checkbox" name="SB"><br>
|
||||||
Send Alexa notifications: <input type="checkbox" name="SA"><br>
|
Send Alexa notifications: <input type="checkbox" name="SA"><br>
|
||||||
Send Philips Hue change notifications: <input type="checkbox" name="SH"><br>
|
Send Philips Hue change notifications: <input type="checkbox" name="SH"><br>
|
||||||
Send Macro notifications: <input type="checkbox" name="SM"><br>
|
Send Macro notifications: <input type="checkbox" name="SM"><br>
|
||||||
|
@ -18,7 +18,8 @@
|
|||||||
"quick": "Quick color selectors",
|
"quick": "Quick color selectors",
|
||||||
"hex": "HEX color input"
|
"hex": "HEX color input"
|
||||||
},
|
},
|
||||||
"pcmbot": "Show bottom tab bar in PC mode"
|
"pcmbot": "Show bottom tab bar in PC mode",
|
||||||
|
"pid": "Show preset IDs"
|
||||||
},
|
},
|
||||||
"theme":{
|
"theme":{
|
||||||
"alpha": {
|
"alpha": {
|
||||||
@ -190,6 +191,7 @@
|
|||||||
<h3>UI Appearance</h3>
|
<h3>UI Appearance</h3>
|
||||||
<span class="l"></span>: <input type="checkbox" id="comp_labels" class="agi cb"><br>
|
<span class="l"></span>: <input type="checkbox" id="comp_labels" class="agi cb"><br>
|
||||||
<span class="l"></span>: <input type="checkbox" id="comp_pcmbot" class="agi cb"><br>
|
<span class="l"></span>: <input type="checkbox" id="comp_pcmbot" class="agi cb"><br>
|
||||||
|
<span class="l"></span>: <input type="checkbox" id="comp_pid" class="agi cb"><br>
|
||||||
I hate dark mode: <input type="checkbox" id="dm" onchange="UI()"><br>
|
I hate dark mode: <input type="checkbox" id="dm" onchange="UI()"><br>
|
||||||
<span id="idonthateyou" style="display:none"><i>Why would you? </i>🥺<br></span>
|
<span id="idonthateyou" style="display:none"><i>Why would you? </i>🥺<br></span>
|
||||||
<span class="l"></span>: <input type="number" min=0.0 max=1.0 step=0.01 id="theme_alpha_tab" class="agi"><br>
|
<span class="l"></span>: <input type="number" min=0.0 max=1.0 step=0.01 id="theme_alpha_tab" class="agi"><br>
|
||||||
|
@ -167,7 +167,7 @@ const char PAGE_settings_dmx[] PROGMEM = R"=====()=====";
|
|||||||
// Autogenerated from wled00/data/settings_ui.htm, do not edit!!
|
// Autogenerated from wled00/data/settings_ui.htm, do not edit!!
|
||||||
const char PAGE_settings_ui[] PROGMEM = R"=====(<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport"
|
const char PAGE_settings_ui[] PROGMEM = R"=====(<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport"
|
||||||
content="width=500"><title>UI Settings</title><script>
|
content="width=500"><title>UI Settings</title><script>
|
||||||
var initial_ds,initial_st,d=document,sett=null,l={comp:{labels:"Show button labels",colors:{LABEL:"Color selection methods",picker:"Color Wheel",rgb:"RGB sliders",quick:"Quick color selectors",hex:"HEX color input"},pcmbot:"Show bottom tab bar in PC mode"},theme:{alpha:{bg:"Background opacity",tab:"Button opacity"},bg:{url:"BG image URL"},color:{bg:"BG HEX color"}}};function gId(e){return d.getElementById(e)}function isObject(e){return e&&"object"==typeof e&&!Array.isArray(e)}function set(e,i,t){for(var n=i,l=e.split("_"),s=l.length,o=0;o<s-1;o++){var a=l[o];n[a]||(n[a]={}),n=n[a]}n[l[s-1]]=t}function addRec(e,t="",n=null){var l="";for(i in e){var s=t+(t?"_":"")+i;if(isObject(e[i]))n&&n[i]&&n[i].LABEL&&(l+=`<h3>${n[i].LABEL}</h3>`),l+=addRec(e[i],s,n?n[i]:null);else{var o=s;if(n&&n[i]?o=n[i]:e[i+"LABEL"]&&(o=e[i+"LABEL"]),i.indexOf("LABEL")>0)continue;var a=typeof e[i];gId(s)?("boolean"===a?gId(s).checked=e[i]:gId(s).value=e[i],gId(s).previousElementSibling.matches(".l")&&(gId(s).previousElementSibling.innerHTML=o)):"boolean"===a?l+=`${o}: <input class="agi cb" type="checkbox" id=${s} ${e[i]?"checked":""}><br>`:"number"===a?l+=`${o}: <input class="agi" type="number" id=${s} value=${e[i]}><br>`:"string"===a&&(l+=`${o}:<br><input class="agi" id=${s} value=${e[i]}><br>`)}}return l}function genForm(e){var i;i=addRec(e,"",l),gId("gen").innerHTML=i}function GetLS(){(sett=localStorage.getItem("wledUiCfg"))||(gId("lserr").style.display="inline");try{sett=JSON.parse(sett)}catch(e){sett={},gId("lserr").style.display="inline",gId("lserr").innerHTML="⚠ Settings JSON parsing failed. ("+e+")"}genForm(sett),gId("dm").checked="light"===gId("theme_base").value}function SetLS(){for(var e=d.querySelectorAll(".agi"),i=0;i<e.length;i++){var t=e[i],n=t.classList.contains("cb")?t.checked:t.value;set(t.id,sett,n),console.log(`${t.id} set to ${n}`)}try{localStorage.setItem("wledUiCfg",JSON.stringify(sett)),gId("lssuc").style.display="inline"}catch(t){gId("lssuc").style.display="none",gId("lserr").style.display="inline",gId("lserr").innerHTML="⚠ Settings JSON saving failed. ("+t+")"}}function Save(){SetLS(),d.Sf.DS.value==initial_ds&&d.Sf.ST.checked==initial_st||d.Sf.submit()}function S(){GetV(),initial_ds=d.Sf.DS.value,initial_st=d.Sf.ST.checked,GetLS()}function H(){window.open("https://github.com/Aircoookie/WLED/wiki/Settings#user-interface-settings")}function B(){window.open("/settings","_self")}function UI(){gId("idonthateyou").style.display=gId("dm").checked?"inline":"none";var e=gId("theme_base");e&&(e.value=gId("dm").checked?"light":"dark")}function GetV() {var d=document;
|
var initial_ds,initial_st,d=document,sett=null,l={comp:{labels:"Show button labels",colors:{LABEL:"Color selection methods",picker:"Color Wheel",rgb:"RGB sliders",quick:"Quick color selectors",hex:"HEX color input"},pcmbot:"Show bottom tab bar in PC mode",pid:"Show preset IDs"},theme:{alpha:{bg:"Background opacity",tab:"Button opacity"},bg:{url:"BG image URL"},color:{bg:"BG HEX color"}}};function gId(e){return d.getElementById(e)}function isObject(e){return e&&"object"==typeof e&&!Array.isArray(e)}function set(e,i,t){for(var n=i,l=e.split("_"),s=l.length,o=0;o<s-1;o++){var r=l[o];n[r]||(n[r]={}),n=n[r]}n[l[s-1]]=t}function addRec(e,t="",n=null){var l="";for(i in e){var s=t+(t?"_":"")+i;if(isObject(e[i]))n&&n[i]&&n[i].LABEL&&(l+=`<h3>${n[i].LABEL}</h3>`),l+=addRec(e[i],s,n?n[i]:null);else{var o=s;if(n&&n[i]?o=n[i]:e[i+"LABEL"]&&(o=e[i+"LABEL"]),i.indexOf("LABEL")>0)continue;var r=typeof e[i];gId(s)?("boolean"===r?gId(s).checked=e[i]:gId(s).value=e[i],gId(s).previousElementSibling.matches(".l")&&(gId(s).previousElementSibling.innerHTML=o)):"boolean"===r?l+=`${o}: <input class="agi cb" type="checkbox" id=${s} ${e[i]?"checked":""}><br>`:"number"===r?l+=`${o}: <input class="agi" type="number" id=${s} value=${e[i]}><br>`:"string"===r&&(l+=`${o}:<br><input class="agi" id=${s} value=${e[i]}><br>`)}}return l}function genForm(e){var i;i=addRec(e,"",l),gId("gen").innerHTML=i}function GetLS(){(sett=localStorage.getItem("wledUiCfg"))||(gId("lserr").style.display="inline");try{sett=JSON.parse(sett)}catch(e){sett={},gId("lserr").style.display="inline",gId("lserr").innerHTML="⚠ Settings JSON parsing failed. ("+e+")"}genForm(sett),gId("dm").checked="light"===gId("theme_base").value}function SetLS(){for(var e=d.querySelectorAll(".agi"),i=0;i<e.length;i++){var t=e[i],n=t.classList.contains("cb")?t.checked:t.value;set(t.id,sett,n),console.log(`${t.id} set to ${n}`)}try{localStorage.setItem("wledUiCfg",JSON.stringify(sett)),gId("lssuc").style.display="inline"}catch(t){gId("lssuc").style.display="none",gId("lserr").style.display="inline",gId("lserr").innerHTML="⚠ Settings JSON saving failed. ("+t+")"}}function Save(){SetLS(),d.Sf.DS.value==initial_ds&&d.Sf.ST.checked==initial_st||d.Sf.submit()}function S(){GetV(),initial_ds=d.Sf.DS.value,initial_st=d.Sf.ST.checked,GetLS()}function H(){window.open("https://github.com/Aircoookie/WLED/wiki/Settings#user-interface-settings")}function B(){window.open("/settings","_self")}function UI(){gId("idonthateyou").style.display=gId("dm").checked?"inline":"none";var e=gId("theme_base");e&&(e.value=gId("dm").checked?"light":"dark")}function GetV() {var d=document;
|
||||||
%CSS%%SCSS%</head><body onload="S()"><form
|
%CSS%%SCSS%</head><body onload="S()"><form
|
||||||
id="form_s" name="Sf" method="post"><div
|
id="form_s" name="Sf" method="post"><div
|
||||||
style="position:sticky;top:0;background-color:#222"><div class="helpB"><button
|
style="position:sticky;top:0;background-color:#222"><div class="helpB"><button
|
||||||
@ -185,11 +185,12 @@ You will need to set them again if using a different browser, device or WLED IP
|
|||||||
<br>Refresh the main UI to apply changes.</i><br><div id="gen">
|
<br>Refresh the main UI to apply changes.</i><br><div id="gen">
|
||||||
Loading settings...</div><h3>UI Appearance</h3><span class="l"></span>: <input
|
Loading settings...</div><h3>UI Appearance</h3><span class="l"></span>: <input
|
||||||
type="checkbox" id="comp_labels" class="agi cb"><br><span class="l"></span>:
|
type="checkbox" id="comp_labels" class="agi cb"><br><span class="l"></span>:
|
||||||
<input type="checkbox" id="comp_pcmbot" class="agi cb"><br>I hate dark mode:
|
<input type="checkbox" id="comp_pcmbot" class="agi cb"><br><span class="l">
|
||||||
<input type="checkbox" id="dm" onchange="UI()"><br><span id="idonthateyou"
|
</span>: <input type="checkbox" id="comp_pid" class="agi cb"><br>
|
||||||
style="display:none"><i>Why would you? </i>🥺<br></span><span class="l">
|
I hate dark mode: <input type="checkbox" id="dm" onchange="UI()"><br><span
|
||||||
</span>: <input type="number" min="0.0" max="1.0" step="0.01"
|
id="idonthateyou" style="display:none"><i>Why would you? </i>🥺<br>
|
||||||
id="theme_alpha_tab" class="agi"><br><span class="l"></span>: <input
|
</span><span class="l"></span>: <input type="number" min="0.0" max="1.0"
|
||||||
|
step="0.01" id="theme_alpha_tab" class="agi"><br><span class="l"></span>: <input
|
||||||
type="number" min="0.0" max="1.0" step="0.01" id="theme_alpha_bg" class="agi">
|
type="number" min="0.0" max="1.0" step="0.01" id="theme_alpha_bg" class="agi">
|
||||||
<br><span class="l"></span>: <input id="theme_color_bg" maxlength="9"
|
<br><span class="l"></span>: <input id="theme_color_bg" maxlength="9"
|
||||||
class="agi"><br><span class="l">BG image URL</span>: <input id="theme_bg_url"
|
class="agi"><br><span class="l">BG image URL</span>: <input id="theme_bg_url"
|
||||||
@ -219,7 +220,7 @@ type="number" min="1" max="65535" class="d5" required><br>Receive <input
|
|||||||
type="checkbox" name="RB">Brightness, <input type="checkbox" name="RC">
|
type="checkbox" name="RB">Brightness, <input type="checkbox" name="RC">
|
||||||
Color, and <input type="checkbox" name="RX">Effects<br>
|
Color, and <input type="checkbox" name="RX">Effects<br>
|
||||||
Send notifications on direct change: <input type="checkbox" name="SD"><br>
|
Send notifications on direct change: <input type="checkbox" name="SD"><br>
|
||||||
Send notifications on button press: <input type="checkbox" name="SB"><br>
|
Send notifications on button press or IR: <input type="checkbox" name="SB"><br>
|
||||||
Send Alexa notifications: <input type="checkbox" name="SA"><br>
|
Send Alexa notifications: <input type="checkbox" name="SA"><br>
|
||||||
Send Philips Hue change notifications: <input type="checkbox" name="SH"><br>
|
Send Philips Hue change notifications: <input type="checkbox" name="SH"><br>
|
||||||
Send Macro notifications: <input type="checkbox" name="SM"><br>
|
Send Macro notifications: <input type="checkbox" name="SM"><br>
|
||||||
|
3218
wled00/html_ui.h
3218
wled00/html_ui.h
File diff suppressed because it is too large
Load Diff
@ -95,9 +95,21 @@ void colorUpdated(int callMode)
|
|||||||
callMode != NOTIFIER_CALL_MODE_DIRECT_CHANGE &&
|
callMode != NOTIFIER_CALL_MODE_DIRECT_CHANGE &&
|
||||||
callMode != NOTIFIER_CALL_MODE_NO_NOTIFY) strip.applyToAllSelected = true; //if not from JSON api, which directly sets segments
|
callMode != NOTIFIER_CALL_MODE_NO_NOTIFY) strip.applyToAllSelected = true; //if not from JSON api, which directly sets segments
|
||||||
|
|
||||||
|
bool someSel = false;
|
||||||
|
|
||||||
|
if (callMode == NOTIFIER_CALL_MODE_NOTIFICATION) {
|
||||||
|
someSel = (receiveNotificationBrightness || receiveNotificationColor || receiveNotificationEffects);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Notifier: apply received FX to selected segments only if actually receiving FX
|
||||||
|
if (someSel) strip.applyToAllSelected = receiveNotificationEffects;
|
||||||
|
|
||||||
bool fxChanged = strip.setEffectConfig(effectCurrent, effectSpeed, effectIntensity, effectPalette);
|
bool fxChanged = strip.setEffectConfig(effectCurrent, effectSpeed, effectIntensity, effectPalette);
|
||||||
bool colChanged = colorChanged();
|
bool colChanged = colorChanged();
|
||||||
|
|
||||||
|
//Notifier: apply received color to selected segments only if actually receiving color
|
||||||
|
if (someSel) strip.applyToAllSelected = receiveNotificationColor;
|
||||||
|
|
||||||
if (fxChanged || colChanged)
|
if (fxChanged || colChanged)
|
||||||
{
|
{
|
||||||
if (realtimeTimeout == UINT32_MAX) realtimeTimeout = 0;
|
if (realtimeTimeout == UINT32_MAX) realtimeTimeout = 0;
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// version code in format yymmddb (b = daily build)
|
// version code in format yymmddb (b = daily build)
|
||||||
#define VERSION 2012130
|
#define VERSION 2012140
|
||||||
|
|
||||||
//uncomment this if you have a "my_config.h" file you'd like to use
|
//uncomment this if you have a "my_config.h" file you'd like to use
|
||||||
//#define WLED_USE_MY_CONFIG
|
//#define WLED_USE_MY_CONFIG
|
||||||
|
Loading…
Reference in New Issue
Block a user