function genValueTable(interpr, opts) {
const {varOrder=undefined, lang=LANG, classnames=CLASSNAMES_DEFAULT} = {...opts};
let thead = '';
let tbody = '';
if (interpr.hasOwnProperty('Result')) {
const val = interpr.Result + ' / ' + ( (interpr.Result === 0) ? 'n' : (interpr.Result === 1) ? 'm' : (interpr.Result === 2) ? 'u' : (interpr.Result === 3) ? 'i' : '???' );
thead = `<tr><th scope="col">${lang.result}</th></tr>`
tbody = `<tr><td><code>${val}</code></td></tr>`
}
else {
function restoreVarsInKey(str) {
if (varOrder === undefined) return str;
const parts = str.split(';');
const restoredVarKeys = varOrder.join(',');
return restoredVarKeys + ';' + parts[1];
};
const _keys = Object.keys(interpr);
const corr_interpr = Object.fromEntries( _keys.map(k => [ restoreVarsInKey(k), interpr[k] ]) )
const keys = Object.keys(corr_interpr);
keys.sort();
const labels = keys.map(e => {
let parts = e.split(';');
parts = parts.map((p,i) => {
const delim = i < 1 ? ',' : '', sep = delim;
return p.split(delim).join(`</span>${sep}<span>`).concat(`</span>`).addBefore(0,`<span>`);
} );
return parts;
});
thead = `<tr><th scope="col">${lang.variables}</th>
<th scope="col">${lang.interpretation}</th>
<th scope="col">${lang.result}</th></tr>`
let str = '';
keys.forEach( (e,i) => {
str += `<tr><td class="${classnames.td.varLabels}"><code>${labels[i][0]}</code></td>
<td class="${classnames.td.varVals}"><code>${labels[i][1]}</code></td>
<td class="${classnames.td.result}"><code>${corr_interpr[e]}</code></td></tr>`;
} );
tbody = str;
}
return `
<table class="${classnames.table}">
<thead>
${ thead }
</thead>
<tbody>
${ tbody }
</tbody>
</table>
`;
}