diff --git a/src/traces/table/data_preparation_helper.js b/src/traces/table/data_preparation_helper.js index dea13914950..62e07a248cd 100644 --- a/src/traces/table/data_preparation_helper.js +++ b/src/traces/table/data_preparation_helper.js @@ -13,10 +13,13 @@ var extendFlat = require('../../lib/extend').extendFlat; // pure functions, don't alter but passes on `gd` and parts of `trace` without deep copying module.exports = function calc(gd, trace) { + var headerValues = trace.header.values.map(function(c) { + return Array.isArray(c) ? c : [c]; + }); var domain = trace.domain; var groupWidth = Math.floor(gd._fullLayout._size.w * (domain.x[1] - domain.x[0])); var groupHeight = Math.floor(gd._fullLayout._size.h * (domain.y[1] - domain.y[0])); - var headerRowHeights = trace.header.values[0].map(function() {return trace.header.height;}); + var headerRowHeights = headerValues[0].map(function() {return trace.header.height;}); var rowHeights = trace.cells.values[0].map(function() {return trace.cells.height;}); var headerHeight = headerRowHeights.reduce(function(a, b) {return a + b;}, 0); var scrollHeight = groupHeight - headerHeight; @@ -27,7 +30,7 @@ module.exports = function calc(gd, trace) { var rowBlocks = makeRowBlock(anchorToRowBlock, headerRowBlocks); var uniqueKeys = {}; var columnOrder = trace._fullInput.columnorder; - var columnWidths = trace.header.values.map(function(d, i) { + var columnWidths = headerValues.map(function(d, i) { return Array.isArray(trace.columnwidth) ? trace.columnwidth[Math.min(i, trace.columnwidth.length - 1)] : isFinite(trace.columnwidth) && trace.columnwidth !== null ? trace.columnwidth : 1; @@ -50,12 +53,12 @@ module.exports = function calc(gd, trace) { headerRowBlocks: headerRowBlocks, scrollY: 0, // will be mutated on scroll cells: trace.cells, - headerCells: trace.header, - gdColumns: trace.header.values.map(function(d) {return d[0];}), - gdColumnsOriginalOrder: trace.header.values.map(function(d) {return d[0];}), + headerCells: extendFlat({}, trace.header, {values: headerValues}), + gdColumns: headerValues.map(function(d) {return d[0];}), + gdColumnsOriginalOrder: headerValues.map(function(d) {return d[0];}), prevPages: [0, 0], scrollbarState: {scrollbarScrollInProgress: false}, - columns: trace.header.values.map(function(label, i) { + columns: headerValues.map(function(label, i) { var foundKey = uniqueKeys[label]; uniqueKeys[label] = (foundKey || 0) + 1; var key = label + '__' + uniqueKeys[label]; diff --git a/test/image/mocks/table_latex_multitrace.json b/test/image/mocks/table_latex_multitrace.json index 63282b9aa37..5bd392be6ff 100644 --- a/test/image/mocks/table_latex_multitrace.json +++ b/test/image/mocks/table_latex_multitrace.json @@ -19,7 +19,7 @@ "columnorder": [0, 1, 2], "header": { - "values": [["#"], ["Half-angle form"], ["Equivalent"]], + "values": ["#", "Half-angle form", "Equivalent"], "align": ["right", "center", "center"], "line": {"width": 0.0}, "fill": {"color": ["dimgray", "grey"]},