From 9c7dadfd51b8a3fe0936befbdd526a155ba2d0a5 Mon Sep 17 00:00:00 2001 From: Erik Clarizio Date: Mon, 23 Apr 2018 00:12:16 -0700 Subject: [PATCH] Modify dynamic loading based on whether it is initial load or a refresh https://bugzilla.redhat.com/show_bug.cgi?id=1559757 --- app/models/dialog.rb | 12 +++++++++++- app/models/dialog_field.rb | 5 +++++ app/models/dialog_field_check_box.rb | 2 +- app/models/dialog_field_date_control.rb | 2 +- app/models/dialog_field_serializer.rb | 4 ++-- app/models/dialog_field_sorted_item.rb | 4 ++++ app/models/dialog_field_text_box.rb | 2 +- app/models/resource_action_workflow.rb | 4 +++- 8 files changed, 28 insertions(+), 7 deletions(-) diff --git a/app/models/dialog.rb b/app/models/dialog.rb index e146eddce9fb..9f0a79733c49 100644 --- a/app/models/dialog.rb +++ b/app/models/dialog.rb @@ -88,9 +88,19 @@ def validate_field_data result end - def init_fields_with_values(values) + def load_values_into_fields(values) + dialog_field_hash.each do |_key, field| + field.dialog = self + field.value = values[field.automate_key_name] || values[field.name] + end + end + + def initialize_value_context(values) dialog_field_hash.each do |key, field| field.dialog = self + end + + dialog_field_hash.each do |_key, field| field.initialize_value_context end end diff --git a/app/models/dialog_field.rb b/app/models/dialog_field.rb index 4ebbe1c3d09a..1d9279cb1011 100644 --- a/app/models/dialog_field.rb +++ b/app/models/dialog_field.rb @@ -91,6 +91,10 @@ def self.field_types FIELD_CONTROLS end + def extract_dynamic_values + value + end + def initialize_value_context @value = values_from_automate if dynamic && @value.blank? end @@ -127,6 +131,7 @@ def resource end def update_and_serialize_values + trigger_automate_value_updates DialogFieldSerializer.serialize(self) end diff --git a/app/models/dialog_field_check_box.rb b/app/models/dialog_field_check_box.rb index e6d0e76dfc4c..4110fadbf6f0 100644 --- a/app/models/dialog_field_check_box.rb +++ b/app/models/dialog_field_check_box.rb @@ -28,7 +28,7 @@ def refresh_json_value end def trigger_automate_value_updates - values_from_automate + @value = values_from_automate end private diff --git a/app/models/dialog_field_date_control.rb b/app/models/dialog_field_date_control.rb index f8a38e69c496..9a220f674559 100644 --- a/app/models/dialog_field_date_control.rb +++ b/app/models/dialog_field_date_control.rb @@ -45,7 +45,7 @@ def refresh_json_value end def trigger_automate_value_updates - values_from_automate + @value = values_from_automate end private diff --git a/app/models/dialog_field_serializer.rb b/app/models/dialog_field_serializer.rb index 6374a7a9b8ba..167cb32e39a5 100644 --- a/app/models/dialog_field_serializer.rb +++ b/app/models/dialog_field_serializer.rb @@ -17,8 +17,8 @@ def serialize(dialog_field, all_attributes = false) } if dialog_field.dynamic? - dynamic_values = dialog_field.trigger_automate_value_updates - extra_attributes["values"] = dynamic_values + # dynamic_values = dialog_field.trigger_automate_value_updates + extra_attributes["values"] = dialog_field.extract_dynamic_values end if dialog_field.type == "DialogFieldTagControl" diff --git a/app/models/dialog_field_sorted_item.rb b/app/models/dialog_field_sorted_item.rb index c81ebef7a220..9bce501a7e2c 100644 --- a/app/models/dialog_field_sorted_item.rb +++ b/app/models/dialog_field_sorted_item.rb @@ -44,6 +44,10 @@ def values raw_values end + def extract_dynamic_values + @raw_values + end + def get_default_value trigger_automate_value_updates default_value diff --git a/app/models/dialog_field_text_box.rb b/app/models/dialog_field_text_box.rb index 0a21b0fcf098..663a34a66a28 100644 --- a/app/models/dialog_field_text_box.rb +++ b/app/models/dialog_field_text_box.rb @@ -70,7 +70,7 @@ def refresh_json_value end def trigger_automate_value_updates - values_from_automate + @value = values_from_automate end private diff --git a/app/models/resource_action_workflow.rb b/app/models/resource_action_workflow.rb index 9fe9b21df3b7..9af525971f9c 100644 --- a/app/models/resource_action_workflow.rb +++ b/app/models/resource_action_workflow.rb @@ -103,8 +103,10 @@ def load_dialog(resource_action, values, options) dialog.target_resource = @target if options[:display_view_only] dialog.init_fields_with_values_for_request(values) + elsif options[:refresh] + dialog.load_values_into_fields(values) else - dialog.init_fields_with_values(values) + dialog.initialize_value_context(values) end end dialog