From c3484dd66e807b0ac7c76ce333fb33ae1c7e0e5c Mon Sep 17 00:00:00 2001 From: Peter Halloran Date: Fri, 23 Feb 2018 13:11:28 -0600 Subject: [PATCH 1/9] test: write code to inspect data flow --- app/cells/plugins/core/tree/checkboxes.haml | 8 ++++---- app/cells/plugins/core/tree_cell.rb | 11 ++++++----- app/transactions/get_field_tree_list_transaction.rb | 13 +++++++++---- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/app/cells/plugins/core/tree/checkboxes.haml b/app/cells/plugins/core/tree/checkboxes.haml index a1b5a91..7aa5e26 100644 --- a/app/cells/plugins/core/tree/checkboxes.haml +++ b/app/cells/plugins/core/tree/checkboxes.haml @@ -1,6 +1,6 @@ = render_label = render_tooltip unless @options[:tooltip].nil? - -- @options[:metadata]["data"]["tree_array"].each do |node| - = render_field_id - = cell(Plugins::Core::CheckboxCell, nil, form: @options[:form], node: node, data: data).(:checkbox) +- binding.pry +-# - @options[:metadata]["data"]["tree_array"].each do |node| +-# = render_field_id +-# = cell(Plugins::Core::CheckboxCell, nil, form: @options[:form], node: node, data: data).(:checkbox) diff --git a/app/cells/plugins/core/tree_cell.rb b/app/cells/plugins/core/tree_cell.rb index 9c1e32d..36a7fea 100644 --- a/app/cells/plugins/core/tree_cell.rb +++ b/app/cells/plugins/core/tree_cell.rb @@ -22,11 +22,12 @@ def render_select def metadata_values values = [["-- Select an Option --", nil]] - @options[:metadata]["data"]["tree_array"].map do |value| - values << [value["node"]["name"], value["id"]] - end - - values + # @options[:metadata]["data"]["tree_array"].map do |value| + # values << [value["node"]["name"], value["id"]] + # end + # + # values + @options[:metadata].keys end end end diff --git a/app/transactions/get_field_tree_list_transaction.rb b/app/transactions/get_field_tree_list_transaction.rb index 6d6a615..9efc88a 100644 --- a/app/transactions/get_field_tree_list_transaction.rb +++ b/app/transactions/get_field_tree_list_transaction.rb @@ -3,16 +3,21 @@ class GetFieldTreeListTransaction < ApplicationTransaction step :process def init(input) + binding.pry + field = Field.find_by_id(input[:args]['field_id']) field ? Right({ content_item: input[:content_item], field: field }) : Left(:not_found) end def process(input) - tree_array = input[:field].metadata['allowed_values']['data']['tree_array'] - tree_values = input[:content_item].field_items.find {|field_item| field_item.field_id == input[:field].id}.data['values'] + tree_array = input[:field].metadata['allowed_values'] + binding.pry + if false + tree_values = input[:content_item].field_items.find {|field_item| field_item.field_id == input[:field].id}.data['values'] - tree_list = tree_values.map {|value| tree_array.find {|node| node['id'] == value.to_i}['node']['name']}.join(',') - Right(tree_list) + tree_list = tree_values.map {|value| tree_array.find {|node| node['id'] == value.to_i}['node']['name']}.join(',') + end + Right([]) end end From 83facb14d83f12eed14f2c64cff568b1cd898a16 Mon Sep 17 00:00:00 2001 From: Peter Halloran Date: Fri, 23 Feb 2018 13:55:40 -0600 Subject: [PATCH 2/9] test: move binding.pry --- app/cells/plugins/core/tree/checkboxes.haml | 1 - app/cells/plugins/core/tree_cell.rb | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/app/cells/plugins/core/tree/checkboxes.haml b/app/cells/plugins/core/tree/checkboxes.haml index 7aa5e26..4585070 100644 --- a/app/cells/plugins/core/tree/checkboxes.haml +++ b/app/cells/plugins/core/tree/checkboxes.haml @@ -1,6 +1,5 @@ = render_label = render_tooltip unless @options[:tooltip].nil? -- binding.pry -# - @options[:metadata]["data"]["tree_array"].each do |node| -# = render_field_id -# = cell(Plugins::Core::CheckboxCell, nil, form: @options[:form], node: node, data: data).(:checkbox) diff --git a/app/cells/plugins/core/tree_cell.rb b/app/cells/plugins/core/tree_cell.rb index 36a7fea..453f828 100644 --- a/app/cells/plugins/core/tree_cell.rb +++ b/app/cells/plugins/core/tree_cell.rb @@ -2,6 +2,7 @@ module Plugins module Core class TreeCell < Plugins::Core::Cell def checkboxes + binding.pry render end From 7556a67e9a984a52bb93ce3f07a335199a8484e8 Mon Sep 17 00:00:00 2001 From: Peter Halloran Date: Fri, 23 Feb 2018 14:36:48 -0600 Subject: [PATCH 3/9] refactor: fix up checkup cell logic --- app/cells/plugins/core/checkbox/checkbox.haml | 12 ++++++------ app/cells/plugins/core/checkbox_cell.rb | 15 ++++++++++----- app/cells/plugins/core/tree/checkboxes.haml | 6 +++--- app/cells/plugins/core/tree_cell.rb | 1 - 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/app/cells/plugins/core/checkbox/checkbox.haml b/app/cells/plugins/core/checkbox/checkbox.haml index 033f5de..400b797 100644 --- a/app/cells/plugins/core/checkbox/checkbox.haml +++ b/app/cells/plugins/core/checkbox/checkbox.haml @@ -1,7 +1,7 @@ -%label.mdl-checkbox.mdl-js-checkbox.mdl-js-ripple-effect{ for: @options[:node]["id"] } - = @options[:form].check_box "data[values][#{@options[:node]['id']}]", { checked: value, class: 'mdl-checkbox__input', id: @options[:node]["id"] }, 1, nil - = @options[:form].label :data, display_lineage, class: 'mdl-checkbox__label' +%label.mdl-checkbox.mdl-js-checkbox.mdl-js-ripple-effect{ for: @options[:node_key] } + = @options[:form].check_box checkbox_input_value, { checked: value, class: 'mdl-checkbox__input', id: @options[:node_key] }, 1, nil + = @options[:form].label :data, node['name'], class: 'mdl-checkbox__label' -- if @options[:node]["children"].any? - - @options[:node]["children"].each do |child| - = cell(Plugins::Core::CheckboxCell, nil, form: @options[:form], node: child, child: child_identifier, data: @options[:data]).(:checkbox) +-# - if node["children"].any? +-# - @options[:node]["children"].each do |child| +-# = cell(Plugins::Core::CheckboxCell, nil, form: @options[:form], node: child, child: child_identifier, data: @options[:data]).(:checkbox) diff --git a/app/cells/plugins/core/checkbox_cell.rb b/app/cells/plugins/core/checkbox_cell.rb index d284e2d..77e6676 100644 --- a/app/cells/plugins/core/checkbox_cell.rb +++ b/app/cells/plugins/core/checkbox_cell.rb @@ -11,20 +11,25 @@ def value if @options[:data].blank? false else - @options[:data]["values"].include?(node_id) ? true : false + @options[:data]["values"].include?(@options[:node_key]) end end - def node_id - @options[:node]['id'].to_s + def checkbox_input_value + "data[values][#{@options[:node_key]}]" + end + + def node + @node ||= @options[:tree_fields][@options[:node_key]] end def child_identifier - @options[:child].to_s + " " + "->" + @options[:node]['name'] end def display_lineage - @options[:child].to_s + " " + @options[:node]["node"]["name"] + #@options[:child].to_s + " " + @options[:node]["node"]["name"] + @options[:node]['name'] end end end diff --git a/app/cells/plugins/core/tree/checkboxes.haml b/app/cells/plugins/core/tree/checkboxes.haml index 4585070..168a004 100644 --- a/app/cells/plugins/core/tree/checkboxes.haml +++ b/app/cells/plugins/core/tree/checkboxes.haml @@ -1,5 +1,5 @@ = render_label = render_tooltip unless @options[:tooltip].nil? --# - @options[:metadata]["data"]["tree_array"].each do |node| --# = render_field_id --# = cell(Plugins::Core::CheckboxCell, nil, form: @options[:form], node: node, data: data).(:checkbox) +- @options[:metadata]['head'].each do |checkbox_key| + = @options[:form].hidden_field :field_id, value: checkbox_key + = cell(Plugins::Core::CheckboxCell, nil, form: @options[:form], node_key: checkbox_key, tree_fields: @options[:metadata]['tree_fields'], data: data).(:checkbox) diff --git a/app/cells/plugins/core/tree_cell.rb b/app/cells/plugins/core/tree_cell.rb index 453f828..36a7fea 100644 --- a/app/cells/plugins/core/tree_cell.rb +++ b/app/cells/plugins/core/tree_cell.rb @@ -2,7 +2,6 @@ module Plugins module Core class TreeCell < Plugins::Core::Cell def checkboxes - binding.pry render end From 8cb9fde4a2cd6fcc584cb2f9e31a1a872c9cb95b Mon Sep 17 00:00:00 2001 From: Peter Halloran Date: Fri, 23 Feb 2018 15:05:35 -0600 Subject: [PATCH 4/9] refactor: change back hidden input ids --- app/cells/plugins/core/tree/checkboxes.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/cells/plugins/core/tree/checkboxes.haml b/app/cells/plugins/core/tree/checkboxes.haml index 168a004..6c214cf 100644 --- a/app/cells/plugins/core/tree/checkboxes.haml +++ b/app/cells/plugins/core/tree/checkboxes.haml @@ -1,5 +1,5 @@ = render_label = render_tooltip unless @options[:tooltip].nil? - @options[:metadata]['head'].each do |checkbox_key| - = @options[:form].hidden_field :field_id, value: checkbox_key + = render_field_id = cell(Plugins::Core::CheckboxCell, nil, form: @options[:form], node_key: checkbox_key, tree_fields: @options[:metadata]['tree_fields'], data: data).(:checkbox) From 6711112bf1bb98b4c4d3b0a90f2e05ea695b35c4 Mon Sep 17 00:00:00 2001 From: Peter Halloran Date: Tue, 27 Feb 2018 12:08:42 -0600 Subject: [PATCH 5/9] test: add pry inspector --- app/cells/plugins/core/checkbox/checkbox.haml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/cells/plugins/core/checkbox/checkbox.haml b/app/cells/plugins/core/checkbox/checkbox.haml index 400b797..5902782 100644 --- a/app/cells/plugins/core/checkbox/checkbox.haml +++ b/app/cells/plugins/core/checkbox/checkbox.haml @@ -1,6 +1,7 @@ %label.mdl-checkbox.mdl-js-checkbox.mdl-js-ripple-effect{ for: @options[:node_key] } = @options[:form].check_box checkbox_input_value, { checked: value, class: 'mdl-checkbox__input', id: @options[:node_key] }, 1, nil = @options[:form].label :data, node['name'], class: 'mdl-checkbox__label' + - binding.pry -# - if node["children"].any? -# - @options[:node]["children"].each do |child| From d4a2c6a0fc534c2d5323cafac9adac3aec4c5351 Mon Sep 17 00:00:00 2001 From: Peter Halloran Date: Tue, 27 Feb 2018 12:16:46 -0600 Subject: [PATCH 6/9] feat: render nested children --- app/cells/plugins/core/checkbox/checkbox.haml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/cells/plugins/core/checkbox/checkbox.haml b/app/cells/plugins/core/checkbox/checkbox.haml index 5902782..72f0a3f 100644 --- a/app/cells/plugins/core/checkbox/checkbox.haml +++ b/app/cells/plugins/core/checkbox/checkbox.haml @@ -1,8 +1,9 @@ %label.mdl-checkbox.mdl-js-checkbox.mdl-js-ripple-effect{ for: @options[:node_key] } = @options[:form].check_box checkbox_input_value, { checked: value, class: 'mdl-checkbox__input', id: @options[:node_key] }, 1, nil = @options[:form].label :data, node['name'], class: 'mdl-checkbox__label' - - binding.pry --# - if node["children"].any? --# - @options[:node]["children"].each do |child| --# = cell(Plugins::Core::CheckboxCell, nil, form: @options[:form], node: child, child: child_identifier, data: @options[:data]).(:checkbox) +- if node['children'].any? + .nested-checkbox-group + - @options[:node]['children'].each do |checkbox_key| + = render_field_id + = cell(Plugins::Core::CheckboxCell, nil, form: @options[:form], node_key: checkbox_key, tree_fields: @options[:tree_fields], data: data).(:checkbox) From 49fc7a52da4b964fa4c6e400105b2a20980fff70 Mon Sep 17 00:00:00 2001 From: Peter Halloran Date: Tue, 27 Feb 2018 16:42:33 -0600 Subject: [PATCH 7/9] feat: map nested tree field items --- app/cells/plugins/core/checkbox/checkbox.haml | 8 ++++---- app/cells/plugins/core/tree/checkboxes.haml | 2 +- app/cells/plugins/core/tree_cell.rb | 15 +++++++++------ 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/app/cells/plugins/core/checkbox/checkbox.haml b/app/cells/plugins/core/checkbox/checkbox.haml index 72f0a3f..df0863b 100644 --- a/app/cells/plugins/core/checkbox/checkbox.haml +++ b/app/cells/plugins/core/checkbox/checkbox.haml @@ -2,8 +2,8 @@ = @options[:form].check_box checkbox_input_value, { checked: value, class: 'mdl-checkbox__input', id: @options[:node_key] }, 1, nil = @options[:form].label :data, node['name'], class: 'mdl-checkbox__label' -- if node['children'].any? +- if @options[:tree_fields][@options[:node_key]]['children'].any? .nested-checkbox-group - - @options[:node]['children'].each do |checkbox_key| - = render_field_id - = cell(Plugins::Core::CheckboxCell, nil, form: @options[:form], node_key: checkbox_key, tree_fields: @options[:tree_fields], data: data).(:checkbox) + - @options[:tree_fields][@options[:node_key]]['children'].each do |checkbox_key| + = @options[:form].hidden_field :field_id, value: @options[:field_id] + = cell(Plugins::Core::CheckboxCell, nil, field_id: @options[:field_id], form: @options[:form], node_key: checkbox_key, tree_fields: @options[:tree_fields], data: @options[:data]).(:checkbox) diff --git a/app/cells/plugins/core/tree/checkboxes.haml b/app/cells/plugins/core/tree/checkboxes.haml index 6c214cf..61bbbaa 100644 --- a/app/cells/plugins/core/tree/checkboxes.haml +++ b/app/cells/plugins/core/tree/checkboxes.haml @@ -2,4 +2,4 @@ = render_tooltip unless @options[:tooltip].nil? - @options[:metadata]['head'].each do |checkbox_key| = render_field_id - = cell(Plugins::Core::CheckboxCell, nil, form: @options[:form], node_key: checkbox_key, tree_fields: @options[:metadata]['tree_fields'], data: data).(:checkbox) + = cell(Plugins::Core::CheckboxCell, nil, field_id: field.id , form: @options[:form], node_key: checkbox_key, tree_fields: tree_fields, data: data).(:checkbox) diff --git a/app/cells/plugins/core/tree_cell.rb b/app/cells/plugins/core/tree_cell.rb index 36a7fea..0c776d6 100644 --- a/app/cells/plugins/core/tree_cell.rb +++ b/app/cells/plugins/core/tree_cell.rb @@ -15,6 +15,10 @@ def value data&.[]('values') || @options[:default_value] end + def tree_fields + @tree_fields ||= @options[:metadata]['tree_fields'] + end + def render_select @options[:form].select 'data[values]', metadata_values, {selected: value} end @@ -22,12 +26,11 @@ def render_select def metadata_values values = [["-- Select an Option --", nil]] - # @options[:metadata]["data"]["tree_array"].map do |value| - # values << [value["node"]["name"], value["id"]] - # end - # - # values - @options[:metadata].keys + @options[:metadata]['data'].keys.map do |field_key| + values << [@options[:metadata]['data'][field_key]['name'], field_key] + end + + values end end end From af18a0caa5dad5e798f530693237ef72cec99015 Mon Sep 17 00:00:00 2001 From: Peter Halloran Date: Tue, 27 Feb 2018 16:47:38 -0600 Subject: [PATCH 8/9] chore: remove debugger code --- app/cells/plugins/core/checkbox_cell.rb | 9 --------- app/transactions/get_field_tree_list_transaction.rb | 4 +--- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/app/cells/plugins/core/checkbox_cell.rb b/app/cells/plugins/core/checkbox_cell.rb index 77e6676..cbf6092 100644 --- a/app/cells/plugins/core/checkbox_cell.rb +++ b/app/cells/plugins/core/checkbox_cell.rb @@ -22,15 +22,6 @@ def checkbox_input_value def node @node ||= @options[:tree_fields][@options[:node_key]] end - - def child_identifier - @options[:node]['name'] - end - - def display_lineage - #@options[:child].to_s + " " + @options[:node]["node"]["name"] - @options[:node]['name'] - end end end end diff --git a/app/transactions/get_field_tree_list_transaction.rb b/app/transactions/get_field_tree_list_transaction.rb index 9efc88a..e53e0ea 100644 --- a/app/transactions/get_field_tree_list_transaction.rb +++ b/app/transactions/get_field_tree_list_transaction.rb @@ -3,8 +3,6 @@ class GetFieldTreeListTransaction < ApplicationTransaction step :process def init(input) - binding.pry - field = Field.find_by_id(input[:args]['field_id']) field ? Right({ content_item: input[:content_item], field: field }) : Left(:not_found) @@ -12,7 +10,7 @@ def init(input) def process(input) tree_array = input[:field].metadata['allowed_values'] - binding.pry + if false tree_values = input[:content_item].field_items.find {|field_item| field_item.field_id == input[:field].id}.data['values'] From c793b4c25bff15e53e7f4594826dc4514b6fe262 Mon Sep 17 00:00:00 2001 From: Peter Halloran Date: Wed, 28 Feb 2018 11:57:16 -0600 Subject: [PATCH 9/9] feat: add event handler for clicking parent checkboxes --- app/cells/plugins/core/checkbox/checkbox.haml | 4 ++-- app/cells/plugins/core/checkbox_cell.rb | 8 ++++++++ app/transactions/get_field_tree_list_transaction.rb | 9 ++++----- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/app/cells/plugins/core/checkbox/checkbox.haml b/app/cells/plugins/core/checkbox/checkbox.haml index df0863b..074c795 100644 --- a/app/cells/plugins/core/checkbox/checkbox.haml +++ b/app/cells/plugins/core/checkbox/checkbox.haml @@ -1,9 +1,9 @@ -%label.mdl-checkbox.mdl-js-checkbox.mdl-js-ripple-effect{ for: @options[:node_key] } +%label.mdl-checkbox.mdl-js-checkbox.mdl-js-ripple-effect{ for: @options[:node_key], **checkbox_attributes } = @options[:form].check_box checkbox_input_value, { checked: value, class: 'mdl-checkbox__input', id: @options[:node_key] }, 1, nil = @options[:form].label :data, node['name'], class: 'mdl-checkbox__label' - if @options[:tree_fields][@options[:node_key]]['children'].any? - .nested-checkbox-group + .nested-checkbox-group{ id: "nested_#{@options[:node_key]}" } - @options[:tree_fields][@options[:node_key]]['children'].each do |checkbox_key| = @options[:form].hidden_field :field_id, value: @options[:field_id] = cell(Plugins::Core::CheckboxCell, nil, field_id: @options[:field_id], form: @options[:form], node_key: checkbox_key, tree_fields: @options[:tree_fields], data: @options[:data]).(:checkbox) diff --git a/app/cells/plugins/core/checkbox_cell.rb b/app/cells/plugins/core/checkbox_cell.rb index cbf6092..6d2bd9d 100644 --- a/app/cells/plugins/core/checkbox_cell.rb +++ b/app/cells/plugins/core/checkbox_cell.rb @@ -15,6 +15,14 @@ def value end end + def checkbox_attributes + if @options[:tree_fields][@options[:node_key]]['children'].any? + { onclick: "TreeBranchClicked(#{ '"#nested_' + @options[:node_key] + '"' }, this)" } + else + {} + end + end + def checkbox_input_value "data[values][#{@options[:node_key]}]" end diff --git a/app/transactions/get_field_tree_list_transaction.rb b/app/transactions/get_field_tree_list_transaction.rb index e53e0ea..edbdbaf 100644 --- a/app/transactions/get_field_tree_list_transaction.rb +++ b/app/transactions/get_field_tree_list_transaction.rb @@ -11,11 +11,10 @@ def init(input) def process(input) tree_array = input[:field].metadata['allowed_values'] - if false - tree_values = input[:content_item].field_items.find {|field_item| field_item.field_id == input[:field].id}.data['values'] + tree_values = input[:content_item].field_items.find {|field_item| field_item.field_id == input[:field].id}.data['values'] + # This will break + tree_list = tree_values.map {|value| tree_array.find {|node| node['id'] == value.to_i}['node']['name']}.join(',') - tree_list = tree_values.map {|value| tree_array.find {|node| node['id'] == value.to_i}['node']['name']}.join(',') - end - Right([]) + Right(tree_list) end end