Diskussions-Thread zum RSS-Workshop

Begonnen von betateilchen, 15 April 2014, 19:54:33

Vorheriges Thema - Nächstes Thema

betateilchen

Die Idee zu 2) hatte ich auch schon, aber das Reihenfolgenproblem ist nicht sinnvoll lösbar.

Davon abgesehen:


  • x2 ist bekannt. Das ergibt sich bei der textbox aus (x + width)
  • y2 wird von RSS_itemTextBox als $bottom zurückgeliefert

Was man überlegen könnte: Die Funktion RSS_itemTextBox mit einem zusätzlichen Parameter (Füllfarbe) aufzurufen und aus dieser Funktion heraus nach dem Ermitteln der Zielgröße ein mit dieser Farbe gefülltes Rechteck zeichnen und danach das $wrapbox->draw($x, $y); nochmal aufzurufen.

Ich werde das mal ausprobieren.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Das funktioniert tatsächlich :)

(http://up.picr.de/20741852jr.png)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Neue Syntax für textbox:

textbox 200 50 100 "00FF0000" "Lorem ipsum dolor sit a..."

Überschaubare Änderungen:


fhem/FHEM/02_RSS.pm | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/fhem/FHEM/02_RSS.pm b/fhem/FHEM/02_RSS.pm
index 6420777..0b4388d 100644
--- a/fhem/FHEM/02_RSS.pm
+++ b/fhem/FHEM/02_RSS.pm
@@ -338,7 +338,7 @@ RSS_itemText {

sub
RSS_itemTextBox {
-        my ($S,$x,$y,$boxwidth,$text,%params)= @_;
+        my ($S,$x,$y,$boxwidth,$bgcolor,$text,%params)= @_;
         return unless(defined($text));
         
         if($params{useTextWrap}) {
@@ -350,7 +350,12 @@ RSS_itemTextBox {
                       );
               $wrapbox->set_font($params{font}, $params{pt});
               $wrapbox->set(align => $params{thalign}, width => $boxwidth);
-              my ($left, $top, $right, $bottom) = $wrapbox->draw($x, $y);
+              my ($left, $top, $right, $bottom);
+              ($left, $top, $right, $bottom) = $wrapbox->draw($x, $y);
+              if(defined($bgcolor)) {
+                $S->filledRectangle($left,$top,$right,$bottom,RSS_color($S,$bgcolor));
+                ($left, $top, $right, $bottom) = $wrapbox->draw($x, $y);
+              }
               return $bottom;
         } else {
               RSS_itemText($S,$x,$y,$text,%params);
@@ -507,7 +512,7 @@ RSS_evalLayout($$@) {
   $params{y}= 0;
   

-  my ($x,$y,$x1,$y1,$x2,$y2,$scale,$boxwidth,$text,$imgtype,$srctype,$arg,$format);
+  my ($x,$y,$x1,$y1,$x2,$y2,$scale,$bgcolor,$boxwidth,$text,$imgtype,$srctype,$arg,$format);
   
   my $cont= "";
   foreach my $line (@layout) {
@@ -585,11 +590,12 @@ RSS_evalLayout($$@) {
      #Debug "$name: ($x,$y) $txt";
      RSS_itemText($S,$x,$y,$txt,%params);
    } elsif($cmd eq "textbox") {
-       ($x,$y,$boxwidth,$text)= split("[ \t]+", $def, 4);
+       ($x,$y,$boxwidth,$bgcolor,$text)= split("[ \t]+", $def, 5);
      ($x,$y)= RSS_xy($S, $x,$y,%params);
+       $bgcolor = ($bgcolor ne "") ? AnalyzePerlCommand(undef,$bgcolor) : undef;
      my $txt= AnalyzePerlCommand(undef, $text);
      #Debug "$name: ($x,$y) $txt";
-       $y= RSS_itemTextBox($S,$x,$y,$boxwidth,$txt,%params);
+       $y= RSS_itemTextBox($S,$x,$y,$boxwidth,$bgcolor,$txt,%params);
      $params{x} = $x;
      $params{y} = $y;
    } elsif($cmd eq "line") {
--
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Wenn man mal durchschaut hat, dass die Dokumentation zu GD::Text::Wrap missverständlich ist,
geht das Ganze sogar noch einfacher und das Reihenfolgeproblem


  • Zielgröße bestimmen
  • bei Bedarf das gefüllte Rechteck zeichnen
  • die Textbox mit Inhalt füllen

löst sich ganz von selbst:


              my ($left, $top, $right, $bottom);
              ($left, $top, $right, $bottom) = $wrapbox->get_bounds($x,$y);
              $S->filledRectangle($left,$top,$right,$bottom,RSS_color($S,$bgcolor)) if(defined($bgcolor));
              ($left, $top, $right, $bottom) = $wrapbox->draw($x, $y);
              return $bottom;


Letztendlich macht get_bounds() intern auch nix anderes als ein (unsichtbares) draw() um die Koordinaten zu bestimmen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Dr. Boris Neubert

Prima!

Kannst Du mir bitte einen Patch schicken, damit ich das am nächsten Wochenende gleich mitverarbeiten kann?

Danke
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

betateilchen

#545
Ich (genauer: mein git-Client) hab vorhin versehentlich eine 02_RSS.pm eingecheckt, die ich dann direkt wieder per revert zurückgesetzt habe. Bitte nicht wundern  :-[
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Patch inklusive Doku per email verschickt :)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Ich habe heute damit angefangen, das 02_RSS.pm komplett neu zu schreiben.

Ziel: auf die GD Library und das rechenaufwendige Rendern in fhem zu verzichten und die Ausgabe komplett auf SVG umzustellen.

(http://up.picr.de/20744477hb.jpg)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

moonsorrox

OT...Oh je ich war 3 Tage ohne Internet.... :-\ :-\

Und sofort gibt es interessante Neuigkeiten..! Da gibt es sicher dann ein kleinen RRS-Workshop oder einen kurzen Nachtrag dazu..!

Ich habe nicht untätig rum gesessen und an meiner leidigen Müllgeschichte gebastelt, jetzt geht es auch das jeweils die Anzeige "mittig" erscheint was ich ja nicht hinbekommen habe.
Dazu habe ich den Abfallkalender (abfall.holiday) etwas geändert und die Abfrage ebenfalls.
Mit dem Code von betateilchen bedanke ich mich und habe ich es nun folgendermaßen gemacht.


abfall.holiday
1 01-21 gelber (Wertstoff Sack)
1 01-28 gelber (Sack) und graue Tonne (Hausmüll AHA)


rss.layout

######################################################################
## Heute ist nur gelber Sack...!
condition {ReadingsVal('abfall','state','none') =~ m/Wertstoff/}

pt 14
rgb 00FA9A # MediumSpringGreen

img 875 127 .20 png url "http://10.0.0.44/icon/gelb.png"

moveby 18 -20
text x y { "Heute" }
condition 1
##########################################################################
## Heute ist gelber Sack und graue Tonne...!
condition {ReadingsVal('abfall','state','none') =~ m/und/}

pt 14
rgb 00FA9A # MediumSpringGreen

img 850 127 .20 png url "http://10.0.0.44/icon/gelb.png"
img 900 115 .35 png url "http://10.0.0.44/icon/tonne-grau.png"

moveby -10 -10
text x y { "Heute" }
condition 1
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

doesel

#549
Nach einem Umzug der FHEM-Installation sind die Beschriftungen und Linien im RSS-SVG-Plot nur noch einfarbig (schwarz). :'(
Alle anderen zugewiesenen Farben in der rss.layout kommen einwandfrei. Was habe ich vergessen bzw. falsch gemacht?

In FHEM erscheint der Plot in Farbe...
(FHEM auf Cubietruck mit Igor-Image, 64GB SSD), seit März 19 FHEM auf NUC im Proxmox-Container, 240GB SSD, div. Homematic, Max Fensterkontakte, Onewire über Firmata und FHEM2FHEM auf Raspberrys, MySensors, Jeelink-Clone mit GSD-Modul, CUL, SDM220Modbus, Logo!8, WS980WiFi

betateilchen

Zitat von: doesel am 25 Januar 2015, 10:54:01
Was habe ich vergessen bzw. falsch gemacht?

Den Style im FHEM Frontend noch nicht ausgewählt. Vermutlich hattest Du in der alten Installation "dark" und jetzt "default". Davon sind die Farben im Plot abhängig.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

doesel

Zitat von: betateilchen am 25 Januar 2015, 11:18:50
Den Style im FHEM Frontend noch nicht ausgewählt. Vermutlich hattest Du in der alten Installation "dark" und jetzt "default". Davon sind die Farben im Plot abhängig.
Danke für die schnelle Antwort. Den Style habe ich nie geändert, war immer "default". Nun habe ich eben mehrmals den Style geändert, auch mit "shutdown restart" zwischendurch. Leider ist immer noch der Plot in schwarz/weiss. Vielleicht noch eine Idee?
(FHEM auf Cubietruck mit Igor-Image, 64GB SSD), seit März 19 FHEM auf NUC im Proxmox-Container, 240GB SSD, div. Homematic, Max Fensterkontakte, Onewire über Firmata und FHEM2FHEM auf Raspberrys, MySensors, Jeelink-Clone mit GSD-Modul, CUL, SDM220Modbus, Logo!8, WS980WiFi

Benni

Hallo ihr beiden,

das gleiche "Problem" habe ich seit gestern, nach Update auch:

Wobei witzigerweise die Darstellung nur im RSS falsch ist, sprich mit schwarzer Kurvendarstellung.
Im Web-Fontent passt es, da sind die Kurven nach wie vor farbig dargestellt. (s. angehängte Scrennshots)

Habe aber weder am Style, am RSS noch am Plot Änderungen vorgenommen.


doesel

Habe mal probeweise 98_SVG.pm und 02_RSS.pm aus einem Backup v. 15. Januar wieder eingespielt, leider keine Änderung. Plot bleibt einfarbig im RSS...
(FHEM auf Cubietruck mit Igor-Image, 64GB SSD), seit März 19 FHEM auf NUC im Proxmox-Container, 240GB SSD, div. Homematic, Max Fensterkontakte, Onewire über Firmata und FHEM2FHEM auf Raspberrys, MySensors, Jeelink-Clone mit GSD-Modul, CUL, SDM220Modbus, Logo!8, WS980WiFi

Benni

Hier gibt es auch noch einen Thread wg. fehlerhafter Darstellung von Plots, inkl. vermeintlicher Lösung:

http://forum.fhem.de/index.php/topic,32777.msg251623.html#msg251623

Das scheint aber nicht das selbe zu sein wie hier denn, wie oben schon erwähnt stimmt die Darstellung ja nur im RSS nicht.