Commit 587d930786e77f8e8f658cb905a5b769f573f329
Committed by
David Silva
1 parent
5e8e5a7e
Exists in
master
and in
79 other branches
Build DynamicTable into Operating Systems
Signed-off-by: Fabio Teixeira <fabio1079@gmail.com>
Showing
6 changed files
with
71 additions
and
98 deletions
Show diff stats
lib/database_helper.rb
@@ -67,7 +67,8 @@ class DatabaseHelper < DynamicTableHelper | @@ -67,7 +67,8 @@ class DatabaseHelper < DynamicTableHelper | ||
67 | value: database_name, | 67 | value: database_name, |
68 | id: database_id, | 68 | id: database_id, |
69 | hidden: true, | 69 | hidden: true, |
70 | - autocomplete: true | 70 | + autocomplete: true, |
71 | + select_field: false | ||
71 | }, | 72 | }, |
72 | version: { | 73 | version: { |
73 | value: database_data[:version], | 74 | value: database_data[:version], |
lib/dynamic_table_helper.rb
@@ -2,6 +2,7 @@ class DynamicTableHelper | @@ -2,6 +2,7 @@ class DynamicTableHelper | ||
2 | extend( | 2 | extend( |
3 | ActionView::Helpers::TagHelper, | 3 | ActionView::Helpers::TagHelper, |
4 | ActionView::Helpers::FormTagHelper, | 4 | ActionView::Helpers::FormTagHelper, |
5 | + ActionView::Helpers::FormOptionsHelper, | ||
5 | ActionView::Helpers::UrlHelper, | 6 | ActionView::Helpers::UrlHelper, |
6 | ApplicationHelper | 7 | ApplicationHelper |
7 | ) | 8 | ) |
@@ -21,11 +22,11 @@ class DynamicTableHelper | @@ -21,11 +22,11 @@ class DynamicTableHelper | ||
21 | DATA = { | 22 | DATA = { |
22 | name: { | 23 | name: { |
23 | label: LABEL_TEXT[:name], | 24 | label: LABEL_TEXT[:name], |
24 | - name: COLLUMN_NAME[:name], | 25 | + name: COLLUMN_NAME[:name] |
25 | }, | 26 | }, |
26 | version: { | 27 | version: { |
27 | label: LABEL_TEXT[:version], | 28 | label: LABEL_TEXT[:version], |
28 | - name: COLLUMN_NAME[:version], | 29 | + name: COLLUMN_NAME[:version] |
29 | } , | 30 | } , |
30 | license: { | 31 | license: { |
31 | label: LABEL_TEXT[:license], | 32 | label: LABEL_TEXT[:license], |
@@ -43,7 +44,7 @@ class DynamicTableHelper | @@ -43,7 +44,7 @@ class DynamicTableHelper | ||
43 | end | 44 | end |
44 | 45 | ||
45 | def self.generate_table_lines data={} | 46 | def self.generate_table_lines data={} |
46 | - @@model = data[:model_name].to_css_class | 47 | + @@model = data[:model_name] |
47 | @@field_name = data[:field_name] | 48 | @@field_name = data[:field_name] |
48 | @@hidden_label = data[:name][:value] | 49 | @@hidden_label = data[:name][:value] |
49 | @@hidden_id = data[:name][:id] | 50 | @@hidden_id = data[:name][:id] |
@@ -66,7 +67,13 @@ class DynamicTableHelper | @@ -66,7 +67,13 @@ class DynamicTableHelper | ||
66 | unless row_data.blank? | 67 | unless row_data.blank? |
67 | content_tag :tr, [ | 68 | content_tag :tr, [ |
68 | self.label_collumn(row_data[:label]), | 69 | self.label_collumn(row_data[:label]), |
69 | - self.value_collumn(row_data[:value], row_data[:name], row_data[:autocomplete]), | 70 | + self.value_collumn( |
71 | + row_data[:value], | ||
72 | + row_data[:name], | ||
73 | + row_data[:autocomplete], | ||
74 | + row_data[:select_field], | ||
75 | + row_data[:options] | ||
76 | + ), | ||
70 | self.hidden_collumn(row_data[:delete], row_data[:hidden]) | 77 | self.hidden_collumn(row_data[:delete], row_data[:hidden]) |
71 | ].join() | 78 | ].join() |
72 | end | 79 | end |
@@ -76,7 +83,7 @@ class DynamicTableHelper | @@ -76,7 +83,7 @@ class DynamicTableHelper | ||
76 | content_tag :td, label_tag(label) | 83 | content_tag :td, label_tag(label) |
77 | end | 84 | end |
78 | 85 | ||
79 | - def self.value_collumn value="", name="", autocomplete=false, disabled=false | 86 | + def self.value_collumn value="", name="", autocomplete=false, select_field=false, options=[] |
80 | html_options = | 87 | html_options = |
81 | if autocomplete | 88 | if autocomplete |
82 | { | 89 | { |
@@ -88,11 +95,16 @@ class DynamicTableHelper | @@ -88,11 +95,16 @@ class DynamicTableHelper | ||
88 | end | 95 | end |
89 | 96 | ||
90 | html_options[:disabled] = @@disabled | 97 | html_options[:disabled] = @@disabled |
91 | - if autocomplete | ||
92 | - content_tag :td, text_field_tag("#{@@model}_autocomplete", value, html_options) | 98 | + |
99 | + content = if select_field | ||
100 | + select_tag("#{@@model}[][#{@@field_name}]", options, html_options) | ||
101 | + elsif autocomplete | ||
102 | + text_field_tag("#{@@model}_autocomplete", value, html_options) | ||
93 | else | 103 | else |
94 | - content_tag :td, text_field_tag("#{@@model}[][#{name}]", value, html_options) | 104 | + text_field_tag("#{@@model}[][#{name}]", value, html_options) |
95 | end | 105 | end |
106 | + | ||
107 | + content_tag :td, content | ||
96 | end | 108 | end |
97 | 109 | ||
98 | def self.hidden_collumn delete=false, hidden_data=false | 110 | def self.hidden_collumn delete=false, hidden_data=false |
lib/library_helper.rb
@@ -39,7 +39,8 @@ module LibraryHelper | @@ -39,7 +39,8 @@ module LibraryHelper | ||
39 | name: { | 39 | name: { |
40 | value: library_data[:name], | 40 | value: library_data[:name], |
41 | hidden: false, | 41 | hidden: false, |
42 | - autocomplete: false | 42 | + autocomplete: false, |
43 | + select_field: false | ||
43 | }, | 44 | }, |
44 | version: { | 45 | version: { |
45 | value: library_data[:version], | 46 | value: library_data[:version], |
lib/operating_system_helper.rb
1 | -module OperatingSystemHelper | 1 | +class OperatingSystemHelper < DynamicTableHelper |
2 | + MODEL_NAME = "operating_system" | ||
3 | + FIELD_NAME = "operating_system_name_id" | ||
4 | + | ||
2 | def self.list_operating_system new_operating_systems | 5 | def self.list_operating_system new_operating_systems |
3 | return [] if new_operating_systems.nil? or new_operating_systems.length == 0 | 6 | return [] if new_operating_systems.nil? or new_operating_systems.length == 0 |
4 | list_operating_system = [] | 7 | list_operating_system = [] |
@@ -30,88 +33,39 @@ module OperatingSystemHelper | @@ -30,88 +33,39 @@ module OperatingSystemHelper | ||
30 | true | 33 | true |
31 | end | 34 | end |
32 | 35 | ||
33 | - def self.operating_system_as_tables(list_operating_system, have_delete_button = true, show_information = false) | ||
34 | - extend( | ||
35 | - ActionView::Helpers::TagHelper, | ||
36 | - ActionView::Helpers::FormTagHelper, | ||
37 | - ActionView::Helpers::UrlHelper, | ||
38 | - ActionView::Helpers::FormOptionsHelper, | ||
39 | - ApplicationHelper | ||
40 | - ) | ||
41 | - | ||
42 | - lambdas_list = [] | ||
43 | - | ||
44 | - if not show_information | ||
45 | - return operating_system_html_structure( | ||
46 | - {:operating_system_name_id => "", :version => ""}, | ||
47 | - have_delete_button | ||
48 | - ) if list_operating_system.nil? | ||
49 | - | ||
50 | - list_operating_system.each do |operating_system| | ||
51 | - lambdas_list << operating_system_html_structure( | ||
52 | - operating_system, | ||
53 | - have_delete_button | ||
54 | - ) | ||
55 | - end | ||
56 | - else | ||
57 | - list_operating_system.each do |operating_system| | ||
58 | - lambdas_list << operating_system_html_structure(operating_system) | ||
59 | - end | ||
60 | - end | 36 | + def self.operating_system_as_tables(list_operating_system, disabled=false) |
37 | + model_list = list_operating_system | ||
38 | + model_list ||= [{:operating_system_name_id => "", :version => ""}] | ||
61 | 39 | ||
62 | - lambdas_list | 40 | + models_as_tables model_list, "operating_system_html_structure", disabled |
63 | end | 41 | end |
64 | 42 | ||
65 | - def self.operating_system_html_structure (operating_system_data,have_delete_button = true) | ||
66 | - Proc::new do | ||
67 | - content_tag( | ||
68 | - 'table', | ||
69 | - content_tag( | ||
70 | - 'tr', | ||
71 | - content_tag('td', label_tag(_("Name")))+ | ||
72 | - content_tag( | ||
73 | - 'td', | ||
74 | - select_tag( | ||
75 | - "operating_system[][operating_system_name_id]", | ||
76 | - SoftwareHelper.select_options( | ||
77 | - OperatingSystemName.all, | ||
78 | - operating_system_data[:operating_system_name_id] | ||
79 | - ) | ||
80 | - ) | ||
81 | - )+ | ||
82 | - content_tag('td') | ||
83 | - )+ | 43 | + def self.operating_system_html_structure (operating_system_data, disabled) |
44 | + select_options = options_for_select( | ||
45 | + OperatingSystemName.all.collect {|osn| [osn.name, osn.id]}, | ||
46 | + operating_system_data[:operating_system_name_id] | ||
47 | + ) | ||
84 | 48 | ||
85 | - content_tag( | ||
86 | - 'tr', | ||
87 | - content_tag('td', label_tag(_("Version")))+ | ||
88 | - content_tag( | ||
89 | - 'td', | ||
90 | - text_field_tag( | ||
91 | - "operating_system[][version]", | ||
92 | - operating_system_data[:version] | ||
93 | - ) | ||
94 | - )+ | ||
95 | - if have_delete_button | ||
96 | - content_tag( | ||
97 | - 'td', | ||
98 | - button_without_text( | ||
99 | - :delete, | ||
100 | - _('Delete'), | ||
101 | - "#" , | ||
102 | - :class=>"delete-dynamic-table" | ||
103 | - ), | ||
104 | - :align => 'right' | ||
105 | - ) | ||
106 | - else | ||
107 | - content_tag('td', "") | ||
108 | - end | ||
109 | - ),:class => 'dynamic-table library-table' | ||
110 | - ) | ||
111 | - end | 49 | + data = { |
50 | + model_name: MODEL_NAME, | ||
51 | + field_name: FIELD_NAME, | ||
52 | + name: { | ||
53 | + hidden: false, | ||
54 | + autocomplete: false, | ||
55 | + select_field: true, | ||
56 | + options: select_options | ||
57 | + }, | ||
58 | + version: { | ||
59 | + value: operating_system_data[:version], | ||
60 | + hidden: true, | ||
61 | + delete: true | ||
62 | + } | ||
63 | + } | ||
64 | + DATA[:license].delete(:value) | ||
65 | + table_html_structure(data, disabled) | ||
112 | end | 66 | end |
113 | 67 | ||
114 | def self.add_dynamic_table | 68 | def self.add_dynamic_table |
115 | - operating_system_as_tables(nil).call | 69 | + operating_system_as_tables(nil).first.call |
116 | end | 70 | end |
117 | end | 71 | end |
lib/software_language_helper.rb
@@ -66,7 +66,8 @@ class SoftwareLanguageHelper < DynamicTableHelper | @@ -66,7 +66,8 @@ class SoftwareLanguageHelper < DynamicTableHelper | ||
66 | value: language_name, | 66 | value: language_name, |
67 | id: language_id, | 67 | id: language_id, |
68 | hidden: true, | 68 | hidden: true, |
69 | - autocomplete: true | 69 | + autocomplete: true, |
70 | + select_field: false | ||
70 | }, | 71 | }, |
71 | version: { | 72 | version: { |
72 | value: language_data[:version], | 73 | value: language_data[:version], |
views/profile/_software_tab.html.erb
@@ -112,9 +112,10 @@ | @@ -112,9 +112,10 @@ | ||
112 | </td> | 112 | </td> |
113 | </tr> | 113 | </tr> |
114 | 114 | ||
115 | + | ||
115 | <tr> | 116 | <tr> |
116 | <td> | 117 | <td> |
117 | - <table class = "operating-system-info"> | 118 | + <table class="operating-system-info"> |
118 | <thead> | 119 | <thead> |
119 | <tr> | 120 | <tr> |
120 | <th colspan="2"><%= _("Operating System") %></th> | 121 | <th colspan="2"><%= _("Operating System") %></th> |
@@ -122,14 +123,17 @@ | @@ -122,14 +123,17 @@ | ||
122 | </tr> | 123 | </tr> |
123 | </thead> | 124 | </thead> |
124 | 125 | ||
125 | - <tbody> | ||
126 | - <% profile.software_info.operating_systems.each do |operating_system| %> | ||
127 | - <%= display_mpog_field(_('Name:'), operating_system.operating_system_name , :name, true) %> | ||
128 | - <%= display_mpog_field(_('Version:'), operating_system, :version, true) %> | ||
129 | - <% end %> | ||
130 | - </tbody> | ||
131 | - </table> | ||
132 | - </td> | ||
133 | - </tr> | 126 | + <tbody> |
127 | + <tr> <td> | ||
128 | + <% operating_systems = profile.software_info.operating_systems %> | ||
129 | + <% OperatingSystemHelper.operating_system_as_tables(operating_systems, true).each do |tab| %> | ||
130 | + <%= tab.call %> | ||
131 | + <%end%> | ||
132 | + </td> </tr> | ||
133 | + </tbody> | ||
134 | + </table> | ||
135 | + </td> | ||
136 | + </tr> | ||
137 | + | ||
134 | </tr> | 138 | </tr> |
135 | </table> | 139 | </table> |
136 | \ No newline at end of file | 140 | \ No newline at end of file |