Skip to content

Commit 1cfeaba

Browse files
committed
Enable strict parsing for auto-detecting time fields
Fixes #202
1 parent 779ba3d commit 1cfeaba

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

src/detectFieldType.test.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ test('nullable iso8601 gets parsed as time', () => {
2525
expect(detectFieldType(['2006-01-02T15:06:13Z', null])).toStrictEqual('time');
2626
});
2727

28+
test('regression for #202', () => {
29+
expect(detectFieldType(['foo bar 1.1'])).toStrictEqual('string');
30+
});
31+
2832
test('floating-point numbers with string length 13 get parsed as number', () => {
2933
expect(detectFieldType([12.0000000003, 72.0000000001])).toStrictEqual('number');
3034
});

src/detectFieldType.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { FieldType } from '@grafana/data';
2-
import dayjs from 'dayjs';
2+
import moment from 'moment';
33

44
/**
55
* Detects the field type from an array of values.
@@ -13,7 +13,7 @@ export const detectFieldType = (values: any[]): FieldType => {
1313
// If all values are valid ISO 8601, then assume that it's a time field.
1414
const isValidISO = values
1515
.filter((value) => value !== null)
16-
.every((value) => value.length >= 10 && dayjs(value).isValid());
16+
.every((value) => moment(value, ['YYYY-MM-DD', moment.defaultFormat], true).isValid());
1717
if (isValidISO) {
1818
return FieldType.time;
1919
}

0 commit comments

Comments
 (0)