Skip to content

Commit cda2eda

Browse files
authored
Update predbat-table-card.js
added functionality to allow Trefor's debug metadata to appear in the table card.
1 parent 32055e1 commit cda2eda

File tree

1 file changed

+45
-5
lines changed

1 file changed

+45
-5
lines changed

predbat-table-card.js

Lines changed: 45 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)