FHEM Forum

FHEM => Frontends => Thema gestartet von: Cybers am 02 Dezember 2014, 15:33:05

Titel: Devicename und Symbol/Status nebeneinander
Beitrag von: Cybers am 02 Dezember 2014, 15:33:05
Hallo,

ich bin verweifelt auf der Suche nach einer Lösung um den Devicenamen und das Statussymbol nebeneinander angezeigt zu bekommen.
Im Grunde soll die Anzeige wie bei Stil 1 sein, nur nicht untereinander sonder halt nebeneinander Ich habe schon verschiedenes in der 95_Floorplan.pm probiert aber habe bisher keine Lösung finden können. Hier mal der entsprechende Ausschnitt aus der 95_Floorplan.pm:
# start device-specific table
FW_pO "\n<div style=\"position:absolute; top:".$top."px; left:".$left."px;\" id=\"div-$d\">";
FW_pO "<form method=\"$FW_formmethod\" action=\"$FW_ME/floorplan/$FP_name/$d\" autocomplete=\"off\">";
FW_pO " <table class=\"$type fp_$FP_name\" id=\"table-$d\" align=\"center\">";         # Main table per device
my ($allSets, $cmdlist, $txt) = FW_devState($d, "");
$txt = ReadingsVal($d, $text, "Undefined Reading $d-<b>$text</b>") if ($style == 3 || $style == 6);   # Style3+6 = DeviceReading given in $text
my $cols = ($cmdlist ? (split(":", $cmdlist)) : 0);                                    # Need command-count for colspan of devicename+state

    ########################
    # Device-name per device
if ($style gt 0 && $style ne 5 && $style ne 7 && $style ne 8) {
FW_pO "   <tr class=\"devicename fp_$FP_name\" id=\"$d-devicename\">";             # For css: class=devicename, id=<devicename>-devicename
my $devName = "";
if ($style == 3 || $style == 6) {
$devName = $text2 ? $text2 : "";    # Style 3 = Reading - use last part of comma-separated description
} else {
$devName = ($text ? $text : AttrVal($d, "alias", $d));
}
if ($style == 4 && $txt =~ /T: ([\-0-9\.]+)[ ]+H: ([\-0-9\.]+).*/) {        # S300TH-specific
$txt = "<span class='fp_tempvalue' display=inline><span informId=$d-temperature>".$1."</span>&deg;C</span><BR><span class='fp_humvalue'><span informId=$d-humidity>".$2."</span>%</span>";
}
FW_pO "<td colspan=\"$cols\">";
FW_pO "$devName" ;
FW_pO "</td></tr>";
}

    ########################
    # Device-state per device
#     FW_pO "<tr class=\"devicestate fp_$FP_name\" id=\"$d\">";                               # For css: class=devicestate, id=devicename
       if ($style != 7 && $style != 8) {
    if ($style == 3 || $style == 6) {
      FW_pO "<tr class=\"devicereading fp_$FP_name\" id=\"$d"."-$text\">";                  # For css: class=devicereading, id=<devicename>-<reading>
    } else {
          FW_pO "<tr class=\"devicestate fp_$FP_name\" id=\"$d\">";                           # For css: class=devicestate, id=<devicename>
    }
        $txt =~ s/measured-temp: ([\.\d]*) \(Celsius\)/$1/;                                     # format FHT-temperature
    ### use device-specific icons according to userattr fp_image or fp_<floorplan>.image
    my $fp_image = AttrVal("$d", "fp_image", undef);                                        # floorplan-independent icon
        my $fp_fpimage = AttrVal("$d","fp_$FP_name".".image", undef);                           # floorplan-dependent icon
        if ($fp_image) {
            my $state = ReadingsVal($d, "state", undef);
    $fp_image =~ s/\{state\}/$state/;                                                       # replace {state} by actual device-status
            $txt =~ s/\<img\ src\=\"(.*)\"/\<img\ src\=\"\/fhem\/icons\/$fp_image\"/;           # replace icon-link in html
            $txt =~ s/\<img\ (.*) src\=\"(.*)\"/\<img\ $1 src\=\"\/fhem\/images\/default\/$fp_image\"/;           # replace icon-link in html (new)
        }
        if ($fp_fpimage) {
            my $state = ReadingsVal($d, "state", undef);
            $fp_fpimage =~ s/\{state\}/$state/;                                                 # replace {state} by actual device-status
            $txt =~ s/\<img\ src\=\"(.*)\"/\<img\ src\=\"\/fhem\/icons\/$fp_fpimage\"/;         # replace icon-link in html
            $txt =~ s/\<img\ (.*) src\=\"(.*)\"/\<img\ $1 src\=\"\/fhem\/images\/default\/$fp_fpimage\"/;     # replace icon-link in html (new)
        }
if ($style == 3 || $style == 6) {
  FW_pO "<td><div informId=\"$d-$text\">$txt</div>";                                    # reading
} elsif ($style == 4) {
  FW_pO "<td>$txt";                                                                     # state style4
        } else {
      FW_pO "<td informId=\"$d\" colspan=\"$cols\">$txt";                                   # state
}
    FW_pO "</td></tr>";
   }
    if ($style == 6) {                                                                      # add ReadingsTimeStamp for style 6
  $txt="";
      FW_pO "<tr class=\"devicetimestamp fp_$FP_name\" id=\"$d-devicetimestamp\">";         # For css: class=devicetimestamp, id=<devicename>-devicetimestamp
  $txt = ReadingsTimestamp($d, $text, "Undefined Reading $d-<b>$text</b>");             # Style3+6 = DeviceReading given in $text
#          FW_pO "<td><div colspan=\"$cols\" informId=\"$d-$text-ts\">$txt</div></td>";
  FW_pO "<td><div colspan=\"$cols\" informId=\"$d-$text-ts\">$txt</div>";
      FW_pO "</td></tr>";
    }
