# # build_raw_overview() # subroutine(build_raw_overview( string session_id, string profile_name, node query_fields, string report_element_type, node report_element, node raw_report_element, node query_result, bool is_date_time_support, int number_of_days), ( debug_message("\n\n#### build_raw_overview() \n\n"); # Note (r7-2 only), the query_result contains database field names! debug_message("\n#### overview query_result:\n" . node_as_string(query_result) . "\n"); debug_message("\n#### number_of_days: " . number_of_days . "\n"); node extended_profile_dat = get_extended_profile_dat_node_reference(session_id, profile_name); node overview_query_info = extended_profile_dat{"overview_query_info"}; node query_header = overview_query_info{"header"}; node column; debug_message("#### build_raw_overview() - query_header\n" . node_as_string(query_header) . "\n"); string report_field_name; string database_field_name; string table_field_type; string display_format_type; bool database_field_exists; bool is_expression; bool average_denominator_field_exists; string average_denominator_field; bool is_aggregating_field; bool show_average_value; bool is_date_time_in_epoc; string field_label; string field_value; string average_value; int row_count = 0; # KHP 05/May/2011 - Use overview query header because query_result contains # database field names # foreach item query_result ( foreach column query_header ( report_field_name = @column{"report_field_name"}; database_field_name = @column{"database_field_name"}; database_field_exists = query_result?{database_field_name}; is_expression = @column{"is_expression"}; average_denominator_field_exists = false; average_denominator_field = ""; # If is_expressio then check for an average_denominator_field if (database_field_exists and is_expression and column?{"average_denominator_field"}) then ( average_denominator_field = @column{"average_denominator_field"}; if (query_result?{average_denominator_field}) then ( average_denominator_field_exists = true; ); ); if (database_field_exists and (!is_expression or average_denominator_field_exists)) then ( # # # Add field # # is_aggregating_field = @column{"is_aggregating_field"}; table_field_type = @column{"table_field_type"}; display_format_type = @column{"display_format_type"}; field_label = @column{"column_label"}; # # Get field value # field_value = @query_result{database_field_name}; if (average_denominator_field_exists) then ( field_value = field_value / @query_result{average_denominator_field}; ); if (is_aggregating_field) then ( show_average_value = @column{"show_average_value"}; is_date_time_in_epoc = @column{"is_date_time_in_epoc"}; if (is_date_time_in_epoc) then ( show_average_value = false; # value must be in epoc, convert epoc to date time # 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); ); ); ) 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) # 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 (number_of_days > 1)) then ( average_value = field_value / number_of_days; 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"); ));