From 895b348d1c7926ce4165950c0e24ce18359d2dda Mon Sep 17 00:00:00 2001 From: lpichler Date: Thu, 3 Aug 2017 23:35:23 +0200 Subject: [PATCH 1/6] Add evaluation of enablement expression and displayed text to be able use it in UI buttons --- app/helpers/application_helper/toolbar_builder.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/helpers/application_helper/toolbar_builder.rb b/app/helpers/application_helper/toolbar_builder.rb index 9bac2f239d6..5f919441782 100644 --- a/app/helpers/application_helper/toolbar_builder.rb +++ b/app/helpers/application_helper/toolbar_builder.rb @@ -267,6 +267,8 @@ def create_raw_custom_button_hash(cb, record) :image => cb.options[:button_icon], :color => cb.options[:button_color], :text_display => cb.options.key?(:display) ? cb.options[:display] : true, + :enabled => cb.evaluate_enablement_expression_for(record), + :disabled_text => cb.disabled_text, :target_object => record_id } end From 0ee1be2fc91ac2adcb6603168bad78005dbf1391 Mon Sep 17 00:00:00 2001 From: lpichler Date: Fri, 4 Aug 2017 09:35:42 +0200 Subject: [PATCH 2/6] Remove options parameter parameter options was used for enabling custom buttons by parameter but now it will be controlled by expression --- app/helpers/application_helper/toolbar_builder.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/helpers/application_helper/toolbar_builder.rb b/app/helpers/application_helper/toolbar_builder.rb index 5f919441782..3dec3cb6c8c 100644 --- a/app/helpers/application_helper/toolbar_builder.rb +++ b/app/helpers/application_helper/toolbar_builder.rb @@ -237,8 +237,7 @@ def group_skipped?(name) x_edit_view_tb history_main ems_container_dashboard ems_infra_dashboard).include?(name) end - def create_custom_button(input, model, record, options = {}) - options[:enabled] = true unless options.key?(:enabled) + def create_custom_button(input, model, record) button_id = input[:id] button_name = input[:name].to_s record_id = record.present? ? record.id : 'LIST' @@ -311,7 +310,7 @@ def build_custom_toolbar_class(model, record, toolbar_result) if record.present? service_buttons = record_to_service_buttons(record) unless service_buttons.empty? - buttons = service_buttons.collect { |b| create_custom_button(b, model, record, :enabled => nil) } + buttons = service_buttons.collect { |b| create_custom_button(b, model, record) } toolbar.button_group("custom_buttons_", buttons) end end From a36437d1aadc6816c8afda7ec6ebb2089ca0e583 Mon Sep 17 00:00:00 2001 From: lpichler Date: Fri, 4 Aug 2017 09:39:41 +0200 Subject: [PATCH 3/6] Use value of enabled attribute from evaluated expression --- app/helpers/application_helper/toolbar_builder.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/helpers/application_helper/toolbar_builder.rb b/app/helpers/application_helper/toolbar_builder.rb index 3dec3cb6c8c..e60ee62f735 100644 --- a/app/helpers/application_helper/toolbar_builder.rb +++ b/app/helpers/application_helper/toolbar_builder.rb @@ -247,7 +247,7 @@ def create_custom_button(input, model, record) :icon => "#{input[:image]} fa-lg", :color => input[:color], :title => input[:description].to_s, - :enabled => options[:enabled], + :enabled => input[:enabled], :klass => ApplicationHelper::Button::ButtonWithoutRbacCheck, :url => "button", :url_parms => "?id=#{record_id}&button_id=#{button_id}&cls=#{model}&pressed=custom_button&desc=#{button_name}" From 31d3e048054f598b235d9b008ede4c35d979b0fe Mon Sep 17 00:00:00 2001 From: lpichler Date: Fri, 4 Aug 2017 09:40:31 +0200 Subject: [PATCH 4/6] Add disabled_text if button is disabled --- app/helpers/application_helper/toolbar_builder.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/helpers/application_helper/toolbar_builder.rb b/app/helpers/application_helper/toolbar_builder.rb index e60ee62f735..4cb44b2015a 100644 --- a/app/helpers/application_helper/toolbar_builder.rb +++ b/app/helpers/application_helper/toolbar_builder.rb @@ -246,7 +246,7 @@ def create_custom_button(input, model, record) :type => :button, :icon => "#{input[:image]} fa-lg", :color => input[:color], - :title => input[:description].to_s, + :title => !input[:enabled] && input[:disabled_text] ? input[:disabled_text] : input[:description].to_s, :enabled => input[:enabled], :klass => ApplicationHelper::Button::ButtonWithoutRbacCheck, :url => "button", From 06f9f688dc0a659f5d7d49005078ed19886c868c Mon Sep 17 00:00:00 2001 From: lpichler Date: Fri, 4 Aug 2017 09:42:25 +0200 Subject: [PATCH 5/6] disabled group button is any custom is disabled --- app/helpers/application_helper/toolbar_builder.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/helpers/application_helper/toolbar_builder.rb b/app/helpers/application_helper/toolbar_builder.rb index 4cb44b2015a..58dd71cff5c 100644 --- a/app/helpers/application_helper/toolbar_builder.rb +++ b/app/helpers/application_helper/toolbar_builder.rb @@ -274,14 +274,16 @@ def create_raw_custom_button_hash(cb, record) def custom_button_selects(model, record, toolbar_result) get_custom_buttons(model, record, toolbar_result).collect do |group| + buttons = group[:buttons].collect { |b| create_custom_button(b, model, record) } + props = { :id => "custom_#{group[:id]}", :type => :buttonSelect, :icon => "#{group[:image]} fa-lg", :color => group[:color], :title => group[:description], - :enabled => true, - :items => group[:buttons].collect { |b| create_custom_button(b, model, record) } + :enabled => record ? true : buttons.all?{ |button| button[:enabled]}, + :items => buttons } props[:text] = group[:text] if group[:text_display] From 616cae4638cb49d2b4dd3ccc3a9ff77af22378f9 Mon Sep 17 00:00:00 2001 From: lpichler Date: Wed, 9 Aug 2017 10:18:16 +0200 Subject: [PATCH 6/6] Fix spec, add new attributes --- spec/helpers/application_helper/toolbar_builder_spec.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spec/helpers/application_helper/toolbar_builder_spec.rb b/spec/helpers/application_helper/toolbar_builder_spec.rb index 28ab7422d04..0d20ed61864 100644 --- a/spec/helpers/application_helper/toolbar_builder_spec.rb +++ b/spec/helpers/application_helper/toolbar_builder_spec.rb @@ -47,6 +47,8 @@ :image => @button1.options[:button_icon], :color => nil, :text_display => @button1.options.key?(:display) ? @button1.options[:display] : true, + :enabled => true, + :disabled_text => nil, :target_object => subject.id } expected_button_set = { @@ -58,7 +60,6 @@ :text_display => @button_set.set_data.key?(:display) ? @button_set.set_data[:display] : true, :buttons => [expected_button1] } - expect(toolbar_builder.get_custom_buttons(subject.class, subject, Mixins::CustomButtons::Result.new(:single))).to eq([expected_button_set]) end