diff --git a/vmdb/app/controllers/miq_ae_class_controller.rb b/vmdb/app/controllers/miq_ae_class_controller.rb index c83631c891d..4e2b49fa8c4 100644 --- a/vmdb/app/controllers/miq_ae_class_controller.rb +++ b/vmdb/app/controllers/miq_ae_class_controller.rb @@ -176,10 +176,10 @@ def get_node_info(node) if @ae_class.nil? set_root_node else - @edit[:grid_inst_list_xml] = build_details_grid(@ae_class.ae_instances) + @temp[:grid_inst_list_xml] = build_details_grid(@ae_class.ae_instances) @temp[:combo_xml] = get_combo_xml(@ae_class.ae_fields) @temp[:dtype_combo_xml] = get_dtype_combo_xml(@ae_class.ae_fields) # passing fields because that's how many combo boxes we need - @edit[:grid_methods_list_xml] = build_details_grid(@ae_class.ae_methods) + @temp[:grid_methods_list_xml] = build_details_grid(@ae_class.ae_methods) set_right_cell_text(x_node,@ae_class) end when "aei" @@ -537,7 +537,7 @@ def toplevel_grid_add_row_data(srow, kids, cls, rec_name) def grid_add_header(head) col_width = 900 / 7 - columns = ["Name", "Value", "On Entry", "On Exit", "Collect", "Max Retries", "Max Time", "Message"] + columns = ["Name", "Value", "On Entry", "On Exit", "On Error", "Collect", "Max Retries", "Max Time", "Message"] columns.each do |column| options = {"width" => "#{col_width}", "sort" => "na"} @@ -734,21 +734,7 @@ def edit_instance else id = x_node.split('-') end - @ae_inst = MiqAeInstance.find(from_cid(id[1])) - @ae_class = MiqAeClass.find(@ae_inst.class_id) - @ae_fields = @ae_class.ae_fields - @ae_values = Array.new - - @ae_fields.sort_by{|a| [a.priority.to_i]}.each do |fld| - val = MiqAeValue.find_by_field_id_and_instance_id(fld.id.to_i,@ae_inst.id.to_i) - if val.nil? - val = MiqAeValue.new - val.field_id = fld.id.to_i - val.instance_id = @ae_inst.id.to_i - end - @ae_values.push(val) - #@ae_values.push(MiqAeValue.find_by_field_id_and_instance_id(fld.id.to_i,@ae_inst.id.to_i)) - end + initial_setup_for_instances_form_vars(from_cid(id[1])) set_instances_form_vars @in_a_form = true session[:changed] = @changed = false @@ -774,17 +760,36 @@ def edit_method # Set form variables for edit def set_instances_form_vars session[:inst_data] = Hash.new - @ae_class = MiqAeClass.find_by_id(from_cid(@edit[:ae_class_id])) - @edit = Hash.new - @edit[:ae_inst_id] = @ae_inst.id - @edit[:ae_class_id] = @ae_class.id - @edit[:new] = Hash.new - @edit[:current] = Hash.new - @edit[:rec_id] = @ae_inst.id || nil - @edit[:key] = "aeinst_edit__#{@ae_inst.id || "new"}" - @edit[:new][:ae_inst] = @ae_inst - @edit[:new][:ae_values] = @ae_values - @edit[:new][:ae_fields] = @ae_class.ae_fields + @edit = { + :ae_inst_id => @ae_inst.id, + :ae_class_id => @ae_class.id, + :rec_id => @ae_inst.id || nil, + :key => "aeinst_edit__#{@ae_inst.id || "new"}", + :new => {} + } + @edit[:new][:ae_inst] = {} + @edit[:new][:ae_values] = [] + @edit[:new][:ae_fields] = [] + instance_column_names.each do |fld| + @edit[:new][:ae_inst][fld] = @ae_inst.send(fld) + end + + @ae_values.each do |ae_value| + values = {} + value_column_names.each do |fld| + values[fld] = ae_value.send(fld) + end + @edit[:new][:ae_values].push(values) + end + + @ae_class.ae_fields.each do |ae_field| + field = {} + field_column_names.each do |fld| + field[fld] = ae_field.send(fld) + end + @edit[:new][:ae_fields].push(field) + end + @edit[:current] = copy_hash(@edit[:new]) @right_cell_text = @edit[:rec_id].nil? ? I18n.t("cell_header.adding_model_record",:model=>ui_lookup(:model=>"MiqAeInstance")) : @@ -817,11 +822,6 @@ def form_instance_field_changed end @changed = (@edit[:current] != @edit[:new]) - @changed = (@edit[:current][:ae_inst].attributes != @edit[:new][:ae_inst].attributes) - @edit[:current][:ae_values].each_with_index do |fld,i| #needed to compare each object's attributes to find out if something has changed - @changed = true if @edit[:new][:ae_values][i].attributes != fld.attributes - end - page << javascript_for_miq_button_visibility(@changed) end end @@ -840,7 +840,7 @@ def update_instance @in_a_form = false replace_right_cell when "save" - if @edit[:new][:ae_inst].name.blank? || @edit[:new][:ae_inst].name == "" + if @edit[:new][:ae_inst]["name"].blank? add_flash(I18n.t("flash.edit.field_required", :field=>"Name"), :error) end if @flash_array @@ -853,12 +853,12 @@ def update_instance end return end - set_instances_record_vars(@edit[:current][:ae_inst]) # Set the instance record variables, but don't save - set_instances_value_vars(@edit[:current][:ae_values]) # Set the instance record variables, but don't save + set_instances_record_vars(@ae_inst) # Set the instance record variables, but don't save + set_instances_value_vars(@ae_values) # Set the instance record variables, but don't save begin MiqAeInstance.transaction do - @edit[:current][:ae_inst].save! - @edit[:current][:ae_values].each do |val| + @ae_inst.save! + @ae_values.each do |val| val = nil if val == "" val.save! end @@ -904,7 +904,7 @@ def create_instance when "add" return unless load_edit("aeinst_edit__new","replace_cell__explorer") get_instances_form_vars - if @edit[:new][:ae_inst].name.blank? || @edit[:new][:ae_inst].name == "" + if @edit[:new][:ae_inst]["name"].blank? add_flash(I18n.t("flash.edit.field_required", :field=>"Name"), :error) end if @flash_array @@ -914,14 +914,13 @@ def create_instance return end add_aeinst = MiqAeInstance.new - set_instances_record_vars(add_aeinst) # Set the instance record variables, but don't save + set_instances_record_vars(add_aeinst) # Set the instance record variables, but don't save + set_instances_value_vars(@ae_values) # Set the instance value record variables, but don't save begin MiqAeInstance.transaction do add_aeinst.save! - inst_rec = MiqAeInstance.find(add_aeinst.id) - inst_rec_id = inst_rec.id - @edit[:new][:ae_values].each do |val| - val.instance_id = inst_rec_id + @ae_values.each do |val| + val.instance_id = add_aeinst.id val.save! end end # end of transaction @@ -1501,15 +1500,7 @@ def new def new_instance assert_privileges("miq_ae_instance_new") - @ae_values = Array.new - @ae_inst = MiqAeInstance.new - @ae_class = MiqAeClass.find_by_id(@edit[:ae_class_id]) - @ae_class.ae_fields.each do |fld| - v = MiqAeValue.new - v.instance_id = @ae_inst.id.to_i - v.field_id = fld.id.to_i - @ae_values.push(v) - end + initial_setup_for_instances_form_vars(nil) set_instances_form_vars @in_a_form = true replace_right_cell @@ -1917,6 +1908,34 @@ def domains_priority_edit private + def initial_setup_for_instances_form_vars(ae_inst_id) + @ae_inst = ae_inst_id ? MiqAeInstance.find(ae_inst_id) : MiqAeInstance.new + @ae_class = MiqAeClass.find(@edit[:ae_class_id]) + @ae_values = [] + + @ae_class.ae_fields.sort_by { |a| [a.priority.to_i] }.each do |fld| + val = MiqAeValue.find_by_field_id_and_instance_id(fld.id.to_i, @ae_inst.id.to_i) + if val.nil? + val = MiqAeValue.new + val.field_id = fld.id.to_i + val.instance_id = @ae_inst.id.to_i + end + @ae_values.push(val) + end + end + + def instance_column_names + %w(name description display_name) + end + + def field_column_names + %w(aetype collect datatype default_value display_name name on_entry on_error on_exit substitute) + end + + def value_column_names + %w(collect display_name on_entry on_error on_exit max_retries max_time value) + end + def create_action_url(node) if @sb[:action] == "miq_ae_domain_priority_edit" 'domains_priority_edit' @@ -2257,8 +2276,9 @@ def get_ns_form_vars end def get_instances_form_vars_for(prefix = nil) - ['name', 'display_name', 'description'].each do |key| - @edit[:new][:ae_inst].send("#{key}=", params["#{prefix}inst_#{key}"].blank? ? nil : params["#{prefix}inst_#{key}"]) if params["#{prefix}inst_#{key}"] + instance_column_names.each do |key| + @edit[:new][:ae_inst][key] = + params["#{prefix}inst_#{key}"].blank? ? nil : params["#{prefix}inst_#{key}"] if params["#{prefix}inst_#{key}"] end @ae_class.ae_fields.sort_by{|a| [a.priority.to_i]}.each_with_index do |fld,i| @@ -2267,8 +2287,6 @@ def get_instances_form_vars_for(prefix = nil) @edit[:new][:ae_values][i][key] = params["#{prefix}inst_#{key}_#{i}".to_sym] if params["#{prefix}inst_#{key}_#{i}".to_sym] end @edit[:new][:ae_values][i]["value"] = params["#{prefix}inst_password_value_#{i}".to_sym] if params["#{prefix}inst_password_value_#{i}".to_sym] - - @edit[:new][:ae_values][i]["field_id"] = fld.id end end @@ -2376,22 +2394,18 @@ def set_field_vars(miqaefields) # Set record variables to new values def set_instances_record_vars(miqaeinst) - miqaeinst.name = @edit[:new][:ae_inst].name.strip - miqaeinst.display_name = @edit[:new][:ae_inst].display_name - miqaeinst.description = @edit[:new][:ae_inst].description + instance_column_names.each do |attr| + miqaeinst.send("#{attr}=", @edit[:new][:ae_inst][attr].strip) if @edit[:new][:ae_inst][attr] + end miqaeinst.class_id = from_cid(@edit[:ae_class_id]) end # Set record variables to new values def set_instances_value_vars(vals) vals.each_with_index do |v,i| - v.value = @edit[:new][:ae_values][i].value if @edit[:new][:ae_values][i].value != @edit[:current][:ae_values][i].value - v.collect = @edit[:new][:ae_values][i].collect if @edit[:new][:ae_values][i].collect != @edit[:current][:ae_values][i].collect - v.on_entry = @edit[:new][:ae_values][i].on_entry if @edit[:new][:ae_values][i].on_entry != @edit[:current][:ae_values][i].on_entry - v.on_exit = @edit[:new][:ae_values][i].on_exit if @edit[:new][:ae_values][i].on_exit != @edit[:current][:ae_values][i].on_exit - v.on_error = @edit[:new][:ae_values][i].on_error if @edit[:new][:ae_values][i].on_error != @edit[:current][:ae_values][i].on_error - v.max_retries = @edit[:new][:ae_values][i].max_retries if @edit[:new][:ae_values][i].max_retries != @edit[:current][:ae_values][i].max_retries - v.max_time = @edit[:new][:ae_values][i].max_time if @edit[:new][:ae_values][i].max_time != @edit[:current][:ae_values][i].max_time + value_column_names.each do |attr| + v.send("#{attr}=", @edit[:new][:ae_values][i][attr]) if @edit[:new][:ae_values][i][attr] + end end end @@ -2597,13 +2611,11 @@ def get_session_data @layout = "miq_ae_class" @title = "Datastore" @lastaction = session[:aeclass_lastaction] - @record = session[:record] @edit = session[:edit] end def set_session_data session[:aeclass_lastaction] = @lastaction - session[:record] = @record session[:edit] = @edit end end diff --git a/vmdb/app/views/miq_ae_class/_class_instances.html.erb b/vmdb/app/views/miq_ae_class/_class_instances.html.erb index d559f5a69ee..288079df2c1 100644 --- a/vmdb/app/views/miq_ae_class/_class_instances.html.erb +++ b/vmdb/app/views/miq_ae_class/_class_instances.html.erb @@ -1,32 +1,32 @@ -
-<% if !@in_a_form %> - <%= render :partial => "layouts/flash_msg", - :locals => {:div_num => "_class_instances"} - %> -

