htmlBuildTable(input, cols) {
        if (!cols) {
            cols = Object.keys(input[0])
        }
        let html = '<div class="table-responsive"><table  class="uib-info-tb table table-sm"><thead><tr>'

        const escapeHTML = str => str.replace(/[&<>'"]/g,
            tag => ({
                '&': '&amp;',
                '<': '&lt;',
                '>': '&gt;',
                "'": '&#39;',
                '"': '&quot;',
            }[tag])
        )

        /** The HTML for a single cell
         * @param {*} col _
         * @param {*} entry _
         * @returns {string} HTML for a single cell
         */
        function cell(col, entry) {
            let html = '<td>'
            html += entry[col] ? escapeHTML(entry[col]) : ' '
            html += '</td>'
            return html
        }

        // Show the headings
        cols.forEach( (col) => {
            html += '<th>'
            html += col
            html += '</th>'
        })
        html += '</tr></thead>'

        for (const entry of input) {
            html += '<tr>'

            for (const col of cols) {
                html += cell(col, entry)
            }

            html += '</tr>'
        }

        html += '</table></div>'
        return html
    }
Build a raw HTML table from an input
@param {*} input Input object
@param {Array} [cols] List of columns
@returns {string} HTML Table