Added left and right drapery pulls.

This commit is contained in:
Robert Strouse 2023-09-04 12:34:52 -07:00
parent 90b247e7d8
commit ac835305cb
7 changed files with 149 additions and 9 deletions

View file

@ -2137,8 +2137,16 @@ bool SomfyShade::fromJSON(JsonObject &obj) {
if(obj["shadeType"].is<const char *>()) {
if(strncmp(obj["shadeType"].as<const char *>(), "roller", 7) == 0)
this->shadeType = shade_types::roller;
else if(strncmp(obj["shadeType"].as<const char *>(), "drapery", 8) == 0)
this->shadeType = shade_types::drapery;
else if(strncmp(obj["shadeType"].as<const char *>(), "ldrapery", 9) == 0)
this->shadeType = shade_types::ldrapery;
else if(strncmp(obj["shadeType"].as<const char *>(), "rdrapery", 9) == 0)
this->shadeType = shade_types::rdrapery;
else if(strncmp(obj["shadeType"].as<const char *>(), "cdrapery", 9) == 0)
this->shadeType = shade_types::cdrapery;
else if(strncmp(obj["shadeType"].as<const char *>(), "garage1", 7) == 0)
this->shadeType = shade_types::garage1;
else if(strncmp(obj["shadeType"].as<const char *>(), "garage3", 7) == 0)
this->shadeType = shade_types::garage3;
else if(strncmp(obj["shadeType"].as<const char *>(), "blind", 5) == 0)
this->shadeType = shade_types::blind;
else if(strncmp(obj["shadeType"].as<const char *>(), "awning", 7) == 0)

View file

@ -52,12 +52,13 @@ enum class group_types : byte {
enum class shade_types : byte {
roller = 0x00,
blind = 0x01,
drapery = 0x02,
ldrapery = 0x02,
awning = 0x03,
shutter = 0x04,
garage1 = 0x05,
garage3 = 0x06
garage3 = 0x06,
rdrapery = 0x07,
cdrapery = 0x08
};
enum class tilt_types : byte {
none = 0x00,

Binary file not shown.

Binary file not shown.

View file

@ -610,6 +610,69 @@ i.icss-window-shade {
background-size: 0.05em 0.05em;
background-color: rgba(71, 212, 255, 0);
}
i.icss-ldrapery {
width: 1.1em;
height: .9em;
background-color: transparent;
border: .05em solid transparent;
border-width: 0 .1em;
box-shadow: inset 0 0 0 .01em, inset 0 .01em 0 .07em, 0 .07em 0;
margin: .1em 0 .07em;
}
i.icss-ldrapery:before {
width: 1.1em;
height: .2em;
border-bottom: .1em solid transparent;
box-shadow: inset 0 1em, 0 0em 0 -.1em;
top: -.05em;
left: -.09em;
}
i.icss-ldrapery:after {
width: var(--shade-position, 0%);
height: calc(100% - .05em);
left: 0em;
top: 0.025em;
border-bottom: solid 0.025em gray;
border-right:solid 0.025em gray;
background-image: repeating-conic-gradient(var(--shade-color, currentColor) 0% 25%, rgba(71, 212, 255, 0) 0% 50%);
background-position: 0 0, 100% 100%;
background-size: 0.05em 0.05em;
background-color: rgba(71, 212, 255, 0);
}
i.icss-rdrapery {
width: 1.1em;
height: .9em;
background-color: transparent;
border: .05em solid transparent;
border-width: 0 .1em;
box-shadow: inset 0 0 0 .01em, inset 0 .01em 0 .07em, 0 .07em 0;
margin: .1em 0 .07em;
}
i.icss-rdrapery:before {
width: 1.1em;
height: .2em;
border-bottom: .1em solid transparent;
box-shadow: inset 0 1em, 0 0em 0 -.1em;
top: -.05em;
left: -.09em;
}
i.icss-rdrapery:after {
width: var(--shade-position, 0%);
height: calc(100% - .05em);
left: calc(100% - var(--shade-position));
top: 0.025em;
border-bottom: solid 0.025em gray;
border-left: solid 0.025em gray;
background-image: repeating-conic-gradient(var(--shade-color, currentColor) 0% 25%, rgba(71, 212, 255, 0) 0% 50%);
background-position: 0 0, 100% 100%;
background-size: 0.05em 0.05em;
background-color: rgba(71, 212, 255, 0);
}
i.icss-shutter {
width: 1.1em;
height: .75em;
@ -816,6 +879,7 @@ i.icss-awning {
background-color: transparent;
border-width: 0 0;
margin: .2em 0 .07em;
left:0.1em;
}
i.icss-awning:before {
@ -1025,7 +1089,7 @@ div.indicator-wind {
clip-path: polygon(48% 18%, 0% 95%, 110% 92%);
background:yellow;
top:30%;
left:13px;
left:.8em;
}
div.indicator-sun {
color: darkorange;

View file

@ -276,8 +276,8 @@
<div id="divSomfySettings" style="display:none;">
<div class="subtab-container"><span class="selected" data-grpid="divSomfyMotors">Shades</span><span data-grpid="divSomfyGroups">Groups</span></div>
<div id="divSomfyMotors" class="subtab-content" style="padding-top:10px;">
<div style="font-size:.8em;">Drag each item to set the order in which they appear in the list.</div>
<div id="divShadeListContainer">
<div style="font-size:.8em;">Drag each item to set the order in which they appear in the list.</div>
<div id="divShadeList" class="edit-motorlist"></div>
<div class="button-container">
<button id="btnAddShade" type="button" onclick="somfy.openEditShade();">
@ -312,7 +312,8 @@
<option value="0">Roller Shade</option>
<option value="4">Shutter</option>
<option value="1">Blind</option>
<option value="2">Drapery</option>
<option value="2">Drapery (left)</option>
<option value="7">Drapery (Right)</option>
<option value="3">Awning</option>
<option value="5">Garage (1-button)</option>
<option value="6">Garage (3-button)</option>
@ -457,8 +458,8 @@
</div>
</div>
<div id="divSomfyGroups" class="subtab-content" style="display:none;padding-top:10px;">
<div style="font-size:.8em;">Drag each item to set the order in which they appear in the list.</div>
<div id="divGroupListContainer">
<div style="font-size:.8em;">Drag each item to set the order in which they appear in the list.</div>
<div id="divGroupList" class="edit-grouplist"></div>
<div class="button-container">
<button id="btnAddGroup" type="button" onclick="somfy.openEditGroup();">

View file

@ -1959,6 +1959,9 @@ class Somfy {
case 1:
divCtl += ' icss-window-blind';
break;
case 2:
divCtl += ' icss-ldrapery';
break;
case 3:
divCtl += ' icss-awning';
break;
@ -1969,6 +1972,12 @@ class Somfy {
case 6:
divCtl += ' icss-garage';
break;
case 7:
divCtl += ' icss-rdrapery';
break;
case 8:
divCtl += ' icss-cdrapery';
break;
default:
divCtl += ' icss-window-shade';
break;
@ -2529,14 +2538,32 @@ class Somfy {
case 1:
document.getElementById('divTiltSettings').style.display = '';
if (ico.classList.contains('icss-window-shade')) ico.classList.remove('icss-window-shade');
if (ico.classList.contains('icss-ldrapery')) ico.classList.remove('icss-ldrapery');
if (ico.classList.contains('icss-rdrapery')) ico.classList.remove('icss-rdrapery');
if (ico.classList.contains('icss-cdrapery')) ico.classList.remove('icss-cdrapery');
if (ico.classList.contains('icss-awning')) ico.classList.remove('icss-awning');
if (ico.classList.contains('icss-shutter')) ico.classList.remove('icss-shutter');
if (!ico.classList.contains('icss-window-blind')) ico.classList.add('icss-window-blind');
if (ico.classList.contains('icss-garage')) ico.classList.remove('icss-garage');
break;
case 2:
document.getElementById('divTiltSettings').style.display = 'none';
if (ico.classList.contains('icss-window-shade')) ico.classList.remove('icss-window-shade');
if (!ico.classList.contains('icss-ldrapery')) ico.classList.add('icss-ldrapery');
if (ico.classList.contains('icss-rdrapery')) ico.classList.remove('icss-rdrapery');
if (ico.classList.contains('icss-cdrapery')) ico.classList.remove('icss-cdrapery');
if (ico.classList.contains('icss-window-blind')) ico.classList.remove('icss-window-blind');
if (ico.classList.contains('icss-shutter')) ico.classList.remove('icss-shutter');
if (ico.classList.contains('icss-garage')) ico.classList.remove('icss-garage');
if (ico.classList.contains('icss-awning')) ico.classList.remove('icss-awning');
tilt = false;
break;
case 3:
document.getElementById('divTiltSettings').style.display = 'none';
if (ico.classList.contains('icss-window-shade')) ico.classList.remove('icss-window-shade');
if (ico.classList.contains('icss-ldrapery')) ico.classList.remove('icss-ldrapery');
if (ico.classList.contains('icss-rdrapery')) ico.classList.remove('icss-rdrapery');
if (ico.classList.contains('icss-cdrapery')) ico.classList.remove('icss-cdrapery');
if (ico.classList.contains('icss-window-blind')) ico.classList.remove('icss-window-blind');
if (ico.classList.contains('icss-shutter')) ico.classList.remove('icss-shutter');
if (ico.classList.contains('icss-garage')) ico.classList.remove('icss-garage');
@ -2546,6 +2573,9 @@ class Somfy {
case 4:
document.getElementById('divTiltSettings').style.display = 'none';
if (ico.classList.contains('icss-window-shade')) ico.classList.remove('icss-window-shade');
if (ico.classList.contains('icss-ldrapery')) ico.classList.remove('icss-ldrapery');
if (ico.classList.contains('icss-rdrapery')) ico.classList.remove('icss-rdrapery');
if (ico.classList.contains('icss-cdrapery')) ico.classList.remove('icss-cdrapery');
if (ico.classList.contains('icss-window-blind')) ico.classList.remove('icss-window-blind');
if (ico.classList.contains('icss-awning')) ico.classList.remove('icss-awning');
if (ico.classList.contains('icss-garage')) ico.classList.remove('icss-garage');
@ -2556,6 +2586,9 @@ class Somfy {
case 5:
document.getElementById('divTiltSettings').style.display = 'none';
if (ico.classList.contains('icss-window-shade')) ico.classList.remove('icss-window-shade');
if (ico.classList.contains('icss-ldrapery')) ico.classList.remove('icss-ldrapery');
if (ico.classList.contains('icss-rdrapery')) ico.classList.remove('icss-rdrapery');
if (ico.classList.contains('icss-cdrapery')) ico.classList.remove('icss-cdrapery');
if (ico.classList.contains('icss-window-blind')) ico.classList.remove('icss-window-blind');
if (ico.classList.contains('icss-awning')) ico.classList.remove('icss-awning');
if (ico.classList.contains('icss-shutter')) ico.classList.remove('icss-shutter');
@ -2564,9 +2597,37 @@ class Somfy {
sun = false;
tilt = false;
break;
case 7:
document.getElementById('divTiltSettings').style.display = 'none';
if (ico.classList.contains('icss-window-shade')) ico.classList.remove('icss-window-shade');
if (ico.classList.contains('icss-ldrapery')) ico.classList.remove('icss-ldrapery');
if (!ico.classList.contains('icss-rdrapery')) ico.classList.add('icss-rdrapery');
if (ico.classList.contains('icss-cdrapery')) ico.classList.remove('icss-cdrapery');
if (ico.classList.contains('icss-window-blind')) ico.classList.remove('icss-window-blind');
if (ico.classList.contains('icss-shutter')) ico.classList.remove('icss-shutter');
if (ico.classList.contains('icss-garage')) ico.classList.remove('icss-garage');
if (ico.classList.contains('icss-awning')) ico.classList.remove('icss-awning');
tilt = false;
break;
case 8:
document.getElementById('divTiltSettings').style.display = 'none';
if (ico.classList.contains('icss-window-shade')) ico.classList.remove('icss-window-shade');
if (ico.classList.contains('icss-ldrapery')) ico.classList.remove('icss-ldrapery');
if (ico.classList.contains('icss-rdrapery')) ico.classList.remove('icss-rdrapery');
if (!ico.classList.contains('icss-cdrapery')) ico.classList.add('icss-cdrapery');
if (ico.classList.contains('icss-window-blind')) ico.classList.remove('icss-window-blind');
if (ico.classList.contains('icss-shutter')) ico.classList.remove('icss-shutter');
if (ico.classList.contains('icss-garage')) ico.classList.remove('icss-garage');
if (ico.classList.contains('icss-awning')) ico.classList.remove('icss-awning');
tilt = false;
break;
default:
if (ico.classList.contains('icss-window-blind')) ico.classList.remove('icss-window-blind');
if (ico.classList.contains('icss-awning')) ico.classList.remove('icss-awning');
if (ico.classList.contains('icss-ldrapery')) ico.classList.remove('icss-ldrapery');
if (ico.classList.contains('icss-rdrapery')) ico.classList.remove('icss-rdrapery');
if (ico.classList.contains('icss-cdrapery')) ico.classList.remove('icss-cdrapery');
if (!ico.classList.contains('icss-window-shade')) ico.classList.add('icss-window-shade');
if (ico.classList.contains('icss-garage')) ico.classList.remove('icss-garage');
if (ico.classList.contains('icss-shutter')) ico.classList.remove('icss-shutter');
@ -2641,6 +2702,11 @@ class Somfy {
ico.classList.remove('icss-window-shade');
ico.classList.add('icss-window-blind');
break;
case 2:
ico.classList.remove('icss-window-shade');
ico.classList.add('icss-ldrapery');
document.getElementById('divSunSensor').style.display = '';
break;
case 3:
ico.classList.remove('icss-window-shade');
ico.classList.add('icss-awning');