if ($style == 8) {
  my $image = "";
  my $re = qr/href=["']([^"']+)["']/i;
  my @links = ($txt =~ m{ $re }gx);
  $re = qr/<img.*src="(.+)"/i;
  my @urls = ($txt =~ m{ $re }gx);
  if (@urls[0]) {
  $image = "<img src=\"$urls[0]\">";
  } else {
  @urls=();
  $re = qr/<svg(.+)<\/svg>/i;
  @urls = ($txt =~ m{ $re }gx);
  $image = "<svg$urls[0]</svg>";
  }
  FW_pO "<tr><td><div class=\"Style8\" id=\"$d\" onClick=\"location.href='$links[0]'\"><table><tr><td class=\"Style8Text\">$text</td><td class=\"Style8Image\">$image</td></tr></table></div></td></tr>";
        }


Vielleicht kann mir ja einer helfen.

Gruß, Sascha
Titel: Antw:Devicename und Symbol/Status nebeneinander
Beitrag von: KernSani am 02 Dezember 2014, 17:50:29
Hi Sascha,

ich kann mir das gerade nicht im Detail ansehen, aber so wie ich das sehe wird hier eine HTML Tabelle mit jeweils Zeilen für Name und Status aufgebaut. Diese Werte müssten in eine Zeile geschrieben werden. Ich fürchte aber, das wird ein Gefummel mit den ganzen IFs, um die Spalten dann wieder richtig sortiert zu bekommen (wenn du möchtest, dass weiterhin alle Styles korrekt funktionieren)


FW_pO "$devName" ;
FW_pO "</td></tr>";
}

    ########################
    # Device-state per device
#     FW_pO "<tr class=\"devicestate fp_$FP_name\" id=\"$d\">"; 


Grüße,

Oli
Titel: Antw:Devicename und Symbol/Status nebeneinander
Beitrag von: Cybers am 03 Dezember 2014, 09:07:07
die anderen Styles wären  mir egal, die  brauche ich nicht. Ich habe selbst schon an verschiendenen stellen das tr bzw. /tr weggelassen um die neue Tabellenzeile für den Status zu vermeiden. Aber da fehlt es mir an höheren HTML-Kenntnissen, bzw. Routine.
In einem anderen Forumsbeitrag hat jemand zwar einen Style entworfen wo Name und Status nebeneinander sind, allerdings ist hierbei das Statussymbol nicht anklickbar um das Gerät an/auszuschalten. Dieser Style ist in dem obigen Code als Style 8 enthalten.

Gruß, Sascha
Titel: Antw:Devicename und Symbol/Status nebeneinander
Beitrag von: Sturi2011 am 07 Dezember 2014, 07:19:41
Hi,

das war ich - ich versuche das mit dem nicht anklickbaren Icon mal im anderen Thread zu klären.
Hier funktioniert das ganze...

Gruß Andreas