# # aggregating_field snapon # # This snapon adds an aggregating field (e.g., a summing database field) to the profile # aggregating_field = { label = "$lang_admin.snapons.aggregating_field.label" comment = "$lang_admin.snapons.aggregating_field.comment" config_snapon_category = "" version = "2.0.1" # 2012-04-07 - 2.0 - GMF - Added log_field and display_format_type parameters # 2012-07-25 - 2.0.1 - GMF - Defaulted integer_bits for bandwidth fields to 64 parameters = { field_name = { parameter_value = "" validation_type = "field_label" validate_field_label_for = { database_fields = true report_fields = true } form_element_label = "$lang_admin.snapons.aggregating_field.parameters.field_name.form_element_label" form_element_type = "text" form_element_width = "380" description = "$lang_admin.snapons.aggregating_field.parameters.field_name.description" } # field_name log_filter = { parameter_value = `` form_element_label = "$lang_admin.snapons.aggregating_field.parameters.log_filter.form_element_label" form_element_type = "text" form_element_width = "380" description = "$lang_admin.snapons.aggregating_field.parameters.log_filter.description" # Display log_filter only when aggregation_operator is not 'unique' condition = "aggregation_operator ne 'unique'" } # log_filter database_filter = { parameter_value = `` form_element_label = "$lang_admin.snapons.aggregating_field.parameters.database_filter.form_element_label" form_element_type = "text" form_element_width = "380" description = "$lang_admin.snapons.aggregating_field.parameters.database_filter.description" # Display database_filter only when aggregation_operator is not 'unique' condition = "aggregation_operator ne 'unique'" } # database_filter log_field = { parameter_value = "" validation_type = "string" # Display and validate unique_source_field parameter only when condition evaluates to true condition = "aggregation_operator eq 'unique'" form_element_label = "$lang_admin.snapons.aggregating_field.parameters.log_field.form_element_label" form_element_type = "select" select_options_source = "log_fields" description = "" } # log_field aggregation_operator = { parameter_value = "sum" validation_type = "string" form_element_label = "$lang_admin.snapons.aggregating_field.parameters.aggregation_operator.form_element_label" form_element_type = "select" select_options_source = "custom_fields" select_options = { sum = { option_value = "sum" label = "$lang_admin.snapons.aggregating_field.aggregation_operators.sum" } # sum max = { option_value = "max" label = "$lang_admin.snapons.aggregating_field.aggregation_operators.max" } # max min = { option_value = "min" label = "$lang_admin.snapons.aggregating_field.aggregation_operators.min" } # min unique = { option_value = "unique" label = "$lang_admin.snapons.aggregating_field.aggregation_operators.unique" } # unique } # select_options description = "$lang_admin.snapons.aggregating_field.parameters.aggregation_operator.description" } # aggregation_operator display_format_type = { parameter_value = "integer" validation_type = "string" form_element_label = "$lang_admin.snapons.aggregating_field.parameters.display_format_type.form_element_label" form_element_type = "select" select_options_source = "custom_fields" select_options = { integer = { option_value = "integer" label = "$lang_admin.snapons.aggregating_field.display_format_type.integer" } # integer bandwidth = { option_value = "bandwidth" label = "$lang_admin.snapons.aggregating_field.display_format_type.bandwidth" } # bandwidth duration_compact = { option_value = "duration_compact" label = "$lang_admin.snapons.aggregating_field.display_format_type.duration_compact" } # duration_compact } # select_options description = "$lang_admin.snapons.aggregating_field.parameters.display_format_type.description" } # display_format_type unique_source_field = { parameter_value = "" validation_type = "string" # Display and validate unique_source_field parameter only when condition evaluates to true condition = "aggregation_operator eq 'unique'" form_element_label = "$lang_admin.snapons.aggregating_field.parameters.unique_source_field.form_element_label" form_element_type = "select" select_options_source = "database_fields" description = "" } # unique_source_field } # parameters parameters_form = { group_1 = { description = "$lang_admin.snapons.aggregating_field.parameters_form.group_1.description" parameters = { field_name = true aggregation_operator = true log_filter = true database_filter = true log_field = true unique_source_field = true display_format_type = true } # parameters } # group 1 } # parameters_form attach_operations = { # When attaching: Add the log field add_log_field = { type = "add_log_fields" fields = { "{= @parameters{'field_name'}{'final_node_name'} =}" = { # Add a log field, if we're using a log filter to compute this add_in_snapon = `{= @parameters{'log_filter'}{'parameter_value'} ne '' =}` } } # fields } # add_aggregating_field_database_field # When attaching: Add the database field add_database_field = { type = "add_database_fields" fields = { "{= @parameters{'field_name'}{'final_node_name'} =}" = { derivation_method = "{= if (@parameters{'database_filter'}{'parameter_value'} ne '') then 'database_filter' else if (@parameters{'log_field'}{'parameter_value'} ne '') then 'log_field' else '' =}" type = "int" aggregation_method = "{= @parameters{'aggregation_operator'}{'parameter_value'} =}" integer_bits = "{= if (@parameters{'display_format_type'}{'parameter_value'} eq 'bandwidth') then 64 else 0 =}" log_field = "{= if (@parameters{'unique_source_field'}{'parameter_value'} ne '') then @parameters{'unique_source_field'}{'parameter_value'}; else if (@parameters{'log_field'}{'parameter_value'} ne '') then @parameters{'log_field'}{'parameter_value'}; =}" } # aggregating_field } # fields } # add_database_field # When attaching: Add a log filter to set field, if specified add_log_filter = { type = "add_log_filters" filters = { "set_{= @parameters{'field_name'}{'final_node_name'} =}" = { label = "Set {= @parameters{'field_name'}{'final_node_name'} =}" value = `{= @parameters{'log_filter'}{'parameter_value'} =}` # Only add the log filter if log_filter has a value # add_in_snapon = `{= echo('#' . @parameters{'log_filter'}{'parameter_value'} . '#') =}` add_in_snapon = `{= @parameters{'log_filter'}{'parameter_value'} ne '' =}` } } # filters } # add_log_filter # When attaching: Add a database filter to set field, if specified add_database_filter = { type = "add_database_filters" filters = { "set_{= @parameters{'field_name'}{'final_node_name'} =}" = { label = "Set {= @parameters{'field_name'}{'final_node_name'} =}" expression = `{= @parameters{'database_filter'}{'parameter_value'} =}` # Only add the log filter if log_filter has a value add_in_snapon = `{= @parameters{'database_filter'}{'parameter_value'} ne '' =}` } } # filters } # add_database_filter # When attaching: Add the aggregating_field report field add_aggregating_field_report_field = { type = "add_report_fields" fields = { "{= @parameters{'field_name'}{'final_node_name'} =}" = { label = "{= @parameters{'field_name'}{'parameter_value'} =}" column_label = "" column_info = "" database_field = "{= @parameters{'field_name'}{'final_node_name'} =}" display_format_type = "{= @parameters{'display_format_type'}{'parameter_value'} =}" show_remainder_value = true show_average_value = true show_min_value = true show_max_value = true show_total_value = true percent_calculation = "sum" } # aggregating_field } # fields } # add_aggregating_field_report_field # When attaching: Add the aggregating_field field to all xref groups add_aggregating_field_xref_fields = { type = "add_xref_fields" xref_group = "*" fields = { "{= @parameters{'field_name'}{'final_node_name'} =}" = "aggregating_field" } # fields } # add_aggregating_field_xref_fields # When attaching: Add the aggregating_field column to all report elements add_aggregating_field_report_column = { type = "add_report_element_columns" report = "*" report_element = "*" columns = { "{= @parameters{'field_name'}{'final_node_name'} =}" = { report_field = "{= @parameters{'field_name'}{'final_node_name'} =}" show_column = true show_percent_column = false show_bar_column = false show_graph = true } # aggregating_field } # columns } # add_aggregating_field_report_column } # attach_operations } # aggregating_field