2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-03 16:56:54 +00:00

iPhone optimizations

git-svn-id: https://svn.fhem.de/fhem/trunk@714 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2010-09-25 12:52:08 +00:00
parent 345e141400
commit 6caf00a5dc
4 changed files with 85 additions and 44 deletions

View File

@ -27,6 +27,7 @@ sub FW_roomOverview($);
sub FW_fatal($); sub FW_fatal($);
sub pF($@); sub pF($@);
sub pO(@); sub pO(@);
sub pH(@);
sub FW_AnswerCall($); sub FW_AnswerCall($);
sub FW_zoomLink($$$); sub FW_zoomLink($$$);
sub FW_calcWeblink($$); sub FW_calcWeblink($$);
@ -351,14 +352,19 @@ FW_AnswerCall($)
my $t = FW_getAttr("global", "title", "Home, Sweet Home"); my $t = FW_getAttr("global", "title", "Home, Sweet Home");
pO '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'; pO '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
pO '<html xmlns="http://www.w3.org/1999/xhtml">'; pO '<html xmlns="http://www.w3.org/1999/xhtml">';
pO "<head>\n<title>$t</title>"; pO "<head>\n<title>$t</title>";
if($__ss) {
pO '<link rel="apple-touch-icon-precomposed" href="'.$__ME.'/fhemicon.png"/>';
pO '<meta name="apple-mobile-web-app-capable" content="yes"/>';
pO '<meta name="viewport" content="width=device-width"/>';
}
my $rf = FW_getAttr($__wname, "refresh", ""); my $rf = FW_getAttr($__wname, "refresh", "");
pO "<meta http-equiv=\"refresh\" content=\"$rf\">" if($rf); pO "<meta http-equiv=\"refresh\" content=\"$rf\">" if($rf);
my $stylecss = ($__ss ? "style_smallscreen.css" : "style.css"); my $stylecss = ($__ss ? "style_smallscreen.css" : "style.css");
pO "<link href=\"$__ME/$stylecss\" rel=\"stylesheet\"/>"; pO "<link href=\"$__ME/$stylecss\" rel=\"stylesheet\"/>";
pO "<meta name=\"viewport\" content=\"width=device-width\"/>" if($__ss);
pO "<script type=\"text/javascript\" src=\"$__ME/svg.js\"></script>" pO "<script type=\"text/javascript\" src=\"$__ME/svg.js\"></script>"
if($__plotmode eq "SVG"); if($__plotmode eq "SVG");
pO "</head>\n<body name=\"$t\">"; pO "</head>\n<body name=\"$t\">";
@ -483,7 +489,7 @@ FW_makeTable($$$$$$$$)
pF " <tr class=\"%s\">", $row?"odd":"even"; pF " <tr class=\"%s\">", $row?"odd":"even";
$row = ($row+1)%2; $row = ($row+1)%2;
if($makelink && $__reldoc) { if($makelink && $__reldoc) {
pO "<td><a href=\"$__reldoc#$v\">$v</a></td>"; pO "<td><a href=\"$__reldoc#$v\">$v</a></td>"; # no pH, want to open extra browser
} else { } else {
pO "<td>$v</td>"; pO "<td>$v</td>";
} }
@ -499,7 +505,7 @@ FW_makeTable($$$$$$$$)
} }
} }
pO "<td><a href=\"$__ME?cmd.$d=$cmd $d $v&amp;detail=$d\">$cmd</a></td>" pH "cmd.$d=$cmd $d $v&amp;detail=$d", $cmd, 1
if($cmd); if($cmd);
pO "</tr>"; pO "</tr>";
@ -533,12 +539,12 @@ FW_showArchive($)
pF " <tr class=\"%s\"><td>$f</td>", $row?"odd":"even"; pF " <tr class=\"%s\"><td>$f</td>", $row?"odd":"even";
$row = ($row+1)%2; $row = ($row+1)%2;
if(!defined($l)) { if(!defined($l)) {
pO "<td><a href=\"$__ME?cmd=logwrapper $d text $f\">text</a></td>"; pH "cmd=logwrapper $d text $f", "text", 1;
} else { } else {
foreach my $ln (split(",", $l)) { foreach my $ln (split(",", $l)) {
my ($lt, $name) = split(":", $ln); my ($lt, $name) = split(":", $ln);
$name = $lt if(!$name); $name = $lt if(!$name);
pO "<td><a href=\"$__ME?cmd=logwrapper $d $lt $f\">$name</a></td>"; pH "cmd=logwrapper $d $lt $f", $name, 1;
} }
} }
pO "</tr>"; pO "</tr>";
@ -564,14 +570,16 @@ FW_doDetail($)
pO "<div id=\"content\">"; pO "<div id=\"content\">";
pO "<table><tr><td>"; pO "<table><tr><td>";
pO "<a href=\"$__ME?cmd=delete $d\">Delete $d</a>"; pH "cmd=delete $d", "Delete $d";
my $pgm = "Javascript:" . my $pgm = "Javascript:" .
"s=document.getElementById('edit').style;". "s=document.getElementById('edit').style;".
"if(s.display=='none') s.display='block'; else s.display='none';". "if(s.display=='none') s.display='block'; else s.display='none';".
"s=document.getElementById('disp').style;". "s=document.getElementById('disp').style;".
"if(s.display=='none') s.display='block'; else s.display='none';"; "if(s.display=='none') s.display='block'; else s.display='none';";
pO "<a href=\"#top\" onClick=\"$pgm\">Modify $d</a>"; pO "<a onClick=\"$pgm\">Modify $d</a>";
pH "room=$__room", "Back:$__room" if($__ss);
pO "</td></tr><tr><td>"; pO "</td></tr><tr><td>";
FW_makeTable($d, $t, FW_makeTable($d, $t,
@ -603,13 +611,15 @@ FW_roomOverview($)
# HEADER # HEADER
pO "<form method=\"get\" action=\"$__ME\">"; pO "<form method=\"get\" action=\"$__ME\">";
pO "<div id=\"hdr\">"; pO "<div id=\"hdr\">";
pO "<table><tr><td>"; pO '<table border="0"><tr><td style="padding:0">';
pO FW_textfield("cmd", $__ss ? 20 : 40); my $tf_done;
if($__room) { if($__room) {
pO FW_hidden("room", "$__room"); pO FW_hidden("room", "$__room");
# plots navigation buttons # plots navigation buttons
if(!$__detail || $defs{$__detail}{TYPE} eq "weblink") { if(!$__detail || $defs{$__detail}{TYPE} eq "weblink") {
if(FW_calcWeblink(undef,undef)) { if(FW_calcWeblink(undef,undef)) {
pO FW_textfield("cmd", $__ss ? 20 : 40);
$tf_done = 1;
pO "</td><td>"; pO "</td><td>";
pO "&nbsp;&nbsp;"; pO "&nbsp;&nbsp;";
FW_zoomLink("zoom=-1", "Zoom-in.png", "zoom in"); FW_zoomLink("zoom=-1", "Zoom-in.png", "zoom in");
@ -619,14 +629,15 @@ FW_roomOverview($)
} }
} }
} }
pO FW_textfield("cmd", $__ss ? 28 : 40) if(!$tf_done);
pO "</td></tr></table>"; pO "</td></tr></table>";
pO "</div>"; pO "</div>";
pO "</form>"; pO "</form>";
############## ##############
# LOGO # LOGO
my $logofile = ($__ss ? "fhem_smallscreen.png" : "fhem.png"); my $logo = $__ss ? "fhem_smallscreen.png" : "fhem.png";
pO "<div id=\"logo\"><img src=\"$__ME/$logofile\"></div>"; pO "<div id=\"logo\"><img src=\"$__ME/$logo\"></div>";
############## ##############
# MENU # MENU
@ -774,7 +785,7 @@ FW_showRoom()
} }
$v = "" if(!defined($v)); $v = "" if(!defined($v));
pO "<td><a href=\"$__ME?detail=$d\">$d</a></td>"; pH "detail=$d", $d, 1;
if($iname) { if($iname) {
pO "<td align=\"center\"><img src=\"$__ME/icons/$iname\" ". pO "<td align=\"center\"><img src=\"$__ME/icons/$iname\" ".
"alt=\"$v\"/></td>"; "alt=\"$v\"/></td>";
@ -782,8 +793,8 @@ FW_showRoom()
pO "<td align=\"center\">$v</td>"; pO "<td align=\"center\">$v</td>";
} }
if(getAllSets($d)) { if(getAllSets($d)) {
pO "<td><a href=\"$__ME?cmd.$d=set $d on$rf\">on</a></td>"; pH "cmd.$d=set $d on$rf", "on", 1;
pO "<td><a href=\"$__ME?cmd.$d=set $d off$rf\">off</a></td>"; pH "cmd.$d=set $d off$rf", "off", 1;
} }
} elsif($type eq "FHT") { } elsif($type eq "FHT") {
@ -791,7 +802,7 @@ FW_showRoom()
$v = ReadingsVal($d, "measured-temp", ""); $v = ReadingsVal($d, "measured-temp", "");
$v =~ s/ .*//; $v =~ s/ .*//;
pO "<td><a href=\"$__ME?detail=$d\">$d</a></td>"; pH "detail=$d", $d, 1;
pO "<td align=\"center\">$v&deg;</td>"; pO "<td align=\"center\">$v&deg;</td>";
$v = sprintf("%2.1f", int(2*$v)/2) if($v =~ m/[0-9.-]/); $v = sprintf("%2.1f", int(2*$v)/2) if($v =~ m/[0-9.-]/);
@ -807,9 +818,10 @@ FW_showRoom()
} elsif($type eq "FileLog") { } elsif($type eq "FileLog") {
pO "<td><a href=\"$__ME?detail=$d\">$d</a></td><td>$v</td>"; pH "detail=$d", $d, 1;
pO "<td>$v</td>";
if(defined(FW_getAttr($d, "archivedir", undef))) { if(defined(FW_getAttr($d, "archivedir", undef))) {
pO "<td><a href=\"$__ME?cmd=showarchive $d\">archive</a></td>"; pH "cmd=showarchive $d", "archive", 1;
} }
foreach my $f (FW_fileList($defs{$d}{logfile})) { foreach my $f (FW_fileList($defs{$d}{logfile})) {
@ -819,7 +831,7 @@ FW_showRoom()
foreach my $ln (split(",", FW_getAttr($d, "logtype", "text"))) { foreach my $ln (split(",", FW_getAttr($d, "logtype", "text"))) {
my ($lt, $name) = split(":", $ln); my ($lt, $name) = split(":", $ln);
$name = $lt if(!$name); $name = $lt if(!$name);
pO "<td><a href=\"$__ME?cmd=logwrapper $d $lt $f\">$name</a></td>"; pH "cmd=logwrapper $d $lt $f", $name, 1;
} }
} }
@ -829,7 +841,8 @@ FW_showRoom()
} else { } else {
pO "<td><a href=\"$__ME?detail=$d\">$d</a></td><td>$v</td>"; pH "detail=$d", $d, 1;
pO "<td>$v</td>";
} }
pO " </tr>"; pO " </tr>";
@ -906,7 +919,8 @@ FW_logWrapper($)
pO "<img src=\"$arg\"/>"; pO "<img src=\"$arg\"/>";
} }
pO "<a href=\"$__ME?cmd=toweblink $d:$type:$file\"><br>Convert to weblink</a></td>"; pH "cmd=toweblink $d:$type:$file", "<br>Convert to weblink";
pO "</td>";
pO "</td></tr></table>"; pO "</td></tr></table>";
pO "</td></tr></table>"; pO "</td></tr></table>";
pO "</div>"; pO "</div>";
@ -1107,7 +1121,7 @@ FW_showLog($)
} }
$ret = fC("get $d $file INT $f $t " . join(" ", @{$flog})); $ret = fC("get $d $file INT $f $t " . join(" ", @{$flog}));
($cfg, $plot) = FW_substcfg(1, $wl, $cfg, $plot, $file, "<OuT>"); ($cfg, $plot) = FW_substcfg(1, $wl, $cfg, $plot, $file, "<OuT>");
SVG_render($wl, $f, $t, $cfg, $internal_data, $plot); SVG_render($wl, $f, $t, $cfg, $internal_data, $plot, $__ss);
$__RETTYPE = "image/svg+xml"; $__RETTYPE = "image/svg+xml";
} }
@ -1168,8 +1182,9 @@ FW_makeEdit($$$$)
pO "<div id=\"edit\" style=\"display:none\"><form>"; pO "<div id=\"edit\" style=\"display:none\"><form>";
my $eval = $val; my $eval = $val;
$eval =~ s,\\\n,\n,g; $eval =~ s,\\\n,\n,g;
my $ncols = $__ss ? 40 : 60;
pO "<textarea name=\"val.${cmd}$name\" cols=\"60\" rows=\"10\">". pO "<textarea name=\"val.${cmd}$name\" cols=\"$ncols\" rows=\"10\">".
"$eval</textarea>"; "$eval</textarea>";
pO "<br>" . FW_submit("cmd.${cmd}$name", "$cmd $name"); pO "<br>" . FW_submit("cmd.${cmd}$name", "$cmd $name");
pO "</form></div>"; pO "</form></div>";
@ -1234,9 +1249,8 @@ FW_zoomLink($$$)
} }
pO "<a href=\"$__ME?$cmd\">"; pH "$cmd", "<img style=\"border-color:transparent\" alt=\"$alt\" ".
pO "<img style=\"border-color:transparent\" alt=\"$alt\" ". "src=\"$__ME/icons/$img\"/>";
"src=\"$__ME/icons/$img\"/></a>";
} }
################## ##################
@ -1371,7 +1385,8 @@ FW_style($$)
my $row = 0; my $row = 0;
foreach my $file (@fl) { foreach my $file (@fl) {
pO "<tr class=\"" . ($row?"odd":"even") . "\">"; pO "<tr class=\"" . ($row?"odd":"even") . "\">";
pO "<td><a href=\"$__ME?cmd=style edit $file\">$file</a></td></tr>"; pH "cmd=style edit $file", $file, 1;
pO "</tr>";
$row = ($row+1)%2; $row = ($row+1)%2;
} }
pO " </table>"; pO " </table>";
@ -1388,7 +1403,8 @@ FW_style($$)
my $row = 0; my $row = 0;
foreach my $file (@fl) { foreach my $file (@fl) {
pO "<tr class=\"" . ($row?"odd":"even") . "\">"; pO "<tr class=\"" . ($row?"odd":"even") . "\">";
pO "<td><a href=\"$__ME/$file\">$file</a></td></tr>"; pH $file, $file, 1;
pO "</tr>";
$row = ($row+1)%2; $row = ($row+1)%2;
} }
pO " </table>"; pO " </table>";
@ -1446,6 +1462,22 @@ pO(@)
$__RET .= "\n"; $__RET .= "\n";
} }
#################
# add href
sub
pH(@)
{
my ($link, $txt, $td) = @_;
pO "<td>" if($td);
if($__ss) {
pO "<a onClick=\"location.href='$__ME?$link'\">$txt</a>";
} else {
pO "<a href=\"$__ME?$link\">$txt</a>";
}
pO "</td>" if($td);
}
################## ##################
# print formatted # print formatted
sub sub
@ -1482,10 +1514,12 @@ FW_showWeblink($$$)
my ($d, $v, $t) = @_; my ($d, $v, $t) = @_;
if($t eq "link") { if($t eq "link") {
pO "<td><a href=\"$v\">$d</a></td>"; pH $v, $d, 1;
} elsif($t eq "image") { } elsif($t eq "image") {
pO "<td><img src=\"$v\"><br><a href=\"$__ME?detail=$d\">$d</a></td>"; pO "<td><img src=\"$v\"><br>";
pH "detail=$d", $d;
pO "</td>";
} elsif($t eq "fileplot") { } elsif($t eq "fileplot") {
my @va = split(":", $v, 3); my @va = split(":", $v, 3);
@ -1498,7 +1532,8 @@ FW_showWeblink($$$)
} }
if($__ss) { if($__ss) {
pO "<a href=\"$__ME?detail=$d\">$d</a><br>" pH "detail=$d", $d;
pO "<br>";
} else { } else {
pO "<table><tr><td>"; pO "<table><tr><td>";
} }
@ -1518,7 +1553,9 @@ FW_showWeblink($$$)
if($__ss) { if($__ss) {
pO "<br>"; pO "<br>";
} else { } else {
pO "</td><td><a href=\"$__ME?detail=$d\">$d</a></td></tr></table>"; pO "</td>";
pH "detail=$d", $d, 1;
pO "</tr></table>";
} }
} }

