in code/go/internal/validator/semantic/validate_kibana_filter_present.go [67:92]
func findPanelsFilters(file pkgpath.File) error {
dashboardJSON, err := file.Values("$")
if err != nil {
return fmt.Errorf("unable to get dashboard document: %w", err)
}
visualizations, err := kbncontent.DescribeByValueDashboardPanels(dashboardJSON)
if err != nil {
return fmt.Errorf("error describing visualization saved object: %w", err)
}
for _, visualization := range visualizations {
if !visualization.CanUseFilter() {
continue
}
hasFilters, err := visualization.HasFilters()
if err != nil {
return fmt.Errorf("error checking if visualization has filters: %w", err)
}
if !hasFilters {
return errDashboardPanelWithoutFilter
}
}
return nil
}