From 339e1496a74ad346abc0d69945653a7cad88a7e1 Mon Sep 17 00:00:00 2001 From: RunasSudo Date: Tue, 25 May 2021 01:34:26 +1000 Subject: [PATCH] Fix calculation of table widths for print view --- html/index.js | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/html/index.js b/html/index.js index 9d1b6a4..a5c43e6 100644 --- a/html/index.js +++ b/html/index.js @@ -594,7 +594,7 @@ function printResult() { // Add stylesheets let numToLoad = 0; - let numLoaded = 0; + let numLoaded = -1; function onLoadStylesheet() { numLoaded++; @@ -676,7 +676,7 @@ function printResult() { return tdsAdded; } - function copyTableColumns(startCol) { + async function copyTableColumns(startCol) { // Add table let elTable2 = wprint.document.createElement('table'); elTable2.className = 'result'; @@ -701,6 +701,9 @@ function printResult() { for (let c = startCol; c < rows[0].length + 1; c++) { // +1 to account for final status column let tdsAdded = copyColumn(c, elTrs2); + // Nasty hack: DOM can take a while to update clientWidth + await new Promise(wprint.requestAnimationFrame); + // Check if overflowed if (elTable2.clientWidth > printableWidth) { for (let elTd2 of tdsAdded) { @@ -712,11 +715,14 @@ function printResult() { } } - copyTableColumns(1); - - // Copy result logs2 - divResultLogs1 = document.getElementById('resultLogs2'); - divResultLogs2 = wprint.document.createElement('div'); - divResultLogs2.innerHTML = divResultLogs1.innerHTML; - elContainer.appendChild(divResultLogs2); + copyTableColumns(1).then(function() { + // Copy result logs2 + divResultLogs1 = document.getElementById('resultLogs2'); + divResultLogs2 = wprint.document.createElement('div'); + divResultLogs2.innerHTML = divResultLogs1.innerHTML; + elContainer.appendChild(divResultLogs2); + + // Trigger print when ready + onLoadStylesheet(); + }); }