Instances

-
- (Check All) -
- <%= render :partial => 'layouts/dhtmlxgrid', - :locals => {:options => {:grid_id => "cls_inst_grid_div", - :grid_name => "instance_grid", - :grid_url => "/miq_ae_class/tree_select/", - :grid_xml => @edit[:grid_inst_list_xml], - :no_resize => true, - :autosize => true, - :set_sizes => true, - :skin => "style3", - :alt_row => true, - :div_in_js => true}} - %> - <% elsif @edit[:new][:ae_inst] %> -
- <%= render :partial => "layouts/flash_msg", - :locals => {:div_num => "_class_instances"} - %> - <%= render :partial => "instance_form", - :locals => {:prefix => "cls_"} - %> -
- <% end %> -
+
+<% if !@in_a_form %> + <%= render :partial => "layouts/flash_msg", + :locals => {:div_num => "_class_instances"} + %> +

Instances

+
+ (Check All) +
+ <%= render :partial => 'layouts/dhtmlxgrid', + :locals => {:options => {:grid_id => "cls_inst_grid_div", + :grid_name => "instance_grid", + :grid_url => "/miq_ae_class/tree_select/", + :grid_xml => @temp[:grid_inst_list_xml], + :no_resize => true, + :autosize => true, + :set_sizes => true, + :skin => "style3", + :alt_row => true, + :div_in_js => true}} + %> + <% elsif @edit[:new][:ae_inst] %> +
+ <%= render :partial => "layouts/flash_msg", + :locals => {:div_num => "_class_instances"} + %> + <%= render :partial => "instance_form", + :locals => {:prefix => "cls_"} + %> +
+ <% end %> +
diff --git a/vmdb/app/views/miq_ae_class/_class_methods.html.erb b/vmdb/app/views/miq_ae_class/_class_methods.html.erb index 7e0fe2f70be..7f9a9680ef1 100644 --- a/vmdb/app/views/miq_ae_class/_class_methods.html.erb +++ b/vmdb/app/views/miq_ae_class/_class_methods.html.erb @@ -1,34 +1,34 @@ -
-<% if !@in_a_form %> - <%= render :partial => "layouts/flash_msg", - :locals => {:div_num => "_class_methods"} - %> -

