diff --git a/packages/grafana-ui/src/utils/processTableData.test.ts b/packages/grafana-ui/src/utils/processTableData.test.ts index 0201e9e1447..4c5897ac216 100644 --- a/packages/grafana-ui/src/utils/processTableData.test.ts +++ b/packages/grafana-ui/src/utils/processTableData.test.ts @@ -54,9 +54,6 @@ describe('toTableData', () => { expect(guessColumnTypeFromValue(1)).toBe(ColumnType.number); expect(guessColumnTypeFromValue(1.234)).toBe(ColumnType.number); expect(guessColumnTypeFromValue(3.125e7)).toBe(ColumnType.number); - expect(guessColumnTypeFromValue('1')).toBe(ColumnType.string); - expect(guessColumnTypeFromValue('1.234')).toBe(ColumnType.string); - expect(guessColumnTypeFromValue('3.125e7')).toBe(ColumnType.string); expect(guessColumnTypeFromValue(true)).toBe(ColumnType.boolean); expect(guessColumnTypeFromValue(false)).toBe(ColumnType.boolean); expect(guessColumnTypeFromValue(new Date())).toBe(ColumnType.time); @@ -64,19 +61,19 @@ describe('toTableData', () => { }); it('Guess Colum Types from strings', () => { - expect(guessColumnTypeFromValue('1', true)).toBe(ColumnType.number); - expect(guessColumnTypeFromValue('1.234', true)).toBe(ColumnType.number); - expect(guessColumnTypeFromValue('3.125e7', true)).toBe(ColumnType.number); - expect(guessColumnTypeFromValue('True', true)).toBe(ColumnType.boolean); - expect(guessColumnTypeFromValue('FALSE', true)).toBe(ColumnType.boolean); - expect(guessColumnTypeFromValue('true', true)).toBe(ColumnType.boolean); - expect(guessColumnTypeFromValue('xxxx', true)).toBe(ColumnType.string); + expect(guessColumnTypeFromValue('1')).toBe(ColumnType.number); + expect(guessColumnTypeFromValue('1.234')).toBe(ColumnType.number); + expect(guessColumnTypeFromValue('3.125e7')).toBe(ColumnType.number); + expect(guessColumnTypeFromValue('True')).toBe(ColumnType.boolean); + expect(guessColumnTypeFromValue('FALSE')).toBe(ColumnType.boolean); + expect(guessColumnTypeFromValue('true')).toBe(ColumnType.boolean); + expect(guessColumnTypeFromValue('xxxx')).toBe(ColumnType.string); }); it('Guess Colum Types from table', () => { const table = { columns: [{ text: 'A (number)' }, { text: 'B (strings)' }, { text: 'C (nulls)' }, { text: 'Time' }], - rows: [[123, null, null, '2000'], [null, '123', null, 'XXX']], + rows: [[123, null, null, '2000'], [null, 'Hello', null, 'XXX']], }; const norm = guessColumnTypes(table); expect(norm.columns[0].type).toBe(ColumnType.number); diff --git a/packages/grafana-ui/src/utils/processTableData.ts b/packages/grafana-ui/src/utils/processTableData.ts index cc5c4ce7164..8be514ae5d5 100644 --- a/packages/grafana-ui/src/utils/processTableData.ts +++ b/packages/grafana-ui/src/utils/processTableData.ts @@ -170,24 +170,20 @@ const NUMBER = /^\s*-?(\d*\.?\d+|\d+\.?\d*)(e[-+]?\d+)?\s*$/i; * * TODO: better Date/Time support! Look for standard date strings? */ -export function guessColumnTypeFromValue(v: any, parseString?: boolean): ColumnType { +export function guessColumnTypeFromValue(v: any): ColumnType { if (isNumber(v)) { return ColumnType.number; } if (isString(v)) { - if (parseString) { - const c0 = v[0].toLowerCase(); - if (c0 === 't' || c0 === 'f') { - if (v === 'true' || v === 'TRUE' || v === 'True' || v === 'false' || v === 'FALSE' || v === 'False') { - return ColumnType.boolean; - } - } - - if (NUMBER.test(v)) { - return ColumnType.number; - } + if (NUMBER.test(v)) { + return ColumnType.number; } + + if (v === 'true' || v === 'TRUE' || v === 'True' || v === 'false' || v === 'FALSE' || v === 'False') { + return ColumnType.boolean; + } + return ColumnType.string; } @@ -205,7 +201,7 @@ export function guessColumnTypeFromValue(v: any, parseString?: boolean): ColumnT /** * Looks at the data to guess the column type. This ignores any existing setting */ -function guessColumnTypeFromTable(table: TableData, index: number, parseString?: boolean): ColumnType | undefined { +function guessColumnTypeFromTable(table: TableData, index: number): ColumnType | undefined { const column = table.columns[index]; // 1. Use the column name to guess @@ -220,7 +216,7 @@ function guessColumnTypeFromTable(table: TableData, index: number, parseString?: for (let i = 0; i < table.rows.length; i++) { const v = table.rows[i][index]; if (v !== null) { - return guessColumnTypeFromValue(v, parseString); + return guessColumnTypeFromValue(v); } }