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,42 @@
1
+ require_relative 'base'
2
+
3
+ module BrainDamage
4
+ module Templateable
5
+ class FieldTemplateable < Templateable::Base
6
+ attr_reader :type
7
+ attr_reader :partial_html
8
+
9
+ def initialize(field, options)
10
+ @field = field
11
+ @type = self.class.to_s.split('::').last.underscore.to_sym
12
+
13
+ resource = field.resource
14
+ super resource, options
15
+ end
16
+
17
+ def empty_haml_path
18
+ 'brain_damage/empty'
19
+ end
20
+
21
+ def method_missing(method, *args, &block)
22
+ @field.send method, *args, &block
23
+ end
24
+
25
+ def label_guard?
26
+ false
27
+ end
28
+
29
+ def show_label?
30
+ true
31
+ end
32
+
33
+ def show?
34
+ true
35
+ end
36
+
37
+ def render
38
+ super
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,23 @@
1
+ require_relative 'base'
2
+
3
+ module BrainDamage
4
+ module Templateable
5
+ class ViewTemplateable < Templateable::Base
6
+ OVERWRITEABLE_HEADER = '-# BrainDamage::Overwriteable'
7
+
8
+ def self.skip_overwrite? file_name
9
+ ! overwrite? file_name
10
+ end
11
+
12
+ def self.overwrite?(file_name)
13
+ !File.exists?(file_name) or
14
+ File.readlines(file_name).first.nil? or
15
+ File.readlines(file_name).first.strip == OVERWRITEABLE_HEADER
16
+ end
17
+
18
+ def render
19
+ OVERWRITEABLE_HEADER + "\n" + super
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,14 @@
1
+ # coding: utf-8
2
+ require_relative '../../templateable/field_templateable'
3
+
4
+ module BrainDamage
5
+ module View
6
+ module Display
7
+ class Base < Templateable::FieldTemplateable
8
+ def dir
9
+ __dir__
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # coding: utf-8
2
+ require_relative 'base'
3
+
4
+ module BrainDamage
5
+ module View
6
+ module Display
7
+ class BrightText < Base
8
+ def value
9
+ text = render_erb_string 'Bright.parse(<%= singular_table_name %>.<%= name %>.gsub("\n", "<br />").gsub(/\s+/, " "))'
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,22 @@
1
+ # coding: utf-8
2
+ require_relative 'base'
3
+
4
+ module BrainDamage
5
+ module View
6
+ module Display
7
+ class CollectionList < Base
8
+ def item_class
9
+ false
10
+ end
11
+
12
+ def display_class
13
+ ''
14
+ end
15
+
16
+ def collapsible?
17
+ true
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,11 @@
1
+ # coding: utf-8
2
+ require_relative 'base'
3
+
4
+ module BrainDamage
5
+ module View
6
+ module Display
7
+ class Default < Base
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,46 @@
1
+ # coding: utf-8
2
+ require_relative 'base'
3
+
4
+ module BrainDamage
5
+ module View
6
+ module Display
7
+ class ForeignSinglePageManager < Base
8
+ attr_reader :foreign_model_class_name
9
+ attr_reader :foreign_singular_table_name
10
+ attr_reader :foreign_plural_table_name
11
+
12
+ def initialize(field, options)
13
+ super
14
+
15
+ default_options = {
16
+ deletable: true,
17
+ editable: true,
18
+ viewable: false,
19
+ explicit_form: false,
20
+ leading_form: false,
21
+ trailing_form: true,
22
+ nested_on: resource_name_according_to_foreign.to_sym
23
+ }
24
+
25
+ @spm_options = default_options.merge(options).slice(*default_options.keys)
26
+
27
+ @foreign_model_class_name = @field.relation.class_name.to_s
28
+ @foreign_singular_table_name = @foreign_model_class_name.underscore.singularize
29
+ @foreign_plural_table_name = @foreign_model_class_name.underscore.pluralize
30
+ end
31
+
32
+ def resource_name_according_to_foreign
33
+ if @field.relation
34
+ @field.relation.resource_name_according_to_foreign
35
+ else
36
+ singular_table_name
37
+ end
38
+ end
39
+
40
+ def options_hash
41
+ @spm_options.dup
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ require_relative '../../templateable/field_templateable'
3
+
4
+ module BrainDamage
5
+ module View
6
+ module Display
7
+ class Hidden < Templateable::FieldTemplateable
8
+ def dir
9
+ __dir__
10
+ end
11
+
12
+ def show?
13
+ false
14
+ end
15
+
16
+ def show_label?
17
+ false
18
+ end
19
+
20
+ def label_guard?
21
+ false
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ require_relative 'base'
3
+
4
+ module BrainDamage
5
+ module View
6
+ module Display
7
+ class InlineEditable < Base
8
+ def initialize(field, options)
9
+ super
10
+ @if = options[:if] || nil
11
+ end
12
+
13
+ def conditions?
14
+ false
15
+ end
16
+
17
+ def display(identifier = :inline_editable_display)
18
+ field.display identifier
19
+ end
20
+
21
+ def input(identifier = :default)
22
+ field.input identifier
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,42 @@
1
+ # coding: utf-8
2
+ require_relative 'base'
3
+
4
+ module BrainDamage
5
+ module View
6
+ module Display
7
+ class LinkTo < Base
8
+ def initialize(field, options)
9
+ super
10
+ @display_method = options[:display_method] || name
11
+ @target_method = options[:target_method] || name
12
+
13
+ if options[:act_as_foreign]
14
+ define_singleton_method :foreign?, lambda {
15
+ true
16
+ }
17
+ end
18
+ end
19
+
20
+ def link_text
21
+ text = if foreign? then
22
+ "#{singular_table_name}.#{@target_method}.#{@display_method}"
23
+ else
24
+ "#{singular_table_name}.#{@display_method}"
25
+ end
26
+
27
+ return text if text.present?
28
+ link_target
29
+ end
30
+
31
+ def link_target
32
+ return "#{singular_table_name}.#{@target_method}" if foreign?
33
+ "#{singular_table_name}"
34
+ end
35
+
36
+ def include_existance_check?
37
+ foreign?
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ require_relative 'base'
3
+
4
+ module BrainDamage
5
+ module View
6
+ module Display
7
+ class LinkedCollectionList < Base
8
+ def item_class
9
+ ''
10
+ end
11
+
12
+ def display_class
13
+ ''
14
+ end
15
+
16
+ def collapsible?
17
+ true
18
+ end
19
+
20
+ def inline_item_divider
21
+ @options[:inline_item_divider] || "', '"
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,7 @@
1
+ - text = if <%= singular_table_name %>.<%= name %>.present? then <%= value %>.html_safe else nil end
2
+
3
+ - if text.present?
4
+ %pre.preformatted
5
+ = text
6
+ - else
7
+ = r 'brain_damage/empty'
@@ -0,0 +1,31 @@
1
+ - content_for :collecion_list_items, flush: true do
2
+ <% if item_class %>
3
+ - <%= singular_table_name %>.<%= name %>.each do |item|
4
+ %div{ class: '<%= item_class %>' }= item.<%= options[:display_method] %>
5
+ <% else %>
6
+ %div= <%= singular_table_name %>.<%= name %>.map(&:<%= options[:display_method] %>).join(', ')
7
+ <% end %>
8
+
9
+ .brain-damage-collection-list{ class: '<%= display_class %>' }
10
+ - if <%= singular_table_name %>.<%= name %>.any?
11
+ <% if collapsible? %>
12
+ - if <%= singular_table_name %>.<%= name %>.count <= 3
13
+ = yield :collecion_list_items
14
+
15
+ - else
16
+ .collapsible-content
17
+ .header= "#{<%= singular_table_name %>.<%= name %>.first.<%= options[:display_method] %>} +#{<%= singular_table_name %>.<%= name %>.count-1}"
18
+ .content
19
+ <% if item_class %>
20
+ - <%= singular_table_name %>.<%= name %>.each do |item|
21
+ %div{ class: '<%= item_class %>' }= item.<%= options[:display_method] %>
22
+ <% else %>
23
+ %div= <%= singular_table_name %>.<%= name %>.map(&:<%= options[:display_method] %>).join('<br />').html_safe
24
+ <% end %>
25
+
26
+ <% else %>
27
+ = yield :collecion_list_items
28
+ <% end %>
29
+
30
+ - else
31
+ = r 'brain_damage/empty'
@@ -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,4 @@
1
+ - if <%= singular_table_name %>.<%= name %>.present?
2
+ = <%= singular_table_name %>.<%= name %>
3
+ - else
4
+ = r 'brain_damage/empty'
@@ -0,0 +1 @@
1
+ = r '<%= foreign_plural_table_name %>/list/index', <%= foreign_plural_table_name %>: <%= singular_table_name %>.<%= name %>, <%= foreign_singular_table_name %>_prototype: <%= foreign_model_class_name %>.new(<%= resource_name_according_to_foreign %>: <%= singular_table_name %>), single_page_manager_options: <%= options_hash.inspect %>
@@ -0,0 +1,8 @@
1
+ <% if conditions? %>
2
+ - if <%= conditions %>
3
+ = r "<%= plural_table_name %>/inline_edit/<%= name %>", field: :<%= name %>, <%= singular_table_name %>: <%= singular_table_name %>
4
+ - else
5
+ <%= display.indent 1 %>
6
+ <% else %>
7
+ = r "<%= plural_table_name %>/inline_edit/<%= name %>", field: :<%= name %>, <%= singular_table_name %>: <%= singular_table_name %>
8
+ <% end %>
@@ -0,0 +1,9 @@
1
+ <% if include_existance_check? %>
2
+ - if <%= link_target %>
3
+ = link_to <%= link_text %>, <%= link_target %>
4
+ - else
5
+ = r "<%= empty_haml_path %>"
6
+
7
+ <% else %>
8
+ = link_to <%= link_text %>, <%= link_target %>
9
+ <% end %>
@@ -0,0 +1,31 @@
1
+ - content_for :collecion_list_items, flush: true do
2
+ - <%= singular_table_name %>.<%= name %>.each_with_index do |item, index|
3
+ %span{ class: '<%= item_class %>' }
4
+ = link_to item.<%= options[:display_method] %>, item
5
+ <% if inline_item_divider %>
6
+ - unless index == <%= singular_table_name %>.<%= name %>.size - 1
7
+ = <%= inline_item_divider %>
8
+ <% end %>
9
+
10
+ .brain-damage-collection-list{ class: '<%= display_class %>' }
11
+ - if <%= singular_table_name %>.<%= name %>.any?
12
+ <% if collapsible? %>
13
+ - if <%= singular_table_name %>.<%= name %>.count <= 3
14
+ = yield :collecion_list_items
15
+
16
+ - else
17
+ .collapsible-content
18
+ .header= "#{<%= singular_table_name %>.<%= name %>.first.<%= options[:display_method] %>} +#{<%= singular_table_name %>.<%= name %>.count-1}"
19
+ .content
20
+ - <%= singular_table_name %>.<%= name %>.each_with_index do |item, index|
21
+ %div{ class: '<%= item_class %>' }
22
+ = link_to item.<%= options[:display_method] %>, item
23
+ - unless index == <%= singular_table_name %>.<%= name %>.size - 1
24
+ <br />
25
+
26
+ <% else %>
27
+ = yield :collecion_list_items
28
+ <% end %>
29
+
30
+ - else
31
+ = r 'brain_damage/empty'
@@ -0,0 +1,4 @@
1
+ - if <%= target %> and <%= text %>.present?
2
+ = <%= display_text %>
3
+ - else
4
+ = r "<%= empty_haml_path %>"
@@ -0,0 +1,4 @@
1
+ - if <%= singular_table_name %>.<%= name %>
2
+ = cet('common.yes')
3
+ - else
4
+ = cet('common.no')
@@ -0,0 +1,43 @@
1
+ # coding: utf-8
2
+ require_relative 'base'
3
+
4
+ module BrainDamage
5
+ module View
6
+ module Display
7
+ class Text < Base
8
+ def initialize(field, options)
9
+ super
10
+ @display_method = options[:display_method] || name
11
+ @target_method = options[:target_method] || name
12
+ end
13
+
14
+ def text
15
+ if foreign?
16
+ "#{singular_table_name}.#{@target_method}.#{@display_method}"
17
+ else
18
+ "#{singular_table_name}.#{@display_method}"
19
+ end
20
+ end
21
+
22
+ def display_text
23
+ inner_text = text
24
+
25
+ if @options[:filter_method]
26
+ "#{inner_text}.#{@options[:filter_method]}"
27
+ else
28
+ inner_text
29
+ end
30
+ end
31
+
32
+ def target
33
+ return "#{singular_table_name}.#{@target_method}" if foreign?
34
+ "#{singular_table_name}"
35
+ end
36
+
37
+ def include_existance_check?
38
+ foreign?
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end