Skip to content

Commit

Permalink
Set default value after sorting list to avoid submitting incorrect value
Browse files Browse the repository at this point in the history
  • Loading branch information
eclarizio committed May 29, 2015
1 parent 020529b commit 0089ecd
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 10 deletions.
2 changes: 1 addition & 1 deletion vmdb/app/models/dialog_field_drop_down_list.rb
Expand Up @@ -39,7 +39,7 @@ def load_values_on_init?

def raw_values
@raw_values ||= dynamic ? values_from_automate : super
@default_value ||= @raw_values.first.first
@default_value ||= sort_data(@raw_values).first.first
self.value = @default_value

@raw_values
Expand Down
23 changes: 14 additions & 9 deletions vmdb/app/models/dialog_field_sorted_item.rb
Expand Up @@ -23,16 +23,8 @@ def raw_values

# Sort values before sending back
def values
sort_field = self.sort_by
values_data = raw_values
return values_data if sort_field == :none

value_position = sort_field == :value ? :first : :last
value_modifier = self.data_type == "integer" ? :to_i : :to_s

values_data = values_data.sort_by {|d| d.send(value_position).send(value_modifier)}
return values_data.reverse! if sort_order == :descending
values_data
sort_data(values_data)
end

def get_default_value
Expand All @@ -56,4 +48,17 @@ def normalize_automate_values(automate_hash)
result = automate_hash["values"].to_a
result.blank? ? initial_values : result
end

private

def sort_data(data_to_sort)
return data_to_sort if sort_by == :none

value_position = sort_by == :value ? :first : :last
value_modifier = data_type == "integer" ? :to_i : :to_s

data_to_sort = data_to_sort.sort_by { |d| d.send(value_position).send(value_modifier) }
return data_to_sort.reverse! if sort_order == :descending
data_to_sort
end
end

0 comments on commit 0089ecd

Please sign in to comment.