func findPanelsFilters()

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
}