mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
elasticsearch: support reversed index patterns
Now both [index-]pattern and pattern[-index] are supported
This commit is contained in:
parent
7699451d94
commit
ab8fa0de74
@ -248,13 +248,28 @@ var datePatternReplacements = map[string]string{
|
|||||||
|
|
||||||
func formatDate(t time.Time, pattern string) string {
|
func formatDate(t time.Time, pattern string) string {
|
||||||
var datePattern string
|
var datePattern string
|
||||||
parts := strings.Split(strings.TrimLeft(pattern, "["), "]")
|
base := ""
|
||||||
base := parts[0]
|
ltr := false
|
||||||
if len(parts) == 2 {
|
|
||||||
datePattern = parts[1]
|
if strings.HasPrefix(pattern, "[") {
|
||||||
} else {
|
parts := strings.Split(strings.TrimLeft(pattern, "["), "]")
|
||||||
datePattern = base
|
base = parts[0]
|
||||||
base = ""
|
if len(parts) == 2 {
|
||||||
|
datePattern = parts[1]
|
||||||
|
} else {
|
||||||
|
datePattern = base
|
||||||
|
base = ""
|
||||||
|
}
|
||||||
|
ltr = true
|
||||||
|
} else if strings.HasSuffix(pattern, "]") {
|
||||||
|
parts := strings.Split(strings.TrimRight(pattern, "]"), "[")
|
||||||
|
datePattern = parts[0]
|
||||||
|
if len(parts) == 2 {
|
||||||
|
base = parts[1]
|
||||||
|
} else {
|
||||||
|
base = ""
|
||||||
|
}
|
||||||
|
ltr = false
|
||||||
}
|
}
|
||||||
|
|
||||||
formatted := t.Format(patternToLayout(datePattern))
|
formatted := t.Format(patternToLayout(datePattern))
|
||||||
@ -293,7 +308,11 @@ func formatDate(t time.Time, pattern string) string {
|
|||||||
formatted = strings.Replace(formatted, "<stdHourNoZero>", fmt.Sprintf("%d", t.Hour()), -1)
|
formatted = strings.Replace(formatted, "<stdHourNoZero>", fmt.Sprintf("%d", t.Hour()), -1)
|
||||||
}
|
}
|
||||||
|
|
||||||
return base + formatted
|
if ltr {
|
||||||
|
return base + formatted
|
||||||
|
}
|
||||||
|
|
||||||
|
return formatted + base
|
||||||
}
|
}
|
||||||
|
|
||||||
func patternToLayout(pattern string) string {
|
func patternToLayout(pattern string) string {
|
||||||
|
@ -28,29 +28,54 @@ func TestIndexPattern(t *testing.T) {
|
|||||||
to := fmt.Sprintf("%d", time.Date(2018, 5, 15, 17, 55, 0, 0, time.UTC).UnixNano()/int64(time.Millisecond))
|
to := fmt.Sprintf("%d", time.Date(2018, 5, 15, 17, 55, 0, 0, time.UTC).UnixNano()/int64(time.Millisecond))
|
||||||
|
|
||||||
indexPatternScenario(intervalHourly, "[data-]YYYY.MM.DD.HH", tsdb.NewTimeRange(from, to), func(indices []string) {
|
indexPatternScenario(intervalHourly, "[data-]YYYY.MM.DD.HH", tsdb.NewTimeRange(from, to), func(indices []string) {
|
||||||
//So(indices, ShouldHaveLength, 1)
|
So(indices, ShouldHaveLength, 1)
|
||||||
So(indices[0], ShouldEqual, "data-2018.05.15.17")
|
So(indices[0], ShouldEqual, "data-2018.05.15.17")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
indexPatternScenario(intervalHourly, "YYYY.MM.DD.HH[-data]", tsdb.NewTimeRange(from, to), func(indices []string) {
|
||||||
|
So(indices, ShouldHaveLength, 1)
|
||||||
|
So(indices[0], ShouldEqual, "2018.05.15.17-data")
|
||||||
|
})
|
||||||
|
|
||||||
indexPatternScenario(intervalDaily, "[data-]YYYY.MM.DD", tsdb.NewTimeRange(from, to), func(indices []string) {
|
indexPatternScenario(intervalDaily, "[data-]YYYY.MM.DD", tsdb.NewTimeRange(from, to), func(indices []string) {
|
||||||
So(indices, ShouldHaveLength, 1)
|
So(indices, ShouldHaveLength, 1)
|
||||||
So(indices[0], ShouldEqual, "data-2018.05.15")
|
So(indices[0], ShouldEqual, "data-2018.05.15")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
indexPatternScenario(intervalDaily, "YYYY.MM.DD[-data]", tsdb.NewTimeRange(from, to), func(indices []string) {
|
||||||
|
So(indices, ShouldHaveLength, 1)
|
||||||
|
So(indices[0], ShouldEqual, "2018.05.15-data")
|
||||||
|
})
|
||||||
|
|
||||||
indexPatternScenario(intervalWeekly, "[data-]GGGG.WW", tsdb.NewTimeRange(from, to), func(indices []string) {
|
indexPatternScenario(intervalWeekly, "[data-]GGGG.WW", tsdb.NewTimeRange(from, to), func(indices []string) {
|
||||||
So(indices, ShouldHaveLength, 1)
|
So(indices, ShouldHaveLength, 1)
|
||||||
So(indices[0], ShouldEqual, "data-2018.20")
|
So(indices[0], ShouldEqual, "data-2018.20")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
indexPatternScenario(intervalWeekly, "GGGG.WW[-data]", tsdb.NewTimeRange(from, to), func(indices []string) {
|
||||||
|
So(indices, ShouldHaveLength, 1)
|
||||||
|
So(indices[0], ShouldEqual, "2018.20-data")
|
||||||
|
})
|
||||||
|
|
||||||
indexPatternScenario(intervalMonthly, "[data-]YYYY.MM", tsdb.NewTimeRange(from, to), func(indices []string) {
|
indexPatternScenario(intervalMonthly, "[data-]YYYY.MM", tsdb.NewTimeRange(from, to), func(indices []string) {
|
||||||
So(indices, ShouldHaveLength, 1)
|
So(indices, ShouldHaveLength, 1)
|
||||||
So(indices[0], ShouldEqual, "data-2018.05")
|
So(indices[0], ShouldEqual, "data-2018.05")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
indexPatternScenario(intervalMonthly, "YYYY.MM[-data]", tsdb.NewTimeRange(from, to), func(indices []string) {
|
||||||
|
So(indices, ShouldHaveLength, 1)
|
||||||
|
So(indices[0], ShouldEqual, "2018.05-data")
|
||||||
|
})
|
||||||
|
|
||||||
indexPatternScenario(intervalYearly, "[data-]YYYY", tsdb.NewTimeRange(from, to), func(indices []string) {
|
indexPatternScenario(intervalYearly, "[data-]YYYY", tsdb.NewTimeRange(from, to), func(indices []string) {
|
||||||
So(indices, ShouldHaveLength, 1)
|
So(indices, ShouldHaveLength, 1)
|
||||||
So(indices[0], ShouldEqual, "data-2018")
|
So(indices[0], ShouldEqual, "data-2018")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
indexPatternScenario(intervalYearly, "YYYY[-data]", tsdb.NewTimeRange(from, to), func(indices []string) {
|
||||||
|
So(indices, ShouldHaveLength, 1)
|
||||||
|
So(indices[0], ShouldEqual, "2018-data")
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
Convey("Hourly interval", t, func() {
|
Convey("Hourly interval", t, func() {
|
||||||
|
Loading…
Reference in New Issue
Block a user