Browse Source

removed option to not check strings

ryan 6 năm trước cách đây
mục cha
commit
8e6279cbca

+ 8 - 11
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);

+ 9 - 13
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);
     }
   }