# # # # update_report_info() # # # include "templates.statistics.util.get_breakdown_info"; subroutine(update_report_info( string session_id, bool is_root_admin, string profile_name, node report_info, node directives), ( debug_message("\n\n#### update_report_info START \n"); # This updates a specific report element in the given report info node. # The report element is specified in the directives node string action = @directives{"action"}; node report_elements = report_info{"report_elements"}; # # # Update report element # # if (action eq "set_row_number" or action eq "sort" or action eq "pivot_table" or action eq "breakdown" or action eq "clear_breakdown" or action eq "session_page_paths") then ( string report_element_name = @directives{"report_element_name"}; node report_element = report_elements{report_element_name}; if (action eq "set_row_number") then ( set_subnode_value(report_element, "starting_row", @directives{"starting_row"}); set_subnode_value(report_element, "ending_row", @directives{"ending_row"}); set_subnode_value(report_element, "number_of_rows", @directives{"number_of_rows"}); ) else if (action eq "sort") then ( set_subnode_value(report_element, "sort_by", @directives{"sort_by"}); set_subnode_value(report_element, "sort_direction", @directives{"sort_direction"}); ) else if (action eq "breakdown") then ( node breakdown_directives = directives{"breakdown"}; string raw_report_element_id = @breakdown_directives{"raw_report_element_id"}; int raw_row_number = @breakdown_directives{"raw_row_number"}; delete_node("v.temp_breakdown_info"); v.temp_breakdown_info = ""; get_breakdown_info(session_id, is_root_admin, profile_name, raw_report_element_id, raw_row_number, "v.temp_breakdown_info"); report_element . ".breakdown.item_value" = @("v.temp_breakdown_info.item_value"); report_element . ".breakdown.database_field" = @("v.temp_breakdown_info.database_field"); # required to set volatile.breakdown in filters report_element . ".breakdown.filter_expression" = @("v.temp_breakdown_info.filter_expression"); report_element . ".breakdown.additional_filter_item_values" = @("v.temp_breakdown_info.additional_filter_item_values"); ) else if (action eq "clear_breakdown") then ( delete_node(report_element{"breakdown"}); ) else if (action eq "session_page_paths") then ( node session_page_paths_directives = directives{"session_page_paths"}; string page_path; if (@session_page_paths_directives{"is_page_path"}) then ( page_path = @session_page_paths_directives{"page_path"}; ) else ( # Get page_path from the raw report element string raw_report_element_id = @session_page_paths_directives{"raw_report_element_id"}; string row = @session_page_paths_directives{"row"}; string predecessor_successor_name = @session_page_paths_directives{"predecessor_successor_name"}; string raw_page_path = "profiles_cache." . profile_name . ".raw_report_elements." . raw_report_element_id . ".rows." . row . "." . predecessor_successor_name . ".page"; if (?(raw_page_path)) then ( page_path = @(raw_page_path); ); ); report_element . ".page_path" = page_path; ); ); ));