Skip to content

Commit

Permalink
Merge pull request #139 from h-kataria/removed_ar_objects_from_ae_ins…
Browse files Browse the repository at this point in the history
…tance_editor

Made changes to instance add/edit code to remove AR Objects from @edit
  • Loading branch information
Dan Clarizio committed Jul 7, 2014
2 parents d457451 + bc641b3 commit eeb8d6f
Show file tree
Hide file tree
Showing 4 changed files with 160 additions and 148 deletions.
152 changes: 82 additions & 70 deletions vmdb/app/controllers/miq_ae_class_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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"}
Expand Down Expand Up @@ -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
Expand All @@ -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")) :
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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'
Expand Down Expand Up @@ -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|
Expand All @@ -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

Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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
64 changes: 32 additions & 32 deletions vmdb/app/views/miq_ae_class/_class_instances.html.erb
Original file line number Diff line number Diff line change
@@ -1,32 +1,32 @@
<div id="class_instances_div">
<% if !@in_a_form %>
<%= render :partial => "layouts/flash_msg",
:locals => {:div_num => "_class_instances"}
%>
<p class="legend">Instances</p>
<div class="checkall">
<input id="Toggle3" type="checkbox" name="Toggle3" onclick="miqCheck_AE_All('center_tb','instance_grid');"/> (Check All)
</div>
<%= 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] %>
<div id="form_div">
<%= render :partial => "layouts/flash_msg",
:locals => {:div_num => "_class_instances"}
%>
<%= render :partial => "instance_form",
:locals => {:prefix => "cls_"}
%>
</div>
<% end %>
</div>
<div id="class_instances_div">
<% if !@in_a_form %>
<%= render :partial => "layouts/flash_msg",
:locals => {:div_num => "_class_instances"}
%>
<p class="legend">Instances</p>
<div class="checkall">
<input id="Toggle3" type="checkbox" name="Toggle3" onclick="miqCheck_AE_All('center_tb','instance_grid');"/> (Check All)
</div>
<%= 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] %>
<div id="form_div">
<%= render :partial => "layouts/flash_msg",
:locals => {:div_num => "_class_instances"}
%>
<%= render :partial => "instance_form",
:locals => {:prefix => "cls_"}
%>
</div>
<% end %>
</div>
Loading

0 comments on commit eeb8d6f

Please sign in to comment.