mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-01-31 06:39:11 +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: hour resolution in SVG
|
||||
- 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)
|
||||
- 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="dist">
|
||||
<div class="dist">
|
||||
<a href="#faq1">
|
||||
1. I get a <code>Can't call method "opened"</code> message when starting
|
||||
fhem. Why?</a>
|
||||
</div>
|
||||
|
||||
<div id="dist">
|
||||
<div class="dist">
|
||||
<a href="#faq2">
|
||||
2. I get "undefined" messages in the log after upgrading fhem.pl</a>
|
||||
</div>
|
||||
|
||||
<div id="dist">
|
||||
<div class="dist">
|
||||
<a href="#faq3">
|
||||
3. I switched on a FS20 device directly (without the remote), but the
|
||||
fhem.pl did not noticed it. Is it a bug?</a>
|
||||
</div>
|
||||
|
||||
<div id="dist">
|
||||
<div class="dist">
|
||||
<a href="#faq4">
|
||||
4. I have some FS20/FHT/HMS devices. How do I know their housecode?</a>
|
||||
</div>
|
||||
|
||||
<div id="dist">
|
||||
<div class="dist">
|
||||
<a href="#faq5">
|
||||
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>
|
||||
</div>
|
||||
|
||||
<div id="dist">
|
||||
<div class="dist">
|
||||
<a href="#faq6">
|
||||
6. I replaced my FHZ1X00PC, now the FHT80b's does not work anymore. Help
|
||||
me!</a>
|
||||
</div>
|
||||
|
||||
<div id="dist">
|
||||
<div class="dist">
|
||||
<a href="#faq7">
|
||||
7. I can specify an optional ml/raincounter for a KS300. Why do you think
|
||||
that 255 should be the default?</a>
|
||||
</div>
|
||||
|
||||
<div id="dist">
|
||||
<div class="dist">
|
||||
<a href="#faq8">
|
||||
8. The time specification of the builtin <code>at</code> command is not very flexible.
|
||||
Please add day/month/weekday to it.</a>
|
||||
</div>
|
||||
|
||||
<div id="dist">
|
||||
<div class="dist">
|
||||
<a href="#faq9">
|
||||
9. I defined my FS20STR as an FHT device, but I do not get any data from
|
||||
it.</a>
|
||||
</div>
|
||||
|
||||
<div id="dist">
|
||||
<div class="dist">
|
||||
<a href="#faq10">
|
||||
10. How to convert the FHT80b code seen in its display to the hex code needed
|
||||
by fhem.pl?</a>
|
||||
</div>
|
||||
|
||||
<div id="dist">
|
||||
<div class="dist">
|
||||
<a href="#faq11">
|
||||
11. I'd like to use this sunrise/sunset stuff, can you help me?</a>
|
||||
</div>
|
||||
|
||||
<div id="dist">
|
||||
<div class="dist">
|
||||
<a href="#faq12">
|
||||
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>
|
||||
</div>
|
||||
|
||||
<div id="dist">
|
||||
<div class="dist">
|
||||
<a href="#faq13">
|
||||
13. I'd like to see directly in the Web frontend if a window is open. How to
|
||||
do that?</a>
|
||||
</div>
|
||||
|
||||
<div id="dist">
|
||||
<div class="dist">
|
||||
<a href="#faq14">
|
||||
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>
|
||||
</div>
|
||||
|
||||
<div id="dist">
|
||||
<div class="dist">
|
||||
<a href="#faq15">
|
||||
15. My notify/filelog does not work, help me!</a>
|
||||
</div>
|
||||
|
||||
<div id="dist">
|
||||
<div class="dist">
|
||||
<a href="#faq16">
|
||||
16. Setting auto-mode from manual for the FHT won't change the desired
|
||||
temperature!</a>
|
||||
</div>
|
||||
|
||||
<div id="dist">
|
||||
<div class="dist">
|
||||
<a href="#faq17">
|
||||
17. I have problem receiving data, I get "Bad CRC" or "Oversized
|
||||
message."</a>
|
||||
</div>
|
||||
|
||||
<div id="dist">
|
||||
<div class="dist">
|
||||
<a href="#faq18">
|
||||
18. My FHZ1X00PC gets all time automatically disconnected and reconnected. My
|
||||
log shows "USB device /dev/elv_fhz1300pc disconnected, waiting to reappear".
|
||||
What is wrong with my USB?</a>
|
||||
</div>
|
||||
|
||||
<div id="dist">
|
||||
<div class="dist">
|
||||
<a href="#faq19">
|
||||
19. How do I set the dim100% from the at command?</a>
|
||||
</div>
|
||||
|
||||
<div id="dist">
|
||||
<div class="dist">
|
||||
<a href="#faq20">
|
||||
20. Why do my Sunrise/Sunset times differ from the ones on website
|
||||
XXX?</a>
|
||||
</div>
|
||||
|
||||
<div id="dist">
|
||||
<div class="dist">
|
||||
<a href="#faq21">
|
||||
21. What is "unknown message: EOB" from a CUL device?</a>
|
||||
</div>
|
||||
|
@ -165,7 +165,7 @@
|
||||
EM1000WZ), FHT80b, HMS, S300 (KS300, S300TH, KS555, S555TH, etc),
|
||||
HomeMatic (<a href="commandref.html#CUL_HM">selected</a> devices),
|
||||
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:
|
||||
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">
|
||||
link</a>.
|
||||
</li>
|
||||
<div id="dist"></div>
|
||||
<div class="dist"></div>
|
||||
|
||||
<li>reading and sending X10 events via the CM11 module (with access
|
||||
to a X10 computer interface)</li>
|
||||
<div id="dist"></div>
|
||||
<div class="dist"></div>
|
||||
|
||||
<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>
|
||||
<div id="dist"></div>
|
||||
<div class="dist"></div>
|
||||
|
||||
<li>reading attached SCIVT devices</li>
|
||||
<div id="dist"></div>
|
||||
<div class="dist"></div>
|
||||
|
||||
<li>reading attached M232 devices</li>
|
||||
<div id="dist"></div>
|
||||
<div class="dist"></div>
|
||||
|
||||
<li>reading attached WS2000/WS25000 devices, also via raw network
|
||||
converters (xport)</li>
|
||||
<div id="dist"></div>
|
||||
<div class="dist"></div>
|
||||
|
||||
<li>extract sensor data from IPWE networked weather data receiver</li>
|
||||
<div id="dist"></div>
|
||||
<div class="dist"></div>
|
||||
|
||||
<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=com-ds9097-passive">DS9097</a>
|
||||
access to the following Dallas 1-wire sensors: DS18S20, DS1820,
|
||||
DS18B20</li>
|
||||
<div id="dist"></div>
|
||||
<div class="dist"></div>
|
||||
|
||||
<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
|
||||
relay box connected to an Allnet 4000</li>
|
||||
<div id="dist"></div>
|
||||
<div class="dist"></div>
|
||||
|
||||
<li>Davis VantagePro2 weatherstation</li>
|
||||
<div id="dist"></div>
|
||||
<div class="dist"></div>
|
||||
|
||||
<li>Via the RFXCOM RFXtrx433 transceiver (433 Mhz) support for various
|
||||
protocols (ANSLUT, ByeByeStandBy, Chacon EMW200, COCO, DomiaLite, Duewi,
|
||||
ELRO AB400/AB600, HomeEasy EU, HomeEasy UK, IMPULS, Intertechno, KD101,
|
||||
KlikAanKlikUit (KAKU), NEXA, Oregon Scientific, X10 security and
|
||||
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
|
||||
(order code 80002 and others) the following devices:
|
||||
Oregon Scientific weather sensors, RFXCOM RFXMeter,
|
||||
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,
|
||||
S300TH, ASH2200, PS 50 and Conrad sensors KS555, S555TH and
|
||||
ASH555.</li>
|
||||
<div id="dist"></div>
|
||||
<div class="dist"></div>
|
||||
|
||||
<li>Via an eQ-3 HomeMatic Lan Configurator access to selected HomeMatic
|
||||
devices.
|
||||
<div id="dist"></div>
|
||||
<div class="dist"></div>
|
||||
|
||||
<li>Via the eibd or a TUL (see <a
|
||||
href="http://www.busware.de">www.busware.de</a>) access to the EIB/KNX
|
||||
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
|
||||
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.
|
||||
<div id="dist"></div>
|
||||
<div class="dist"></div>
|
||||
|
||||
<div id="dist"></div>
|
||||
<div id="dist"></div>
|
||||
<div class="dist"></div>
|
||||
<div class="dist"></div>
|
||||
|
||||
A detailed description is to be found in the <a
|
||||
href="commandref.html">fhem reference</a>.
|
||||
@ -261,26 +261,26 @@
|
||||
<a name="Documentation"></a>
|
||||
<h3>Documentation</h3>
|
||||
<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>
|
||||
|
||||
<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>
|
||||
|
||||
<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>
|
||||
|
||||
<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>
|
||||
|
||||
<div id="dist">Frequently Asked Questions: <a
|
||||
<div class="dist">Frequently Asked Questions: <a
|
||||
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,
|
||||
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
|
||||
fhem.</div>
|
||||
|
||||
|
@ -8,10 +8,10 @@ define telnetPort telnet 7072 global # our TCP/IP port
|
||||
define WEB FHEMWEB 8083 global
|
||||
|
||||
define WEBphone FHEMWEB 8084 global
|
||||
attr WEBphone smallscreen
|
||||
attr WEBphone stylesheetPrefix smallscreen
|
||||
|
||||
define WEBtablet FHEMWEB 8085 global
|
||||
attr WEBtablet touchpad
|
||||
attr WEBtablet stylesheetPrefix touchpad
|
||||
|
||||
# Fake FileLog entry, to access the fhem log from FHEMWEB
|
||||
define Logfile FileLog ./log/fhem-%Y-%m.log fakelog
|
||||
|
@ -40,7 +40,8 @@ right:10px; }
|
||||
body>div#left { position:fixed; }
|
||||
div#block { border:1px solid gray; background: #101010; padding:0.7em; }
|
||||
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; }
|
||||
a img { border-style:none; }
|
||||
@ -53,6 +54,8 @@ select { margin-left:5px; margin-right:5px; }
|
||||
/* timepicker */
|
||||
.set .set { margin-bottom:2px; margin-top:3px; }
|
||||
|
||||
.handle { position:relative; cursor:pointer; width:50px; height:20px;
|
||||
line-height:20px; border:2px solid; color:white; text-align:center; }
|
||||
.handle { position:relative; cursor:pointer; width:50px;
|
||||
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; }
|
||||
|
@ -1,7 +1,6 @@
|
||||
/*************** LONGPOLL START **************/
|
||||
var FW_pollConn;
|
||||
//The number of the next line in FW_pollConn.responseText to parse
|
||||
var FW_curLine;
|
||||
var FW_curLine; // Number of the next line in FW_pollConn.responseText to parse
|
||||
|
||||
function
|
||||
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
|
||||
FW_curLine = lines.length;
|
||||
@ -85,11 +89,14 @@ FW_delayedStart()
|
||||
|
||||
/*************** SLIDER **************/
|
||||
function
|
||||
Slider(slider, min, stp, max, curr, cmd)
|
||||
Slider(slider, curr)
|
||||
{
|
||||
var sh = slider.firstChild;
|
||||
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
|
||||
init()
|
||||
@ -196,13 +203,15 @@ addTime(el,cmd)
|
||||
par.appendChild(document.createElement('br'));
|
||||
|
||||
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>';
|
||||
par.appendChild(sl);
|
||||
sl.setAttribute('class', par.getAttribute('class'));
|
||||
|
||||
Slider(sl.firstChild, 0, (i==0 ? 1 : 5), (i==0 ? 23 : 55), val[i],
|
||||
'js:setTime(slider,"'+(i==0? "H":"M")+'",%)');
|
||||
Slider(sl.firstChild, val[i]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -219,13 +228,20 @@ FW_selChange(sel, list, elName)
|
||||
value = nv[1]; break;
|
||||
}
|
||||
}
|
||||
|
||||
var el = document.getElementsByName(elName)[0];
|
||||
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) {
|
||||
newEl = document.createElement('input');
|
||||
newEl.type='text'; newEl.size=30;
|
||||
qFn = 'qArg.setAttribute("value", "%")';
|
||||
qArg = newEl;
|
||||
|
||||
|
||||
} else {
|
||||
var vArr = value.split(",");
|
||||
@ -235,9 +251,12 @@ FW_selChange(sel, list, elName)
|
||||
max=parseFloat(vArr[3]);
|
||||
newEl = document.createElement('div');
|
||||
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+'">';
|
||||
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") {
|
||||
newEl = document.createElement('div');
|
||||
@ -249,11 +268,55 @@ FW_selChange(sel, list, elName)
|
||||
for(var j=0; j < vArr.length; j++) {
|
||||
newEl.options[j] = new Option(vArr[j], vArr[j]);
|
||||
}
|
||||
qFn = 'FW_querySetSelected(qArg, "%")';
|
||||
qArg = newEl;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
newEl.setAttribute('class', el.getAttribute('class'));
|
||||
newEl.setAttribute('name', el.getAttribute('name'));
|
||||
newEl.setAttribute('name', name);
|
||||
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; }
|
||||
h2,h3,h4 { color:#52865D; line-height:1.3;
|
||||
margin-top:1.5em; font-family:Arial,Sans-serif; }
|
||||
div#block { border:1px solid gray; background: #F8F8E0; padding:0.7em; }
|
||||
div#dist { padding-top:0.3em; }
|
||||
|
||||
div.block { border:1px solid gray; background: #F8F8E0; padding:0.7em; }
|
||||
div.dist { padding-top:0.3em; }
|
||||
button.dist { margin:5px; background:transparent; border:0px; cursor:pointer; }
|
||||
|
||||
.set,.attr { margin-bottom:5px; float:left;}
|
||||
.slider { float:right; width:320px; height:26px; }
|
||||
.set .slider { background:#F0F0D8; }
|
||||
.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; }
|
||||
|
@ -33,6 +33,7 @@ h2,h3,h4 { color:#52865D; line-height:1.3;
|
||||
margin-top:1.5em; font-family:Arial,Sans-serif; }
|
||||
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; }
|
||||
|
||||
a img { border-style:none; }
|
||||
|
||||
@ -46,6 +47,7 @@ select { margin-left:5px; margin-right:5px; }
|
||||
.changed { color:red; }
|
||||
|
||||
.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; }
|
||||
.downText { margin-top:2px; }
|
||||
|
@ -1,9 +1,9 @@
|
||||
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}
|
||||
input { font-family:Arial, sans-serif; font-size:16px}
|
||||
select { 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:18px}
|
||||
select { font-family:Arial, sans-serif; font-size:18px}
|
||||
#logo { position:absolute; top:10px; left:10px;
|
||||
width:120px; height:132px; background-image:url(../icons/fhemicon.png); }
|
||||
#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 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 */
|
||||
select { margin-left:5px; margin-right:5px; }
|
||||
.set,.attr { margin-bottom:5px; float:left; }
|
||||
@ -35,6 +39,7 @@ select { margin-left:5px; margin-right:5px; }
|
||||
.changed { color:red; }
|
||||
|
||||
.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; }
|
||||
.downText { margin-top:2px; }
|
||||
|
Loading…
Reference in New Issue
Block a user