# # # # # get_log_format_options_util.cfv # # # get_numerical_fields_dat() # get_snapons_dat() # # # # # # # # # get_numerical_fields_dat() # # # subroutine(get_numerical_fields_dat( node log_format), ( string numerical_fields_dat = '['; string numerical_field_item; if (?(log_format . ".database.numerical_fields")) then ( # log_fields_path is used to lookup numerical field labels, espically in the case # of custom log formats where labels do not depend on lang_stats! string log_fields_path = log_format . ".log.fields"; node numerical_fields_node = log_format . ".database.numerical_fields"; node numerical_field; string label; string name; bool add_field; foreach numerical_field numerical_fields_node ( name = node_name(numerical_field); if (node_exists(log_fields_path . "." . name . ".label") and (node_value(log_fields_path . "." . name . ".label") ne "")) then ( label = node_value(log_fields_path . "." . name . ".label"); ) else if (subnode_exists(numerical_field, "label")) then ( label = node_value(subnode_by_name(numerical_field, "label")); ) else if node_exists("lang_stats.field_labels." . name) then ( label = node_value("lang_stats.field_labels." . name); ) else ( label = name; ); label = capitalize(expand(label)); add_field = node_value(subnode_by_name(numerical_field, "default")); numerical_field_item = "{"; numerical_field_item .= add_json("name", name, "string"); numerical_field_item .= add_json("label", label, "string"); numerical_field_item .= add_json("add_field", add_field, "bool"); numerical_field_item = close_json(numerical_field_item); numerical_fields_dat .= numerical_field_item . ","; ); numerical_fields_dat = replace_last(numerical_fields_dat, ",", "]"); ) else ( numerical_fields_dat .= ']'; ); # Return numerical_fields_dat; )); # # # # get_combined_snapon_parameters() # # # subroutine(get_combined_snapon_parameters( node log_format_snapon, node the_snapon), ( debug_message("\n\n#### get_combined_snapon_parameters() \n"); # This returns a single parameters node. Parameters defined in # the log format plug-in overrides/complement the parameters # of the actual snapon. # If parameters exist only in one of the two nodes then we return # a node reference. node parameters = new_node(); int num_paramaters_in_log_format_snapon = 0; int num_paramaters_in_the_snapon = 0; if (log_format_snapon?{"parameters"}) then ( num_paramaters_in_log_format_snapon = num_subnodes(log_format_snapon{"parameters"}); ); if (the_snapon?{"parameters"}) then ( num_paramaters_in_the_snapon = num_subnodes(the_snapon{"parameters"}); ); if (num_paramaters_in_log_format_snapon > 0 and num_paramaters_in_the_snapon > 0) then ( # There are parameters in the log format plug-in and the snapon, we need to override # the snapon parameters. delete_node("v.combined_snapon_parameters"); v.combined_snapon_parameters = ""; parameters = "v.combined_snapon_parameters"; clone_node(the_snapon{"parameters"}, parameters); overlay_node(parameters, log_format_snapon{"parameters"}); ) else if (num_paramaters_in_log_format_snapon > 0) then ( parameters = log_format_snapon{"parameters"}; ) else if (num_paramaters_in_the_snapon) then ( parameters = the_snapon{"parameters"}; ); debug_message("#### combined snapon parameters:\n" . node_as_string(parameters) . "\n"); # Return parameters; )); # # # # get_snapons_dat() # # # subroutine(get_snapons_dat( node log_format), ( debug_message("#### get_snapons_dat() \n"); string snapons_dat = "["; string snapon_item_dat; node item; node the_snapon; string snapon_id; string log_format_snapon_name; # 2012-10-02 - GMF - Added instance name string log_format_snapon_instance_name; string snapon_name; string label; string comment; bool prompt_to_attach; bool prompt_to_attach_default; int count = 0; node parameters; node parameters_form; string parameters_form_dat; # Create a requires_items node which tracks # requirement of log fields, database fields, etc. # We don't really need this in the new profile wizard # because we don't have all profile data but we require # the requires_items node. delete_node("v.requires_items"); v.requires_items = ""; node requires_items = "v.requires_items"; if (?(log_format . ".create_profile_wizard_options.snapons")) then ( node listed_snapons = log_format . ".create_profile_wizard_options.snapons"; debug_message("##### listed_snapons in plug-in:\n" . node_as_string(listed_snapons) . "\n"); foreach item listed_snapons ( log_format_snapon_name = @item{"name"}; # 2012-10-02 - GMF - Get the snapon instance name from the node name in the plugin log_format_snapon_instance_name = node_name(item); snapon_name = @item{"snapon"}; the_snapon = "snapons." . snapon_name; label = if (item?{"label"}) then (expand(@item{"label"})) else (expand(@the_snapon{"label"})); # Get the snapon comment if (item?{"comment"}) then ( # This is a comment defined in the log format plug-in comment = @item{"comment"}; ) else if (the_snapon?{"comment"}) then ( # This is a regular snapon comment comment = @the_snapon{"comment"}; ) else ( comment = ""; ); comment = get_expanded_label(comment); # prompt_to_attach and attach prompt_to_attach = false; # default prompt_to_attach_default = true; # default value for prompt_to_attach if (item?{"prompt_to_attach"} and @item{"prompt_to_attach"}) then ( prompt_to_attach = true; if (item?{"prompt_to_attach_default"}) then ( prompt_to_attach_default = @item{"prompt_to_attach_default"}; ); ); # Define snapon_id. # The snapon_id is used on the client to create a parameters lookup object # per snapon_id, which means per snapon. snapon_id = "s" . count; # Check if we have a parameters_form in the plug-in, # snapon parameters_form is ignored! # A parameters_form node without subnodes in the plug-in # indicates that it shouldn't prompt for any parameter. parameters_form_dat = "[]"; # Reset, set no parameters form as default if (item?{"parameters_form"} and (num_subnodes(item{"parameters_form"}) > 0)) then ( parameters_form = item{"parameters_form"}; parameters = get_combined_snapon_parameters(item, the_snapon); if (num_subnodes(parameters) > 0) then ( parameters_form_dat = get_snapon_parameters_form_dat(snapon_id, parameters, parameters_form, requires_items); ); ); snapon_item_dat = "{"; snapon_item_dat .= add_json("logFormatSnaponName", log_format_snapon_name, "string"); # 2012-10-02 - GMF - Send the instance name along to JavaScript too, so it knows where to set attach=true snapon_item_dat .= add_json("logFormatSnaponInstanceName", log_format_snapon_instance_name, "string"); snapon_item_dat .= add_json("snaponName", snapon_name, "string"); snapon_item_dat .= add_json("label", label, "string"); snapon_item_dat .= add_json("comment", comment, "string"); snapon_item_dat .= add_json("promptToAttach", prompt_to_attach, "bool"); snapon_item_dat .= add_json("promptToAttachDefault", prompt_to_attach_default, "bool"); snapon_item_dat .= add_json("parametersForm", parameters_form_dat, "obj"); snapon_item_dat = close_json(snapon_item_dat); snapons_dat .= snapon_item_dat . ","; count++; ); ); if (snapons_dat ne "[") then ( snapons_dat = replace_last(snapons_dat, ",", "]"); ) else ( snapons_dat .= "]"; ); # Return snapons_dat snapons_dat; ));