@@ -89,19 +89,16 @@ class PredbatTableCard extends HTMLElement {
8989
9090 // console.log(hass.states[entityId].last_updated);
9191
92- const lastUpdated = this . getLastUpdatedFromHTML ( rawHTML ) ;
9392 const dataArray = this . getArrayDataFromHTML ( rawHTML , hass . themes . darkMode ) ;
9493 let theTable = document . createElement ( 'table' ) ;
9594 theTable . setAttribute ( 'id' , 'predbat-table' ) ;
9695 theTable . setAttribute ( 'cellpadding' , '0px' ) ;
97-
98- //set out the table header row
99-
10096 let newTableHead = document . createElement ( 'thead' ) ;
10197
10298 // Create an optional Last Updated Table Header Row
10399 if ( this . config . hide_last_update !== true ) {
104-
100+
101+ const lastUpdated = this . getLastUpdatedFromHTML ( rawHTML ) ;
105102 let lastUpdateHeaderRow = document . createElement ( 'tr' ) ;
106103 let lastUpdateCell = document . createElement ( 'th' ) ;
107104 lastUpdateCell . classList . add ( 'lastUpdateRow' ) ;
@@ -112,6 +109,23 @@ class PredbatTableCard extends HTMLElement {
112109
113110 }
114111
112+ if ( this . config . show_table_meta === true ) {
113+ const metaArray = this . getMetadataFromHTML ( rawHTML ) ;
114+
115+ if ( metaArray . length > 0 ) {
116+
117+ for ( let i = 0 ; i < metaArray . length ; i ++ ) {
118+ let metaHeaderRow = document . createElement ( 'tr' ) ;
119+ let metaCell = document . createElement ( 'th' ) ;
120+ metaCell . classList . add ( 'lastUpdateRow' ) ;
121+ metaCell . colSpan = columnsToReturn . length ;
122+ metaCell . innerHTML = `${ metaArray [ i ] } ` ;
123+ metaHeaderRow . appendChild ( metaCell ) ;
124+ newTableHead . appendChild ( metaHeaderRow ) ;
125+ }
126+ }
127+ }
128+
115129 let newHeaderRow = document . createElement ( 'tr' ) ;
116130 newTableHead . classList . add ( 'topHeader' ) ;
117131
@@ -886,6 +900,32 @@ class PredbatTableCard extends HTMLElement {
886900 return svgLozenge ;
887901 }
888902
903+ getMetadataFromHTML ( html ) {
904+
905+ const dummyElement = document . createElement ( 'div' ) ;
906+ dummyElement . innerHTML = html ;
907+ const trElements = dummyElement . querySelectorAll ( 'tbody tr' ) ;
908+
909+ let metaArray = [ ] ;
910+ trElements . forEach ( ( trElement , index ) => {
911+
912+ const numberOfChildren = trElement . children . length ;
913+
914+ //detect if row data is metadata (rows with no table data). If children <td> is less than 2
915+ if ( numberOfChildren < 2 ) {
916+ const tdElements = trElement . querySelectorAll ( 'td' ) ;
917+ tdElements . forEach ( tdElement => {
918+ metaArray . splice ( index , 0 , tdElement . innerHTML ) ;
919+ } ) ;
920+
921+ }
922+
923+ } ) ;
924+
925+ return metaArray ;
926+
927+ }
928+
889929 getLastUpdatedFromHTML ( html ) {
890930
891931 // Create a dummy element to manipulate the HTML
0 commit comments