# # # # create_report_info_util.cfv # # # # override_report_element_with_user_info_settings() # get_entry_or_exit_pages_table_filter_expression() # # include "templates.util.base_util"; # # # # # override_report_element_with_user_info_settings() # # # # subroutine(override_report_element_with_user_info_settings( node report_element, node session_report_element), ( # We have to recursively loop through all session data and override # the report element. # check if the user info data exist in report_element, and if so, # override the report element data node session_item; string item_name; node base_item; foreach session_item session_report_element ( # Check if the node exists in original report_element # KHP-RC, verify if the override_report_element_with_user_info_settings() works correct! item_name = node_name(session_item); #* if (report_element?{item_name}) then ( base_item = report_element{item_name}; if (num_subnodes(session_item) == 0) then ( # Before overriding the value make sure that the report element # has no subnodes as well if (num_subnodes(base_item) == 0) then ( set_node_value(base_item, @session_item); ); ) else ( # recursively loop through subitems override_report_element_with_user_info_settings(base_item, session_item); ); ); *# base_item = report_element{item_name}; if (num_subnodes(session_item) == 0) then ( # Before overriding the value make sure that the report element # has no subnodes as well #if (num_subnodes(base_item) == 0) then ( # # set_node_value(base_item, @session_item); #); set_node_value(base_item, @session_item); ) else ( # recursively loop through subitems override_report_element_with_user_info_settings(base_item, session_item); ); ); )); # # # # subroutine(get_omit_parenthesized_items_table_filter_expression( string session_id, bool is_root_admin, string profile_name, node report_element), ( # Creates a hard coded table_filter_expression to omit parenthesized_items in a table. # The expression should omit items if each non-aggregating field contains a parenthesized item. # I.e.: # table_filter_expression = "!matches_regular_expression(cell_by_name('" . report_field_name . "'), '^[(].*[)]$')"; node query_fields = get_query_fields(session_id, is_root_admin, profile_name); string existing_table_filter_expression = @report_element{"table_filter_expression"}; string new_table_filter_expression; if (existing_table_filter_expression ne "") then ( new_table_filter_expression = "(" . existing_table_filter_expression . ") and "; ); # # Find relevant report fields and add them to new_table_filter_expression # if (report_element?{"columns"}) then ( node column; node report_element_columns = report_element{"columns"}; string report_field_name; string report_field_name_in_expression; node query_field_item; foreach column report_element_columns ( report_field_name = @column{"report_field"}; query_field_item = query_fields{report_field_name}; if (!@query_field_item{"is_aggregating_field"} and (@query_field_item{"derivation_method"} ne "expression")) then ( # Add report field to expression new_table_filter_expression .= "(!matches_regular_expression(cell_by_name('" . report_field_name . "'), '^[(].*[)]$')) and "; ); ); ); if (new_table_filter_expression ne "") then ( # Remove last " and " statement new_table_filter_expression = replace_last(new_table_filter_expression, " and ", ""); ); new_table_filter_expression; )); # # # # # get_entry_or_exit_pages_table_filter_expression # # # # #* DISABLED because we use a different method to handle this subroutine(get_entry_or_exit_pages_table_filter_expression( string session_id, bool is_root_admin, string profile_name, node report_element, string report_element_type), ( # Creates a hard coded table_filter_expression for entry_pages and exit_pages report elements # to omit all pages with zero entrances or exits. # session_field_name is "session_entrances" or "session_exits" node query_fields = get_query_fields(session_id, is_root_admin, profile_name); string existing_table_filter_expression = @report_element{"table_filter_expression"}; string new_table_filter_expression; string required_session_field_name = if (report_element_type eq "entry_pages") then ("session_entrances") else ("session_exits"); # # Find the session_entrances or session_exits field which is used in the expression. # if (report_element?{"columns"}) then ( node column; node report_element_columns = report_element{"columns"}; string report_field_name; string report_field_name_in_expression; node query_field_item; foreach column report_element_columns ( report_field_name = @column{"report_field"}; query_field_item = query_fields{report_field_name}; if ((@query_field_item{"derivation_method"} eq "session_field") and (@query_field_item{"session_field"} eq required_session_field_name)) then ( report_field_name_in_expression = report_field_name; last; ) ); # # Create expression # if (report_field_name_in_expression ne "") then ( new_table_filter_expression = "(cell_by_name('" . report_field_name_in_expression . "') > 0)"; if (existing_table_filter_expression ne "") then ( new_table_filter_expression = "(" . existing_table_filter_expression . ") and " . new_table_filter_expression; ); ); ); new_table_filter_expression; )); *#