brain_damage 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (215) hide show
  1. checksums.yaml +7 -0
  2. data/.byebug_history +32 -0
  3. data/.gitignore +9 -0
  4. data/.rspec +2 -0
  5. data/.travis.yml +4 -0
  6. data/CODE_OF_CONDUCT.md +13 -0
  7. data/Gemfile +7 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +41 -0
  10. data/Rakefile +6 -0
  11. data/app/assets/javascripts/ajax_delete.js.coffee +14 -0
  12. data/app/assets/javascripts/ajax_form.js.coffee +94 -0
  13. data/app/assets/javascripts/autocomplete-input.js.coffee +43 -0
  14. data/app/assets/javascripts/autocomplete-list.js.coffee +41 -0
  15. data/app/assets/javascripts/autocomplete-simple-select.js.coffee +39 -0
  16. data/app/assets/javascripts/autocomplete.js.coffee +17 -0
  17. data/app/assets/javascripts/brain_damage.js +3 -0
  18. data/app/assets/javascripts/datepicker.js.coffee +49 -0
  19. data/app/assets/javascripts/document_validity_input.js.coffee +16 -0
  20. data/app/assets/javascripts/expandable-list.js.coffee +16 -0
  21. data/app/assets/javascripts/form_initializer.js.coffee +8 -0
  22. data/app/assets/javascripts/helpers/conditionally-visible-field.js.coffee +13 -0
  23. data/app/assets/javascripts/hideable_content.js.coffee +25 -0
  24. data/app/assets/javascripts/inline_edit.js.coffee +58 -0
  25. data/app/assets/javascripts/label_file_field.js.coffee +22 -0
  26. data/app/assets/javascripts/label_file_field_ui_initializer.js.coffee +10 -0
  27. data/app/assets/javascripts/list_item.js.coffee +10 -0
  28. data/app/assets/javascripts/nested_form_controls.js.coffee +84 -0
  29. data/app/assets/javascripts/polymorphic_hibrid_input.js.coffee +14 -0
  30. data/app/assets/javascripts/polymorphic_select_input.js.coffee +28 -0
  31. data/app/assets/javascripts/rails.validations.actionView.js.coffee +18 -0
  32. data/app/assets/javascripts/scroll_loader.js.coffee +28 -0
  33. data/app/assets/javascripts/searchable_contents.js.coffee +62 -0
  34. data/app/assets/javascripts/selectable-list.js.coffee +92 -0
  35. data/app/assets/javascripts/sensible_to_ajax_view.js.coffee +60 -0
  36. data/app/assets/javascripts/single_page_manager.js.coffee +60 -0
  37. data/app/assets/javascripts/stylesheets/_custom-best-in-place.css.sass +12 -0
  38. data/app/assets/javascripts/stylesheets/_top-search.css.sass +0 -0
  39. data/app/assets/javascripts/stylesheets/application.css +0 -0
  40. data/app/assets/javascripts/trailing_form.js.coffee +16 -0
  41. data/app/assets/javascripts/ui_initializer.js.coffee +23 -0
  42. data/app/assets/javascripts/underscore.min.js +6 -0
  43. data/app/assets/stylesheets/brain_damage.css.sass +214 -0
  44. data/app/views/brain_damage/_empty.html.haml +1 -0
  45. data/app/views/brain_damage/empty.html.haml +1 -0
  46. data/bin/console +14 -0
  47. data/bin/setup +7 -0
  48. data/brain_damage.gemspec +36 -0
  49. data/lib/brain_damage.rb +16 -0
  50. data/lib/brain_damage/brain_damage_helper.rb +75 -0
  51. data/lib/brain_damage/version.rb +3 -0
  52. data/lib/generators/brain_damage/full/full_generator.rb +37 -0
  53. data/lib/generators/brain_damage/lib/controller/controller_generator.rb +45 -0
  54. data/lib/generators/brain_damage/lib/controller/templates/controller.rb +9 -0
  55. data/lib/generators/brain_damage/lib/controller/templates/private_methods/get_partial_locals.rb +3 -0
  56. data/lib/generators/brain_damage/lib/controller/templates/private_methods/set_singular_table_name.rb +3 -0
  57. data/lib/generators/brain_damage/lib/controller/templates/private_methods/singular_table_name_params.rb +3 -0
  58. data/lib/generators/brain_damage/lib/controller/templates/public_methods/create.rb +21 -0
  59. data/lib/generators/brain_damage/lib/controller/templates/public_methods/destroy.rb +14 -0
  60. data/lib/generators/brain_damage/lib/controller/templates/public_methods/edit.rb +2 -0
  61. data/lib/generators/brain_damage/lib/controller/templates/public_methods/index.rb +3 -0
  62. data/lib/generators/brain_damage/lib/controller/templates/public_methods/new.rb +3 -0
  63. data/lib/generators/brain_damage/lib/controller/templates/public_methods/show.rb +2 -0
  64. data/lib/generators/brain_damage/lib/controller/templates/public_methods/update.rb +25 -0
  65. data/lib/generators/brain_damage/lib/field.rb +163 -0
  66. data/lib/generators/brain_damage/lib/field_white_list.rb +21 -0
  67. data/lib/generators/brain_damage/lib/includes.rb +12 -0
  68. data/lib/generators/brain_damage/lib/migration.rb +76 -0
  69. data/lib/generators/brain_damage/lib/model/model_generator.rb +115 -0
  70. data/lib/generators/brain_damage/lib/model/templates/model.rb +12 -0
  71. data/lib/generators/brain_damage/lib/parametizer.rb +19 -0
  72. data/lib/generators/brain_damage/lib/relation/base.rb +50 -0
  73. data/lib/generators/brain_damage/lib/relation/belongs_to.rb +29 -0
  74. data/lib/generators/brain_damage/lib/relation/has_and_belongs_to_many.rb +22 -0
  75. data/lib/generators/brain_damage/lib/relation/has_many.rb +35 -0
  76. data/lib/generators/brain_damage/lib/relation/has_one.rb +18 -0
  77. data/lib/generators/brain_damage/lib/resource.rb +150 -0
  78. data/lib/generators/brain_damage/lib/ruby_simple_parser/block.rb +33 -0
  79. data/lib/generators/brain_damage/lib/ruby_simple_parser/class_definition.rb +19 -0
  80. data/lib/generators/brain_damage/lib/ruby_simple_parser/code_line.rb +16 -0
  81. data/lib/generators/brain_damage/lib/ruby_simple_parser/global_context.rb +8 -0
  82. data/lib/generators/brain_damage/lib/ruby_simple_parser/line_classifier.rb +107 -0
  83. data/lib/generators/brain_damage/lib/ruby_simple_parser/method.rb +23 -0
  84. data/lib/generators/brain_damage/lib/ruby_simple_parser/parser.rb +114 -0
  85. data/lib/generators/brain_damage/lib/ruby_simple_parser/ruby_simple_parser.rb +11 -0
  86. data/lib/generators/brain_damage/lib/templateable/base.rb +53 -0
  87. data/lib/generators/brain_damage/lib/templateable/class_templateable.rb +88 -0
  88. data/lib/generators/brain_damage/lib/templateable/field_templateable.rb +42 -0
  89. data/lib/generators/brain_damage/lib/templateable/view_templateable.rb +23 -0
  90. data/lib/generators/brain_damage/lib/views/displays/base.rb +14 -0
  91. data/lib/generators/brain_damage/lib/views/displays/bright_text.rb +14 -0
  92. data/lib/generators/brain_damage/lib/views/displays/collection_list.rb +22 -0
  93. data/lib/generators/brain_damage/lib/views/displays/default.rb +11 -0
  94. data/lib/generators/brain_damage/lib/views/displays/foreign_single_page_manager.rb +46 -0
  95. data/lib/generators/brain_damage/lib/views/displays/hidden.rb +26 -0
  96. data/lib/generators/brain_damage/lib/views/displays/inline_editable.rb +27 -0
  97. data/lib/generators/brain_damage/lib/views/displays/link_to.rb +42 -0
  98. data/lib/generators/brain_damage/lib/views/displays/linked_collection_list.rb +26 -0
  99. data/lib/generators/brain_damage/lib/views/displays/templates/bright_text.html.haml +7 -0
  100. data/lib/generators/brain_damage/lib/views/displays/templates/collection_list.html.haml +31 -0
  101. data/lib/generators/brain_damage/lib/views/displays/templates/custom.html.haml +5 -0
  102. data/lib/generators/brain_damage/lib/views/displays/templates/default.html.haml +4 -0
  103. data/lib/generators/brain_damage/lib/views/displays/templates/foreign_single_page_manager.html.haml +1 -0
  104. data/lib/generators/brain_damage/lib/views/displays/templates/inline_editable.html.haml +8 -0
  105. data/lib/generators/brain_damage/lib/views/displays/templates/link_to.html.haml +9 -0
  106. data/lib/generators/brain_damage/lib/views/displays/templates/linked_collection_list.html.haml +31 -0
  107. data/lib/generators/brain_damage/lib/views/displays/templates/text.html.haml +4 -0
  108. data/lib/generators/brain_damage/lib/views/displays/templates/yes_or_no.html.haml +4 -0
  109. data/lib/generators/brain_damage/lib/views/displays/text.rb +43 -0
  110. data/lib/generators/brain_damage/lib/views/factory.rb +29 -0
  111. data/lib/generators/brain_damage/lib/views/inputs/autocompletable.rb +26 -0
  112. data/lib/generators/brain_damage/lib/views/inputs/autocompletable_multiple_selection.rb +25 -0
  113. data/lib/generators/brain_damage/lib/views/inputs/autocompletable_simple_selection.rb +21 -0
  114. data/lib/generators/brain_damage/lib/views/inputs/base.rb +23 -0
  115. data/lib/generators/brain_damage/lib/views/inputs/checkbox.rb +14 -0
  116. data/lib/generators/brain_damage/lib/views/inputs/collection_checkboxes.rb +10 -0
  117. data/lib/generators/brain_damage/lib/views/inputs/collection_select.rb +11 -0
  118. data/lib/generators/brain_damage/lib/views/inputs/default.rb +11 -0
  119. data/lib/generators/brain_damage/lib/views/inputs/hierarchy_picker.rb +11 -0
  120. data/lib/generators/brain_damage/lib/views/inputs/nested_form.rb +34 -0
  121. data/lib/generators/brain_damage/lib/views/inputs/nested_on_hideable.rb +22 -0
  122. data/lib/generators/brain_damage/lib/views/inputs/polymorphic_hybrid.rb +44 -0
  123. data/lib/generators/brain_damage/lib/views/inputs/polymorphic_select.rb +33 -0
  124. data/lib/generators/brain_damage/lib/views/inputs/templates/autocompletable_multiple_selection.html.haml +20 -0
  125. data/lib/generators/brain_damage/lib/views/inputs/templates/autocompletable_simple_selection.html.haml +25 -0
  126. data/lib/generators/brain_damage/lib/views/inputs/templates/checkbox.html.haml +3 -0
  127. data/lib/generators/brain_damage/lib/views/inputs/templates/collection_checkboxes.html.haml +6 -0
  128. data/lib/generators/brain_damage/lib/views/inputs/templates/collection_select.html.haml +9 -0
  129. data/lib/generators/brain_damage/lib/views/inputs/templates/custom.html.haml +5 -0
  130. data/lib/generators/brain_damage/lib/views/inputs/templates/default.html.haml +1 -0
  131. data/lib/generators/brain_damage/lib/views/inputs/templates/file.html.haml +5 -0
  132. data/lib/generators/brain_damage/lib/views/inputs/templates/hierarchy_picker.html.haml +19 -0
  133. data/lib/generators/brain_damage/lib/views/inputs/templates/nested_form.html.haml +2 -0
  134. data/lib/generators/brain_damage/lib/views/inputs/templates/polymorphic_hybrid.html.haml +20 -0
  135. data/lib/generators/brain_damage/lib/views/inputs/templates/polymorphic_select.html.haml +22 -0
  136. data/lib/generators/brain_damage/lib/views/inputs/templates/simple_select.html.haml +1 -0
  137. data/lib/generators/brain_damage/lib/views/inputs/templates/text.html.haml +1 -0
  138. data/lib/generators/brain_damage/lib/views/labels/base.rb +26 -0
  139. data/lib/generators/brain_damage/lib/views/labels/default.rb +15 -0
  140. data/lib/generators/brain_damage/lib/views/labels/templates/default.html.haml +6 -0
  141. data/lib/generators/brain_damage/lib/views/modules/inline_editable.rb +16 -0
  142. data/lib/generators/brain_damage/lib/views/schemas/autocompletable.rb +36 -0
  143. data/lib/generators/brain_damage/lib/views/schemas/autocompletable/base.rb +26 -0
  144. data/lib/generators/brain_damage/lib/views/schemas/autocompletable/templates/_links.html.haml +8 -0
  145. data/lib/generators/brain_damage/lib/views/schemas/autocompletable/templates/_multiple_selection.html.haml +6 -0
  146. data/lib/generators/brain_damage/lib/views/schemas/autocompletable/templates/_simple_selection.html.haml +6 -0
  147. data/lib/generators/brain_damage/lib/views/schemas/base.rb +97 -0
  148. data/lib/generators/brain_damage/lib/views/schemas/base/base.rb +86 -0
  149. data/lib/generators/brain_damage/lib/views/schemas/base/form.rb +24 -0
  150. data/lib/generators/brain_damage/lib/views/schemas/base/templates/_fields.html.haml +10 -0
  151. data/lib/generators/brain_damage/lib/views/schemas/base/templates/_form.html.haml +15 -0
  152. data/lib/generators/brain_damage/lib/views/schemas/base/templates/index.html.haml +16 -0
  153. data/lib/generators/brain_damage/lib/views/schemas/base/templates/list/_index.html.haml +4 -0
  154. data/lib/generators/brain_damage/lib/views/schemas/base/templates/list/_item.html.haml +5 -0
  155. data/lib/generators/brain_damage/lib/views/schemas/base/templates/new.html.haml +3 -0
  156. data/lib/generators/brain_damage/lib/views/schemas/base/templates/show.html.haml +9 -0
  157. data/lib/generators/brain_damage/lib/views/schemas/base/templates/table/_header.html.haml +5 -0
  158. data/lib/generators/brain_damage/lib/views/schemas/base/templates/table/_index.html.haml +8 -0
  159. data/lib/generators/brain_damage/lib/views/schemas/base/templates/table/_item.html.haml +5 -0
  160. data/lib/generators/brain_damage/lib/views/schemas/custom.rb +36 -0
  161. data/lib/generators/brain_damage/lib/views/schemas/factory.rb +13 -0
  162. data/lib/generators/brain_damage/lib/views/schemas/inline_editable.rb +27 -0
  163. data/lib/generators/brain_damage/lib/views/schemas/inline_editable/base.rb +20 -0
  164. data/lib/generators/brain_damage/lib/views/schemas/inline_editable/field.rb +47 -0
  165. data/lib/generators/brain_damage/lib/views/schemas/inline_editable/inline_edit.rb +10 -0
  166. data/lib/generators/brain_damage/lib/views/schemas/inline_editable/templates/inline_edit/_field.html.haml +33 -0
  167. data/lib/generators/brain_damage/lib/views/schemas/inline_editable/templates/inline_edit/_inline_edit.html.haml +0 -0
  168. data/lib/generators/brain_damage/lib/views/schemas/nested_fields.rb +14 -0
  169. data/lib/generators/brain_damage/lib/views/schemas/nested_fields/base.rb +20 -0
  170. data/lib/generators/brain_damage/lib/views/schemas/nested_fields/templates/_nested.fields.html.haml +33 -0
  171. data/lib/generators/brain_damage/lib/views/schemas/single_page_manager.rb +22 -0
  172. data/lib/generators/brain_damage/lib/views/schemas/single_page_manager/base.rb +40 -0
  173. data/lib/generators/brain_damage/lib/views/schemas/single_page_manager/list_item.rb +16 -0
  174. data/lib/generators/brain_damage/lib/views/schemas/single_page_manager/templates/_single_page_manager.html.haml +20 -0
  175. data/lib/generators/brain_damage/lib/views/schemas/single_page_manager/templates/index.html.haml +1 -0
  176. data/lib/generators/brain_damage/lib/views/schemas/single_page_manager/templates/list/_index.form.html.haml +20 -0
  177. data/lib/generators/brain_damage/lib/views/schemas/single_page_manager/templates/list/_index.html.haml +27 -0
  178. data/lib/generators/brain_damage/lib/views/schemas/single_page_manager/templates/list/_item.display.html.haml +5 -0
  179. data/lib/generators/brain_damage/lib/views/schemas/single_page_manager/templates/list/_item.form.html.haml +21 -0
  180. data/lib/generators/brain_damage/lib/views/schemas/single_page_manager/templates/list/_item.html.haml +33 -0
  181. data/lib/generators/brain_damage/lib/views/schemas/single_page_manager/templates/list/_simple.html.haml +4 -0
  182. data/lib/generators/brain_damage/lib/views/views_generator.rb +37 -0
  183. data/lib/generators/brain_damage/resource/USAGE +8 -0
  184. data/lib/generators/brain_damage/resource/helpers.rb +117 -0
  185. data/lib/generators/brain_damage/resource/monkeys/string.rb +17 -0
  186. data/lib/generators/brain_damage/resource/resource_generator.rb +139 -0
  187. data/lib/generators/brain_damage/resource/templates/controller.rb +40 -0
  188. data/lib/generators/brain_damage/resource/templates/inputs/_simple_select.html.haml +1 -0
  189. data/lib/generators/brain_damage/resource/templates/views/common/_fields.html.haml +11 -0
  190. data/lib/generators/brain_damage/resource/templates/views/common/show.html.haml +11 -0
  191. data/lib/generators/brain_damage/resource/templates/views/full_entity/_form.html.haml +13 -0
  192. data/lib/generators/brain_damage/resource/templates/views/full_entity/_index.body.html.haml +4 -0
  193. data/lib/generators/brain_damage/resource/templates/views/full_entity/_index.html.haml +5 -0
  194. data/lib/generators/brain_damage/resource/templates/views/full_entity/_table.header.html.haml +7 -0
  195. data/lib/generators/brain_damage/resource/templates/views/full_entity/_table.item.html.haml +8 -0
  196. data/lib/generators/brain_damage/resource/templates/views/full_entity/index.html.haml +16 -0
  197. data/lib/generators/brain_damage/resource/templates/views/full_entity/new.html.haml +3 -0
  198. data/lib/generators/brain_damage/resource/templates/views/scaffold/_menu.entry.html.haml +1 -0
  199. data/lib/generators/brain_damage/resource/templates/views/single_page_manager/_form.html.haml +15 -0
  200. data/lib/generators/brain_damage/resource/templates/views/single_page_manager/_index.body.html.haml +4 -0
  201. data/lib/generators/brain_damage/resource/templates/views/single_page_manager/_single_page_manager.html.haml +17 -0
  202. data/lib/generators/brain_damage/resource/templates/views/single_page_manager/_table.form.html.haml +21 -0
  203. data/lib/generators/brain_damage/resource/templates/views/single_page_manager/_table.header.html.haml +12 -0
  204. data/lib/generators/brain_damage/resource/templates/views/single_page_manager/_table.html.haml +27 -0
  205. data/lib/generators/brain_damage/resource/templates/views/single_page_manager/_table.item.form.html.haml +21 -0
  206. data/lib/generators/brain_damage/resource/templates/views/single_page_manager/_table.item.html.haml +32 -0
  207. data/lib/generators/brain_damage/resource/templates/views/single_page_manager/_table.item.show.html.haml +13 -0
  208. data/lib/generators/brain_damage/resource/templates/views/single_page_manager/index.html.haml +4 -0
  209. data/lib/generators/brain_damage/resource/templates/views/special/_fields.show.inline.html.haml +10 -0
  210. data/lib/generators/brain_damage/resource/templates/views/special/_inline_edit.html.haml +2 -0
  211. data/lib/generators/brain_damage/resource/templates/views/special/_inner.show.inline.html.haml +20 -0
  212. data/lib/generators/brain_damage/resource/templates/views/special/_nested.fields.html.haml +33 -0
  213. data/lib/generators/brain_damage/resource/templates/views/special/_show.inline.html.haml +10 -0
  214. data/lib/generators/brain_damage/resource/templates/views/special/_trailing_form.show.inline.html.haml +12 -0
  215. metadata +328 -0
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+
3
+ module BrainDamage
4
+ module View
5
+ class Factory
6
+ def self.create(type, field, options = {})
7
+ if options.is_a? Symbol
8
+ subtype = options
9
+ options = { type: options }
10
+ else
11
+ subtype = options[:type]
12
+ end
13
+
14
+ type = type.to_s
15
+ subtype = subtype.to_s
16
+
17
+ if File.exists? __dir__+"/#{type.pluralize}/#{subtype}.rb"
18
+ require_relative "#{type.pluralize}/#{subtype}"
19
+ eval("#{type.camelize.singularize}::#{subtype.camelize}").new field, options
20
+
21
+ else
22
+ require_relative "#{type.pluralize}/base"
23
+ options[:template_file] = "#{subtype.underscore}.html.haml"
24
+ eval("#{type.camelize.singularize}::Base").new field, options
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,26 @@
1
+ require 'erb'
2
+ require_relative 'base'
3
+
4
+ module BrainDamage
5
+ module View
6
+ module Input
7
+ class Autocompletable < Base
8
+ def target
9
+ @options[:target]
10
+ end
11
+
12
+ def url
13
+ @options[:url] || "/#{@options[:target]}/autocomplete"
14
+ end
15
+
16
+ def display_method
17
+ @options[:display_method] || :name
18
+ end
19
+
20
+ def value_method
21
+ @options[:value_method] || :id
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,25 @@
1
+ require_relative 'autocompletable'
2
+
3
+ module BrainDamage
4
+ module View
5
+ module Input
6
+ class AutocompletableMultipleSelection < Autocompletable
7
+ def values
8
+ "if #{singular_table_name}.#{name}.any? then #{value} else 'null' end"
9
+ end
10
+
11
+ def value
12
+ "#{singular_table_name}.#{name}.map { |item| { display: item.#{display_method}, value: item.#{value_method} }}.to_json"
13
+ end
14
+
15
+ def partial_to_show
16
+ @options[:partial_to_show] || "#{target}/autocompletable/multiple_selection"
17
+ end
18
+
19
+ def input_name
20
+ @options[:input_name] || render_erb_string("<%= singular_table_name %>[<%= name.to_s.singularize %>_ids][]")
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,21 @@
1
+ require_relative 'autocompletable'
2
+
3
+ module BrainDamage
4
+ module View
5
+ module Input
6
+ class AutocompletableSimpleSelection < Autocompletable
7
+ def value
8
+ "{ display: '\#{#{singular_table_name}.#{name}.try(:#{display_method})}', value: '\#{#{singular_table_name}.#{name}.try(:#{value_method})}'}"
9
+ end
10
+
11
+ def partial_to_show
12
+ @options[:partial_to_show] || "#{target}/autocompletable/simple_selection"
13
+ end
14
+
15
+ def input_name
16
+ @options[:input_name] || render_erb_string("<%= singular_table_name %>[<%= name %>_id]")
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+ require_relative '../../templateable/field_templateable'
3
+
4
+ module BrainDamage
5
+ module View
6
+ module Input
7
+ class Base < Templateable::FieldTemplateable
8
+ def tag_options(options = {})
9
+ options = options.merge (@options[:html] || {})
10
+ options[:name] ||= "name_for_input_tag(:#{name}, prefix)"
11
+
12
+ '{' + options.map { |key, value|
13
+ "#{key}: #{value}"
14
+ }.join(', ') + '}'
15
+ end
16
+
17
+ def dir
18
+ __dir__
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,14 @@
1
+ require 'erb'
2
+ require_relative 'base'
3
+
4
+ module BrainDamage
5
+ module View
6
+ module Input
7
+ class Checkbox < Base
8
+ def show_label?
9
+ false
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,10 @@
1
+ require_relative 'base'
2
+
3
+ module BrainDamage
4
+ module View
5
+ module Input
6
+ class CollectionCheckboxes < Base
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,11 @@
1
+ require 'erb'
2
+ require_relative 'nested_on_hideable'
3
+
4
+ module BrainDamage
5
+ module View
6
+ module Input
7
+ class CollectionSelect < NestedOnHideable
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # coding: utf-8
2
+ require_relative 'base'
3
+
4
+ module BrainDamage
5
+ module View
6
+ module Input
7
+ class Default < Base
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'erb'
2
+ require_relative 'base'
3
+
4
+ module BrainDamage
5
+ module View
6
+ module Input
7
+ class HierarchyPicker < Base
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,34 @@
1
+ require_relative 'base'
2
+
3
+ module BrainDamage
4
+ module View
5
+ module Input
6
+ class NestedForm < Base
7
+ attr_reader :nested_model_class_name
8
+ attr_reader :nested_singular_table_name
9
+ attr_reader :nested_plural_table_name
10
+
11
+ def initialize(field, options)
12
+ super
13
+
14
+ if field and field.relation
15
+ @nested_model_class_name = field.relation.class_name.to_s
16
+ else
17
+ @nested_model_class_name = name.to_s.singularize.camelcase
18
+ end
19
+
20
+ @nested_singular_table_name = @nested_model_class_name.underscore.singularize
21
+ @nested_plural_table_name = @nested_model_class_name.underscore.pluralize
22
+ end
23
+
24
+ def explicit_form?
25
+ @options[:explicit_form] || false
26
+ end
27
+
28
+ def nested_on
29
+ relation.nested_on
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,22 @@
1
+ require 'erb'
2
+ require_relative 'base'
3
+
4
+ module BrainDamage
5
+ module View
6
+ module Input
7
+ class NestedOnHideable < Base
8
+ def label_guard?
9
+ true
10
+ end
11
+
12
+ def label_guard
13
+ guard
14
+ end
15
+
16
+ def guard
17
+ render_erb_string '!defined? nested_on or nested_on.try(:to_sym) != :<%= name %>'
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,44 @@
1
+ # coding: utf-8
2
+ require_relative 'base'
3
+
4
+ module BrainDamage
5
+ module View
6
+ module Input
7
+ class PolymorphicHybrid < Base
8
+ def initialize(field, options)
9
+ super
10
+ @normalized_name = name.to_s.gsub('_id', '').gsub('_type', '')
11
+ @initialized_inputs = false
12
+ end
13
+
14
+ def initialize_inputs
15
+ @inputs = {}
16
+
17
+ @options[:inputs].each do |name, options|
18
+ @inputs[name] = {
19
+ name: name,
20
+ model: options[:model],
21
+ label: options[:label],
22
+ input: Factory.create(:input, @field, options)
23
+ }
24
+ end
25
+
26
+ @initialized_inputs = true
27
+ end
28
+
29
+ def type_select_name
30
+ "#{singular_table_name}[#{@normalized_name}_type]"
31
+ end
32
+
33
+ def object_select_name
34
+ "#{singular_table_name}[#{@normalized_name}_id]"
35
+ end
36
+
37
+ def specified_inputs
38
+ initialize_inputs unless @initialized_inputs
39
+ @inputs.values
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,33 @@
1
+ require 'erb'
2
+ require_relative 'nested_on_hideable'
3
+
4
+ module BrainDamage
5
+ module View
6
+ module Input
7
+ class PolymorphicSelect < NestedOnHideable
8
+ def initialize(field, options)
9
+ super
10
+ @normalized_name = name.to_s.gsub('_id', '').gsub('_type', '')
11
+ end
12
+
13
+ def type_select_name
14
+ "#{@normalized_name}_type"
15
+ end
16
+
17
+ def object_select_name
18
+ "#{@normalized_name}_id"
19
+ end
20
+
21
+ def options_for_type
22
+ @options[:options].map{ |option|
23
+ "[cet('entities.#{option[:model].to_s.downcase}'), '#{option[:model].to_s}']"
24
+ }.join ', '
25
+ end
26
+
27
+ def types_options
28
+ @options[:options]
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,20 @@
1
+ - autocomplete_wrapper_id = bd_id 'autocomplete-wrapper'
2
+
3
+ .autocomplete-wrapper{ id: autocomplete_wrapper_id }
4
+ .autocomplete-itens-collection-wrapper
5
+
6
+ .ui.icon.input.autocomplete-query-wrapper
7
+ = text_field_tag nil, nil, class: 'autocomplete-query', autocomplete: 'off', placeholder: cet('common.start_search')
8
+ %i.search.icon
9
+
10
+ .ui.blue.icon.fluid.label.autocomplete-display.autocomplete-display-prototype{ style: 'display: none' }
11
+ %i.ui.trash.icon.autocomplete-list-remove
12
+ %span.autocomplete-display-text
13
+ = hidden_field_tag '<%= input_name %>', nil, class: 'autocomplete-value'
14
+
15
+ .ui.segment.autocomplete-results-wrapper
16
+ %ul.autocomplete-results
17
+
18
+ - values = <%= values %>
19
+ :coffeescript
20
+ new BrainDamage.AutocompleteList('##{autocomplete_wrapper_id}', '<%= url %>', #{values}, '<%= partial_to_show %>')
@@ -0,0 +1,25 @@
1
+ - autocomplete_wrapper_id = bd_id 'autocomplete-wrapper'
2
+
3
+ - if !defined? nested_on or nested_on.try(:to_sym) != :<%= name %>
4
+ .autocomplete-wrapper{ id: autocomplete_wrapper_id }
5
+ .ui.icon.input.autocomplete-query-wrapper
6
+ = text_field_tag nil, nil, class: 'autocomplete-query', autocomplete: 'off', placeholder: cet('common.start_search')
7
+ %i.search.icon
8
+
9
+ = hidden_field_tag '<%= input_name %>', nil, class: 'autocomplete-value'
10
+
11
+ .ui.fluid.blue.icon.label.autocomplete-display{ style: 'display: none' }
12
+ %i.ui.edit.icon.autocomplete-edit
13
+ %span.autocomplete-display-text
14
+
15
+ .ui.segment.autocomplete-results-wrapper
16
+ %ul.autocomplete-results
17
+
18
+ :coffeescript
19
+ new BrainDamage.AutocompleteSimpleSelect('##{autocomplete_wrapper_id}', '<%= url %>', <%= value %>, '<%= partial_to_show %>')
20
+
21
+ - else
22
+ = hidden_field_tag('partial_locals[nested_on]', nested_on)
23
+
24
+ - if <%= singular_table_name %>.<%= name %>
25
+ = hidden_field_tag( '<%= name %>', <%= singular_table_name %>.<%= name %>.id )
@@ -0,0 +1,3 @@
1
+ .ui.checkbox
2
+ = f.<%= field_type %> :<%= name %>, <%= tag_options %>
3
+ %label{for: :<%= name %>}= <%= label.text %>
@@ -0,0 +1,6 @@
1
+ .field.collection-check-boxes
2
+ = f.collection_check_boxes(:<%= options[:name] || name %>, <%= options[:model] %>.all, :<%= options[:value] %>, :<%= options[:display_method] %>) do |b|
3
+ .ui.fluid.basic.label.with-checkbox
4
+ .ui.fluid.checkbox
5
+ = b.check_box
6
+ = b.label
@@ -0,0 +1,9 @@
1
+ - if <%= guard %>
2
+ .field
3
+ = f.collection_select('<%= options[:name] || name %>_id', <%= options[:model] %>.all, :<%= options[:value] %>, :<%= options[:display_method] %>, <%= tag_options %>)
4
+
5
+ - else
6
+ = hidden_field_tag('partial_locals[nested_on]', nested_on)
7
+
8
+ - if nested_on.try(:to_sym) == :<%= name %> and <%= singular_table_name %>.<%= name %>
9
+ = f.hidden_field('<%= options[:name] || name %>_id %>', <%= tag_options(value: "#{singular_table_name}.#{name}.id") %>)
@@ -0,0 +1,5 @@
1
+ <% if options[:partial_options] %>
2
+ = r '<%= options[:partial] %>', <%= options[:partial_options] %>
3
+ <% else %>
4
+ = r '<%= options[:partial] %>'
5
+ <% end %>
@@ -0,0 +1 @@
1
+ = f.<%= field_type %> :<%= name %>, <%= tag_options %>
@@ -0,0 +1,5 @@
1
+ .field.label-file-field-wrapper
2
+ %label.ui.basic.icon.fluid.button
3
+ %i.file.icon
4
+ %span.text Escolher Aquivo...
5
+ = file_field_tag name_for_input_tag(:<%= name %>, prefix), style: "display:none"
@@ -0,0 +1,19 @@
1
+ - if <%= singular_table_name %>.<%= name %>
2
+ - local_value = { value: <%= singular_table_name %>.<%= name %>.id, display: <%= singular_table_name %>.<%= name %>.name }
3
+ - else
4
+ - local_value = 'null'
5
+
6
+ - label ||= nil
7
+
8
+ .local-input
9
+ - id = bd_id "local-input"
10
+ - input_name = "<%= singular_table_name %>[<%= name %>_id]"
11
+
12
+ %label{:class => ['ui fluid left icon button basic']}
13
+ %i.search.icon
14
+ = label
15
+
16
+ = hidden_field_tag(input_name, nil, :id => id)
17
+
18
+ :javascript
19
+ new Hierarchy.Input("##{id}", { root_id: #{<%= @options[:root_id] %>}, value: #{local_value.to_json} });