From 6caf00a5dcf74c59166c72d8713477e5283fdfb8 Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Sat, 25 Sep 2010 12:52:08 +0000 Subject: [PATCH] iPhone optimizations git-svn-id: https://svn.fhem.de/fhem/trunk@714 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/webfrontend/pgm2/01_FHEMWEB.pm | 101 +++++++++++++------- fhem/webfrontend/pgm2/98_SVG.pm | 25 ++--- fhem/webfrontend/pgm2/fhemicon.png | Bin 0 -> 17976 bytes fhem/webfrontend/pgm2/style_smallscreen.css | 3 +- 4 files changed, 85 insertions(+), 44 deletions(-) create mode 100644 fhem/webfrontend/pgm2/fhemicon.png diff --git a/fhem/webfrontend/pgm2/01_FHEMWEB.pm b/fhem/webfrontend/pgm2/01_FHEMWEB.pm index 32db1e49d..eb7d5f6b4 100755 --- a/fhem/webfrontend/pgm2/01_FHEMWEB.pm +++ b/fhem/webfrontend/pgm2/01_FHEMWEB.pm @@ -27,6 +27,7 @@ sub FW_roomOverview($); sub FW_fatal($); sub pF($@); sub pO(@); +sub pH(@); sub FW_AnswerCall($); sub FW_zoomLink($$$); sub FW_calcWeblink($$); @@ -351,14 +352,19 @@ FW_AnswerCall($) my $t = FW_getAttr("global", "title", "Home, Sweet Home"); pO ''; - pO ''; pO "\n$t"; + + if($__ss) { + pO ''; + pO ''; + pO ''; + } + my $rf = FW_getAttr($__wname, "refresh", ""); pO "" if($rf); my $stylecss = ($__ss ? "style_smallscreen.css" : "style.css"); pO ""; - pO "" if($__ss); pO "" if($__plotmode eq "SVG"); pO "\n"; @@ -483,7 +489,7 @@ FW_makeTable($$$$$$$$) pF " ", $row?"odd":"even"; $row = ($row+1)%2; if($makelink && $__reldoc) { - pO "$v"; + pO "$v"; # no pH, want to open extra browser } else { pO "$v"; } @@ -499,7 +505,7 @@ FW_makeTable($$$$$$$$) } } - pO "$cmd" + pH "cmd.$d=$cmd $d $v&detail=$d", $cmd, 1 if($cmd); pO ""; @@ -533,12 +539,12 @@ FW_showArchive($) pF " $f", $row?"odd":"even"; $row = ($row+1)%2; if(!defined($l)) { - pO "text"; + pH "cmd=logwrapper $d text $f", "text", 1; } else { foreach my $ln (split(",", $l)) { my ($lt, $name) = split(":", $ln); $name = $lt if(!$name); - pO "$name"; + pH "cmd=logwrapper $d $lt $f", $name, 1; } } pO ""; @@ -564,14 +570,16 @@ FW_doDetail($) pO "
"; pO "
"; - pO "Delete $d"; + pH "cmd=delete $d", "Delete $d"; my $pgm = "Javascript:" . "s=document.getElementById('edit').style;". "if(s.display=='none') s.display='block'; else s.display='none';". "s=document.getElementById('disp').style;". "if(s.display=='none') s.display='block'; else s.display='none';"; - pO "Modify $d"; + pO "Modify $d"; + + pH "room=$__room", "Back:$__room" if($__ss); pO "
"; FW_makeTable($d, $t, @@ -603,13 +611,15 @@ FW_roomOverview($) # HEADER pO "
"; pO "
"; - pO ""; + pH "detail=$d", $d, 1; if($iname) { pO ""; @@ -782,8 +793,8 @@ FW_showRoom() pO ""; } if(getAllSets($d)) { - pO ""; - pO ""; + pH "cmd.$d=set $d on$rf", "on", 1; + pH "cmd.$d=set $d off$rf", "off", 1; } } elsif($type eq "FHT") { @@ -791,7 +802,7 @@ FW_showRoom() $v = ReadingsVal($d, "measured-temp", ""); $v =~ s/ .*//; - pO ""; + pH "detail=$d", $d, 1; pO ""; $v = sprintf("%2.1f", int(2*$v)/2) if($v =~ m/[0-9.-]/); @@ -807,9 +818,10 @@ FW_showRoom() } elsif($type eq "FileLog") { - pO ""; + pH "detail=$d", $d, 1; + pO ""; if(defined(FW_getAttr($d, "archivedir", undef))) { - pO ""; + pH "cmd=showarchive $d", "archive", 1; } foreach my $f (FW_fileList($defs{$d}{logfile})) { @@ -819,7 +831,7 @@ FW_showRoom() foreach my $ln (split(",", FW_getAttr($d, "logtype", "text"))) { my ($lt, $name) = split(":", $ln); $name = $lt if(!$name); - pO ""; + pH "cmd=logwrapper $d $lt $f", $name, 1; } } @@ -829,7 +841,8 @@ FW_showRoom() } else { - pO ""; + pH "detail=$d", $d, 1; + pO ""; } pO " "; @@ -906,7 +919,8 @@ FW_logWrapper($) pO ""; } - pO "
Convert to weblink
"; + pH "cmd=toweblink $d:$type:$file", "
Convert to weblink"; + pO ""; pO "
"; - pO FW_textfield("cmd", $__ss ? 20 : 40); + pO '
'; + my $tf_done; if($__room) { pO FW_hidden("room", "$__room"); # plots navigation buttons if(!$__detail || $defs{$__detail}{TYPE} eq "weblink") { if(FW_calcWeblink(undef,undef)) { + pO FW_textfield("cmd", $__ss ? 20 : 40); + $tf_done = 1; pO ""; pO "  "; 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 "
"; pO ""; pO ""; ############## # LOGO - my $logofile = ($__ss ? "fhem_smallscreen.png" : "fhem.png"); - pO "
"; + my $logo = $__ss ? "fhem_smallscreen.png" : "fhem.png"; + pO "
"; ############## # MENU @@ -774,7 +785,7 @@ FW_showRoom() } $v = "" if(!defined($v)); - pO "
$d$vonoff$d$v°$d$v$varchive$name$d$v$v
"; pO "
"; pO "
"; @@ -1107,7 +1121,7 @@ FW_showLog($) } $ret = fC("get $d $file INT $f $t " . join(" ", @{$flog})); ($cfg, $plot) = FW_substcfg(1, $wl, $cfg, $plot, $file, ""); - SVG_render($wl, $f, $t, $cfg, $internal_data, $plot); + SVG_render($wl, $f, $t, $cfg, $internal_data, $plot, $__ss); $__RETTYPE = "image/svg+xml"; } @@ -1168,8 +1182,9 @@ FW_makeEdit($$$$) pO "
"; my $eval = $val; $eval =~ s,\\\n,\n,g; + my $ncols = $__ss ? 40 : 60; - pO ""; pO "
" . FW_submit("cmd.${cmd}$name", "$cmd $name"); pO "
"; @@ -1234,9 +1249,8 @@ FW_zoomLink($$$) } - pO ""; - pO "\"$alt\""; + pH "$cmd", "\"$alt\""; } ################## @@ -1371,7 +1385,8 @@ FW_style($$) my $row = 0; foreach my $file (@fl) { pO ""; - pO "$file"; + pH "cmd=style edit $file", $file, 1; + pO ""; $row = ($row+1)%2; } pO " "; @@ -1388,7 +1403,8 @@ FW_style($$) my $row = 0; foreach my $file (@fl) { pO ""; - pO "$file"; + pH $file, $file, 1; + pO ""; $row = ($row+1)%2; } pO " "; @@ -1446,6 +1462,22 @@ pO(@) $__RET .= "\n"; } +################# +# add href +sub +pH(@) +{ + my ($link, $txt, $td) = @_; + + pO "" if($td); + if($__ss) { + pO "$txt"; + } else { + pO "$txt"; + } + pO "" if($td); +} + ################## # print formatted sub @@ -1482,10 +1514,12 @@ FW_showWeblink($$$) my ($d, $v, $t) = @_; if($t eq "link") { - pO "$d"; + pH $v, $d, 1; } elsif($t eq "image") { - pO "
$d"; + pO "
"; + pH "detail=$d", $d; + pO ""; } elsif($t eq "fileplot") { my @va = split(":", $v, 3); @@ -1498,7 +1532,8 @@ FW_showWeblink($$$) } if($__ss) { - pO "$d
" + pH "detail=$d", $d; + pO "
"; } else { pO "
"; } @@ -1518,7 +1553,9 @@ FW_showWeblink($$$) if($__ss) { pO "
"; } else { - pO "
$d
"; + pO ""; + pH "detail=$d", $d, 1; + pO ""; } } diff --git a/fhem/webfrontend/pgm2/98_SVG.pm b/fhem/webfrontend/pgm2/98_SVG.pm index 536a252ee..9f92d37b9 100755 --- a/fhem/webfrontend/pgm2/98_SVG.pm +++ b/fhem/webfrontend/pgm2/98_SVG.pm @@ -8,7 +8,7 @@ use POSIX; -sub SVG_render($$$$$$); +sub SVG_render($$$$$$$); sub time_to_sec($); sub fmtTime($$); @@ -25,7 +25,7 @@ SVG_Initialize($) ##################################### sub -SVG_render($$$$$$) +SVG_render($$$$$$$) { my $name = shift; # e.g. wl_8 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 $dp = shift; # pointer to data (one string) my $plot = shift; # Plot lines from the .gplot file + my $__ss = shift; # small screen return "" if(!defined($dp)); 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 # Convert the configuration to a "readable" form -> array to hash @@ -97,15 +98,17 @@ SVG_render($$$$$$) my $t = ($conf{ylabel} ? $conf{ylabel} : ""); $t =~ s/"//g; - ($off1,$off2) = (3*$th/4, $oh/2); - pO "$t"; + if(!$__ss) { + ($off1,$off2) = (3*$th/4, $oh/2); + pO "$t"; - $t = ($conf{y2label} ? $conf{y2label} : ""); - $t =~ s/"//g; - ($off1,$off2) = ($ow-$th/4, $oh/2); - pO "$t"; + $t = ($conf{y2label} ? $conf{y2label} : ""); + $t =~ s/"//g; + ($off1,$off2) = ($ow-$th/4, $oh/2); + pO "$t"; + } # Digest axes/title/type from $plot (gnuplot) and draw the line-titles my (@axes,@ltitle,@type); diff --git a/fhem/webfrontend/pgm2/fhemicon.png b/fhem/webfrontend/pgm2/fhemicon.png new file mode 100644 index 0000000000000000000000000000000000000000..87cdf6a2808022c0b8718e8e157e23a65f0ff3d2 GIT binary patch literal 17976 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 literal 0 HcmV?d00001 diff --git a/fhem/webfrontend/pgm2/style_smallscreen.css b/fhem/webfrontend/pgm2/style_smallscreen.css index d1f1fb05c..1e5c31af1 100644 --- a/fhem/webfrontend/pgm2/style_smallscreen.css +++ b/fhem/webfrontend/pgm2/style_smallscreen.css @@ -1,8 +1,9 @@ body { background-color: #FFFFE7;} -#logo { position:absolute; top:10px; left:10px; } +#logo { position:absolute; top:10px; left:10px; } #menu { position:absolute; top:10px; left:85px; } #hdr { position:absolute; top:40px; left:85px; } #content { position:absolute; top:85px; left:10px; } + a { color: #278727; } table.block { border:1px solid gray; width: 100%; background: #F8F8E0; }