Methods

-
- (Check All) -
- <%= render :partial => 'layouts/dhtmlxgrid', - :locals => {:options => {:grid_id => "cls_methods_grid_div", - :grid_name => "class_methods_grid", - :grid_url => "/miq_ae_class/tree_select/", - :grid_xml => @edit[:grid_methods_list_xml], - :no_resize => true, - :autosize => true, - :grid_num => 2, - :set_sizes => true, - :skin => "style3", - :alt_row => true, - :div_in_js => true}} - %> - -<% elsif @edit[:new][:fields] %> -
- <%= render :partial => "layouts/flash_msg", - :locals => {:div_num => "_class_methods"} - %> - <%= render :partial => "method_form", - :locals => {:prefix => "cls_"} - %> -
-<% end %> -
+
+<% if !@in_a_form %> + <%= render :partial => "layouts/flash_msg", + :locals => {:div_num => "_class_methods"} + %> +

Methods

+
+ (Check All) +
+ <%= render :partial => 'layouts/dhtmlxgrid', + :locals => {:options => {:grid_id => "cls_methods_grid_div", + :grid_name => "class_methods_grid", + :grid_url => "/miq_ae_class/tree_select/", + :grid_xml => @temp[:grid_methods_list_xml], + :no_resize => true, + :autosize => true, + :grid_num => 2, + :set_sizes => true, + :skin => "style3", + :alt_row => true, + :div_in_js => true}} + %> + +<% elsif @edit[:new][:fields] %> +
+ <%= render :partial => "layouts/flash_msg", + :locals => {:div_num => "_class_methods"} + %> + <%= render :partial => "method_form", + :locals => {:prefix => "cls_"} + %> +
+<% end %> +
diff --git a/vmdb/app/views/miq_ae_class/_instance_form.html.erb b/vmdb/app/views/miq_ae_class/_instance_form.html.erb index fc800c062be..b0dcc4efdac 100644 --- a/vmdb/app/views/miq_ae_class/_instance_form.html.erb +++ b/vmdb/app/views/miq_ae_class/_instance_form.html.erb @@ -63,19 +63,19 @@ <% @edit[:new][:ae_values].each_with_index do |flds,i| %> - <% image = @edit[:new][:ae_fields][i].substitute ? "passed.png" : "failed.png" %> + <% image = @edit[:new][:ae_fields][i]["substitute"] ? "passed.png" : "failed.png" %> - Type: <%= @edit[:new][:ae_fields][i].aetype %> - <% if !@edit[:new][:ae_fields][i].datatype.blank? && @edit[:new][:ae_fields][i].datatype != "string" %> - Data Type: <%= @edit[:new][:ae_fields][i].datatype %> + .png" alt="Type: <%= @edit[:new][:ae_fields][i]["aetype"] %>" title="Type: <%= @edit[:new][:ae_fields][i]["aetype"] %>" /> + <% if !@edit[:new][:ae_fields][i]["datatype"].blank? && @edit[:new][:ae_fields][i]["datatype"] != "string" %> + .png" alt="Data Type: <%= @edit[:new][:ae_fields][i]["datatype"] %>" title="Data Type: <%= @edit[:new][:ae_fields][i]["datatype"] %>" /> <% end %> - Substitution: <%= @edit[:new][:ae_fields][i].substitute %>  - <%= h(@edit[:new][:ae_fields][i].display_name) %> (<%= h(@edit[:new][:ae_fields][i].name) %>) + Substitution: <%= @edit[:new][:ae_fields][i][" title="Substitution: <%= @edit[:new][:ae_fields][i]["substitute"] %>" />  + <%= h(@edit[:new][:ae_fields][i]["display_name"]) %> (<%= h(@edit[:new][:ae_fields][i]["name"]) %>) - <% default_value = @edit[:new][:ae_fields][i].default_value %> + <% default_value = @edit[:new][:ae_fields][i]["default_value"] %> <% cls = flds["value"].blank? && !default_value.blank? ? "input_def_val" : "" %> - <% if @edit[:new][:ae_fields][i].datatype == "password" %> + <% if @edit[:new][:ae_fields][i]["datatype"] == "password" %> <%= password_field_tag("#{prefix}inst_password_value_#{i}", flds["value"].blank? ? default_value : flds["value"], :class => cls, @@ -98,7 +98,7 @@ <% end %> - <% default_value = @edit[:new][:ae_fields][i].on_entry %> + <% default_value = @edit[:new][:ae_fields][i]["on_entry"] %> <% cls = flds["on_entry"].blank? && !default_value.blank? ? "input_def_val" : "" %> <%= text_field_tag("#{prefix}inst_on_entry_#{i}", flds["on_entry"].blank? ? default_value : flds["on_entry"], @@ -111,7 +111,7 @@ %> - <% default_value = @edit[:new][:ae_fields][i].on_exit %> + <% default_value = @edit[:new][:ae_fields][i]["on_exit"] %> <% cls = flds["on_exit"].blank? && !default_value.blank? ? "input_def_val" : "" %> <%= text_field_tag("#{prefix}inst_on_exit_#{i}", flds["on_exit"].blank? ? default_value : flds["on_exit"], @@ -124,7 +124,7 @@ %> - <% default_value = @edit[:new][:ae_fields][i].on_error %> + <% default_value = @edit[:new][:ae_fields][i]["on_error"] %> <% cls = flds["on_error"].blank? && !default_value.blank? ? "input_def_val" : "" %> <%= text_field_tag("#{prefix}inst_on_error_#{i}", flds["on_error"].blank? ? default_value : flds["on_error"], @@ -137,7 +137,7 @@ %> - <% default_value = @edit[:new][:ae_fields][i].collect %> + <% default_value = @edit[:new][:ae_fields][i]["collect"] %> <% cls = flds["collect"].blank? && !default_value.blank? ? "input_def_val" : "" %> <%= text_field_tag("#{prefix}inst_collect_#{i}", flds["collect"].blank? ? default_value : flds["collect"],