Hilfe zu Formatierung einer Tabelle in uiTable

Begonnen von gestein, 21 Dezember 2021, 15:16:54

Vorheriges Thema - Nächstes Thema

gestein

Hallo,

ich habe es mittlerweile geschafft, dass das DOIF alle meine FileLog-Devices samt ein paar Zusatz-Infos als Übersicht in einer Tabelle anzeigen kann.
Bei den Devices mit mehreren log-Dateien habe ich eine ausklappbare Übersicht zu den einzelnen Dateien samt Größe.

Allerdings schaffe ich es nicht, den ausgeklappten Teil schön zu formatieren.
Das sieht dann so aus wie auf den Bildern im Anhang.
Im ausgeklappten Teil kleben die Spalten aufeinander und ich schaffe es nicht, die schön in Spalten zu bekommen.

Ich bin mitten im Ausprobieren ;) Der Code ist weder schön noch aufgeräumt, aber soweit klappt es mal.
defmod di_LogFiles DOIF ##
attr di_LogFiles uiTable {## alle FileLogs mit Reading\
  package ui_Table;;;;\
##  $TC{0..4}="align='center'";;;;\
  $SHOWNOSTATE=1;;;;\
  $ATTRIBUTESFIRST=1;;;;\
\
sub FormatHumanReadable {\
## https://forum.fhem.de/index.php/topic,97807.msg910736.html#msg910736\
  my ($val)=@_;;;;\
  1 while $val =~ s/^(-?\d+)(\d{3})/$1.$2/;;;;\
  return $val;;;;\
}\
\
sub test {\
  my ($item)=@_;;;;\
##  my $ret="<tr><th align=left>FileLog-Device</th><th>lines in file</th><th align=right>file size in Bytes</th></tr>";;;;\
  my $ret="";;;;\
  my $currentlogfile = ::InternalVal($item,"currentlogfile","");;;;\
  my $filesize = -s $currentlogfile;;;;\
  my $filesize_temp;;;;\
  my $formString;;;;\
## https://forum.fhem.de/index.php/topic,108865.msg1028621.html#msg1028621\
  my $logDir=::AttrVal("global", "logdir", ::AttrVal("global","modpath","")."/log");;;;\
  my @logfiles=::FW_fileList(::InternalVal($item,"logfile",""));;;;\
\
## ::Log 1, "di_LogFiles: @logfiles";;;;\
\
##https://www.html-seminar.de/html-befehle-details-summary.htm\
$formString="<a href=\"/fhem?detail=$item\">$item</a>";;;;\
\
if(@logfiles>1) {\
$ret.="<td><details><summary>".$formString." (".(scalar @logfiles -1).")</summary><table>";;;;\
foreach my $logfile ( @logfiles ) {\
next if(($logDir."/".$logfile) eq $currentlogfile);;;;\
$filesize_temp = -s ($logDir."/".$logfile);;;;\
$ret.="<tr><td>$logDir/$logfile</td><td></td><td>".FormatHumanReadable($filesize_temp)."</td></tr>";;;;\
}\
$ret.="</table></details></td><td align=right>".FormatHumanReadable(::ReadingsVal($item,"linesInTheFile",""))."</td><td align=right>".FormatHumanReadable($filesize)."</td";;;; \
} else {\
$ret.="<td>".$formString."</td><td align=right>".FormatHumanReadable(::ReadingsVal($item,"linesInTheFile",""))."</td><td align=right>".FormatHumanReadable($filesize)."</td";;;;\
}\
return $ret;;;;\
}\
}\
##FOR(::devspec2array("TYPE=FileLog"),"$_"|[$_:linesInTheFile]|"Steiner"|"Gerhard"|[$_:currentlogfile]);;;;\
icon_temp_ring("temp_outside",[vaillant:Aussentemp],-15,40,130)|\
cylinder_bars("Monat",0,15,"m³",undef,undef,undef,1,[Wasserverbrauch:jan],30,"Januar",[Wasserverbrauch:feb],220,"Februar",[Wasserverbrauch:mrz],180,"März",[Wasserverbrauch:apr],30,"April",[Wasserverbrauch:mai],220,"Mai",[Wasserverbrauch:jun],180,"Juni",[Wasserverbrauch:jul],30,"Juli",[Wasserverbrauch:aug],220,"August",[Wasserverbrauch:sep],180,"September",[Wasserverbrauch:okt],30,"Oktober",[Wasserverbrauch:nov],220,"November",[Wasserverbrauch:dez],180,"Dezember")<\
FOR(::devspec2array("TYPE=FileLog"),test("$_"));;;;
attr di_LogFiles verbose 5


Wie kann ich die Tabelle im ausgeklappten Teil schön formatieren?
Und wie kann ich eine Kopfzeile angeben? So wie im Beispiel geht es leider nicht.

Danke für jede Hilfe im Voraus
lg, Gerhard

Damian

Ich befürchte, hier wird dir keiner richtig helfen können. Dazu ist gutes HTML-Wissen erforderlich. Bei uiTable ist u. a. die Idee ohne tiefes HTML/CSS-Wissen Tabellen erstellen zu können. Das steht hier im Widerspruch.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

gestein

Hallo Damian,

vielen Dank. Ich verstehe.
Es ist Dir ja auch wirklich was Tolles gelungen.
Das DOIF ist genial und so einfach, dass sogar ich was relativ rasch zusammenbringe ;)

Mal sehen, ob ich da noch bei dem einen oder anderen fündig werde.

lg, Gerhard