View File

@ -8,7 +8,7 @@ use POSIX;
sub SVG_render($$$$$$); sub SVG_render($$$$$$$);
sub time_to_sec($); sub time_to_sec($);
sub fmtTime($$); sub fmtTime($$);
@ -25,7 +25,7 @@ SVG_Initialize($)
##################################### #####################################
sub sub
SVG_render($$$$$$) SVG_render($$$$$$$)
{ {
my $name = shift; # e.g. wl_8 my $name = shift; # e.g. wl_8
my $from = shift; # e.g. 2008-01-01 my $from = shift; # e.g. 2008-01-01
@ -33,11 +33,12 @@ SVG_render($$$$$$)
my $confp = shift; # lines from the .gplot file, w/o FileLog and plot my $confp = shift; # lines from the .gplot file, w/o FileLog and plot
my $dp = shift; # pointer to data (one string) my $dp = shift; # pointer to data (one string)
my $plot = shift; # Plot lines from the .gplot file my $plot = shift; # Plot lines from the .gplot file
my $__ss = shift; # small screen
return "" if(!defined($dp)); return "" if(!defined($dp));
my $th = 16; # "Font" height my $th = 16; # "Font" height
my ($x, $y) = (3*$th, 1.2*$th); # Rect offset my ($x, $y) = (($__ss ? 2 : 3)*$th, 1.2*$th); # Rect offset
my %conf; # gnuplot file settings my %conf; # gnuplot file settings
# Convert the configuration to a "readable" form -> array to hash # Convert the configuration to a "readable" form -> array to hash
@ -97,6 +98,7 @@ SVG_render($$$$$$)
my $t = ($conf{ylabel} ? $conf{ylabel} : ""); my $t = ($conf{ylabel} ? $conf{ylabel} : "");
$t =~ s/"//g; $t =~ s/"//g;
if(!$__ss) {
($off1,$off2) = (3*$th/4, $oh/2); ($off1,$off2) = (3*$th/4, $oh/2);
pO "<text x=\"$off1\" y=\"$off2\" text-anchor=\"middle\" " . pO "<text x=\"$off1\" y=\"$off2\" text-anchor=\"middle\" " .
"class=\"ylabel\" transform=\"rotate(270,$off1,$off2)\">$t</text>"; "class=\"ylabel\" transform=\"rotate(270,$off1,$off2)\">$t</text>";
@ -106,6 +108,7 @@ SVG_render($$$$$$)
($off1,$off2) = ($ow-$th/4, $oh/2); ($off1,$off2) = ($ow-$th/4, $oh/2);
pO "<text x=\"$off1\" y=\"$off2\" text-anchor=\"middle\" " . pO "<text x=\"$off1\" y=\"$off2\" text-anchor=\"middle\" " .
"class=\"y2label\" transform=\"rotate(270,$off1,$off2)\">$t</text>"; "class=\"y2label\" transform=\"rotate(270,$off1,$off2)\">$t</text>";
}
# Digest axes/title/type from $plot (gnuplot) and draw the line-titles # Digest axes/title/type from $plot (gnuplot) and draw the line-titles
my (@axes,@ltitle,@type); my (@axes,@ltitle,@type);

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -3,6 +3,7 @@ body { background-color: #FFFFE7;}
#menu { position:absolute; top:10px; left:85px; } #menu { position:absolute; top:10px; left:85px; }
#hdr { position:absolute; top:40px; left:85px; } #hdr { position:absolute; top:40px; left:85px; }
#content { position:absolute; top:85px; left:10px; } #content { position:absolute; top:85px; left:10px; }
a { color: #278727; } a { color: #278727; }
table.block { border:1px solid gray; width: 100%; background: #F8F8E0; } table.block { border:1px solid gray; width: 100%; background: #F8F8E0; }