# # # # build_raw_overview() # # # include "templates.statistics.raw_report_element.overview.build_raw_overview_util"; include "templates.statistics.util.overview_query_util"; subroutine(build_raw_overview( string session_id, string profile_name, node query_fields, string database_last_modification_time, string overview_filter_expression, node report_element, node raw_report_element, bool is_date_time_support, int number_of_days, node collected_whitelist_objects), ( debug_message("\n\n#### build_raw_overview() \n"); # debug_message("\n#### number_of_days: " . number_of_days . "\n"); # # # Get query_info node # # node query_info = get_raw_overview_query_info(profile_name, query_fields, report_element, number_of_days); # # # Set totals in query_header # # set_overview_totals_in_query_info_header( profile_name, query_info, database_last_modification_time, overview_filter_expression, number_of_days, collected_whitelist_objects ); # # # # Build the rows # # # node report_element_columns = report_element{"columns"}; node query_field; node query_header = query_info{"header"}; node column; string report_field_name; string table_field_type; string display_format_type; bool is_aggregating_field; bool show_average_value; # bool is_date_time_in_epoc; bool check_for_epoc_value; bool has_average_denominator_field; string field_label; string field_value; string average_value; int row_count = 0; foreach column report_element_columns ( if (@column{"show_column"}) then ( report_field_name = @column{"report_field"}; debug_message("\n#### report_field_name: " . report_field_name . "\n"); query_field = query_header{report_field_name}; table_field_type = @query_field{"table_field_type"}; display_format_type = @query_field{"display_format_type"}; field_label = @query_field{"column_label"}; is_aggregating_field = @query_field{"is_aggregating_field"}; has_average_denominator_field = false; field_value = @query_field{"total_value"}; if (is_aggregating_field) then ( # KHP 24/Oct/2011 - added check_for_epoc_value replaces is_date_time_in_epoc # query_field no longer supports is_date_time_in_epoc, # The problem is that a epoc value may be converted through # format() if display_format_type is "epoc_to_date_time" # is_date_time_in_epoc = @query_field{"is_date_time_in_epoc"}; check_for_epoc_value = (table_field_type eq "int") and (display_format_type eq "date_time"); if (!check_for_epoc_value) then ( show_average_value = @query_field{"show_average_value"}; ) else ( # Convert epoc to date time if not converted by display_format_type! # 2008-11-14 - GMF - Don't show average of EPOC timestamps show_average_value = false; # 2008-10-24 - GMF - If it's NULL, display it as a dash; it means there is no valid date (minimum of empty set, or maximum of an empty set) if (field_value eq internal.SQL_INT_NULL) then ( # Leave it as a dash field_value = "-"; ); # It's not NULL; display it normally else ( field_value = epoc_to_date_time(field_value); ); ); # Check if this is a field has an average denominator field if (@query_field{"is_expression"} and query_field?{"average_denominator_field"} and @query_field{"average_denominator_field"} ne "") then ( has_average_denominator_field = true; ); ) else ( show_average_value = false; ); # KHP 05/Jun/2011, add report_field_name and table_field_type, is required when generating a xml report raw_report_element . ".rows." . row_count . ".report_field_name" = report_field_name; raw_report_element . ".rows." . row_count . ".table_field_type" = table_field_type; raw_report_element . ".rows." . row_count . ".display_format_type" = display_format_type; raw_report_element . ".rows." . row_count . ".average_display_format_type" = display_format_type; # Required in sessions_overview, so we add it in overview as well raw_report_element . ".rows." . row_count . ".label" = field_label; # KHP 28/June/2010 - Disabled format() because values must not be formatted in raw report elements. # raw_report_element . ".rows." . row_count . ".the_value" = format(field_value, display_format_type); raw_report_element . ".rows." . row_count . ".the_value" = field_value; # # # Handle average value # # # We only show an average value if point a-c are true: # a. is_date_time_support # b. is_aggregating_field # c. show_average_value is true (show_average_value setting per report_field) # d. does not contain an average_denominator_field # debug_message("#### is_aggregating_field: " . is_aggregating_field . "\n"); # debug_message("#### show_average_value: " . show_average_value . "\n"); if (is_date_time_support) then ( if (show_average_value and !has_average_denominator_field and (number_of_days > 1)) then ( average_value = @query_field{"total_value"} / number_of_days; # KHP 24/Oct/2011 - this case shouldn't be possible since # we set show_average_value to false if its in epoc. # if (is_date_time_in_epoc) then ( # value must be in epoc, convert it to date time # average_value = epoc_to_date_time(average_value); # ); # KHP 28/June/2010 - Disabled format() because values must not be formatted in raw report elements. # average_value = format(average_value, display_format_type); ) else ( average_value = "-"; ); raw_report_element . ".rows." . row_count . ".average_per_day" = average_value; ); # # # Add indent_level (always 0 in regular overview) # # raw_report_element . ".rows." . row_count . ".indent_level" = 0; row_count++; ); ); debug_message("\n\n" . node_as_string(raw_report_element) . "\n\n"); ));