mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Elasticsearch: Fixes localized dates in index pattern (#27351)
Fixes #8403
This commit is contained in:
@@ -9,11 +9,15 @@ const intervalMap: any = {
|
||||
};
|
||||
|
||||
export class IndexPattern {
|
||||
private dateLocale = 'en';
|
||||
|
||||
constructor(private pattern: any, private interval?: string) {}
|
||||
|
||||
getIndexForToday() {
|
||||
if (this.interval) {
|
||||
return toUtc().format(this.pattern);
|
||||
return toUtc()
|
||||
.locale(this.dateLocale)
|
||||
.format(this.pattern);
|
||||
} else {
|
||||
return this.pattern;
|
||||
}
|
||||
@@ -35,7 +39,7 @@ export class IndexPattern {
|
||||
const indexList = [];
|
||||
|
||||
while (start.valueOf() <= endEpoch) {
|
||||
indexList.push(start.format(this.pattern));
|
||||
indexList.push(start.locale(this.dateLocale).format(this.pattern));
|
||||
start.add(1, intervalInfo.amount);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
///<amd-dependency path="test/specs/helpers" name="helpers" />
|
||||
|
||||
import { IndexPattern } from '../index_pattern';
|
||||
import { toUtc } from '@grafana/data';
|
||||
import { toUtc, getLocale, setLocale } from '@grafana/data';
|
||||
|
||||
describe('IndexPattern', () => {
|
||||
const originalLocale = getLocale();
|
||||
afterEach(() => setLocale(originalLocale));
|
||||
|
||||
describe('when getting index for today', () => {
|
||||
test('should return correct index name', () => {
|
||||
const pattern = new IndexPattern('[asd-]YYYY.MM.DD', 'Daily');
|
||||
@@ -11,6 +14,17 @@ describe('IndexPattern', () => {
|
||||
|
||||
expect(pattern.getIndexForToday()).toBe(expected);
|
||||
});
|
||||
|
||||
test('should format date using western arabic numerals regardless of locale', () => {
|
||||
setLocale('ar_SA'); // saudi-arabic, formatting for YYYY.MM.DD looks like "٢٠٢٠.٠٩.٠٣"
|
||||
const pattern = new IndexPattern('[asd-]YYYY.MM.DD', 'Daily');
|
||||
const expected =
|
||||
'asd-' +
|
||||
toUtc()
|
||||
.locale('en')
|
||||
.format('YYYY.MM.DD');
|
||||
expect(pattern.getIndexForToday()).toBe(expected);
|
||||
});
|
||||
});
|
||||
|
||||
describe('when getting index list for time range', () => {
|
||||
@@ -33,6 +47,17 @@ describe('IndexPattern', () => {
|
||||
|
||||
expect(pattern.getIndexList(from, to)).toEqual(expected);
|
||||
});
|
||||
|
||||
test('should format date using western arabic numerals regardless of locale', () => {
|
||||
setLocale('ar_SA'); // saudi-arabic, formatting for YYYY.MM.DD looks like "٢٠٢٠.٠٩.٠٣"
|
||||
const pattern = new IndexPattern('[asd-]YYYY.MM.DD', 'Daily');
|
||||
const from = new Date(1432940523000);
|
||||
const to = new Date(1433153106000);
|
||||
|
||||
const expected = ['asd-2015.05.29', 'asd-2015.05.30', 'asd-2015.05.31', 'asd-2015.06.01'];
|
||||
|
||||
expect(pattern.getIndexList(from, to)).toEqual(expected);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user