brain_damage 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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} });