Skip to content

Commit 7690cac

Browse files
committed
Fix Selector switch management in Scene/Group
1 parent 9fbb7c0 commit 7690cac

File tree

3 files changed

+44
-10
lines changed

3 files changed

+44
-10
lines changed

main/WebServer.cpp

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3528,9 +3528,28 @@ namespace http {
35283528
bool bIsDimmer = (
35293529
(switchtype == STYPE_Dimmer) ||
35303530
(switchtype == STYPE_BlindsPercentage) ||
3531-
(switchtype == STYPE_BlindsPercentageInverted)
3531+
(switchtype == STYPE_BlindsPercentageInverted) ||
3532+
(switchtype == STYPE_Selector)
35323533
);
35333534
root["result"][ii]["IsDimmer"] = bIsDimmer;
3535+
std::string dimmerLevels = bIsDimmer ? "all" : "none";
3536+
if (switchtype == STYPE_Selector) {
3537+
std::stringstream ss;
3538+
std::map<std::string, std::string> selectorStatuses;
3539+
GetSelectorSwitchStatuses(options, selectorStatuses);
3540+
bool levelOffHidden = options["LevelOffHidden"] == "true";
3541+
for(int i = 0; i < selectorStatuses.size(); i++) {
3542+
if (levelOffHidden && (i == 0)) {
3543+
continue;
3544+
}
3545+
if((levelOffHidden && (i > 1)) || (i > 0)) {
3546+
ss << ",";
3547+
}
3548+
ss << i * 10;
3549+
}
3550+
dimmerLevels = ss.str();
3551+
}
3552+
root["result"][ii]["DimmerLevels"] = dimmerLevels;
35343553
ii++;
35353554
}
35363555
break;

main/mainworker.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11682,6 +11682,15 @@ bool MainWorker::SwitchScene(const unsigned long long idx, const std::string &sw
1168211682
fLevel=100;
1168311683
ilevel=round(fLevel)+1;
1168411684
}
11685+
if (switchtype == STYPE_Selector) {
11686+
if (lstatus != "Set Level") {
11687+
ilevel = 0;
11688+
}
11689+
ilevel = round(ilevel/10.0f)*10; // select only multiples of 10
11690+
if (ilevel == 0) {
11691+
lstatus ="Off";
11692+
}
11693+
}
1168511694
}
1168611695

1168711696
int idx = atoi(sd[0].c_str());

www/app/ScenesController.js

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -566,24 +566,29 @@ define(['app'], function (app) {
566566
}
567567
var bShowLevel=false;
568568
var bIsLED=false;
569+
var dimmerLevels = "none";
569570
$.each($.LightsAndSwitches, function(i,item){
570571
if (item.idx==DeviceIdx) {
571572
bShowLevel=item.isdimmer;
572573
bIsLED=(item.SubType.indexOf("RGB") >= 0);
574+
dimmerLevels = item.DimmerLevels;
573575
}
574576
});
575577

578+
$("#scenecontent #LedColor").hide();
579+
$("#scenecontent #LevelDiv").hide();
576580
if (bIsLED) {
577581
$("#scenecontent #LedColor").show();
578-
$("#scenecontent #LevelDiv").hide();
579-
}
580-
else {
581-
$("#scenecontent #LedColor").hide();
582+
} else {
582583
if (bShowLevel==true) {
583-
$("#scenecontent #LevelDiv").show();
584-
}
585-
else {
586-
$("#scenecontent #LevelDiv").hide();
584+
var levelDiv$ = $("#scenecontent #LevelDiv");
585+
levelDiv$.find("option").show().end().show();
586+
if (dimmerLevels !== "all") {
587+
levelDiv$.find("option").hide();
588+
$.each(dimmerLevels.split(','), function(i, level) {
589+
levelDiv$.find("option[value=\"" + level + "\"]").show();
590+
});
591+
}
587592
}
588593
}
589594
}
@@ -718,7 +723,8 @@ define(['app'], function (app) {
718723
idx: item.idx,
719724
name: item.Name,
720725
SubType: item.SubType,
721-
isdimmer: item.IsDimmer
726+
isdimmer: item.IsDimmer,
727+
DimmerLevels: item.DimmerLevels
722728
}
723729
);
724730
});

0 commit comments

Comments
 (0)