in connectors/grafana-plugin/pkg/plugin/plugin.go [323:368]
func recoverType(m []interface{}) interface{} {
if len(m) > 0 {
switch m[0].(type) {
case float64:
tmp := make([]float64, len(m))
for i := range m {
if m[i] == nil {
tmp[i] = math.NaN()
} else {
tmp[i] = m[i].(float64)
}
}
return tmp
case string:
tmp := make([]string, len(m))
for i := range m {
tmp[i] = m[i].(string)
}
return tmp
case bool:
tmp := make([]float64, len(m))
for i := range m {
if m[i] == nil {
tmp[i] = math.NaN()
} else if m[i].(bool) {
tmp[i] = 1
} else {
tmp[i] = 0
}
}
return tmp
default:
tmp := make([]float64, len(m))
for i := range m {
if m[i] == nil {
tmp[i] = math.NaN()
} else {
tmp[i] = m[i].(float64)
}
}
return tmp
}
} else {
return make([]float64, 0)
}
}