mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-04 22:19:38 +00:00
old-dir-support removed, image-indexing rebuilt, smallscreen/touchpad moved to
stylesheetPrefix, menuEntries added, Extend devStateIcon, js setting of attr values in detail screen, live slider update in detail and room view git-svn-id: https://svn.fhem.de/fhem/trunk@2786 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
97c57ffd35
commit
6f307b3012
@ -85,6 +85,10 @@
|
|||||||
- feature: floorplan added js-extension from Dirk
|
- feature: floorplan added js-extension from Dirk
|
||||||
- feature: hour resolution in SVG
|
- feature: hour resolution in SVG
|
||||||
- feature: ZWave support for MULTI_CHANNEL class
|
- feature: ZWave support for MULTI_CHANNEL class
|
||||||
|
- feature: FHEMWEB: old-dir-support removed, image-indexing rebuilt,
|
||||||
|
smallscreen/touchpad moved to stylesheetPrefix, menuEntries
|
||||||
|
added, Extend devStateIcon, js setting of attr values in detail
|
||||||
|
screen, live slider update in detail and room view
|
||||||
|
|
||||||
- 2012-10-28 (5.3)
|
- 2012-10-28 (5.3)
|
||||||
- feature: added functions trim, ltrim, rtrim, UntoggleDirect,
|
- feature: added functions trim, ltrim, rtrim, UntoggleDirect,
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -19,123 +19,123 @@
|
|||||||
<div id="right">
|
<div id="right">
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
<div id="dist">
|
<div class="dist">
|
||||||
<a href="#faq1">
|
<a href="#faq1">
|
||||||
1. I get a <code>Can't call method "opened"</code> message when starting
|
1. I get a <code>Can't call method "opened"</code> message when starting
|
||||||
fhem. Why?</a>
|
fhem. Why?</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="dist">
|
<div class="dist">
|
||||||
<a href="#faq2">
|
<a href="#faq2">
|
||||||
2. I get "undefined" messages in the log after upgrading fhem.pl</a>
|
2. I get "undefined" messages in the log after upgrading fhem.pl</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="dist">
|
<div class="dist">
|
||||||
<a href="#faq3">
|
<a href="#faq3">
|
||||||
3. I switched on a FS20 device directly (without the remote), but the
|
3. I switched on a FS20 device directly (without the remote), but the
|
||||||
fhem.pl did not noticed it. Is it a bug?</a>
|
fhem.pl did not noticed it. Is it a bug?</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="dist">
|
<div class="dist">
|
||||||
<a href="#faq4">
|
<a href="#faq4">
|
||||||
4. I have some FS20/FHT/HMS devices. How do I know their housecode?</a>
|
4. I have some FS20/FHT/HMS devices. How do I know their housecode?</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="dist">
|
<div class="dist">
|
||||||
<a href="#faq5">
|
<a href="#faq5">
|
||||||
5. I have the code for my devices in the ELV notation, which contains 1,2,3
|
5. I have the code for my devices in the ELV notation, which contains 1,2,3
|
||||||
and 4, but you require a hex code. How should I convert it?</a>
|
and 4, but you require a hex code. How should I convert it?</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="dist">
|
<div class="dist">
|
||||||
<a href="#faq6">
|
<a href="#faq6">
|
||||||
6. I replaced my FHZ1X00PC, now the FHT80b's does not work anymore. Help
|
6. I replaced my FHZ1X00PC, now the FHT80b's does not work anymore. Help
|
||||||
me!</a>
|
me!</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="dist">
|
<div class="dist">
|
||||||
<a href="#faq7">
|
<a href="#faq7">
|
||||||
7. I can specify an optional ml/raincounter for a KS300. Why do you think
|
7. I can specify an optional ml/raincounter for a KS300. Why do you think
|
||||||
that 255 should be the default?</a>
|
that 255 should be the default?</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="dist">
|
<div class="dist">
|
||||||
<a href="#faq8">
|
<a href="#faq8">
|
||||||
8. The time specification of the builtin <code>at</code> command is not very flexible.
|
8. The time specification of the builtin <code>at</code> command is not very flexible.
|
||||||
Please add day/month/weekday to it.</a>
|
Please add day/month/weekday to it.</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="dist">
|
<div class="dist">
|
||||||
<a href="#faq9">
|
<a href="#faq9">
|
||||||
9. I defined my FS20STR as an FHT device, but I do not get any data from
|
9. I defined my FS20STR as an FHT device, but I do not get any data from
|
||||||
it.</a>
|
it.</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="dist">
|
<div class="dist">
|
||||||
<a href="#faq10">
|
<a href="#faq10">
|
||||||
10. How to convert the FHT80b code seen in its display to the hex code needed
|
10. How to convert the FHT80b code seen in its display to the hex code needed
|
||||||
by fhem.pl?</a>
|
by fhem.pl?</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="dist">
|
<div class="dist">
|
||||||
<a href="#faq11">
|
<a href="#faq11">
|
||||||
11. I'd like to use this sunrise/sunset stuff, can you help me?</a>
|
11. I'd like to use this sunrise/sunset stuff, can you help me?</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="dist">
|
<div class="dist">
|
||||||
<a href="#faq12">
|
<a href="#faq12">
|
||||||
12. I'd like to switch on the ventilator if the FHT tells me its too hot. How
|
12. I'd like to switch on the ventilator if the FHT tells me its too hot. How
|
||||||
to tell fhem to do that?</a>
|
to tell fhem to do that?</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="dist">
|
<div class="dist">
|
||||||
<a href="#faq13">
|
<a href="#faq13">
|
||||||
13. I'd like to see directly in the Web frontend if a window is open. How to
|
13. I'd like to see directly in the Web frontend if a window is open. How to
|
||||||
do that?</a>
|
do that?</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="dist">
|
<div class="dist">
|
||||||
<a href="#faq14">
|
<a href="#faq14">
|
||||||
14. In the summer I get a lot of "actuator:lime-protection" messages from my
|
14. In the summer I get a lot of "actuator:lime-protection" messages from my
|
||||||
FHT80b. How to switch back to the actuator:0% messages?</a>
|
FHT80b. How to switch back to the actuator:0% messages?</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="dist">
|
<div class="dist">
|
||||||
<a href="#faq15">
|
<a href="#faq15">
|
||||||
15. My notify/filelog does not work, help me!</a>
|
15. My notify/filelog does not work, help me!</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="dist">
|
<div class="dist">
|
||||||
<a href="#faq16">
|
<a href="#faq16">
|
||||||
16. Setting auto-mode from manual for the FHT won't change the desired
|
16. Setting auto-mode from manual for the FHT won't change the desired
|
||||||
temperature!</a>
|
temperature!</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="dist">
|
<div class="dist">
|
||||||
<a href="#faq17">
|
<a href="#faq17">
|
||||||
17. I have problem receiving data, I get "Bad CRC" or "Oversized
|
17. I have problem receiving data, I get "Bad CRC" or "Oversized
|
||||||
message."</a>
|
message."</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="dist">
|
<div class="dist">
|
||||||
<a href="#faq18">
|
<a href="#faq18">
|
||||||
18. My FHZ1X00PC gets all time automatically disconnected and reconnected. My
|
18. My FHZ1X00PC gets all time automatically disconnected and reconnected. My
|
||||||
log shows "USB device /dev/elv_fhz1300pc disconnected, waiting to reappear".
|
log shows "USB device /dev/elv_fhz1300pc disconnected, waiting to reappear".
|
||||||
What is wrong with my USB?</a>
|
What is wrong with my USB?</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="dist">
|
<div class="dist">
|
||||||
<a href="#faq19">
|
<a href="#faq19">
|
||||||
19. How do I set the dim100% from the at command?</a>
|
19. How do I set the dim100% from the at command?</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="dist">
|
<div class="dist">
|
||||||
<a href="#faq20">
|
<a href="#faq20">
|
||||||
20. Why do my Sunrise/Sunset times differ from the ones on website
|
20. Why do my Sunrise/Sunset times differ from the ones on website
|
||||||
XXX?</a>
|
XXX?</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="dist">
|
<div class="dist">
|
||||||
<a href="#faq21">
|
<a href="#faq21">
|
||||||
21. What is "unknown message: EOB" from a CUL device?</a>
|
21. What is "unknown message: EOB" from a CUL device?</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -165,7 +165,7 @@
|
|||||||
EM1000WZ), FHT80b, HMS, S300 (KS300, S300TH, KS555, S555TH, etc),
|
EM1000WZ), FHT80b, HMS, S300 (KS300, S300TH, KS555, S555TH, etc),
|
||||||
HomeMatic (<a href="commandref.html#CUL_HM">selected</a> devices),
|
HomeMatic (<a href="commandref.html#CUL_HM">selected</a> devices),
|
||||||
La Crosse TX2/TX3.</li>
|
La Crosse TX2/TX3.</li>
|
||||||
<div id="dist"></div>
|
<div class="dist"></div>
|
||||||
|
|
||||||
<li>Via an attached FHZ1000 or FHZ1300 access to the following protocols:
|
<li>Via an attached FHZ1000 or FHZ1300 access to the following protocols:
|
||||||
FS20 (all devices), FHT80b, HMS, KS300. <b>Note:</b> For the WLAN
|
FS20 (all devices), FHT80b, HMS, KS300. <b>Note:</b> For the WLAN
|
||||||
@ -173,84 +173,84 @@
|
|||||||
href="http://www.thinkwiki.org/wiki/User:Akw/FHZ">
|
href="http://www.thinkwiki.org/wiki/User:Akw/FHZ">
|
||||||
link</a>.
|
link</a>.
|
||||||
</li>
|
</li>
|
||||||
<div id="dist"></div>
|
<div class="dist"></div>
|
||||||
|
|
||||||
<li>reading and sending X10 events via the CM11 module (with access
|
<li>reading and sending X10 events via the CM11 module (with access
|
||||||
to a X10 computer interface)</li>
|
to a X10 computer interface)</li>
|
||||||
<div id="dist"></div>
|
<div class="dist"></div>
|
||||||
|
|
||||||
<li>S300 devices via an attached WS300</li>
|
<li>S300 devices via an attached WS300</li>
|
||||||
<div id="dist"></div>
|
<div class="dist"></div>
|
||||||
|
|
||||||
<li>EM1010PC and attached EM1000WZ, EM1000EM or EM1000GZ</li>
|
<li>EM1010PC and attached EM1000WZ, EM1000EM or EM1000GZ</li>
|
||||||
<div id="dist"></div>
|
<div class="dist"></div>
|
||||||
|
|
||||||
<li>reading attached SCIVT devices</li>
|
<li>reading attached SCIVT devices</li>
|
||||||
<div id="dist"></div>
|
<div class="dist"></div>
|
||||||
|
|
||||||
<li>reading attached M232 devices</li>
|
<li>reading attached M232 devices</li>
|
||||||
<div id="dist"></div>
|
<div class="dist"></div>
|
||||||
|
|
||||||
<li>reading attached WS2000/WS25000 devices, also via raw network
|
<li>reading attached WS2000/WS25000 devices, also via raw network
|
||||||
converters (xport)</li>
|
converters (xport)</li>
|
||||||
<div id="dist"></div>
|
<div class="dist"></div>
|
||||||
|
|
||||||
<li>extract sensor data from IPWE networked weather data receiver</li>
|
<li>extract sensor data from IPWE networked weather data receiver</li>
|
||||||
<div id="dist"></div>
|
<div class="dist"></div>
|
||||||
|
|
||||||
<li>Via an attached <a
|
<li>Via an attached <a
|
||||||
href="http://owfs.org/index.php?page=usb-ds9490r">DS9490R</a> or <a
|
href="http://owfs.org/index.php?page=usb-ds9490r">DS9490R</a> or <a
|
||||||
href="http://owfs.org/index.php?page=com-ds9097-passive">DS9097</a>
|
href="http://owfs.org/index.php?page=com-ds9097-passive">DS9097</a>
|
||||||
access to the following Dallas 1-wire sensors: DS18S20, DS1820,
|
access to the following Dallas 1-wire sensors: DS18S20, DS1820,
|
||||||
DS18B20</li>
|
DS18B20</li>
|
||||||
<div id="dist"></div>
|
<div class="dist"></div>
|
||||||
|
|
||||||
<li>Via an attached KM271 access to the Buderus Logamatic 2107</li>
|
<li>Via an attached KM271 access to the Buderus Logamatic 2107</li>
|
||||||
<div id="dist"></div>
|
<div class="dist"></div>
|
||||||
|
|
||||||
<li>Allnet devices: Allnet 3076, Temperatures sensors and Allnet 4027
|
<li>Allnet devices: Allnet 3076, Temperatures sensors and Allnet 4027
|
||||||
relay box connected to an Allnet 4000</li>
|
relay box connected to an Allnet 4000</li>
|
||||||
<div id="dist"></div>
|
<div class="dist"></div>
|
||||||
|
|
||||||
<li>Davis VantagePro2 weatherstation</li>
|
<li>Davis VantagePro2 weatherstation</li>
|
||||||
<div id="dist"></div>
|
<div class="dist"></div>
|
||||||
|
|
||||||
<li>Via the RFXCOM RFXtrx433 transceiver (433 Mhz) support for various
|
<li>Via the RFXCOM RFXtrx433 transceiver (433 Mhz) support for various
|
||||||
protocols (ANSLUT, ByeByeStandBy, Chacon EMW200, COCO, DomiaLite, Duewi,
|
protocols (ANSLUT, ByeByeStandBy, Chacon EMW200, COCO, DomiaLite, Duewi,
|
||||||
ELRO AB400/AB600, HomeEasy EU, HomeEasy UK, IMPULS, Intertechno, KD101,
|
ELRO AB400/AB600, HomeEasy EU, HomeEasy UK, IMPULS, Intertechno, KD101,
|
||||||
KlikAanKlikUit (KAKU), NEXA, Oregon Scientific, X10 security and
|
KlikAanKlikUit (KAKU), NEXA, Oregon Scientific, X10 security and
|
||||||
lighting, Visonic, Waveman, X10).</li>
|
lighting, Visonic, Waveman, X10).</li>
|
||||||
<div id="dist"></div>
|
<div class="dist"></div>
|
||||||
|
|
||||||
<li>Via the old RFXCOM USB or LAN based 433 Mhz RF receivers
|
<li>Via the old RFXCOM USB or LAN based 433 Mhz RF receivers
|
||||||
(order code 80002 and others) the following devices:
|
(order code 80002 and others) the following devices:
|
||||||
Oregon Scientific weather sensors, RFXCOM RFXMeter,
|
Oregon Scientific weather sensors, RFXCOM RFXMeter,
|
||||||
X10 security and X10 lighting devices.</li>
|
X10 security and X10 lighting devices.</li>
|
||||||
<div id="dist"></div>
|
<div class="dist"></div>
|
||||||
|
|
||||||
<li>Via the ELV USB-WDE1 access to ELV sensors KS200/KS300, S300IA,
|
<li>Via the ELV USB-WDE1 access to ELV sensors KS200/KS300, S300IA,
|
||||||
S300TH, ASH2200, PS 50 and Conrad sensors KS555, S555TH and
|
S300TH, ASH2200, PS 50 and Conrad sensors KS555, S555TH and
|
||||||
ASH555.</li>
|
ASH555.</li>
|
||||||
<div id="dist"></div>
|
<div class="dist"></div>
|
||||||
|
|
||||||
<li>Via an eQ-3 HomeMatic Lan Configurator access to selected HomeMatic
|
<li>Via an eQ-3 HomeMatic Lan Configurator access to selected HomeMatic
|
||||||
devices.
|
devices.
|
||||||
<div id="dist"></div>
|
<div class="dist"></div>
|
||||||
|
|
||||||
<li>Via the eibd or a TUL (see <a
|
<li>Via the eibd or a TUL (see <a
|
||||||
href="http://www.busware.de">www.busware.de</a>) access to the EIB/KNX
|
href="http://www.busware.de">www.busware.de</a>) access to the EIB/KNX
|
||||||
protocol.
|
protocol.
|
||||||
<div id="dist"></div>
|
<div class="dist"></div>
|
||||||
|
|
||||||
<li>Via a TCM120 (e.g. the BSC BOR) or a TCM310 (e.g. busware EUL) access
|
<li>Via a TCM120 (e.g. the BSC BOR) or a TCM310 (e.g. busware EUL) access
|
||||||
to the EnOcean protocol.
|
to the EnOcean protocol.
|
||||||
<div id="dist"></div>
|
<div class="dist"></div>
|
||||||
|
|
||||||
<li>Via a ZWave USB Dongle (e.g. the Goodway WD6001) access to the ZWave protocol.
|
<li>Via a ZWave USB Dongle (e.g. the Goodway WD6001) access to the ZWave protocol.
|
||||||
<div id="dist"></div>
|
<div class="dist"></div>
|
||||||
|
|
||||||
<div id="dist"></div>
|
<div class="dist"></div>
|
||||||
<div id="dist"></div>
|
<div class="dist"></div>
|
||||||
|
|
||||||
A detailed description is to be found in the <a
|
A detailed description is to be found in the <a
|
||||||
href="commandref.html">fhem reference</a>.
|
href="commandref.html">fhem reference</a>.
|
||||||
@ -261,26 +261,26 @@
|
|||||||
<a name="Documentation"></a>
|
<a name="Documentation"></a>
|
||||||
<h3>Documentation</h3>
|
<h3>Documentation</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<div id="dist"><a href="Heimautomatisierung-mit-fhem.pdf">
|
<div class="dist"><a href="Heimautomatisierung-mit-fhem.pdf">
|
||||||
Heimautomatisierung-mit-fhem.pdf</a> (pdf, german)</div>
|
Heimautomatisierung-mit-fhem.pdf</a> (pdf, german)</div>
|
||||||
|
|
||||||
<div id="dist"><a href="HOWTO.html">HOWTO.html</a> for a short
|
<div class="dist"><a href="HOWTO.html">HOWTO.html</a> for a short
|
||||||
installation/configuration.</div>
|
installation/configuration.</div>
|
||||||
|
|
||||||
<div id="dist"><a href="commandref.html">commandref.html</a>
|
<div class="dist"><a href="commandref.html">commandref.html</a>
|
||||||
contains a detailed description of all features/modules.</div>
|
contains a detailed description of all features/modules.</div>
|
||||||
|
|
||||||
<div id="dist">Our wiki at <a
|
<div class="dist">Our wiki at <a
|
||||||
href="http://fhemwiki.de/index.php/FHEM">fhemwiki.de</a></div>
|
href="http://fhemwiki.de/index.php/FHEM">fhemwiki.de</a></div>
|
||||||
|
|
||||||
<div id="dist">Frequently Asked Questions: <a
|
<div class="dist">Frequently Asked Questions: <a
|
||||||
href="faq.html">faq.html</a></div>
|
href="faq.html">faq.html</a></div>
|
||||||
|
|
||||||
<div id="dist">Forum: <a href="http://forum.fhem.de">
|
<div class="dist">Forum: <a href="http://forum.fhem.de">
|
||||||
http://forum.fhem.de</a><br>Although most entries are in german here,
|
http://forum.fhem.de</a><br>Although most entries are in german here,
|
||||||
don't be afraid to ask something in english.</div>
|
don't be afraid to ask something in english.</div>
|
||||||
|
|
||||||
<div id="dist"><a href="README.contrib">contrib/README</a> describes
|
<div class="dist"><a href="README.contrib">contrib/README</a> describes
|
||||||
some loosely coupled useful modules / scripts which can be used with
|
some loosely coupled useful modules / scripts which can be used with
|
||||||
fhem.</div>
|
fhem.</div>
|
||||||
|
|
||||||
|
@ -8,10 +8,10 @@ define telnetPort telnet 7072 global # our TCP/IP port
|
|||||||
define WEB FHEMWEB 8083 global
|
define WEB FHEMWEB 8083 global
|
||||||
|
|
||||||
define WEBphone FHEMWEB 8084 global
|
define WEBphone FHEMWEB 8084 global
|
||||||
attr WEBphone smallscreen
|
attr WEBphone stylesheetPrefix smallscreen
|
||||||
|
|
||||||
define WEBtablet FHEMWEB 8085 global
|
define WEBtablet FHEMWEB 8085 global
|
||||||
attr WEBtablet touchpad
|
attr WEBtablet stylesheetPrefix touchpad
|
||||||
|
|
||||||
# Fake FileLog entry, to access the fhem log from FHEMWEB
|
# Fake FileLog entry, to access the fhem log from FHEMWEB
|
||||||
define Logfile FileLog ./log/fhem-%Y-%m.log fakelog
|
define Logfile FileLog ./log/fhem-%Y-%m.log fakelog
|
||||||
|
@ -40,7 +40,8 @@ right:10px; }
|
|||||||
body>div#left { position:fixed; }
|
body>div#left { position:fixed; }
|
||||||
div#block { border:1px solid gray; background: #101010; padding:0.7em; }
|
div#block { border:1px solid gray; background: #101010; padding:0.7em; }
|
||||||
div#dist { padding-top:0.3em; }
|
div#dist { padding-top:0.3em; }
|
||||||
h2,h3,h4 { color:#EEE; line-height:1.3; margin-top:1.5em; font-family:Verdana; }
|
button.dist { margin:10px; background:transparent; border:0px; cursor:pointer; }
|
||||||
|
h2,h3,h4 { color:#EEE; line-height:1.3; margin-top:1.5em; font-family:Verdana; }
|
||||||
|
|
||||||
select.attr,input.attr,select.set,input.set { margin-bottom:10px; }
|
select.attr,input.attr,select.set,input.set { margin-bottom:10px; }
|
||||||
a img { border-style:none; }
|
a img { border-style:none; }
|
||||||
@ -53,6 +54,8 @@ select { margin-left:5px; margin-right:5px; }
|
|||||||
/* timepicker */
|
/* timepicker */
|
||||||
.set .set { margin-bottom:2px; margin-top:3px; }
|
.set .set { margin-bottom:2px; margin-top:3px; }
|
||||||
|
|
||||||
.handle { position:relative; cursor:pointer; width:50px; height:20px;
|
.handle { position:relative; cursor:pointer; width:50px;
|
||||||
line-height:20px; border:2px solid; color:white; text-align:center; }
|
height:20px; line-height:20px;
|
||||||
|
-webkit-user-select:none; -moz-user-select:none; -user-select:none;
|
||||||
|
border:2px solid; color:white; text-align:center; }
|
||||||
.downText { margin-top:2px; }
|
.downText { margin-top:2px; }
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
/*************** LONGPOLL START **************/
|
/*************** LONGPOLL START **************/
|
||||||
var FW_pollConn;
|
var FW_pollConn;
|
||||||
//The number of the next line in FW_pollConn.responseText to parse
|
var FW_curLine; // Number of the next line in FW_pollConn.responseText to parse
|
||||||
var FW_curLine;
|
|
||||||
|
|
||||||
function
|
function
|
||||||
FW_cmd(arg) /* see also FW_devState */
|
FW_cmd(arg) /* see also FW_devState */
|
||||||
@ -49,6 +48,11 @@ FW_doUpdate()
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
el = document.getElementById("slider."+d[0]);
|
||||||
|
if(el) {
|
||||||
|
var val = d[1].replace(/[^\d\.]/g, ""); // remove non numbers
|
||||||
|
Slider(el, val);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//Next time, we continue at the next line
|
//Next time, we continue at the next line
|
||||||
FW_curLine = lines.length;
|
FW_curLine = lines.length;
|
||||||
@ -85,11 +89,14 @@ FW_delayedStart()
|
|||||||
|
|
||||||
/*************** SLIDER **************/
|
/*************** SLIDER **************/
|
||||||
function
|
function
|
||||||
Slider(slider, min, stp, max, curr, cmd)
|
Slider(slider, curr)
|
||||||
{
|
{
|
||||||
var sh = slider.firstChild;
|
var sh = slider.firstChild;
|
||||||
var lastX=-1, offX=0, maxX=0, val=-1;
|
var lastX=-1, offX=0, maxX=0, val=-1;
|
||||||
min = parseFloat(min); max = parseFloat(max); stp = parseFloat(stp);
|
var min = parseFloat(slider.getAttribute("min"));
|
||||||
|
var stp = parseFloat(slider.getAttribute("stp"));
|
||||||
|
var max = parseFloat(slider.getAttribute("max"));
|
||||||
|
var cmd = slider.getAttribute("cmd");
|
||||||
|
|
||||||
function
|
function
|
||||||
init()
|
init()
|
||||||
@ -196,13 +203,15 @@ addTime(el,cmd)
|
|||||||
par.appendChild(document.createElement('br'));
|
par.appendChild(document.createElement('br'));
|
||||||
|
|
||||||
var sl = document.createElement('div');
|
var sl = document.createElement('div');
|
||||||
sl.innerHTML = '<div class="slider"><div class="handle">'+val[i]+
|
sl.innerHTML = '<div class="slider" min="0" stp='+(i==0 ? 1 : 5)+
|
||||||
|
' max='+(i==0 ? 23 : 55)+
|
||||||
|
' cmd="js:setTime(slider,"'+(i==0?"H":"M")+'",%)'+
|
||||||
|
'><div class="handle">'+val[i]+
|
||||||
'</div></div>';
|
'</div></div>';
|
||||||
par.appendChild(sl);
|
par.appendChild(sl);
|
||||||
sl.setAttribute('class', par.getAttribute('class'));
|
sl.setAttribute('class', par.getAttribute('class'));
|
||||||
|
|
||||||
Slider(sl.firstChild, 0, (i==0 ? 1 : 5), (i==0 ? 23 : 55), val[i],
|
Slider(sl.firstChild, val[i]);
|
||||||
'js:setTime(slider,"'+(i==0? "H":"M")+'",%)');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -219,13 +228,20 @@ FW_selChange(sel, list, elName)
|
|||||||
value = nv[1]; break;
|
value = nv[1]; break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var el = document.getElementsByName(elName)[0];
|
var el = document.getElementsByName(elName)[0];
|
||||||
var name = el.getAttribute('name');
|
var name = el.getAttribute('name');
|
||||||
|
|
||||||
|
var qFn, qArg;
|
||||||
|
var devName="";
|
||||||
|
if(elName.indexOf("val.attr")==0) devName = elName.substring(8);
|
||||||
|
if(elName.indexOf("val.set")==0) devName = elName.substring(7);
|
||||||
|
|
||||||
if(value==undefined) {
|
if(value==undefined) {
|
||||||
newEl = document.createElement('input');
|
newEl = document.createElement('input');
|
||||||
newEl.type='text'; newEl.size=30;
|
newEl.type='text'; newEl.size=30;
|
||||||
|
qFn = 'qArg.setAttribute("value", "%")';
|
||||||
|
qArg = newEl;
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
var vArr = value.split(",");
|
var vArr = value.split(",");
|
||||||
@ -235,9 +251,12 @@ FW_selChange(sel, list, elName)
|
|||||||
max=parseFloat(vArr[3]);
|
max=parseFloat(vArr[3]);
|
||||||
newEl = document.createElement('div');
|
newEl = document.createElement('div');
|
||||||
newEl.innerHTML=
|
newEl.innerHTML=
|
||||||
'<div class="slider"><div class="handle">'+min+'</div></div>'+
|
'<div class="slider" id="slider.'+devName+'" min="'+min+'" stp="'+stp+
|
||||||
|
'" max="'+max+'"><div class="handle">'+min+'</div></div>'+
|
||||||
'<input type="hidden" name="'+name+'" value="'+min+'">';
|
'<input type="hidden" name="'+name+'" value="'+min+'">';
|
||||||
Slider(newEl.firstChild, min, stp, max, undefined, undefined);
|
Slider(newEl.firstChild, undefined);
|
||||||
|
qFn = 'FW_querySetSlider(qArg, "%")';
|
||||||
|
qArg = newEl.firstChild;
|
||||||
|
|
||||||
} else if(vArr.length == 1 && vArr[0] == "time") {
|
} else if(vArr.length == 1 && vArr[0] == "time") {
|
||||||
newEl = document.createElement('div');
|
newEl = document.createElement('div');
|
||||||
@ -249,11 +268,55 @@ FW_selChange(sel, list, elName)
|
|||||||
for(var j=0; j < vArr.length; j++) {
|
for(var j=0; j < vArr.length; j++) {
|
||||||
newEl.options[j] = new Option(vArr[j], vArr[j]);
|
newEl.options[j] = new Option(vArr[j], vArr[j]);
|
||||||
}
|
}
|
||||||
|
qFn = 'FW_querySetSelected(qArg, "%")';
|
||||||
|
qArg = newEl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
newEl.setAttribute('class', el.getAttribute('class'));
|
newEl.setAttribute('class', el.getAttribute('class'));
|
||||||
newEl.setAttribute('name', el.getAttribute('name'));
|
newEl.setAttribute('name', name);
|
||||||
el.parentNode.replaceChild(newEl, el);
|
el.parentNode.replaceChild(newEl, el);
|
||||||
|
|
||||||
|
if((typeof qFn == "string")) {
|
||||||
|
if(elName.indexOf("val.attr")==0)
|
||||||
|
FW_queryValue('{AttrVal("'+devName+'","'+sel+'","")}', qFn, qArg);
|
||||||
|
if(elName.indexOf("val.set")==0)
|
||||||
|
FW_queryValue('{ReadingsVal("'+devName+'","'+sel+'","")}', qFn, qArg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*************** Fill attribute **************/
|
||||||
|
function
|
||||||
|
FW_queryValue(cmd, qFn, qArg)
|
||||||
|
{
|
||||||
|
var qConn = new XMLHttpRequest();
|
||||||
|
qConn.onreadystatechange = function() {
|
||||||
|
if(qConn.readyState != 3)
|
||||||
|
return;
|
||||||
|
qFn = qFn.replace("%", qConn.responseText)
|
||||||
|
.replace(/[\r\n]/g, "");
|
||||||
|
eval(qFn);
|
||||||
|
delete qFn;
|
||||||
|
}
|
||||||
|
qConn.open("GET", document.location.pathname+"?cmd="+cmd+"&XHR=1", true);
|
||||||
|
qConn.send(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function
|
||||||
|
FW_querySetSelected(el, val)
|
||||||
|
{
|
||||||
|
for(var j=0;j<el.options.length;j++)
|
||||||
|
if(el.options[j].value == val)
|
||||||
|
el.selectedIndex = j;
|
||||||
|
}
|
||||||
|
|
||||||
|
function
|
||||||
|
FW_querySetSlider(el, val)
|
||||||
|
{
|
||||||
|
val = val.replace(/[^\d\.]/g, ""); // remove non numbers
|
||||||
|
Slider(el, val);
|
||||||
}
|
}
|
||||||
|
@ -57,13 +57,14 @@ table#room tr.sel { background: #A0FFFF; }
|
|||||||
font-family:Arial, sans-serif; font-size:16px; }
|
font-family:Arial, sans-serif; font-size:16px; }
|
||||||
h2,h3,h4 { color:#52865D; line-height:1.3;
|
h2,h3,h4 { color:#52865D; line-height:1.3;
|
||||||
margin-top:1.5em; font-family:Arial,Sans-serif; }
|
margin-top:1.5em; font-family:Arial,Sans-serif; }
|
||||||
div#block { border:1px solid gray; background: #F8F8E0; padding:0.7em; }
|
div.block { border:1px solid gray; background: #F8F8E0; padding:0.7em; }
|
||||||
div#dist { padding-top:0.3em; }
|
div.dist { padding-top:0.3em; }
|
||||||
|
button.dist { margin:5px; background:transparent; border:0px; cursor:pointer; }
|
||||||
|
|
||||||
.set,.attr { margin-bottom:5px; float:left;}
|
.set,.attr { margin-bottom:5px; float:left;}
|
||||||
.slider { float:right; width:320px; height:26px; }
|
.slider { float:right; width:320px; height:26px; }
|
||||||
.set .slider { background:#F0F0D8; }
|
.set .slider { background:#F0F0D8; }
|
||||||
.handle { position:relative; cursor:pointer; width:50px;
|
.handle { position:relative; cursor:pointer; width:50px;
|
||||||
height:20px; line-height:20px; user-select:none;
|
height:20px; line-height:20px;
|
||||||
|
-webkit-user-select:none; -moz-user-select:none; -user-select:none;
|
||||||
border:3px solid; color:#278727; text-align:center; }
|
border:3px solid; color:#278727; text-align:center; }
|
||||||
|
@ -33,6 +33,7 @@ h2,h3,h4 { color:#52865D; line-height:1.3;
|
|||||||
margin-top:1.5em; font-family:Arial,Sans-serif; }
|
margin-top:1.5em; font-family:Arial,Sans-serif; }
|
||||||
div#block { border:1px solid gray; background: #F8F8E0; padding:0.7em; }
|
div#block { border:1px solid gray; background: #F8F8E0; padding:0.7em; }
|
||||||
div#dist { padding-top:0.3em; }
|
div#dist { padding-top:0.3em; }
|
||||||
|
button.dist { margin:10px; background:transparent; border:0px; cursor:pointer; }
|
||||||
|
|
||||||
a img { border-style:none; }
|
a img { border-style:none; }
|
||||||
|
|
||||||
@ -46,6 +47,7 @@ select { margin-left:5px; margin-right:5px; }
|
|||||||
.changed { color:red; }
|
.changed { color:red; }
|
||||||
|
|
||||||
.handle { position:relative; cursor:pointer; width:50px;
|
.handle { position:relative; cursor:pointer; width:50px;
|
||||||
height:20px; line-height:20px; user-select:none;
|
height:20px; line-height:20px;
|
||||||
|
-webkit-user-select:none; -moz-user-select:none; -user-select:none;
|
||||||
border:3px solid; color:#278727; text-align:center; }
|
border:3px solid; color:#278727; text-align:center; }
|
||||||
.downText { margin-top:2px; }
|
.downText { margin-top:2px; }
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
body { background-color: #FFFFE7;
|
body { background-color: #FFFFE7;
|
||||||
font-family:Arial, sans-serif; font-size:16px;
|
font-family:Arial, sans-serif; font-size:18px;
|
||||||
}
|
}
|
||||||
textarea { font-family:Arial, sans-serif; font-size:16px}
|
textarea { font-family:Arial, sans-serif; font-size:18px}
|
||||||
input { font-family:Arial, sans-serif; font-size:16px}
|
input { font-family:Arial, sans-serif; font-size:18px}
|
||||||
select { font-family:Arial, sans-serif; font-size:16px}
|
select { font-family:Arial, sans-serif; font-size:18px}
|
||||||
#logo { position:absolute; top:10px; left:10px;
|
#logo { position:absolute; top:10px; left:10px;
|
||||||
width:120px; height:132px; background-image:url(../icons/fhemicon.png); }
|
width:120px; height:132px; background-image:url(../icons/fhemicon.png); }
|
||||||
#menu { position:absolute; top:152px;left:10px; width:140px; }
|
#menu { position:absolute; top:152px;left:10px; width:140px; }
|
||||||
@ -25,6 +25,10 @@ table { -moz-border-radius:8px; border-radius:8px; }
|
|||||||
table#room { border:1px solid gray; width: 100%; background: #D7FFFF; }
|
table#room { border:1px solid gray; width: 100%; background: #D7FFFF; }
|
||||||
table#room tr.sel { background: #A0FFFF; }
|
table#room tr.sel { background: #A0FFFF; }
|
||||||
|
|
||||||
|
div.block { border:1px solid gray; background: #F8F8E0; padding:0.7em; }
|
||||||
|
div.dist { padding-top:0.3em; }
|
||||||
|
button.dist { margin:10px; background:transparent; border:0px; cursor:pointer; }
|
||||||
|
|
||||||
/* detail-selector & slider */
|
/* detail-selector & slider */
|
||||||
select { margin-left:5px; margin-right:5px; }
|
select { margin-left:5px; margin-right:5px; }
|
||||||
.set,.attr { margin-bottom:5px; float:left; }
|
.set,.attr { margin-bottom:5px; float:left; }
|
||||||
@ -35,6 +39,7 @@ select { margin-left:5px; margin-right:5px; }
|
|||||||
.changed { color:red; }
|
.changed { color:red; }
|
||||||
|
|
||||||
.handle { position:relative; cursor:pointer; width:50px;
|
.handle { position:relative; cursor:pointer; width:50px;
|
||||||
height:20px; line-height:20px; user-select:none;
|
height:20px; line-height:20px;
|
||||||
|
-webkit-user-select:none; -moz-user-select:none; -user-select:none;
|
||||||
border:3px solid; color:#278727; text-align:center; }
|
border:3px solid; color:#278727; text-align:center; }
|
||||||
.downText { margin-top:2px; }
|
.downText { margin-top:2px; }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user