Feature: Untemplate table header (#713)
This commit is contained in:
parent
bd0c5302ec
commit
cd28210fdb
|
@ -26,15 +26,6 @@
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
</template>
|
</template>
|
||||||
<template id="template_results-table__head">
|
|
||||||
<thead id="results-table-head">
|
|
||||||
<tr>
|
|
||||||
{%- for th in table_head %}
|
|
||||||
{{ th|safe }}
|
|
||||||
{%- endfor %}
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
</template>
|
|
||||||
<template id="template_results-table__body--empty">
|
<template id="template_results-table__body--empty">
|
||||||
<tbody class="results-table-row">
|
<tbody class="results-table-row">
|
||||||
<tr id="not-found-message">
|
<tr id="not-found-message">
|
||||||
|
@ -107,7 +98,15 @@
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<table id="results-table"></table>
|
<table id="results-table">
|
||||||
|
<thead id="results-table-head">
|
||||||
|
<tr>
|
||||||
|
{%- for th in table_head %}
|
||||||
|
{{ th|safe }}
|
||||||
|
{%- endfor %}
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
</table>
|
||||||
</body>
|
</body>
|
||||||
<footer>
|
<footer>
|
||||||
<div id="data-container" data-jsonblob="{{ test_data }}"></div>
|
<div id="data-container" data-jsonblob="{{ test_data }}"></div>
|
||||||
|
|
|
@ -37,9 +37,8 @@ const dom = {
|
||||||
return envRow
|
return envRow
|
||||||
},
|
},
|
||||||
getResultTBody: ({ testId, id, log, duration, extras, resultsTableRow, tableHtml, result, collapsed }) => {
|
getResultTBody: ({ testId, id, log, duration, extras, resultsTableRow, tableHtml, result, collapsed }) => {
|
||||||
const resultLower = result.toLowerCase()
|
|
||||||
const resultBody = templateResult.content.cloneNode(true)
|
const resultBody = templateResult.content.cloneNode(true)
|
||||||
resultBody.querySelector('tbody').classList.add(resultLower)
|
resultBody.querySelector('tbody').classList.add(result.toLowerCase())
|
||||||
resultBody.querySelector('tbody').id = testId
|
resultBody.querySelector('tbody').id = testId
|
||||||
resultBody.querySelector('.collapsible').dataset.id = id
|
resultBody.querySelector('.collapsible').dataset.id = id
|
||||||
|
|
||||||
|
|
|
@ -28,34 +28,7 @@ const renderStatic = () => {
|
||||||
renderEnvironmentTable()
|
renderEnvironmentTable()
|
||||||
}
|
}
|
||||||
|
|
||||||
const renderContent = (tests) => {
|
const addItemToggleListener = (elem) => {
|
||||||
const sortAttr = getSort(manager.initialSort)
|
|
||||||
const sortAsc = JSON.parse(getSortDirection())
|
|
||||||
const rows = tests.map(dom.getResultTBody)
|
|
||||||
const table = document.getElementById('results-table')
|
|
||||||
const tableHeader = document.getElementById('template_results-table__head').content.cloneNode(true)
|
|
||||||
|
|
||||||
removeChildren(table)
|
|
||||||
|
|
||||||
tableHeader.querySelector(`.sortable[data-column-type="${sortAttr}"]`)?.classList.add(sortAsc ? 'desc' : 'asc')
|
|
||||||
table.appendChild(tableHeader)
|
|
||||||
if (!rows.length) {
|
|
||||||
const emptyTable = document.getElementById('template_results-table__body--empty').content.cloneNode(true)
|
|
||||||
table.appendChild(emptyTable)
|
|
||||||
}
|
|
||||||
|
|
||||||
rows.forEach((row) => !!row && table.appendChild(row))
|
|
||||||
|
|
||||||
findAll('.sortable').forEach((elem) => {
|
|
||||||
elem.addEventListener('click', (evt) => {
|
|
||||||
const { target: element } = evt
|
|
||||||
const { columnType } = element.dataset
|
|
||||||
doSort(columnType)
|
|
||||||
redraw()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
findAll('.collapsible td:not(.col-links').forEach((elem) => {
|
|
||||||
elem.addEventListener('click', ({ target }) => {
|
elem.addEventListener('click', ({ target }) => {
|
||||||
const id = target.parentElement.dataset.id
|
const id = target.parentElement.dataset.id
|
||||||
manager.toggleCollapsedItem(id)
|
manager.toggleCollapsedItem(id)
|
||||||
|
@ -70,9 +43,38 @@ const renderContent = (tests) => {
|
||||||
}
|
}
|
||||||
redraw()
|
redraw()
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const renderContent = (tests) => {
|
||||||
|
const sortAttr = getSort(manager.initialSort)
|
||||||
|
const sortAsc = JSON.parse(getSortDirection())
|
||||||
|
const rows = tests.map(dom.getResultTBody)
|
||||||
|
const table = document.getElementById('results-table')
|
||||||
|
const tableHeader = document.getElementById('results-table-head')
|
||||||
|
|
||||||
|
const newTable = document.createElement('table')
|
||||||
|
newTable.id = 'results-table'
|
||||||
|
|
||||||
|
// remove all sorting classes and set the relevant
|
||||||
|
findAll('.sortable', tableHeader).forEach((elem) => elem.classList.remove('asc', 'desc'))
|
||||||
|
tableHeader.querySelector(`.sortable[data-column-type="${sortAttr}"]`).classList.add(sortAsc ? 'desc' : 'asc')
|
||||||
|
newTable.appendChild(tableHeader)
|
||||||
|
|
||||||
|
if (!rows.length) {
|
||||||
|
const emptyTable = document.getElementById('template_results-table__body--empty').content.cloneNode(true)
|
||||||
|
newTable.appendChild(emptyTable)
|
||||||
|
} else {
|
||||||
|
rows.forEach((row) => {
|
||||||
|
if (!!row) {
|
||||||
|
findAll('.collapsible td:not(.col-links', row).forEach(addItemToggleListener)
|
||||||
|
newTable.appendChild(row)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
table.replaceWith(newTable)
|
||||||
|
}
|
||||||
|
|
||||||
const renderDerived = () => {
|
const renderDerived = () => {
|
||||||
const currentFilter = getVisible()
|
const currentFilter = getVisible()
|
||||||
possibleFilters.forEach((result) => {
|
possibleFilters.forEach((result) => {
|
||||||
|
@ -108,6 +110,16 @@ const bindEvents = () => {
|
||||||
findAll('input[name="filter_checkbox"]').forEach((elem) => {
|
findAll('input[name="filter_checkbox"]').forEach((elem) => {
|
||||||
elem.addEventListener('click', filterColumn)
|
elem.addEventListener('click', filterColumn)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
findAll('.sortable').forEach((elem) => {
|
||||||
|
elem.addEventListener('click', (evt) => {
|
||||||
|
const { target: element } = evt
|
||||||
|
const { columnType } = element.dataset
|
||||||
|
doSort(columnType)
|
||||||
|
redraw()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
document.getElementById('show_all_details').addEventListener('click', () => {
|
document.getElementById('show_all_details').addEventListener('click', () => {
|
||||||
manager.allCollapsed = false
|
manager.allCollapsed = false
|
||||||
setCollapsedIds([])
|
setCollapsedIds([])
|
||||||
|
|
Loading…
Reference in New Issue