# # # get_default_report_name() # # # Returns the first visible report name in the reports menu (dynamic reports only) subroutine(get_default_report_name( string profile_name, bool is_dynamic_report), ( debug_message("\n\n#### get_default_report_name() START \n"); subroutine(lookup_report_in_get_default_report_name( node items_node, string show_report_node_name), ( node menu_item; bool is_active_menu_item; string report_name; foreach menu_item items_node ( is_active_menu_item = if (menu_item?{show_report_node_name}) then (@menu_item{show_report_node_name}) else (true); debug_message("\n#### is_active_menu_item : " . is_active_menu_item . "\n"); if (is_active_menu_item) then ( if (!menu_item?{"items"}) then ( # This must be a report, use this report report_name = @menu_item{"report"}; ) else ( # This is a menu group # recursively check reports in group lookup_report_in_get_default_report_name(menu_item{"items"}, show_report_node_name); ); if ((report_name ne "") and (v.default_report_name eq "")) then ( v.default_report_name = report_name; last; ); ); ); # debug_message("\n#### lookup_report_in_get_default_report_name() - report_name : " . report_name . "\n"); )); string show_report_node_name = if (is_dynamic_report) then ("show_in_dynamic_reports") else ("show_in_static_reports"); node reports_menu = "profiles." . profile_name . ".statistics.reports_menu"; # Use gloabl v.default_report_name variable to where we write the default report name delete_node("v.default_report_name"); v.default_report_name = ""; lookup_report_in_get_default_report_name(reports_menu, show_report_node_name); debug_message("\n#### default_report_name: " . v.default_report_name . "\n"); v.default_report_name; debug_message("#### get_default_report_name() END \n\n"); ));